From: Olivier Marin <dkr+ml.git@free.fr>
To: Junio C Hamano <gitster@pobox.com>
Cc: "Theodore Tso" <tytso@mit.edu>,
"Nanako Shiraishi" <nanako3@lavabit.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
"René Scharfe" <rene.scharfe@lsrfire.ath.cx>,
"Stephan Beyer" <s-beyer@gmx.net>,
"Joe Fiorini" <joe@faithfulgeek.org>,
git@vger.kernel.org, "Jari Aalto" <jari.aalto@cante.net>
Subject: Re: [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge"
Date: Mon, 21 Jul 2008 15:39:06 +0200 [thread overview]
Message-ID: <4884917A.1060005@free.fr> (raw)
In-Reply-To: <7vd4l9zgmp.fsf@gitster.siamese.dyndns.org>
Junio C Hamano a écrit :
>
> Anything that changes "am" to require a clean working tree will NEVER be
> accepted. I personally rely on the ability for it to run in a dirty tree,
> so does Linus.
>
> Side note. Anything that changes "merge" to require a clean
> working tree is also unacceptable. Cf.
>
> http://thread.gmane.org/gmane.comp.version-control.git/9073/focus=9089
>
> Linus talks about "patch" in the paragraph second to the last one
> in the message; back then he was talking about "git-applymbox" but
> the same argument there applies to its newer incarnation "git-am".
>
> Side note #2. It would have been nice if "rebase" were also
> written in such a way that it can work in a dirty tree as long as
> local changes did not interfere with the operation, but it is a
> lot more involved.
Thanks for the explanation and the really interesting pointer.
The last thing that still annoy me is the --skip that refuse to skip in 3-way
merge. Perhaps we can use the "git read-tree --reset -u" thing for skip too.
So, what about the following patch?
-- >8 --
From: Olivier Marin <dkr@freesurf.fr>
git am --skip: clean the index while preserving local changes
In 3-way merge, "am" will let the index with unmerged path waiting
for us to resolve conflicts and continue. But if we want to --skip
instead, "am" refuses to continue because of the dirty index.
With this patch, "am" will clean the index without touching files
locally modified, before continue.
Signed-off-by: Olivier Marin <dkr@freesurf.fr>
---
git-am.sh | 12 +++++++++---
t/t4151-am-abort.sh | 11 +++++++++--
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/git-am.sh b/git-am.sh
index 60aaa4a..864c77e 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -202,8 +202,15 @@ then
die "previous rebase directory $dotest still exists but mbox given."
resume=yes
- case "$abort" in
- t)
+ case "$skip,$abort" in
+ t,)
+ git rerere clear
+ git read-tree --reset -u HEAD HEAD
+ orig_head=$(cat "$GIT_DIR/ORIG_HEAD")
+ git reset HEAD
+ git update-ref ORIG_HEAD $orig_head
+ ;;
+ ,t)
git rerere clear
git read-tree --reset -u HEAD ORIG_HEAD
git reset ORIG_HEAD
@@ -297,7 +304,6 @@ last=`cat "$dotest/last"`
this=`cat "$dotest/next"`
if test "$skip" = t
then
- git rerere clear
this=`expr "$this" + 1`
resume=
fi
diff --git a/t/t4151-am-abort.sh b/t/t4151-am-abort.sh
index dda7e2c..249093b 100755
--- a/t/t4151-am-abort.sh
+++ b/t/t4151-am-abort.sh
@@ -14,7 +14,7 @@ test_expect_success setup '
git add file-1 file-2 &&
git commit -m initial &&
git tag initial &&
- for i in 2 3 4 5
+ for i in 2 3 4 5 6
do
echo $i >>file-1 &&
test_tick &&
@@ -32,7 +32,7 @@ do
git reset --hard initial &&
cp file-2-expect file-2 &&
- test_must_fail git am$with3 000[124]-*.patch &&
+ test_must_fail git am$with3 000[1245]-*.patch &&
git log --pretty=tformat:%s >actual &&
for i in 3 2 initial
do
@@ -41,6 +41,13 @@ do
test_cmp expect actual
'
+ test_expect_success "am$with3 --skip continue after failed am$with3" '
+ test_must_fail git-am$with3 --skip >output &&
+ test "$(grep "^Applying" output)" = "Applying 6" &&
+ test_cmp file-2-expect file-2 &&
+ test ! -f .git/rr-cache/MERGE_RR
+ '
+
test_expect_success "am --abort goes back after failed am$with3" '
git-am --abort &&
git rev-parse HEAD >actual &&
--
1.5.6.4.570.g052e.dirty
next prev parent reply other threads:[~2008-07-21 13:40 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-15 21:08 Git rebase failure: .dotest overwritten Joe Fiorini
2008-07-15 21:22 ` Stephan Beyer
2008-07-15 21:48 ` René Scharfe
2008-07-16 0:47 ` [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge" Johannes Schindelin
2008-07-16 0:57 ` Linus Torvalds
2008-07-16 1:10 ` Junio C Hamano
2008-07-16 1:15 ` Johannes Schindelin
2008-07-16 1:19 ` Junio C Hamano
2008-07-16 1:33 ` [PATCH for master] " Johannes Schindelin
2008-07-16 1:52 ` [PATCH] " Linus Torvalds
2008-07-16 2:30 ` Johannes Schindelin
2008-07-16 3:05 ` Junio C Hamano
2008-07-16 21:27 ` Petr Baudis
2008-07-16 21:44 ` Junio C Hamano
2008-07-16 1:26 ` Theodore Tso
2008-07-16 1:47 ` Stephan Beyer
2008-07-16 19:18 ` Junio C Hamano
2008-07-19 18:40 ` Olivier Marin
2008-07-19 22:18 ` Junio C Hamano
2008-07-19 22:27 ` Junio C Hamano
2008-07-22 23:47 ` Stephan Beyer
2008-07-23 0:48 ` Junio C Hamano
2008-07-23 1:13 ` Stephan Beyer
2008-07-23 14:54 ` Olivier Marin
2008-07-23 16:47 ` Stephan Beyer
2008-07-23 20:40 ` Junio C Hamano
2008-07-23 0:10 ` [PATCH] am --abort: Add to bash-completion and mention in git-rerere documentation Stephan Beyer
2008-07-19 19:49 ` [PATCH] Rename ".dotest/" to ".git/rebase" and ".dotest-merge" to "rebase-merge" Olivier Marin
2008-07-19 19:59 ` Stephan Beyer
2008-07-19 20:25 ` Olivier Marin
2008-07-19 21:52 ` Junio C Hamano
2008-07-19 22:39 ` Jakub Narebski
2008-07-21 13:39 ` Olivier Marin [this message]
2008-07-23 0:16 ` Junio C Hamano
2008-07-23 12:24 ` Olivier Marin
2008-07-23 18:31 ` Junio C Hamano
2008-07-24 12:44 ` Olivier Marin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4884917A.1060005@free.fr \
--to=dkr+ml.git@free.fr \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jari.aalto@cante.net \
--cc=joe@faithfulgeek.org \
--cc=nanako3@lavabit.com \
--cc=rene.scharfe@lsrfire.ath.cx \
--cc=s-beyer@gmx.net \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.