summaryrefslogtreecommitdiff
path: root/contrib/git-svn
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2006-02-18 05:04:47 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-02-18 09:22:39 (GMT)
commit0870321548806e85fbf1433a6e016fa3cc09d524 (patch)
tree3eac1410d8893ca30b70e51d205cee167be84dd7 /contrib/git-svn
parent45d2b286acf4a1191e6199c41a034cb0677a0965 (diff)
downloadgit-0870321548806e85fbf1433a6e016fa3cc09d524.zip
git-0870321548806e85fbf1433a6e016fa3cc09d524.tar.gz
git-0870321548806e85fbf1433a6e016fa3cc09d524.tar.bz2
git-svn: remove files from the index before adding/updating
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>
Diffstat (limited to 'contrib/git-svn')
-rwxr-xr-xcontrib/git-svn/git-svn11
1 files changed, 5 insertions, 6 deletions
diff --git a/contrib/git-svn/git-svn b/contrib/git-svn/git-svn
index 2caf057..71a8b3b 100755
--- a/contrib/git-svn/git-svn
+++ b/contrib/git-svn/git-svn
@@ -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 {