summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5d3b7cd)
raw | patch | inline | side by side (parent: 5d3b7cd)
author | Eric Wong <normalperson@yhbt.net> | |
Tue, 30 Jan 2007 08:35:18 +0000 (00:35 -0800) | ||
committer | Eric Wong <normalperson@yhbt.net> | |
Fri, 23 Feb 2007 08:57:10 +0000 (00:57 -0800) |
We were still skipping path information from get_log if we are
tracking /r9270/drunk/subversion/bindings/..., but got something
like this in the log:
A /r9270/drunk (from /r9270/trunk:14)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
tracking /r9270/drunk/subversion/bindings/..., but got something
like this in the log:
A /r9270/drunk (from /r9270/trunk:14)
Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl | patch | blob | history | |
t/t9104-git-svn-follow-parent.sh | patch | blob | history |
diff --git a/git-svn.perl b/git-svn.perl
index 4e357dfcef8bdec39932d565d77e271bbb97b979..b0248c94878d271a455ca25b44d092862c6a658c 100755 (executable)
--- a/git-svn.perl
+++ b/git-svn.perl
return 1;
}
+sub match_paths {
+ my ($self, $paths) = @_;
+ return 1 if $paths->{'/'};
+ $self->{path_regex} ||= qr/^\/\Q$self->{path}\E\/?/;
+ grep /$self->{path_regex}/, keys %$paths and return 1;
+ my $c = '';
+ foreach (split m#/#, $self->rel_path) {
+ $c .= "/$_";
+ return 1 if $paths->{$c};
+ }
+ return 0;
+}
+
sub find_parent_branch {
my ($self, $paths, $rev) = @_;
return undef unless $::_follow_parent;
if (my $last_commit = $gs->last_commit) {
$gs->assert_index_clean($last_commit);
}
- $gs->{path_regex} = qr/^\/\Q$gs->{path}\E\/?/;
}
while (1) {
my @revs;
my ($paths, $r) = @$_;
foreach my $gs (@gs) {
if ($paths) {
- grep /$gs->{path_regex}/, keys %$paths
- or next;
+ $gs->match_paths($paths) or next;
}
next if defined $gs->rev_db_get($r);
if (my $log_entry = $gs->do_fetch($paths, $r)) {
index 0f4e7362714b548cf67339f2cc4711da4d1c3b6f..dcec16bda236ecad6c8c3bfa2679615d5f6e3fc7 100755 (executable)
# ref: r9270 of the Subversion repository: (http://svn.collab.net/repos/svn)
# in trunk/subversion/bindings/swig/perl
-test_expect_success '' "
+test_expect_success 'follow-parent avoids deleting relevant info' "
mkdir -p import/trunk/subversion/bindings/swig/perl/t &&
for i in a b c ; do \
echo \$i > import/trunk/subversion/bindings/swig/perl/\$i.pm &&
\"\`git ls-tree --name-only r9270-t\`\"
"
+test_expect_success "track initial change if it was only made to parent" "
+ svn cp -m 'wheee!' $svnrepo/r9270/trunk $svnrepo/r9270/drunk &&
+ git-svn init -i r9270-d \
+ $svnrepo/r9270/drunk/subversion/bindings/swig/perl/native/t &&
+ git-svn fetch -i r9270-d --follow-parent &&
+ test \`git rev-list r9270-d | wc -l\` -eq 3 &&
+ test \"\`git ls-tree --name-only r9270-t\`\" = \
+ \"\`git ls-tree --name-only r9270-d\`\" &&
+ test \"\`git rev-parse r9270-t\`\" = \
+ \"\`git rev-parse r9270-d~1\`\"
+ "
+
test_debug 'gitk --all &'
test_done