Subgit gets stuck importing from svn: incorrect svn branch blocks import

Trying to import the following repository causes subgit to hang forever.

https://svn.freepascal.org/svn/lazarus/

When subgit install fetches all the revisions it will go up to revision 47330. Then it will hang forever.

As a workaround it is possible to interrupt the import, and edit the svn/.metadata file. The revision number will be present for branches-maxRev and tags-maxRev. Setting it to 47332 allows to continue the import.
Solution found at https://stackoverflow.com/questions/18918215/skip-revisions-when-installing-subgit-repository

The problem is probably caused by
https://svn.freepascal.org/cgi-bin/viewvc.cgi?view=revision&root=lazarus&revision=47331

This revision was meant to create a new branch, based on a copy of trunk. Instead it is based on a copy of the svn root (i.e. it copies trunk, branches and tags).
47332 reverts this. 47333 creates the correct branch.

It is actually convenient to be able to leave out the bad branch. But while the issue is solved for me, it may cause troubles for others.


Some additional notes: Running subgit verify on the result does not create any complaints. I do not know if that is correct. Obviously the git data is missing 2 commits. But I am not sure what verify is intended to check. So just mentioning it here.

Hello Martin.

It is actually known issue, such branches indeed take much time to translate because they contain the whole repository copy instead of trunk copy. Usually, it doesn’t lead to a fault yet translation of such a revision may take much time and this is what happened in your case, I suppose, as may look like a hang while SubGit is actually translating the revision.
The ‘verify’ subcommand indeed doesn’t warn about such branches/revisions as the main purpose of the command is to detect mirror corruptions, such as missed revisions in Git.
Usually, such branches are being detected and excluded on the configuration stage if ‘subgit configure’ is invoked with ‘layout auto’ option; or such an erroneous branch can be excluded manually using ‘excludeBranches’ configuration setting.

Ok, thanks for the info. Indeed I gave up after some 10 to 15 minutes.
As a suggestion, it may help to print something into the logfile.

As for excluding it: There is a good branch of the same name at a later revision. AFAIK adding the branches name would exclude both?

Anyway I managed to get it working, so if you like to close the issue feel free.

yes, you’re right, adding the branches name would exclude both.