It turn out I was able to fix the problem, it was almost too easy:
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 22b6ed4..493c81e 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -281,7 +281,7 @@ while read commit parents; do
die "Could not checkout the index"
# files that $commit removed are now still in the
working tree;
# remove them, else they would be added again
- git clean -q -f -x
+ git clean -d -q -f -x
eval "$filter_tree" < /dev/null ||
die "tree filter failed: $filter_tree"
Previously wrong diff, use the one above instead.
why? : changed the installed copy, tested, then reapplied the '-d'
diff (from memory) to the wrong line in my git workarea to get the diff.
- jfv
It was my first try, just because I noticed that git-clean was
giving a 'warning' of non removed directory. At that point I just
wanted to remove the warning ... but that was enough to fix the
problem !
I don't know if it's a real fix, but at least it does correct the
problem I'm having.
I have no idea of the implication of what I just touched. the
'real' problem might very well be somewhere else.
Here is a simple test that show the problem.
$: mkdir test ; cd test
$: git init
Initialized empty Git repository in .git/
$: echo 'line A' > a.txt
$: echo 'line B' > b.txt
$: mkdir subdir
$: echo 'line subA' > subdir/a.txt
$: echo 'line subB' > subdir/b.txt
$: git add *
$: git commit -m 'first commit'
Created initial commit f264d57: first commit
4 files changed, 4 insertions(+), 0 deletions(-)
create mode 100644 a.txt
create mode 100644 b.txt
create mode 100644 subdir/a.txt
create mode 100644 subdir/b.txt
$: git rm b.txt subdir/b.txt
rm 'b.txt'
rm 'subdir/b.txt'
$: git commit -m 'remove b files'
Created commit b064598: remove b files
2 files changed, 0 insertions(+), 2 deletions(-)
delete mode 100644 b.txt
delete mode 100644 subdir/b.txt
$: echo 'line AA' >> a.txt
$: echo 'line subAA' >> subdir/a.txt
$: git add *
$: git commit -m 'modified a files'
Created commit 0f914cb: modified a files
2 files changed, 2 insertions(+), 0 deletions(-)
$: git rm subdir/a.txt
rm 'subdir/a.txt'
$: git commit -m 'removed all sub files'
Created commit 41c0de7: removed all sub files
1 files changed, 0 insertions(+), 2 deletions(-)
delete mode 100644 subdir/a.txt
$: ls -la
...git a.txt
$: echo 'line AAA' >> a.txt
$: git add *
$: git commit -m 'modified a.txt'
Created commit c21e292: modified a.txt
1 files changed, 1 insertions(+), 0 deletions(-)
$: git filter-branch --tree-filter 'ls -lR' # do nothing, juste
rewrite itself
Rewrite f264d57f476858aa4ddbf70358500c3be7298048 (1/5)total 16
-rw-r--r-- 1 jfv jfv 7 30 mar 09:38 a.txt
-rw-r--r-- 1 jfv jfv 7 30 mar 09:38 b.txt
drwxr-xr-x 4 jfv jfv 136 30 mar 09:38 subdir
.../subdir:
total 16
-rw-r--r-- 1 jfv jfv 10 30 mar 09:38 a.txt
-rw-r--r-- 1 jfv jfv 10 30 mar 09:38 b.txt
Rewrite b064598f57b4679febaeddda6dfbde43a935796a (2/5)total 8
-rw-r--r-- 1 jfv jfv 7 30 mar 09:38 a.txt
drwxr-xr-x 3 jfv jfv 102 30 mar 09:38 subdir
.../subdir:
total 8
-rw-r--r-- 1 jfv jfv 10 30 mar 09:38 a.txt
Rewrite 0f914cb21ab65aac5d966a9552bfb63aa73a996a (3/5)total 8
-rw-r--r-- 1 jfv jfv 15 30 mar 09:38 a.txt
drwxr-xr-x 3 jfv jfv 102 30 mar 09:38 subdir
.../subdir:
total 8
-rw-r--r-- 1 jfv jfv 21 30 mar 09:38 a.txt
Rewrite 41c0de77880245c23bb56b0b1936564c7adf63de (4/5)Not removing
subdir/
total 8
-rw-r--r-- 1 jfv jfv 15 30 mar 09:38 a.txt
drwxr-xr-x 3 jfv jfv 102 30 mar 09:38 subdir
.../subdir:
total 8
-rw-r--r-- 1 jfv jfv 21 30 mar 09:38 a.txt
Rewrite c21e292486500afa3a0ded69f4edf30de11d42d1 (5/5)Not removing
subdir/
total 8
-rw-r--r-- 1 jfv jfv 24 30 mar 09:38 a.txt
drwxr-xr-x 3 jfv jfv 102 30 mar 09:38 subdir
.../subdir:
total 8
-rw-r--r-- 1 jfv jfv 21 30 mar 09:38 a.txt
Ref 'refs/heads/master' was rewritten
$: git log -p
commit c3715041ae38ccc6596986fd1927aff65a3d14bf
Author: Jean-François Veillette <jfveillette@xxxxx>
Date: Sun Mar 30 09:35:01 2008 -0400
modified a.txt
diff --git a/a.txt b/a.txt
index 457599c..36d130e 100644
--- a/a.txt
+++ b/a.txt
@@ -1,2 +1,3 @@
line A
line AA
+line AAA
commit d45ccff19c3c81f8c78a22ed5c2436c7a5b99f7c
Author: Jean-François Veillette <jfveillette@xxxxx>
Date: Sun Mar 30 09:33:48 2008 -0400
removed all sub files
commit 0f914cb21ab65aac5d966a9552bfb63aa73a996a
Author: Jean-François Veillette <jfveillette@xxxxx>
Date: Sun Mar 30 09:33:07 2008 -0400
modified a files
diff --git a/a.txt b/a.txt
index 102c5da..457599c 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,2 @@
line A
+line AA
diff --git a/subdir/a.txt b/subdir/a.txt
index 56e593a..b215539 100644
--- a/subdir/a.txt
+++ b/subdir/a.txt
@@ -1 +1,2 @@
line subA
+line subAA
commit b064598f57b4679febaeddda6dfbde43a935796a
Author: Jean-François Veillette <jfveillette@xxxxx>
Date: Sun Mar 30 09:32:13 2008 -0400
remove b files
diff --git a/b.txt b/b.txt
deleted file mode 100644
index 346d560..0000000
--- a/b.txt
+++ /dev/null
@@ -1 +0,0 @@
-line B
diff --git a/subdir/b.txt b/subdir/b.txt
deleted file mode 100644
index 7cbec67..0000000
--- a/subdir/b.txt
+++ /dev/null
@@ -1 +0,0 @@
-line subB
commit f264d57f476858aa4ddbf70358500c3be7298048
Author: Jean-François Veillette <jfveillette@xxxxx>
Date: Sun Mar 30 09:29:28 2008 -0400
first commit
diff --git a/a.txt b/a.txt
new file mode 100644
index 0000000..102c5da
--- /dev/null
+++ b/a.txt
@@ -0,0 +1 @@
+line A
diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..346d560
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+line B
diff --git a/subdir/a.txt b/subdir/a.txt
new file mode 100644
index 0000000..56e593a
--- /dev/null
+++ b/subdir/a.txt
@@ -0,0 +1 @@
+line subA
diff --git a/subdir/b.txt b/subdir/b.txt
new file mode 100644
index 0000000..7cbec67
--- /dev/null
+++ b/subdir/b.txt
@@ -0,0 +1 @@
+line subB
- jfv
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html