git-svn: correctly track diff-less copies with do_switch
authorEric Wong <normalperson@yhbt.net>
Sun, 28 Jan 2007 12:02:01 +0000 (04:02 -0800)
committerEric Wong <normalperson@yhbt.net>
Fri, 23 Feb 2007 08:57:10 +0000 (00:57 -0800)
Also, this should allow for the tracking of new, but empty
directories where we would want to see the log message.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl

index 5d398ee65fa1afafc21798c189330bac7e3220ff..36e5c57adf61434717188cb62989425877ef3b43 100755 (executable)
@@ -1167,6 +1167,7 @@ sub find_parent_branch {
                                                1, $ed)
                          or die "SVN connection failed somewhere...\n";
                }
+               $ed->{new_fetch} = 1;
                return $self->make_log_entry($rev, [$parent], $ed);
        }
 not_found:
@@ -1202,6 +1203,7 @@ sub do_fetch {
                        return $log_entry;
                }
                $ed = SVN::Git::Fetcher->new($self);
+               $ed->{new_fetch} = 1;
        }
        unless ($self->ra->gs_do_update($last_rev, $rev,
                                        $self->{path}, 1, $ed)) {
@@ -1275,7 +1277,7 @@ sub make_log_entry {
        my ($self, $rev, $parents, $ed) = @_;
        my $untracked = $self->get_untracked($ed);
 
-       return undef if ($ed->{nr} == 0 && scalar @$untracked == 0);
+       return undef if (! $ed->{new_fetch} && ! $ed->{nr} && ! @$untracked);
 
        open my $un, '>>', "$self->{dir}/unhandled.log" or croak $!;
        print $un "r$rev\n" or croak $!;