* [PATCH] Don't use cpio in git-clone when not installed @ 2007-10-31 20:05 Mike Hommey 2007-10-31 20:10 ` Mike Hommey ` (3 more replies) 0 siblings, 4 replies; 16+ messages in thread From: Mike Hommey @ 2007-10-31 20:05 UTC (permalink / raw) To: git; +Cc: Junio C Hamano Signed-off-by: Mike Hommey <mh@glandium.org> --- git-clone.sh | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/git-clone.sh b/git-clone.sh index 0ea3c24..57e96ae 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -191,7 +191,9 @@ fi # it is local if base=$(get_repo_base "$repo"); then repo="$base" - local=yes + if type cpio > /dev/null 2>&1; then + local=yes + fi fi dir="$2" -- 1.5.3.4 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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 ` (2 subsequent siblings) 3 siblings, 0 replies; 16+ messages in thread From: Mike Hommey @ 2007-10-31 20:10 UTC (permalink / raw) To: git Damn, and I forgot git-send-email doesn't add the <> to In-Reply-To. Mike ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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:09 ` Nguyen Thai Ngoc Duy 3 siblings, 1 reply; 16+ messages in thread From: Junio C Hamano @ 2007-10-31 22:29 UTC (permalink / raw) To: Mike Hommey; +Cc: git "type"? That's probably better than using "which", but sounds quite wrong. Why not add Makefile target that the shell scripts depend on to see if necessary tools are available and let the builder know if they are not? ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-10-31 22:29 ` Junio C Hamano @ 2007-10-31 23:55 ` Johannes Schindelin 0 siblings, 0 replies; 16+ messages in thread From: Johannes Schindelin @ 2007-10-31 23:55 UTC (permalink / raw) To: Junio C Hamano; +Cc: Mike Hommey, git Hi, On Wed, 31 Oct 2007, Junio C Hamano wrote: > "type"? That's probably better than using "which", but sounds quite > wrong. Why not add Makefile target that the shell scripts depend on to > see if necessary tools are available and let the builder know if they > are not? I thought the accord was that "cpio" is a _runtime_ dependency. But yes, I agree "type" is not necessarily the best choice. Maybe testing the exit code for 127 (not found) is the better choice? Ciao, Dscho ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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-11-01 0:46 ` Linus Torvalds 2007-11-01 1:00 ` Jakub Narebski ` (4 more replies) 2007-11-01 1:09 ` Nguyen Thai Ngoc Duy 3 siblings, 5 replies; 16+ messages in thread From: Linus Torvalds @ 2007-11-01 0:46 UTC (permalink / raw) To: Mike Hommey; +Cc: git, Junio C Hamano On Wed, 31 Oct 2007, Mike Hommey wrote: > + if type cpio > /dev/null 2>&1; then > + local=yes > + fi Isn't "type" a bashism? Maybe just do if echo . | cpio -o > /dev/null 2>&1; then instead? Maybe even doing this at install time to avoid the overhead of executing another process.. Linus ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-11-01 0:46 ` Linus Torvalds @ 2007-11-01 1:00 ` Jakub Narebski 2007-11-01 1:05 ` Nguyen Thai Ngoc Duy ` (3 subsequent siblings) 4 siblings, 0 replies; 16+ messages in thread From: Jakub Narebski @ 2007-11-01 1:00 UTC (permalink / raw) To: git Linus Torvalds wrote: > > > On Wed, 31 Oct 2007, Mike Hommey wrote: >> + if type cpio > /dev/null 2>&1; then >> + local=yes >> + fi > > Isn't "type" a bashism? > > Maybe just do > > if echo . | cpio -o > /dev/null 2>&1; then > > instead? Maybe even doing this at install time to avoid the overhead of > executing another process.. Or perhaps trap / check actual execution of cpio in git-clone, and fallback to ln -s / link if it fails... -- Jakub Narebski Warsaw, Poland ShadeHawk on #git ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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 ` (2 subsequent siblings) 4 siblings, 0 replies; 16+ messages in thread From: Nguyen Thai Ngoc Duy @ 2007-11-01 1:05 UTC (permalink / raw) To: Linus Torvalds; +Cc: Mike Hommey, git, Junio C Hamano On 11/1/07, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > > On Wed, 31 Oct 2007, Mike Hommey wrote: > > + if type cpio > /dev/null 2>&1; then > > + local=yes > > + fi > > Isn't "type" a bashism? busybox ash has "type". I'm happy. -- Duy ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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 4 siblings, 0 replies; 16+ messages in thread From: Junio C Hamano @ 2007-11-01 1:12 UTC (permalink / raw) To: Linus Torvalds; +Cc: Mike Hommey, git Linus Torvalds <torvalds@linux-foundation.org> writes: > On Wed, 31 Oct 2007, Mike Hommey wrote: >> + if type cpio > /dev/null 2>&1; then >> + local=yes >> + fi > > Isn't "type" a bashism? I seem to recall that it is in POSIX. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-11-01 0:46 ` Linus Torvalds ` (2 preceding siblings ...) 2007-11-01 1:12 ` Junio C Hamano @ 2007-11-01 6:31 ` Mike Hommey 2007-11-01 13:06 ` Alexander Skwar 4 siblings, 0 replies; 16+ messages in thread From: Mike Hommey @ 2007-11-01 6:31 UTC (permalink / raw) To: Linus Torvalds; +Cc: git, Junio C Hamano On Wed, Oct 31, 2007 at 05:46:40PM -0700, Linus Torvalds wrote: > > > On Wed, 31 Oct 2007, Mike Hommey wrote: > > + if type cpio > /dev/null 2>&1; then > > + local=yes > > + fi > > Isn't "type" a bashism? I think it's POSIX, and since I found the same construct in git-mergetool.sh, I thought it would be okay for git. Mike ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-11-01 0:46 ` Linus Torvalds ` (3 preceding siblings ...) 2007-11-01 6:31 ` Mike Hommey @ 2007-11-01 13:06 ` Alexander Skwar 4 siblings, 0 replies; 16+ messages in thread From: Alexander Skwar @ 2007-11-01 13:06 UTC (permalink / raw) To: git Linus Torvalds <torvalds <at> linux-foundation.org> writes: > > > On Wed, 31 Oct 2007, Mike Hommey wrote: > > + if type cpio > /dev/null 2>&1; then > > + local=yes > > + fi > > Isn't "type" a bashism? ksh also has type. But SUS states, that "command -v" can be used. Options [...] -v (On systems supporting the User Portability Utilities option.) Write a string to standard output that indicates the pathname or command that will be used by the shell, in the current shell execution environment (see Shell Execution Environment ), to invoke command_name, but do not invoke command_name. * Utilities, regular built-in utilities, command_names including a slash character, and any implementation-defined functions that are found using the PATH variable (as described in Command Search and Execution ), shall be written as absolute pathnames. * Shell functions, special built-in utilities, regular built-in utilities not associated with a PATH search, and shell reserved words shall be written as just their names. * An alias shall be written as a command line that represents its alias definition. * Otherwise, no output shall be written and the exit status shall reflect that the name was not found. Regards, Alexander ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-10-31 20:05 [PATCH] Don't use cpio in git-clone when not installed Mike Hommey ` (2 preceding siblings ...) 2007-11-01 0:46 ` Linus Torvalds @ 2007-11-01 1:09 ` Nguyen Thai Ngoc Duy 2007-11-01 1:15 ` Junio C Hamano 3 siblings, 1 reply; 16+ messages in thread From: Nguyen Thai Ngoc Duy @ 2007-11-01 1:09 UTC (permalink / raw) To: Mike Hommey; +Cc: git, Junio C Hamano BTW, you have workaround for git-merge also? It uses cpio to save/restore state. On 11/1/07, Mike Hommey <mh@glandium.org> wrote: > > Signed-off-by: Mike Hommey <mh@glandium.org> > --- > git-clone.sh | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/git-clone.sh b/git-clone.sh > index 0ea3c24..57e96ae 100755 > --- a/git-clone.sh > +++ b/git-clone.sh > @@ -191,7 +191,9 @@ fi > # it is local > if base=$(get_repo_base "$repo"); then > repo="$base" > - local=yes > + if type cpio > /dev/null 2>&1; then > + local=yes > + fi > fi > > dir="$2" > -- > 1.5.3.4 > > - > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Duy ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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 10:53 ` Mike Hommey 0 siblings, 2 replies; 16+ messages in thread From: Junio C Hamano @ 2007-11-01 1:15 UTC (permalink / raw) To: Nguyen Thai Ngoc Duy; +Cc: Mike Hommey, git, Junio C Hamano "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? ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 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 1 sibling, 1 reply; 16+ messages in thread From: Nguyen Thai Ngoc Duy @ 2007-11-01 1:25 UTC (permalink / raw) To: Junio C Hamano; +Cc: Mike Hommey, git On 11/1/07, Junio C Hamano <gitster@pobox.com> 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? It is on Windows because busybox cpio is not really good and busybox tar is even worse (for cpio emulation). Maybe I should just improve busybox cpio :-) -- Duy ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-11-01 1:25 ` Nguyen Thai Ngoc Duy @ 2007-11-01 6:45 ` Junio C Hamano 0 siblings, 0 replies; 16+ messages in thread From: Junio C Hamano @ 2007-11-01 6:45 UTC (permalink / raw) To: Nguyen Thai Ngoc Duy; +Cc: Junio C Hamano, Mike Hommey, git "Nguyen Thai Ngoc Duy" <pclouds@gmail.com> writes: > It is on Windows because busybox cpio is not really good and busybox > tar is even worse (for cpio emulation). Maybe I should just improve > busybox cpio :-) Sounds sensible, as it (at least its -p mode of operation) is one of the programs that is very useful yet not so well known to people new to UNIX. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-11-01 1:15 ` Junio C Hamano 2007-11-01 1:25 ` Nguyen Thai Ngoc Duy @ 2007-11-01 10:53 ` Mike Hommey 2007-11-01 21:06 ` Junio C Hamano 1 sibling, 1 reply; 16+ messages in thread From: Mike Hommey @ 2007-11-01 10:53 UTC (permalink / raw) To: Junio C Hamano; +Cc: Nguyen Thai Ngoc Duy, git 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. Mike ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] Don't use cpio in git-clone when not installed 2007-11-01 10:53 ` Mike Hommey @ 2007-11-01 21:06 ` Junio C Hamano 0 siblings, 0 replies; 16+ messages in thread From: Junio C Hamano @ 2007-11-01 21:06 UTC (permalink / raw) To: Mike Hommey; +Cc: Nguyen Thai Ngoc Duy, git 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 ^ permalink raw reply related [flat|nested] 16+ messages in thread
end of thread, other threads:[~2007-11-01 21:07 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 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).