git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Help debugging git-svn

From
Edmundo Carmona Antoranz <eantoranz@gmail.com>
Date
Dec 16, 2015, 04:00 UTC
Message-ID
<CAOc6etaOKSN0KyB9v2caiQbaQBEGrHxi3NmFy3aJkFxczGdqHA@mail.gmail.com>
Hello, Eric, Everybody!
I need your help getting git-svn to clone a repository.

I had already cloned it once but then a few months ago I discovered the authors map file and it's like the first time I did a checkout using git.... well, perhaps not that much, but close. Seeing the real names of people when using log, blame, etc is a major difference... so, back to my tale of sorts.

The thing is that I have already tried to clone it _several_ times and it always breaks at one point or another (or rather, at one revision of a branch or another). I have come to think that it's more or less at the same revisions that it breaks but I'm not 100% certain.

What I _think_ is the cause of most of the problems is that in our repo people have misplaced branches _inside_ other branches, at least for a few revisions before realizing their mistake and deleting it.

So.... say I have a standard layout.

trunk branches tags

Then at one point I copy trunk to branches/a
Later on I copy trunk to branches/b
Later on I copy trunk to branches/b/c (instead of branches/c)

And a few revisions later I realize my mistake and copy branches/b/c to branches/c and remove branches/b/c

I infer this because I'm seeing that on one of the revisions where git svn usually breaks when fetching has the content of the project inside a directory, like, say I have directories A, B and C in the project and I'm seeing that git svn is fetching a revision where the all the paths of the files are prepended by a directory that looks like a branch, like this:

branch_name/A/filea.txt branch_name/A/fileb.txt etc etc

Instead of A/filea.txt A/fileb.txt

So... throw some ideas around that... and then, could you tell a non-perl developer how to debug it? Perhaps increase verbosity?

One of the errors I see often when fetching (my memory tells me that it's associated to the branch-in-branch problem but I'm not completely sure right now), looks like this:

1 [main] perl 5652 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump

And then, in the file:
Exception: STATUS_ACCESS_VIOLATION at rip=0048360C10C
rax=0000000601E4BFF8 rbx=000000005219E248 rcx=000000060003A590
rdx=0000000000000000 rsi=000000000000A950 rdi=0000000000000004
r8 =0000000000000000 r9 =0000000000000000 r10=0000000000230000
r11=000000048D78607A r12=0000000000000003 r13=000006FFFFF54A98
r14=0000000601E18030 r15=000006FFFFF54AB0
rbp=0000000000054A88 rsp=000000000022B810
program=C:\Program Files\Git\usr\bin\perl.exe, pid 5652, thread main
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B

With my very flawed knowledge of perl I have seen that the process is getting to Ra.pm around here:

our $AUTOLOAD;
sub AUTOLOAD {
    my $class = ref($_[0]);
    $AUTOLOAD =~ s/^${class}::(SUPER::)?//;
    return if $AUTOLOAD =~ m/^[A-Z]/;
    my $self = shift;
    no strict 'refs';
    my $method = $self->can("invoke_$AUTOLOAD")
        or die "no such method $AUTOLOAD";
    no warnings 'uninitialized';
    $method->(@$self, @_);
}

The value of $AUTOLOAD there is 'finish_report' but I don't know (or at least see) where $method->(@$self, @_) is going.

Well... I think that's enough of a mess of a mail (sorry about that). Hope I was able to provide enough information to at least move a little bit forward.

Thanks in advance.
Next: Eric Wong
Message 1 of 6 in “Help debugging git-svn”
  1. Edmundo Carmona AntoranzDec 16, 2015
  2. Eric WongDec 16, 2015
  3. Edmundo Carmona AntoranzDec 16, 2015
  4. Edmundo Carmona AntoranzDec 18, 2015
  5. Edmundo Carmona AntoranzDec 19, 2015
  6. Edmundo Carmona AntoranzJan 9, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.