git-svn: brown paper bag fixes
* avoid skipping modification-only changes in fetch * correctly fetch when we only have branches and tags to glob from (no fetch keys defined) Signed-off-by: Eric Wong <normalperson@yhbt.net>maint
parent
dadc6d2a09
commit
28710f74ea
|
@ -782,7 +782,7 @@ sub fetch_all {
|
||||||
my $ra = Git::SVN::Ra->new($url);
|
my $ra = Git::SVN::Ra->new($url);
|
||||||
my $uuid = $ra->get_uuid;
|
my $uuid = $ra->get_uuid;
|
||||||
my $head = $ra->get_latest_revnum;
|
my $head = $ra->get_latest_revnum;
|
||||||
my $base = $head;
|
my $base = defined $fetch ? $head : 0;
|
||||||
|
|
||||||
# read the max revs for wildcard expansion (branches/*, tags/*)
|
# read the max revs for wildcard expansion (branches/*, tags/*)
|
||||||
foreach my $t (qw/branches tags/) {
|
foreach my $t (qw/branches tags/) {
|
||||||
|
@ -2901,7 +2901,8 @@ sub match_globs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (keys %$paths) {
|
foreach (keys %$paths) {
|
||||||
if (/$g->{path}->{left_regex}/) {
|
if (/$g->{path}->{left_regex}/ &&
|
||||||
|
!/$g->{path}->{regex}/) {
|
||||||
next if $paths->{$_}->{action} !~ /^[AR]$/;
|
next if $paths->{$_}->{action} !~ /^[AR]$/;
|
||||||
get_dir_check($self, $exists, $g, $r);
|
get_dir_check($self, $exists, $g, $r);
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,4 +55,32 @@ test_expect_success 'test refspec globbing' "
|
||||||
\"\`git rev-parse refs/remotes/trunk\`\"
|
\"\`git rev-parse refs/remotes/trunk\`\"
|
||||||
"
|
"
|
||||||
|
|
||||||
|
echo try to try > expect.two
|
||||||
|
echo nothing to see here >> expect.two
|
||||||
|
cat expect.end >> expect.two
|
||||||
|
|
||||||
|
test_expect_success 'test left-hand-side only globbing' "
|
||||||
|
git config --add svn-remote.two.url $svnrepo &&
|
||||||
|
git config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&
|
||||||
|
git config --add svn-remote.two.branches \
|
||||||
|
'branches/*:refs/remotes/two/branches/*' &&
|
||||||
|
git config --add svn-remote.two.tags \
|
||||||
|
'tags/*:refs/remotes/two/tags/*' &&
|
||||||
|
cd tmp &&
|
||||||
|
echo 'try try' >> tags/end/src/b/readme &&
|
||||||
|
poke tags/end/src/b/readme &&
|
||||||
|
svn commit -m 'try to try'
|
||||||
|
cd .. &&
|
||||||
|
git-svn fetch two &&
|
||||||
|
test \`git rev-list refs/remotes/two/tags/end | wc -l\` -eq 6 &&
|
||||||
|
test \`git rev-list refs/remotes/two/branches/start | wc -l\` -eq 3 &&
|
||||||
|
test \`git rev-parse refs/remotes/two/branches/start~2\` = \
|
||||||
|
\`git rev-parse refs/remotes/two/trunk\` &&
|
||||||
|
test \`git rev-parse refs/remotes/two/tags/end~3\` = \
|
||||||
|
\`git rev-parse refs/remotes/two/branches/start\` &&
|
||||||
|
git log --pretty=oneline refs/remotes/two/tags/end | \
|
||||||
|
sed -e 's/^.\{41\}//' > output.two &&
|
||||||
|
cmp expect.two output.two
|
||||||
|
"
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue