From: Junio C Hamano <gitster@pobox•com>
To: Mike Hommey <mh@glandium•org>
Cc: Nguyen Thai Ngoc Duy <pclouds@gmail•com>, git@vger•kernel.org
Subject: Re: [PATCH] Don't use cpio in git-clone when not installed
Date: Thu, 01 Nov 2007 14:06:36 -0700 [thread overview]
Message-ID: <7vlk9had5v.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20071101105318.GA4744@glandium.org> (Mike Hommey's message of "Thu, 1 Nov 2007 11:53:18 +0100")
Mike Hommey <mh@glandium•org> writes:
> On Wed, Oct 31, 2007 at 06:15:27PM -0700, Junio C Hamano wrote:
>> "Nguyen Thai Ngoc Duy" <pclouds@gmail•com> writes:
>>
>> > BTW, you have workaround for git-merge also? It uses cpio to save/restore state.
>>
>> Why do people want "workaround"? Is installing cpio such a
>> hassle?
>
> Note that to do what git-merge does with cpio, i wonder if it wouldn't
> be sensible to use git stash, now.
Like this? That's an excellent suggestion.
The patch uses the 'git stash create' which is in 'next'
(jc/stash-create topic).
Having said that, the savestate()/restorestate() codepaths are
only relevant to the "try multiple strategies and pick the best
one" feature of git-merge, and that is where cpio is used (and
the patch rewrites it to use stash). I am not sure if anybody
ever used it in practice. I admit I am guilty of inventing it,
but I certainly do not.
It might make sense to remove that try-multiple-strategies
feature from git-merge and be done with it. It would certainly
make the eventual rewrite to C much easier.
---
git-merge.sh | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/git-merge.sh b/git-merge.sh
index 3a01db0..e8916cc 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -28,20 +28,19 @@ allow_trivial_merge=t
dropsave() {
rm -f -- "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/MERGE_MSG" \
- "$GIT_DIR/MERGE_SAVE" || exit 1
+ "$GIT_DIR/MERGE_STASH" || exit 1
}
savestate() {
# Stash away any local modifications.
- git diff-index -z --name-only $head |
- cpio -0 -o >"$GIT_DIR/MERGE_SAVE"
+ git stash create >"$GIT_DIR/MERGE_STASH"
}
restorestate() {
- if test -f "$GIT_DIR/MERGE_SAVE"
+ if test -f "$GIT_DIR/MERGE_STASH"
then
git reset --hard $head >/dev/null
- cpio -iuv <"$GIT_DIR/MERGE_SAVE"
+ git stash apply --index $(cat "$GIT_DIR/MERGE_STASH")
git update-index --refresh >/dev/null
fi
}
@@ -386,7 +385,7 @@ case "$use_strategies" in
single_strategy=no
;;
*)
- rm -f "$GIT_DIR/MERGE_SAVE"
+ rm -f "$GIT_DIR/MERGE_STASH"
single_strategy=yes
;;
esac
prev parent reply other threads:[~2007-11-01 21:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-31 20:05 [PATCH] Don't use cpio in git-clone when not installed Mike Hommey
2007-10-31 20:10 ` Mike Hommey
2007-10-31 22:29 ` Junio C Hamano
2007-10-31 23:55 ` Johannes Schindelin
2007-11-01 0:46 ` Linus Torvalds
2007-11-01 1:00 ` Jakub Narebski
2007-11-01 1:05 ` Nguyen Thai Ngoc Duy
2007-11-01 1:12 ` Junio C Hamano
2007-11-01 6:31 ` Mike Hommey
2007-11-01 13:06 ` Alexander Skwar
2007-11-01 1:09 ` Nguyen Thai Ngoc Duy
2007-11-01 1:15 ` Junio C Hamano
2007-11-01 1:25 ` Nguyen Thai Ngoc Duy
2007-11-01 6:45 ` Junio C Hamano
2007-11-01 10:53 ` Mike Hommey
2007-11-01 21:06 ` Junio C Hamano [this message]
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=7vlk9had5v.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=mh@glandium$(echo .)org \
--cc=pclouds@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox