Subject: Cleaning up "contrib/" (was: git svn clone failed)

From: Patrick Steinhardt <[email-masked]>
Date: Mon, 5 May 2025 08:24:34 +0200

On Sun, May 04, 2025 at 10:19:06AM +0200, Johannes Schindelin wrote:
> Hi Arnoud,
> 
> On Fri, 2 May 2025, BERENDSEN Arnoud wrote:
> 
> > What did you do before the bug happened? (Steps to reproduce your issue)
> > 
> > - I was migrating an SVN repository to Git using:
> > git svn clone <my-svn-repo> --stdlayout --authors-file=C:\path\to\my-authors-file.txt  --preserve-empty-dirs .
> > 
> > 
> > What did you expect to happen? (Expected behavior)
> > 
> > - I expect the entire process to succeed without errors.
> > When unavoidable errors do happen, I expect the error message to be helpful, give a clear description of what the underlying problem is, and how to solve it.
> > 
> > 
> > What happened instead? (Actual behavior)
> > 
> > - The migration failed with the folowwing error:
> > 
> > r2814 = 1ecf20e2d14b45ee517b56f5f51b406801e9869b (refs/remotes/origin/trunk)
> > Found possible branch point: https://<my-svn-repo> => https://<my-svn-repo>/branches/<my-branch-name>, 2814
> > W: Refspec glob conflict (ref: refs/remotes/origin/trunk):
> > expected path: branches/trunk
> >     real path: trunk
> > Continuing ahead with trunk
> > W: Refspec glob conflict (ref: refs/remotes/origin/trunk):
> > expected path: branches/trunk
> >     real path: trunk
> > Continuing ahead with trunk
> > Initializing parent: refs/remotes/origin/<my-branch-name>@2814
> > Use of uninitialized value $args[2] in join or string at C:/Program Files/Git/mingw64/share/perl5/Git.pm line 1655.
> > Use of uninitialized value $_[3] in exec at C:/Program Files/Git/mingw64/share/perl5/Git.pm line 1681.
> > fatal: Not a valid object name
> > ls-tree -z --name-only  data/OVK/: command returned error: 128
> 
> In Git for Windows, `git svn` is quite a maintenance burden (with a few
> known issues) and my current thinking is to drop it from Git for Windows
> instead of leaving it in the current shape (I, for one, cannot justify
> working on it myself, and the same seems to hold for everybody else, too).
> See also https://github.com/git-for-windows/git/issues/5405.
> 
> Is there a chance that you could use the [Windows Subsystem for Linux
> (WSL)](https://learn.microsoft.com/en-us/windows/wsl/) (i.e. the Linux
> version of Git) for this migration, especially given that the
> characterization as "migration" suggests that this is a one-off task?

I sometimes wonder whether we should move such basically-unmaintained
scripts out of the Git repository. They do a disservice to both us and
to our users as they create the wrong impression of being the sanctioned
way of doing a particular task even though they have only been gathering
dust for ages.

Many of the tools in "contrib/" fall into this category, and to the best
of my knowledge there isn't really a clear strategy for that directory.
So from my perspective, we should either rethink whether it is worth it
to have "contrib/" as part of Git, or we should at least do a spring
cleanup and drop bits that haven't seen any love in the last couple of
years.

Patrick