git-svn: fix delete+add branch tracking with empty files
Original bug report and test case by Björn Steinbrink. Björn Steinbrink <B.Steinbrink@gmx.de> wrote: > Hi Eric, > > seems that the empty symlink stuff gets confused about which revision to > use when looking for the parent's file. > > r3 = f1a6fcf6b0a1c4a373d0b2b65a3d70700084f361 (tags/1.0.1) > Found possible branch point: file:///home/doener/h/svn/tags/1.0 => file:///home/doener/h/svn/branches/1.0, 4 > Found branch parent: (1.0) 63ae640ba01014ecbb3df590999ed1fa5914545b > Following parent with do_switch > Successfully followed parent > r5 = 26fcfef5bcced97ab74faf1af7341a2ae0d272aa (1.0) > Found possible branch point: file:///home/doener/h/svn/branches/1.0 => file:///home/doener/h/svn/tags/1.0.1, 5 > Found branch parent: (tags/1.0.1) 26fcfef5bcced97ab74faf1af7341a2ae0d272aa > Following parent with do_switch > Scanning for empty symlinks, this may take a while if you have many empty files > You may disable this with `git config svn.brokenSymlinkWorkaround false'. > This may be done in a different terminal without restarting git svn > Filesystem has no item: File not found: revision 3, path '/branches/1.0/file' at /usr/local/libexec/git-core/git-svn line 3318 > > Note how it tries to look at revision 3 instead of revision 5 (which it > correctly detected as the parent). The import succeeds when > svn.brokenSymlinkWorkaround is set to false. Testcase below. Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
parent
7d9fd459f1
commit
83c2fcff21
@ -2421,6 +2421,7 @@ sub find_parent_branch {
|
||||
# do_switch works with svn/trunk >= r22312, but that
|
||||
# is not included with SVN 1.4.3 (the latest version
|
||||
# at the moment), so we can't rely on it
|
||||
$self->{last_rev} = $r0;
|
||||
$self->{last_commit} = $parent;
|
||||
$ed = SVN::Git::Fetcher->new($self, $gs->{path});
|
||||
$gs->ra->gs_do_switch($r0, $rev, $gs,
|
||||
|
12
t/t9136-git-svn-recreated-branch-empty-file.sh
Executable file
12
t/t9136-git-svn-recreated-branch-empty-file.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='test recreated svn branch with empty files'
|
||||
|
||||
. ./lib-git-svn.sh
|
||||
test_expect_success 'load svn dumpfile' '
|
||||
svnadmin load "$rawsvnrepo" < "${TEST_DIRECTORY}/t9136/svn.dump"
|
||||
'
|
||||
|
||||
test_expect_success 'clone using git svn' 'git svn clone -s "$svnrepo" x'
|
||||
|
||||
test_done
|
192
t/t9136/svn.dump
Normal file
192
t/t9136/svn.dump
Normal file
@ -0,0 +1,192 @@
|
||||
SVN-fs-dump-format-version: 2
|
||||
|
||||
UUID: eecae021-8f16-48da-969d-79beb8ae6ea5
|
||||
|
||||
Revision-number: 0
|
||||
Prop-content-length: 56
|
||||
Content-length: 56
|
||||
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:56.292890Z
|
||||
PROPS-END
|
||||
|
||||
Revision-number: 1
|
||||
Prop-content-length: 106
|
||||
Content-length: 106
|
||||
|
||||
K 7
|
||||
svn:log
|
||||
V 4
|
||||
init
|
||||
K 10
|
||||
svn:author
|
||||
V 8
|
||||
john.doe
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:57.192384Z
|
||||
PROPS-END
|
||||
|
||||
Node-path: branches
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Prop-content-length: 10
|
||||
Content-length: 10
|
||||
|
||||
PROPS-END
|
||||
|
||||
|
||||
Node-path: tags
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Prop-content-length: 10
|
||||
Content-length: 10
|
||||
|
||||
PROPS-END
|
||||
|
||||
|
||||
Node-path: trunk
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Prop-content-length: 10
|
||||
Content-length: 10
|
||||
|
||||
PROPS-END
|
||||
|
||||
|
||||
Node-path: trunk/file
|
||||
Node-kind: file
|
||||
Node-action: add
|
||||
Prop-content-length: 10
|
||||
Text-content-length: 0
|
||||
Text-content-md5: d41d8cd98f00b204e9800998ecf8427e
|
||||
Content-length: 10
|
||||
|
||||
PROPS-END
|
||||
|
||||
|
||||
Revision-number: 2
|
||||
Prop-content-length: 105
|
||||
Content-length: 105
|
||||
|
||||
K 7
|
||||
svn:log
|
||||
V 3
|
||||
1.0
|
||||
K 10
|
||||
svn:author
|
||||
V 8
|
||||
john.doe
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:58.124724Z
|
||||
PROPS-END
|
||||
|
||||
Node-path: tags/1.0
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Node-copyfrom-rev: 1
|
||||
Node-copyfrom-path: trunk
|
||||
|
||||
|
||||
Revision-number: 3
|
||||
Prop-content-length: 111
|
||||
Content-length: 111
|
||||
|
||||
K 7
|
||||
svn:log
|
||||
V 9
|
||||
1.0.1-bad
|
||||
K 10
|
||||
svn:author
|
||||
V 8
|
||||
john.doe
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:58.151727Z
|
||||
PROPS-END
|
||||
|
||||
Node-path: tags/1.0.1
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Node-copyfrom-rev: 2
|
||||
Node-copyfrom-path: tags/1.0
|
||||
|
||||
|
||||
Revision-number: 4
|
||||
Prop-content-length: 111
|
||||
Content-length: 111
|
||||
|
||||
K 7
|
||||
svn:log
|
||||
V 9
|
||||
Wrong tag
|
||||
K 10
|
||||
svn:author
|
||||
V 8
|
||||
john.doe
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:58.167427Z
|
||||
PROPS-END
|
||||
|
||||
Node-path: tags/1.0.1
|
||||
Node-action: delete
|
||||
|
||||
|
||||
Revision-number: 5
|
||||
Prop-content-length: 113
|
||||
Content-length: 113
|
||||
|
||||
K 7
|
||||
svn:log
|
||||
V 10
|
||||
1.0-branch
|
||||
K 10
|
||||
svn:author
|
||||
V 8
|
||||
john.doe
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:58.184498Z
|
||||
PROPS-END
|
||||
|
||||
Node-path: branches/1.0
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Node-copyfrom-rev: 4
|
||||
Node-copyfrom-path: tags/1.0
|
||||
|
||||
|
||||
Revision-number: 6
|
||||
Prop-content-length: 113
|
||||
Content-length: 113
|
||||
|
||||
K 7
|
||||
svn:log
|
||||
V 10
|
||||
1.0.1-good
|
||||
K 10
|
||||
svn:author
|
||||
V 8
|
||||
john.doe
|
||||
K 8
|
||||
svn:date
|
||||
V 27
|
||||
2009-02-22T00:50:58.200695Z
|
||||
PROPS-END
|
||||
|
||||
Node-path: tags/1.0.1
|
||||
Node-kind: dir
|
||||
Node-action: add
|
||||
Node-copyfrom-rev: 5
|
||||
Node-copyfrom-path: branches/1.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user