зеркало из https://github.com/microsoft/git.git
git-svnimport: Don't assume that copied files haven't changed
Don't assume that a file that SVN claims was copied from somewhere else is bit-for-bit identical with its parent, since SVN allows changes to copied files before they are committed. Without this fix, such copy-modify-commit operations causes the imported file to lack the "modify" part -- that is, we get subtle data corruption. Signed-off-by: Karl Hasselström <kha@treskal.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
9760662f1a
Коммит
e67c66251a
|
@ -616,9 +616,7 @@ sub commit {
|
|||
}
|
||||
if(($action->[0] eq "A") || ($action->[0] eq "R")) {
|
||||
my $node_kind = node_kind($branch,$path,$revision);
|
||||
if($action->[1]) {
|
||||
copy_path($revision,$branch,$path,$action->[1],$action->[2],$node_kind,\@new,\@parents);
|
||||
} elsif ($node_kind eq $SVN::Node::file) {
|
||||
if ($node_kind eq $SVN::Node::file) {
|
||||
my $f = get_file($revision,$branch,$path);
|
||||
if ($f) {
|
||||
push(@new,$f) if $f;
|
||||
|
@ -627,8 +625,15 @@ sub commit {
|
|||
print STDERR "$revision: $branch: could not fetch '$opath'\n";
|
||||
}
|
||||
} elsif ($node_kind eq $SVN::Node::dir) {
|
||||
get_ignore(\@new, \@old, $revision,
|
||||
$branch,$path);
|
||||
if($action->[1]) {
|
||||
copy_path($revision, $branch,
|
||||
$path, $action->[1],
|
||||
$action->[2], $node_kind,
|
||||
\@new, \@parents);
|
||||
} else {
|
||||
get_ignore(\@new, \@old, $revision,
|
||||
$branch, $path);
|
||||
}
|
||||
}
|
||||
} elsif ($action->[0] eq "D") {
|
||||
push(@old,$path);
|
||||
|
|
Загрузка…
Ссылка в новой задаче