On Mon, 11 May 2026 at 13:32, Daniel Sahlberg <[email protected]>
wrote:
> Den mån 11 maj 2026 kl 03:50 skrev Nathan Hartman <
> [email protected]>:
> >
> > On Sun, May 10, 2026 at 2:55 PM Timofei Zhakov <[email protected]>
> wrote:
> >>
> >>
> >> On Sun, May 10, 2026 at 8:03 PM Branko Čibej <[email protected]> wrote:
> >>>
> >>> On 10. 5. 26 19:13, Daniel Sahlberg wrote:
> >>>
> >>> Hi,
> >>>
> >>> We have quite a lot of branches in
> >>> https://svn.apache.org/repos/asf/subversion/branches/, some very
> >>> active (javahl-1.15 for example), some that have been merged to trunk
> >>> (cmake, swig-py3) and some that are unlikely to even be merged
> >>> (scons-build-system). There are also obsolete backport branches
> >>> (1.7.x-sqlite-3.12) that are nominated but not merged and where the
> >>> corresponding release line is closed for further changes. There are of
> >>> course also interesting branches (svn-bisect) that may contain
> >>> interesting ideas.
> >>>
> >>> Do we have a policy for removing branches when they have served their
> >>> purpose or when they have reached a dead end and are unlikely to see
> >>> further work? I'd like to propose to clear out at least the branches
> >>> that are unlikely to be merged, to make it easier to find the valuable
> >>> ideas.
> >>>
> >>>
> >>> We don't have a policy as far as I can remember. I'd lean towards
> keeping the branches there; they're not using extra space in normal
> checkouts or anything. If it's a question of keeping things tidy and
> especially helping people know which work is "current"
> for-some-definition-of and which is obsolete, we can create another
> directory in the tree in parallel with trunk/branches/tags – that structure
> is supposed to help us, not bind us, after all.
> >>>
> >>> So for example, we could move
> >>>
> >>> branches/1.7.x-sqlite-3.12
> >>>
> >>>
> >>> to
> >>>
> >>> inactive/1.7.x-sqlite-3.12
> >>>
> >>>
> >>
> >> The only issue with this approach is that some tools (like git-svn that
> makes our github mirror) expect normal branch layout with branches/ tags/
> and trunk/. Of course they usually allow for a change but sometimes it's
> annoying to maintain.
> >>
> >> Also I like the style where the release branches (like 1.15.x) are
> located in the 'stable/' directory instead of 'branches/'.
> >>
> >>>
> >>> or something like that. It's true that the history always remains.
> It's also true that data that's not indexed is hard to find. So, keeping
> visible pointers to that work might well help someone in the future and it
> doesn't hinder or constrain us in any way.
> >>>
> >>> -- Brane
> >>>
> >>>
> >>> P.S.: On the other hand, I intend to delete the javahl-1.15 branch
> after it's merged to trunk.
> >>>
> >>
> >>
> >> --
> >> Timofei Zhakov
> >
> >
> >
> > I agree that the branches don't take up disk space. In my mind, an
> argument for removing (or moving) them is to clean up clutter that adds to
> our cognitive load.
> >
> > There are four types of branches mentioned here; each deserves a
> different treatment:
> >
> > * active - obviously we won't delete those!
> >
> > * work-in-progress, e.g., experiments, ideas, features, like
> scons-build-system or svn-bisect - these are interesting even if stalled
> and incomplete. Some of these could get picked up in the future. IIRC
> that's what happened with Multi-WC, which lay dormant for some time and is
> now an important feature of 1.15. Even when this doesn't happen, these
> branches may be valuable for reference. I recommend to keep them exactly
> where they are.
> >
> > * completed and merged to trunk - Normally these should be removed after
> merging, I think it's a little bit confusing to keep them around because
> it's unclear why they were kept. Intended as long-lived branches? For
> bisecting purposes? To document the development timeline of a feature?
> Modifying Brane's idea, these could be moved to a new 'merged' subtree. To
> Timofei's point about the bridge to git, we certainly wouldn't want active
> or in-progress branches to disappear from git, but in this case where the
> branches were already merged, their disappearance after merging is typical
> of most common git workflows, so I think it would be okay.
> >
> > * backport nomination branches that were never approved for EOL release
> lines: I wouldn't feel too bad about deleting them, but if we do, we
> probably should clear the nominations from those EOL branches' STATUS, to
> remove dangling references.
> >
> > Of course, this all translates to time and effort to study each branch
> and figure out its story. :-/
> >
> > Cheers,
> > Nathan
> >
>
> Thank you all for the valuable input!
>
> What I'm after is to reduce the cognitive load of:
> - Branches that no longer needed (I believe Timofei recently
> (r1934075) deleted windows-shared-ra-modules for this reason).
> - Branches that have been superseeded by other work (I think it is
> extremely unlikely that we would switch all builds to scons so while
> scons-build-system might be interesting, we won't loose anything if it
> is not immediately visible).
>
> I agree that some branches may come back after a long time so we
> should be very careful removing anything based on the the second
> criteria.
>
> I spend this time and effort whenever I'm in "branches" looking for
> something (just by downloading BRANCH-README) so if I spend a few
> additional minutes to send a suggestion to dev@ and save someone else
> that time later on, it is time well spent.
>
>
FWIW it's possible to write a script to find branches that fully merged to
trunk.
I have PowerShell (with help of PoshSVN) script to produce branch report.
The script is not optimal, so I would not recommend to run it against
svn.apache.org. I ran against local svn.apache.org. Report is attached.
List of branches merged to trunk:
[[[
Merged Updated Branch
Description
------ ------- ------
-----------
True 16 Sep 2024 cmake/ Create
the 'cmake' branch.
True 28 Feb 2020 decouple-shelving-cli/ Make the
'decouple-shelving-cli' branch.
True 07 Dec 2022 pristines-on-demand-on-mwf/ New
branch 'pristines-on-demand-on-mwf': for rebasing 'pristines-on-demand' on
...
True 04 Nov 2019 swig-py3/ Create a
branch to work on Python 3 compatibility for the swig bindings....
]]]
--
Ivan Zhakov
Merged Updated Branch Description
------ ------- ------ -----------
False 22 Apr 2018 1.9-moves/ Marking the
state of /trunk before removing the experimental...
False 23 May 2020 addremove/ Create an
experimental branch for a new feature which brings an...
False 23 Dec 2024 apply-processor/ Create
'apply-processor' processor branch....
False 22 Apr 2018 artem-soc-work/ Recreate the
artem-soc-work branch...
False 22 Apr 2018 auth-notification/ Create a
branch ('auth-notification') for toying with notifications...
False 22 Apr 2018 authz-overhaul/ Recreate the
'authz-overhaul' branch, a playground for C-Mike's...
False 22 Apr 2018 authzperf/ Branch for
improving authz lookup performance.
False 22 Apr 2018 automatic-pager/ Create branch
for automatic pager code...
False 18 Jan 2006 bdb-fixes/ Create branch
for Berkeley DB filesystem backend fixes.
False 03 Feb 2026 better-pristines/ Create a
branch for pristine storage improvements.
False 22 Apr 2018 capabilities-abstraction/ Create a
(possibly throwaway) branch for capabilities abstraction work.
True 16 Sep 2024 cmake/ Create the
'cmake' branch.
False 31 May 2025 cmdline-parse-targets/ Create the
'cmdline-parse-targets' branch in which I'll try to rework...
False 22 Apr 2018 compressed-pristines/ Created
compressed-pristines branch.
False 15 Nov 2018 dav-path-escape/ Create the
dav-path-escape branch. See BRANCH-README for details....
True 28 Feb 2020 decouple-shelving-cli/ Make the
'decouple-shelving-cli' branch.
False 22 Apr 2018 diff-cmd-feature/ On the
diff-cmd-feature branch: Creating a branch of /trunk.
False 22 Apr 2018 diff-improvements/ Creating new
experimental branch for my work on lcs/diff/merge...
False 22 Apr 2018 ev2-export/ Create the
ev2-export branch....
False 22 Apr 2018 fsfs-ucsnorm/ Branch for
implementing fs-level cheks for Unicode normalization and name colli...
False 22 Apr 2018 fs-node-api/ Create
'fs-node-api' branch.
False 22 Apr 2018 fs-progress/ Create
fs-progress branch, for issue #3958.
False 22 Apr 2018 fs-py/ Create the
fs-py branch, on which to stash a crazy idea about a fsfs Python...
False 22 Apr 2018 fs-successor-ids/
^/branches/fs-successor-ids: Re-create branch, deleted in r40461....
False 22 Apr 2018 hold/ Create branch
for 'svn:hold' feature (issue #3028).
False 22 Apr 2018 ignore-mergeinfo/ Rename the
ignore-prop-mods branch to the ignore-mergeinfo branch....
False 22 Apr 2018 ignore-mergeinfo-log/ Create the
ignore-mergeinfo-log, which has a much more specific charter than...
False 22 Apr 2018 invoke-diff3-feature/ On the
invoke-diff3-cmd-feature: Create a new branch from the r1538071...
False 22 Apr 2018 invoke-diff-cmd-feature/ Creating a
branch for the invoke-diff-command feature.
False 22 Apr 2018 issue-2699-dev/ *
branches/issue-2699-dev...
False 22 Apr 2018 issue-2897/ Branch to fix
issue 2897....
False 22 Apr 2018 issue-3081/ Create branch
for issue #3081: authz check on descendant mergeinfo in...
False 22 Apr 2018 issue-3348-dev/ Create new
branch 'issue-3348-dev' for development of issue #3348...
False 22 Apr 2018 issue-3550-dev/ Create a
branch in which to play with streamy changed-path interfaces...
False 22 Apr 2018 issue-3668-3669/ Create a
branch for work on the reopened issues #3668 'inheritance can...
False 22 Apr 2018 issue-4116-dev/ Create a
branch for development of code aimed at solving issue #4116:...
False 10 May 2026 javahl-1.15/ Created
branch for 1.15.0 JavaHL updates.
False 22 Apr 2018 javahl-1.8-extensions/ Branch for
JavaHL extensions based on the stable 1.8 release branch.
False 22 Apr 2018 log-message-templates/ Create a
feature branch 'log-message-templates' for playing with an...
False 22 Apr 2018 master-passphrase/ *
branches/master-passphrase...
False 12 Jan 2006 meta-data-versioning/ *
branches/meta-data-versioning: Create base directory for branches....
False 13 Sep 2025 mfa/ Create 'mfa'
branch to try different mfa implementation ideas in the public
False 15 Nov 2018 mod-dav-svn-expressions/ Created a
branch to add expression support to SVNPath and SVNParentPath.
False 22 Apr 2018 moves-scan-log/ Add a branch
to experiment with heuristics for detecting server-side moves...
False 22 Apr 2018 move-tracking-1/ Create a
branch on which to develop some parts of move-tracking.
False 22 Apr 2018 move-tracking-2/ Create a
branch for move tracking work.
False 21 Feb 2024 move-tracking-3/ Create a
branch to preserve experimental move-tracking development....
False 22 Apr 2018 object-model/ Move the
misplaced object-model branch....
False 22 Apr 2018 obliterate-like-deltify/ Create a
branch for some experimental obliterate code
False 22 Apr 2018 parallel-put/ Open a
development branch for adding concurrent write...
False 22 Apr 2018 patch-exec/ Create the
patch-exec branch.
False 19 May 2025 patch-from-stream/ Create a
branch for converting the patch parser to use streams....
False 22 Apr 2018 perl-bindings-improvements/ Create branch
for work on improving the SWIG/Perl bindings.
False 22 Apr 2018 pinned_status/ Recreate
branch from trunk to get file-externals changes
False 06 Dec 2024 pristine-checksum-kind/ Create the
pristine-checksum-kind branch....
False 01 Feb 2024 pristine-checksum-salt/ Create the
pristine-checksum-salt branch from the current state of...
False 22 Apr 2018 pristineless-hack/ As suggested
during the Berlin 2016 hackathon,...
False 15 Mar 2022 pristines-on-demand-issue4892/ New branch
'pristines-on-demand-on-issue4892': update fetches minimal pristines...
True 07 Dec 2022 pristines-on-demand-on-mwf/ New branch
'pristines-on-demand-on-mwf': for rebasing 'pristines-on-demand' on ...
False 22 Apr 2018 python-3-compatibility/ Create the
'python-3-compatibility' branch....
False 22 Apr 2018 ra_serf-stream-commit/ Create the
ra_serf-stream-commit branch....
False 08 Nov 2018 ra-git/ Create the
ra-git branch: git repository access for Subversion...
False 22 Apr 2018 record_exact_merge_and_commit_revs/ Create
record_exact_merge_and_commit_revs branch....
False 22 Apr 2018 reintegrate-keep-alive/ Make a branch
for improving merge reintegrate keep-alive.
False 22 Apr 2018 remove-log-addressing/ Create
remove-log-addressing branch to try remove log-addressing...
False 22 Apr 2018 reuse-ra-session/ Restore
'reuse-ra-session' branch by reverting r1704050.
False 22 Apr 2018 revprop-packing/ Create the
revprop-packing branch, to reimplement revprop packing in a more...
False 22 Apr 2018 scheme-bindings/ Initial
creation of scheme bindings branch....
False 21 Oct 2006 scons-build-system/ Create a
feature branch to implement a new prototype build system based on SCons.
False 12 Jan 2026 serf_error_callbacks/ Create a new
branch to test the Serf error callbacks from Serf 1.5...
False 09 Nov 2005 server-l10n/ A branch on
which to explore localization of server-generated text...
False 16 Apr 2018 shelve-checkpoint/ Make a branch
for Shelving and Checkpointing development.
False 22 Apr 2018 shelve-checkpoint3/ Start a
'shelve-checkpoint3' branch for a prototype of checkpointing using...
False 22 Apr 2018 showing-merge-info/ Make a branch
for experimenting with showing higher level info about merges.
False 22 Apr 2018 status--filter/ *** Just
stashing this away until after 1.5 branches....
False 14 Nov 2019 svn-bisect/ Creating the
svn-bisect branch....
False 22 Apr 2018 svn-file/ Open
development branch for svn_file_t....
False 22 Apr 2018 SVNParentPathTemplate/ New branch
for SVNParentPathTemplate feature....
False 16 Apr 2006 svnserve-ssl/ Rebranch
svnserve-ssl from trunk (see r19256 for details)....
True 04 Nov 2019 swig-py3/ Create a
branch to work on Python 3 compatibility for the swig bindings....
False 22 Apr 2018 thunder/ Open
development branch for the Thundering Herd mitigation code.
False 10 May 2018 tree-api/ Rename branch
'tree-read-api' to 'tree-api'.
False 16 Mar 2026 utf8-cmdline/ Rename the
'utf8-cmdline-prototype' branch into 'utf8-cmdline'. I believe this...
False 22 Apr 2018 windows-build-update/ Create a
branch for Windows build changes.
False 18 May 2025 xml-writer/ Create
'xml-writer' branch to implement an XML writer....
False 18 May 2025 xpatch-prototype/ On the
'xpatch' branch: Rename branch to 'xpatch-prototype'.
False 22 Apr 2018 youngest-common-ancestor/ Create a new
branch, "youngest-common-ancestor", for housing some work...