git-svn: remove files from the index before adding/updating
authorEric Wong <normalperson@yhbt.net>
Sat, 18 Feb 2006 05:04:47 +0000 (21:04 -0800)
committerJunio C Hamano <junkio@cox.net>
Sat, 18 Feb 2006 09:22:39 +0000 (01:22 -0800)
This fixes a bug when importing where a directory gets removed/renamed
but is immediately replaced by a file of the same name in the same
revision.

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

index 2caf0570ff7753f59b1e9709590a793a7940a2a6..71a8b3b2e69a47a4f1919589058121ac576f247c 100755 (executable)
@@ -580,13 +580,12 @@ sub svn_info {
 sub sys { system(@_) == 0 or croak $? }
 
 sub git_addremove {
-       system( "git-ls-files -z --others ".
+       system( "git-diff-files --name-only -z ".
+                               " | git-update-index --remove -z --stdin; ".
+               "git-ls-files -z --others ".
                        "'--exclude-from=$GIT_DIR/$GIT_SVN/info/exclude'".
-                               "| git-update-index --add -z --stdin; ".
-               "git-ls-files -z --deleted ".
-                               "| git-update-index --remove -z --stdin; ".
-               "git-ls-files -z --modified".
-                               "| git-update-index -z --stdin") == 0 or croak $?
+                               " | git-update-index --add -z --stdin; "
+               ) == 0 or croak $?
 }
 
 sub s_to_file {