From: Lars Noschinski <hidden> Date: 2016-06-15 22:46:13
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ mkdir foo
$ cd foo
$ git init
$ touch bar
$ git add bar
$ git commit -m bar
$ cd ..
$ git clone --bare foo
$ cd foo.git
$ git filter-branch -d /tmp/filter master
fatal: Not a git repository (or any of the parent directories): .git
This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
---
The tests copies backup-ref into another directory and checks
that it contains a branch from the rewritten repository.
git-filter-branch.sh | 12 ++++++------
t/t7003-filter-branch.sh | 9 +++++++++
2 files changed, 15 insertions(+), 6 deletions(-)
@@ -220,6 +220,12 @@ die ""# Remove tempdir on exittrap'cd ../..; rm -rf "$tempdir"'0+ORIG_GIT_DIR="$GIT_DIR"+ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"+ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"+GIT_WORK_TREE=.+exportGIT_DIRGIT_WORK_TREE+# Make sure refs/original is emptygitfor-each-ref>"$tempdir"/backup-refs||exitwhilereadsha1typename
@@ -234,12 +240,6 @@ doesacdone<"$tempdir"/backup-refs-ORIG_GIT_DIR="$GIT_DIR"-ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"-ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"-GIT_WORK_TREE=.-exportGIT_DIRGIT_WORK_TREE-# The refs should be updated if their heads were rewrittengitrev-parse--no-flags--revs-only--symbolic-full-name\--defaultHEAD"$@">"$tempdir"/raw-heads||exit
From: Lars Noschinski <hidden> Date: 2016-06-15 22:46:13
* Lars Noschinski [off-list ref] [09-02-17 09:31]:
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ mkdir foo
$ cd foo
$ git init
$ touch bar
$ git add bar
$ git commit -m bar
$ cd ..
$ git clone --bare foo
$ cd foo.git
$ git filter-branch -d /tmp/filter master
fatal: Not a git repository (or any of the parent directories): .git
This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
Ops, forgot the
Signed-off-by: Lars Noschinski <redacted>
Feel free to add it. I can also resend the patch.
- Lars
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:13
Hi,
On Tue, 17 Feb 2009, Lars Noschinski wrote:
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ mkdir foo
$ cd foo
$ git init
$ touch bar
$ git add bar
$ git commit -m bar
$ cd ..
$ git clone --bare foo
$ cd foo.git
$ git filter-branch -d /tmp/filter master
fatal: Not a git repository (or any of the parent directories): .git
This could be written as
$ cd .git
$ git filter-branch -d /tmp/bla master
Right?
Funny, git am -3 reports:
Did you hand edit your patch?
It does not apply to blobs recorded in its index.
Cannot fall back to three-way merge.
After realizing that the common lines were prefixed with a double space,
and applying my l33t patch m0nkey ski77z, I could verify that it works as
expected (in addition to looking at the patch and deeming it correct).
@@ -48,6 +48,15 @@ test_expect_success 'result is really identical' 'test$H=$(gitrev-parseHEAD)'+TRASHDIR=$(pwd)+test_expect_success'correct GIT_DIR while using -d''+mkdirdrepo&&cddrepo&&gitinit&&make_commitdrepo&&
We try to avoid cd'ing back, by using constructs like this:
(cd drepo &&
...
) &&
After those two (maybe three) changes and your SOB: ACK.
BTW the reason I wanted to test this thing is that I suspected that you
meant test_commit instead of make_commit. But then, I realized that there
exists a make_commit in t7003... which shares the shortcoming of our
previous implementation of test_commit in that it adds ambiguities on
case-insensitive filesystems.
So I _had_ to look who introduced make_commit:
$ git blame -L '/make_commit/,/}/' t/t7003*
Making a fool out of yourself -- priceless.
Ciao,
Dscho
From: Lars Noschinski <hidden> Date: 2016-06-15 22:46:13
* Johannes Schindelin [off-list ref] [09-02-17 16:08]:
On Tue, 17 Feb 2009, Lars Noschinski wrote:
quoted
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ mkdir foo
$ cd foo
$ git init
$ touch bar
$ git add bar
$ git commit -m bar
$ cd ..
$ git clone --bare foo
$ cd foo.git
$ git filter-branch -d /tmp/filter master
fatal: Not a git repository (or any of the parent directories): .git
This could be written as
$ cd .git
$ git filter-branch -d /tmp/bla master
Does not work, as we get another (slightly misleading) error message:
/tmp/foo/.git$ git filter-branch -d /tmp/bar master
fatal: This operation must be run in a work tree
Cannot rewrite branch(es) with a dirty working directory.
But we do not need a bare repository at all to demonstrate this bug, so
we can skip even the 'cd .git'.
Funny, git am -3 reports:
Did you hand edit your patch?
It does not apply to blobs recorded in its index.
Cannot fall back to three-way merge.
Hm, for some reason, format=flowed was enabled. I wonder, that it has
not bitten me earlier.
We try to avoid cd'ing back, by using constructs like this:
(cd drepo &&
...
) &&
Ok, can do.
After those two (maybe three) changes and your SOB: ACK.
BTW the reason I wanted to test this thing is that I suspected that you
meant test_commit instead of make_commit. But then, I realized that there
exists a make_commit in t7003... which shares the shortcoming of our
previous implementation of test_commit in that it adds ambiguities on
case-insensitive filesystems.
Yeah, I used make_commit to stay consistent with the rest of the file.
I'll change it to test_commit. I think as it does not bite us, it would
be unnecessary code churn to remove the remaining usage of make_commit?
So I _had_ to look who introduced make_commit:
$ git blame -L '/make_commit/,/}/' t/t7003*
Making a fool out of yourself -- priceless.
From: Lars Noschinski <hidden> Date: 2016-06-15 22:46:13
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ mkdir foo
$ cd foo
$ git init
$ touch bar
$ git add bar
$ git commit -m bar
$ git filter-branch -d /tmp/filter master
fatal: Not a git repository (or any of the parent directories): .git
This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
Signed-off-by: Lars Noschinski <redacted>
---
git-filter-branch.sh | 12 ++++++------
t/t7003-filter-branch.sh | 12 ++++++++++++
2 files changed, 18 insertions(+), 6 deletions(-)
@@ -220,6 +220,12 @@ die ""# Remove tempdir on exittrap'cd ../..; rm -rf "$tempdir"'0+ORIG_GIT_DIR="$GIT_DIR"+ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"+ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"+GIT_WORK_TREE=.+exportGIT_DIRGIT_WORK_TREE+# Make sure refs/original is emptygitfor-each-ref>"$tempdir"/backup-refs||exitwhilereadsha1typename
@@ -234,12 +240,6 @@ doesacdone<"$tempdir"/backup-refs-ORIG_GIT_DIR="$GIT_DIR"-ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"-ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"-GIT_WORK_TREE=.-exportGIT_DIRGIT_WORK_TREE-# The refs should be updated if their heads were rewrittengitrev-parse--no-flags--revs-only--symbolic-full-name\--defaultHEAD"$@">"$tempdir"/raw-heads||exit
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:13
Hi,
On Tue, 17 Feb 2009, Lars Noschinski wrote:
I'll change [make_commit] to test_commit.
Oops, sorry, I actually was not trying to suggest that, but relate a story
that I found funny ;-)
I think as it does not bite us, it would be unnecessary code churn to
remove the remaining usage of make_commit?
Probably. I mean, every cleanup bears a very real possibility of
introducing a regression, so it better be worth it. As t7003 seems to
work on (case) insensitive filesystems, let's leave it.
Ciao,
Dscho
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:13
Hi,
On Tue, 17 Feb 2009, Lars Noschinski wrote:
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ mkdir foo
$ cd foo
$ git init
$ touch bar
$ git add bar
$ git commit -m bar
$ git filter-branch -d /tmp/filter master
fatal: Not a git repository (or any of the parent directories): .git
This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
Signed-off-by: Lars Noschinski <redacted>
---
Let me quickly add my ACK before Junio can apply the patch without it.
(Even I had the impression that you wanted to trim down the commit
message, but it really does not matter to me all that much.)
Ciao,
Dscho
From: Lars Noschinski <hidden> Date: 2016-06-15 22:46:14
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ git filter-branch -d /tmp/foo master
fatal: Not a git repository (or any of the parent directories): .git
This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
Signed-off-by: Lars Noschinski <redacted>
Acked-by: Johannes Schindelin <redacted>
---
Last iteration :)
git-filter-branch.sh | 12 ++++++------
t/t7003-filter-branch.sh | 12 ++++++++++++
2 files changed, 18 insertions(+), 6 deletions(-)
@@ -220,6 +220,12 @@ die ""# Remove tempdir on exittrap'cd ../..; rm -rf "$tempdir"'0+ORIG_GIT_DIR="$GIT_DIR"+ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"+ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"+GIT_WORK_TREE=.+exportGIT_DIRGIT_WORK_TREE+# Make sure refs/original is empty gitfor-each-ref>"$tempdir"/backup-refs||exitwhilereadsha1typename
@@ -234,12 +240,6 @@ doesacdone<"$tempdir"/backup-refs-ORIG_GIT_DIR="$GIT_DIR"-ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"-ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"-GIT_WORK_TREE=.-exportGIT_DIRGIT_WORK_TREE-# The refs should be updated if their heads were rewritten gitrev-parse--no-flags--revs-only--symbolic-full-name\--defaultHEAD"$@">"$tempdir"/raw-heads||exit
From: Johannes Schindelin <hidden> Date: 2016-06-15 22:46:14
Hi,
On Wed, 18 Feb 2009, Lars Noschinski wrote:
The improved error handling catches a bug in filter-branch when using
-d pointing to a path outside any git repository:
$ git filter-branch -d /tmp/foo master
fatal: Not a git repository (or any of the parent directories): .git
This error message comes from git for-each-ref in line 224. GIT_DIR is
set correctly by git-sh-setup (to the foo.git repository), but not
exported (yet).
Signed-off-by: Lars Noschinski <redacted>
Acked-by: Johannes Schindelin <redacted>
---
Last iteration :)