* [Bug] rebase -i squashes submodule changes into unrelated commit
@ 2009-01-27 9:07 Junio C Hamano
2009-01-27 9:20 ` Junio C Hamano
2009-01-27 11:42 ` [PATCH] Fix submodule squashing " Johannes Schindelin
0 siblings, 2 replies; 3+ messages in thread
From: Junio C Hamano @ 2009-01-27 9:07 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
Attempting to rebase three-commit series (two regular changes, followed by
one commit that changes what commit is bound for a submodule path) to
squash the first two results in a failure; not just the first two commits
squashed, but the change to the submodule is also included in the result.
This failure causes the subsequent step to "pick" the change that actually
changes the submodule to be applied, because there is no change left to be
applied.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
t/t3404-rebase-interactive.sh | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git c/t/t3404-rebase-interactive.sh w/t/t3404-rebase-interactive.sh
index 2cc8e7a..6ffb9ad 100755
--- c/t/t3404-rebase-interactive.sh
+++ w/t/t3404-rebase-interactive.sh
@@ -462,4 +462,30 @@ test_expect_success 'do "noop" when there is nothing to cherry-pick' '
'
+test_expect_success 'submodule rebase setup' '
+ git checkout A &&
+ mkdir sub &&
+ (
+ cd sub && git init && >elif &&
+ git add elif && git commit -m "submodule initial"
+ ) &&
+ echo 1 >file1 &&
+ git add file1 sub
+ test_tick &&
+ git commit -m "One" &&
+ echo 2 >file1 &&
+ test_tick &&
+ git commit -a -m "Two" &&
+ (
+ cd sub && echo 3 >elif &&
+ git commit -a -m "submodule second"
+ ) &&
+ test_tick &&
+ git commit -a -m "Three changes submodule"
+'
+
+test_expect_failure 'submodule rebase -i' '
+ FAKE_LINES="1 squash 2 3" git rebase -i A
+'
+
test_done
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Bug] rebase -i squashes submodule changes into unrelated commit
2009-01-27 9:07 [Bug] rebase -i squashes submodule changes into unrelated commit Junio C Hamano
@ 2009-01-27 9:20 ` Junio C Hamano
2009-01-27 11:42 ` [PATCH] Fix submodule squashing " Johannes Schindelin
1 sibling, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2009-01-27 9:20 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin
Junio C Hamano <gitster@pobox.com> writes:
> Attempting to rebase three-commit series (two regular changes, followed by
> one commit that changes what commit is bound for a submodule path) to
> squash the first two results in a failure; not just the first two commits
> squashed, but the change to the submodule is also included in the result.
>
> This failure causes the subsequent step to "pick" the change that actually
> changes the submodule to be applied, because there is no change left to be
> applied.
Sorry, an obvious typo is here: s/to be applied,/to fail,/;
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] Fix submodule squashing into unrelated commit
2009-01-27 9:07 [Bug] rebase -i squashes submodule changes into unrelated commit Junio C Hamano
2009-01-27 9:20 ` Junio C Hamano
@ 2009-01-27 11:42 ` Johannes Schindelin
1 sibling, 0 replies; 3+ messages in thread
From: Johannes Schindelin @ 2009-01-27 11:42 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Actually, I think the issue is pretty independent of submodules; when
"git commit" gets an empty parameter, it misinterprets it as a file.
So avoid passing an empty parameter to "git commit".
Actually, this is a nice cleanup, as MSG_FILE and EDIT_COMMIT were mutually
exclusive; use one variable instead
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
We might want to safeguard "git commit", too.
git-rebase--interactive.sh | 9 ++++-----
t/t3404-rebase-interactive.sh | 2 +-
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 002929e..3ac7162 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -373,17 +373,15 @@ do_next () {
pick_one -n $sha1 || failed=t
case "$(peek_next_command)" in
squash|s)
- EDIT_COMMIT=
USE_OUTPUT=output
MSG_OPT=-F
- MSG_FILE="$MSG"
+ EDIT_OR_FILE="$MSG"
cp "$MSG" "$SQUASH_MSG"
;;
*)
- EDIT_COMMIT=-e
USE_OUTPUT=
MSG_OPT=
- MSG_FILE=
+ EDIT_OR_FILE=-e
rm -f "$SQUASH_MSG" || exit
cp "$MSG" "$GIT_DIR"/SQUASH_MSG
rm -f "$GIT_DIR"/MERGE_MSG || exit
@@ -397,7 +395,8 @@ do_next () {
GIT_AUTHOR_NAME="$GIT_AUTHOR_NAME" \
GIT_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" \
GIT_AUTHOR_DATE="$GIT_AUTHOR_DATE" \
- $USE_OUTPUT git commit --no-verify $MSG_OPT "$MSG_FILE" $EDIT_COMMIT || failed=t
+ $USE_OUTPUT git commit --no-verify \
+ $MSG_OPT "$EDIT_OR_FILE" || failed=t
fi
if test $failed = t
then
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 6ffb9ad..4becc55 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -484,7 +484,7 @@ test_expect_success 'submodule rebase setup' '
git commit -a -m "Three changes submodule"
'
-test_expect_failure 'submodule rebase -i' '
+test_expect_success 'submodule rebase -i' '
FAKE_LINES="1 squash 2 3" git rebase -i A
'
--
1.6.1.482.g7d54be
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-01-27 11:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-27 9:07 [Bug] rebase -i squashes submodule changes into unrelated commit Junio C Hamano
2009-01-27 9:20 ` Junio C Hamano
2009-01-27 11:42 ` [PATCH] Fix submodule squashing " Johannes Schindelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).