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...         


Reply via email to