As filter-branch could not care less about submodules' actual contents,
it does not make sense to check if the checked-out submodules are
up-to-date before running filter-branch. So do not do it.
Signed-off-by: Johannes Schindelin <redacted>
---
git-filter-branch.sh | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 8cbce4e..066f9c3 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -108,8 +108,8 @@ OPTIONS_SPEC=
. git-sh-setup
if [ "$(is_bare_repository)" = false ]; then
- git diff-files --quiet &&
- git diff-index --cached --quiet HEAD -- ||
+ git diff-files --ignore-submodules --quiet &&
+ git diff-index --ignore-submodules --cached --quiet HEAD -- ||
die "Cannot rewrite branch(es) with a dirty working directory."
fi
--
1.6.1.2.582.g3fdd5
Johannes Schindelin [off-list ref] writes:
As filter-branch could not care less about submodules' actual contents,
it does not make sense to check if the checked-out submodules are
up-to-date before running filter-branch. So do not do it.
Sorry, but I am confused. Is that because even the tree-filter does not
use the actual work tree but works in the temporary area .git-rewrite, and
a diverged submodule cannot possibly matter (and index-filter works solely
on the index anyway)?
If so, why do we even check dirtiness of anything at all?
This is not a "wouldn't this better?" proposal patch, but a "why isn't the
patch like this?" question patch.
git-filter-branch.sh | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git i/git-filter-branch.sh w/git-filter-branch.sh
index eb62f71..dda32e0 100755
--- i/git-filter-branch.sh
+++ w/git-filter-branch.sh
@@ -107,12 +107,6 @@ USAGE="[--env-filter <command>] [--tree-filter <command>] \
OPTIONS_SPEC=
. git-sh-setup
-if [ "$(is_bare_repository)" = false ]; then
- git diff-files --quiet &&
- git diff-index --cached --quiet HEAD -- ||
- die "Cannot rewrite branch(es) with a dirty working directory."
-fi
-
tempdir=.git-rewrite
filter_env=
filter_tree=
Hi,
On Wed, 4 Feb 2009, Junio C Hamano wrote:
Johannes Schindelin [off-list ref] writes:
quoted
As filter-branch could not care less about submodules' actual
contents, it does not make sense to check if the checked-out
submodules are up-to-date before running filter-branch. So do not do
it.
Sorry, but I am confused. Is that because even the tree-filter does not
use the actual work tree but works in the temporary area .git-rewrite,
and a diverged submodule cannot possibly matter (and index-filter works
solely on the index anyway)?
If so, why do we even check dirtiness of anything at all?
I guess it is because we could update the working directory with read-tree
-u -m HEAD at the end. Actually, that is exactly what we do.
Submodules do not matter much here, as nothing will be overwritten,
really, but a dirty working directory matters.
Ciao,
Dscho
Junio C Hamano schrieb:
quoted hunk
If so, why do we even check dirtiness of anything at all?
This is not a "wouldn't this better?" proposal patch, but a "why isn't the
patch like this?" question patch.
git-filter-branch.sh | 6 ------
1 files changed, 0 insertions(+), 6 deletions(-)
diff --git i/git-filter-branch.sh w/git-filter-branch.sh
index eb62f71..dda32e0 100755
--- i/git-filter-branch.sh
+++ w/git-filter-branch.sh
@@ -107,12 +107,6 @@ USAGE="[--env-filter <command>] [--tree-filter <command>] \
OPTIONS_SPEC=
. git-sh-setup
-if [ "$(is_bare_repository)" = false ]; then
- git diff-files --quiet &&
- git diff-index --cached --quiet HEAD -- ||
- die "Cannot rewrite branch(es) with a dirty working directory."
-fi
-
tempdir=.git-rewrite
filter_env=
filter_tree=
Because if the repository is non-bare, then filter-branch updates the
work-tree at the end of the run; we don't want to overwrite uncommitted
work in this case.
This behavior is a relic from cg-admin-rewritehist, I think. I've never
found it useful.
-- Hannes