git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Rebase/cherry-picking idea
@ 2007-11-26  9:02 Wincent Colaiuta
  2007-11-26  9:32 ` Benoit Sigoure
  0 siblings, 1 reply; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-26  9:02 UTC (permalink / raw)
  To: Git Mailing List

In using "git-rebase --interactive" to re-order commits you  
occasionally get conflicts and will see a message like this:

	When commiting, use the option '-c %s' to retain authorship and message

I was thinking that it might be nice to stash away this commit id  
somewhere in GIT_DIR so that the user didn't have to explicitly  
remember it, and add a new switch to git-commit that could be used to  
automatically use that stashed commit id, something like:

	git commit --retain

Although I most often see this kind of message in interactive  
rebasing, the message is generated in builtin-revert.c when cherry- 
picking, so you can also see it in any other situation where you're  
cherry picking and there's a conflict.

What do people think? Would this be a nice usability improvement? Or  
is it adding clutter?

Cheers,
Wincent

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26  9:02 Rebase/cherry-picking idea Wincent Colaiuta
@ 2007-11-26  9:32 ` Benoit Sigoure
  2007-11-26 11:27   ` Wincent Colaiuta
  2007-11-26 13:26   ` Johannes Schindelin
  0 siblings, 2 replies; 43+ messages in thread
From: Benoit Sigoure @ 2007-11-26  9:32 UTC (permalink / raw)
  To: Wincent Colaiuta; +Cc: Git Mailing List

[-- Attachment #1: Type: text/plain, Size: 1175 bytes --]

On Nov 26, 2007, at 10:02 AM, Wincent Colaiuta wrote:

> In using "git-rebase --interactive" to re-order commits you  
> occasionally get conflicts and will see a message like this:
>
> 	When commiting, use the option '-c %s' to retain authorship and  
> message
>
> I was thinking that it might be nice to stash away this commit id  
> somewhere in GIT_DIR so that the user didn't have to explicitly  
> remember it, and add a new switch to git-commit that could be used  
> to automatically use that stashed commit id, something like:
>
> 	git commit --retain
>
> Although I most often see this kind of message in interactive  
> rebasing, the message is generated in builtin-revert.c when cherry- 
> picking, so you can also see it in any other situation where you're  
> cherry picking and there's a conflict.
>
> What do people think? Would this be a nice usability improvement?  
> Or is it adding clutter?


I'm not sure but I think this message is just some unwanted  
(misleading) noise, since when you rebase, once you solve the  
conflicts, you git-rebase --continue, you don't git-commit.

-- 
Benoit Sigoure aka Tsuna
EPITA Research and Development Laboratory



[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 186 bytes --]

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26  9:32 ` Benoit Sigoure
@ 2007-11-26 11:27   ` Wincent Colaiuta
  2007-11-26 12:34     ` Wincent Colaiuta
  2007-11-26 13:26   ` Johannes Schindelin
  1 sibling, 1 reply; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-26 11:27 UTC (permalink / raw)
  To: Benoit Sigoure; +Cc: Git Mailing List

El 26/11/2007, a las 10:32, Benoit Sigoure escribió:

> On Nov 26, 2007, at 10:02 AM, Wincent Colaiuta wrote:
>
>> In using "git-rebase --interactive" to re-order commits you  
>> occasionally get conflicts and will see a message like this:
>>
>> 	When commiting, use the option '-c %s' to retain authorship and  
>> message
>>
>> I was thinking that it might be nice to stash away this commit id  
>> somewhere in GIT_DIR so that the user didn't have to explicitly  
>> remember it, and add a new switch to git-commit that could be used  
>> to automatically use that stashed commit id, something like:
>>
>> 	git commit --retain
>>
>> Although I most often see this kind of message in interactive  
>> rebasing, the message is generated in builtin-revert.c when cherry- 
>> picking, so you can also see it in any other situation where you're  
>> cherry picking and there's a conflict.
>>
>> What do people think? Would this be a nice usability improvement?  
>> Or is it adding clutter?
>
>
> I'm not sure but I think this message is just some unwanted  
> (misleading) noise, since when you rebase, once you solve the  
> conflicts, you git-rebase --continue, you don't git-commit.

Looks like you're right. I just did a simple test and it turns out  
that after a conflict, this:

	git commit -c ...
	git rebase --continue

Produces exactly the same history as this:

	git rebase --continue

So I think that misleading noise needs to be suppressed or reworded  
when rebasing. Will look into it.

Cheers,
Wincent

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 11:27   ` Wincent Colaiuta
@ 2007-11-26 12:34     ` Wincent Colaiuta
  2007-11-26 12:39       ` Benoit Sigoure
  2007-11-26 12:51       ` Johannes Sixt
  0 siblings, 2 replies; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-26 12:34 UTC (permalink / raw)
  To: Wincent Colaiuta; +Cc: Benoit Sigoure, Git Mailing List

El 26/11/2007, a las 12:27, Wincent Colaiuta escribió:

> El 26/11/2007, a las 10:32, Benoit Sigoure escribió:
>
>> On Nov 26, 2007, at 10:02 AM, Wincent Colaiuta wrote:
>>
>>> In using "git-rebase --interactive" to re-order commits you  
>>> occasionally get conflicts and will see a message like this:
>>>
>>> 	When commiting, use the option '-c %s' to retain authorship and  
>>> message
>>>
>>> I was thinking that it might be nice to stash away this commit id  
>>> somewhere in GIT_DIR so that the user didn't have to explicitly  
>>> remember it, and add a new switch to git-commit that could be used  
>>> to automatically use that stashed commit id, something like:
>>>
>>> 	git commit --retain
>>>
>>> Although I most often see this kind of message in interactive  
>>> rebasing, the message is generated in builtin-revert.c when cherry- 
>>> picking, so you can also see it in any other situation where  
>>> you're cherry picking and there's a conflict.
>>>
>>> What do people think? Would this be a nice usability improvement?  
>>> Or is it adding clutter?
>>
>>
>> I'm not sure but I think this message is just some unwanted  
>> (misleading) noise, since when you rebase, once you solve the  
>> conflicts, you git-rebase --continue, you don't git-commit.
>
> Looks like you're right. I just did a simple test and it turns out  
> that after a conflict, this:
>
> 	git commit -c ...
> 	git rebase --continue
>
> Produces exactly the same history as this:
>
> 	git rebase --continue
>
> So I think that misleading noise needs to be suppressed or reworded  
> when rebasing. Will look into it.

How about something like this? It would obviously be nice if we could  
avoid adding another option to builtin-revert; perhaps when/if git- 
rebase becomes a builtin we can avoid that. The other alternative, and  
probably one I like I bit more, would be to auto-detect that a rebase  
is in progress by looking inside the GIT_DIR, although that would also  
alter the behaviour of manual invocations of git-revert and git-cherry- 
pick during an interactive rebase (do people actually do that?). What  
do you think?

diff --git a/builtin-revert.c b/builtin-revert.c
index a0586f9..36e36c3 100644
--- a/builtin-revert.c
+++ b/builtin-revert.c
@@ -30,7 +30,7 @@ static const char * const cherry_pick_usage[] = {
  	NULL
  };

-static int edit, no_replay, no_commit, mainline;
+static int edit, no_replay, no_commit, rebasing, mainline;
  static enum { REVERT, CHERRY_PICK } action;
  static struct commit *commit;

@@ -50,6 +50,7 @@ static void parse_args(int argc, const char **argv)
  		OPT_BOOLEAN('e', "edit", &edit, "edit the commit message"),
  		OPT_BOOLEAN('x', NULL, &no_replay, "append commit name when cherry- 
picking"),
  		OPT_BOOLEAN('r', NULL, &noop, "no-op (backward compatibility)"),
+		OPT_BOOLEAN(0, "rebasing", &rebasing, "use rebase mode"),
  		OPT_INTEGER('m', "mainline", &mainline, "parent number"),
  		OPT_END(),
  	};
@@ -352,11 +353,16 @@ static int revert_or_cherry_pick(int argc, const  
char **argv)
  		}
  		if (close(msg_fd) || commit_lock_file(&msg_file) < 0)
  			die ("Error wrapping up %s", defmsg);
+		if (rebasing)
+			message = "run 'git rebase --continue' "
+			    "or 'git rebase --abort'";
+		else
+			message = "commit the result";
  		fprintf(stderr, "Automatic %s failed.  "
  			"After resolving the conflicts,\n"
  			"mark the corrected paths with 'git add <paths>' "
-			"and commit the result.\n", me);
-		if (action == CHERRY_PICK) {
+			"and %s.\n", me, message);
+		if (action == CHERRY_PICK && !rebasing) {
  			fprintf(stderr, "When commiting, use the option "
  				"'-c %s' to retain authorship and message.\n",
  				find_unique_abbrev(commit->object.sha1,
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index bf44b6a..5afb843 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -117,7 +117,7 @@ pick_one () {
  		sha1=$(git rev-parse --short $sha1)
  		output warn Fast forward to $sha1
  	else
-		output git cherry-pick "$@"
+		output git cherry-pick --rebasing "$@"
  	fi
  }

@@ -187,7 +187,7 @@ pick_one_preserving_merges () {
  			fi
  			;;
  		*)
-			output git cherry-pick "$@" ||
+			output git cherry-pick --rebasing "$@" ||
  				die_with_patch $sha1 "Could not pick $sha1"
  			;;
  		esac

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 12:34     ` Wincent Colaiuta
@ 2007-11-26 12:39       ` Benoit Sigoure
  2007-11-26 12:51       ` Johannes Sixt
  1 sibling, 0 replies; 43+ messages in thread
From: Benoit Sigoure @ 2007-11-26 12:39 UTC (permalink / raw)
  To: Wincent Colaiuta; +Cc: Git Mailing List

On Nov 26, 2007, at 1:34 PM, Wincent Colaiuta wrote:

> How about something like this? It would obviously be nice if we  
> could avoid adding another option to builtin-revert; perhaps when/ 
> if git-rebase becomes a builtin we can avoid that. The other  
> alternative, and probably one I like I bit more, would be to auto- 
> detect that a rebase is in progress by looking inside the GIT_DIR,  
> although that would also alter the behaviour of manual invocations  
> of git-revert and git-cherry-pick during an interactive rebase (do  
> people actually do that?). What do you think?


Hmm yeah, I agree that it's a little bit of a dirty workaround but,  
as you pointed out, until rebase is builtinified, this looks like the  
best/easiest alternative.

-- 
Benoit Sigoure aka Tsuna
EPITA Research and Development Laboratory

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 12:34     ` Wincent Colaiuta
  2007-11-26 12:39       ` Benoit Sigoure
@ 2007-11-26 12:51       ` Johannes Sixt
  2007-11-26 13:15         ` Wincent Colaiuta
  2007-11-26 17:26         ` Junio C Hamano
  1 sibling, 2 replies; 43+ messages in thread
From: Johannes Sixt @ 2007-11-26 12:51 UTC (permalink / raw)
  To: Wincent Colaiuta; +Cc: Benoit Sigoure, Git Mailing List

Wincent Colaiuta schrieb:
> El 26/11/2007, a las 12:27, Wincent Colaiuta escribió:
>> So I think that misleading noise needs to be suppressed or reworded 
>> when rebasing. Will look into it.
> 
> How about something like this? It would obviously be nice if we could 
> avoid adding another option to builtin-revert; perhaps when/if 
> git-rebase becomes a builtin we can avoid that. The other alternative, 
> and probably one I like I bit more, would be to auto-detect that a 
> rebase is in progress by looking inside the GIT_DIR, although that would 
> also alter the behaviour of manual invocations of git-revert and 
> git-cherry-pick during an interactive rebase (do people actually do 
> that?). What do you think?

Introduce an environment variable _GIT_CHERRY_PICK_HELP (note the leading 
underscore), which git-rebase sets; if it's set, git-cherry-pick uses that 
text instead of the usual one.

-- Hannes

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 12:51       ` Johannes Sixt
@ 2007-11-26 13:15         ` Wincent Colaiuta
  2007-11-26 13:41           ` Johannes Schindelin
  2007-11-26 17:26         ` Junio C Hamano
  1 sibling, 1 reply; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-26 13:15 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: Benoit Sigoure, Git Mailing List

El 26/11/2007, a las 13:51, Johannes Sixt escribió:

> Wincent Colaiuta schrieb:
>> El 26/11/2007, a las 12:27, Wincent Colaiuta escribió:
>>> So I think that misleading noise needs to be suppressed or  
>>> reworded when rebasing. Will look into it.
>> How about something like this? It would obviously be nice if we  
>> could avoid adding another option to builtin-revert; perhaps when/ 
>> if git-rebase becomes a builtin we can avoid that. The other  
>> alternative, and probably one I like I bit more, would be to auto- 
>> detect that a rebase is in progress by looking inside the GIT_DIR,  
>> although that would also alter the behaviour of manual invocations  
>> of git-revert and git-cherry-pick during an interactive rebase (do  
>> people actually do that?). What do you think?
>
> Introduce an environment variable _GIT_CHERRY_PICK_HELP (note the  
> leading underscore), which git-rebase sets; if it's set, git-cherry- 
> pick uses that text instead of the usual one.

Good idea, quite a bit less cruddy:

diff --git a/builtin-revert.c b/builtin-revert.c
index a0586f9..5a57574 100644
--- a/builtin-revert.c
+++ b/builtin-revert.c
@@ -229,7 +229,7 @@ static int revert_or_cherry_pick(int argc, const  
char **argv)
  	unsigned char head[20];
  	struct commit *base, *next, *parent;
  	int i;
-	char *oneline, *reencoded_message = NULL;
+	char *oneline, *reencoded_message = NULL, *help_message;
  	const char *message, *encoding;
  	const char *defmsg = xstrdup(git_path("MERGE_MSG"));

@@ -352,11 +352,13 @@ static int revert_or_cherry_pick(int argc, const  
char **argv)
  		}
  		if (close(msg_fd) || commit_lock_file(&msg_file) < 0)
  			die ("Error wrapping up %s", defmsg);
+		help_message = getenv("_GIT_CHERRY_PICK_HELP");
  		fprintf(stderr, "Automatic %s failed.  "
  			"After resolving the conflicts,\n"
  			"mark the corrected paths with 'git add <paths>' "
-			"and commit the result.\n", me);
-		if (action == CHERRY_PICK) {
+			"and %s.\n", me,
+			help_message ? help_message : "commit the result");
+		if (action == CHERRY_PICK && !help_message) {
  			fprintf(stderr, "When commiting, use the option "
  				"'-c %s' to retain authorship and message.\n",
  				find_unique_abbrev(commit->object.sha1,
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index bf44b6a..e5f9810 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -117,6 +117,7 @@ pick_one () {
  		sha1=$(git rev-parse --short $sha1)
  		output warn Fast forward to $sha1
  	else
+		export _GIT_CHERRY_PICK_HELP="run 'git rebase --continue'"
  		output git cherry-pick "$@"
  	fi
  }
@@ -187,6 +188,7 @@ pick_one_preserving_merges () {
  			fi
  			;;
  		*)
+			export _GIT_CHERRY_PICK_HELP="run 'git rebase --continue'"
  			output git cherry-pick "$@" ||
  				die_with_patch $sha1 "Could not pick $sha1"
  			;;

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26  9:32 ` Benoit Sigoure
  2007-11-26 11:27   ` Wincent Colaiuta
@ 2007-11-26 13:26   ` Johannes Schindelin
  1 sibling, 0 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-26 13:26 UTC (permalink / raw)
  To: Benoit Sigoure; +Cc: Wincent Colaiuta, Git Mailing List

Hi,

On Mon, 26 Nov 2007, Benoit Sigoure wrote:

> On Nov 26, 2007, at 10:02 AM, Wincent Colaiuta wrote:
> 
> > In using "git-rebase --interactive" to re-order commits you occasionally get
> > conflicts and will see a message like this:
> > 
> > 	When commiting, use the option '-c %s' to retain authorship and
> > message
> > 
> > I was thinking that it might be nice to stash away this commit id somewhere
> > in GIT_DIR so that the user didn't have to explicitly remember it, and add a
> > new switch to git-commit that could be used to automatically use that
> > stashed commit id, something like:
> > 
> > 	git commit --retain
> > 
> > Although I most often see this kind of message in interactive rebasing, the
> > message is generated in builtin-revert.c when cherry-picking, so you can
> > also see it in any other situation where you're cherry picking and there's a
> > conflict.
> > 
> > What do people think? Would this be a nice usability improvement? Or is it
> > adding clutter?
> 
> 
> I'm not sure but I think this message is just some unwanted (misleading)
> noise, since when you rebase, once you solve the conflicts, you git-rebase
> --continue, you don't git-commit.

Yep.  It is on my TODO list since a long time, but I am just as glad 
somebody else is doing it.  But I have to agree with Hannes that using an 
environment variable is cleaner, more elegant and shorter.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 13:15         ` Wincent Colaiuta
@ 2007-11-26 13:41           ` Johannes Schindelin
  2007-11-26 13:55             ` Wincent Colaiuta
  0 siblings, 1 reply; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-26 13:41 UTC (permalink / raw)
  To: Wincent Colaiuta; +Cc: Johannes Sixt, Benoit Sigoure, Git Mailing List

Hi,

On Mon, 26 Nov 2007, Wincent Colaiuta wrote:

> +		help_message = getenv("_GIT_CHERRY_PICK_HELP");

Why on earth do you have a leading underscore?  No existing git 
environment variable does it that way.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 13:41           ` Johannes Schindelin
@ 2007-11-26 13:55             ` Wincent Colaiuta
  2007-11-28  8:06               ` Junio C Hamano
  0 siblings, 1 reply; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-26 13:55 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Johannes Sixt, Benoit Sigoure, Git Mailing List

El 26/11/2007, a las 14:41, Johannes Schindelin escribió:

> Hi,
>
> On Mon, 26 Nov 2007, Wincent Colaiuta wrote:
>
>> +		help_message = getenv("_GIT_CHERRY_PICK_HELP");
>
> Why on earth do you have a leading underscore?  No existing git
> environment variable does it that way.

I was following the suggestion of Johannes Sixt:

El 26/11/2007, a las 13:51, Johannes Sixt escribió:

> Introduce an environment variable _GIT_CHERRY_PICK_HELP (note the  
> leading underscore), which git-rebase sets; if it's set, git-cherry- 
> pick uses that text instead of the usual one.


I imagine that he proposed it that way because it's an "internal use  
only" thing.

Once I get a clear idea of what kind of change is likely to actually  
get accepted I'll submit a proper patch.

Cheers,
Wincent

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 12:51       ` Johannes Sixt
  2007-11-26 13:15         ` Wincent Colaiuta
@ 2007-11-26 17:26         ` Junio C Hamano
  2007-11-26 19:12           ` Marco Costalba
  2007-11-27  1:08           ` Shawn O. Pearce
  1 sibling, 2 replies; 43+ messages in thread
From: Junio C Hamano @ 2007-11-26 17:26 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Johannes Sixt <j.sixt@viscovery.net> writes:

> Introduce an environment variable _GIT_CHERRY_PICK_HELP (note the
> leading underscore), which git-rebase sets; if it's set,
> git-cherry-pick uses that text instead of the usual one.

With precedences like GIT_REFLOG_ACTION and GITHEAD_${objectname}, I
think it would be consistent without the leading underscore.

I would not object to renaming all of them to have the leading
underscore, though.  That would make it clear that they are very
different from ordinary environment variables for the user to set
(e.g. GIT_INDEX_FILE, GIT_AUTHOR_NAME).  Does any third party tool like
qgit already use GITHEAD_${objectname} and/or GIT_REFLOG_ACTION?

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 17:26         ` Junio C Hamano
@ 2007-11-26 19:12           ` Marco Costalba
  2007-11-27  1:08           ` Shawn O. Pearce
  1 sibling, 0 replies; 43+ messages in thread
From: Marco Costalba @ 2007-11-26 19:12 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

On Nov 26, 2007 6:26 PM, Junio C Hamano <gitster@pobox.com> wrote:
> (e.g. GIT_INDEX_FILE, GIT_AUTHOR_NAME).  Does any third party tool like
> qgit already use GITHEAD_${objectname} and/or GIT_REFLOG_ACTION?
>

No, it doesn't.

Thanks for asking ;-)

Marco

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 17:26         ` Junio C Hamano
  2007-11-26 19:12           ` Marco Costalba
@ 2007-11-27  1:08           ` Shawn O. Pearce
  2007-11-27  1:25             ` Junio C Hamano
  1 sibling, 1 reply; 43+ messages in thread
From: Shawn O. Pearce @ 2007-11-27  1:08 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Junio C Hamano <gitster@pobox.com> wrote:
> I would not object to renaming all of them to have the leading
> underscore, though.  That would make it clear that they are very
> different from ordinary environment variables for the user to set
> (e.g. GIT_INDEX_FILE, GIT_AUTHOR_NAME).  Does any third party tool like
> qgit already use GITHEAD_${objectname} and/or GIT_REFLOG_ACTION?

git-gui apparently doesn't use either name right now.  It avoids
needing to use GIT_REFLOG_ACTION by invoking only plumbing, except
in the case of git-merge, where it invokes git-merge and thus avoids
the need to set GITHEAD_* to get conflict markers right when the
recursive strategy gets used.

I had started to replace git-merge in Tcl and have git-gui directly
invoke merge-recursive but I haven't gotten around to really
doing that.

So I guess we could rename those two "internal" environment variables
to use a leading _ to make them different from "user level" variables,
but why change them now?  I really don't see a compelling reason to
break that part of the "API" between porcelain/plumbing.

-- 
Shawn.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-27  1:08           ` Shawn O. Pearce
@ 2007-11-27  1:25             ` Junio C Hamano
  0 siblings, 0 replies; 43+ messages in thread
From: Junio C Hamano @ 2007-11-27  1:25 UTC (permalink / raw)
  To: Shawn O. Pearce
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

"Shawn O. Pearce" <spearce@spearce.org> writes:

> So I guess we could rename those two "internal" environment variables
> to use a leading _ to make them different from "user level" variables,
> but why change them now?  I really don't see a compelling reason to
> break that part of the "API" between porcelain/plumbing.

I don't either, which means I do not see a compelling reason to have
underscore in front of that cherry-pick message environment either.

About the patch itself, I think replacing the whole message, not just
"and commit the result." part, might make more sense.

	help_message = getenv("_GIT_CHERRY_PICK_HELP");
	fprintf(stderr, "Automatic %s failed.  "
		"After resolving the conflicts,\n"
		"mark the corrected paths with 'git add <paths>' "
		"and %s.\n", me,
		help_message ? help_message : "commit the result");
	if (action == CHERRY_PICK && !help_message) {
		fprintf(stderr, "When commiting, use the option "
			"'-c %s' to retain authorship and message.\n",
			find_unique_abbrev(commit->object.sha1,
			...

Some other caller can be written to guide the user resolving and do the
"git add" part for the user, and "mark the corrected paths with 'git add
<paths>'" may not suit the need for such a caller.

Which would mean:

	help_message = getenv("GIT_CHERRY_PICK_HELP");
        if (!help_message) {
        	static char helpbuf[1024];
                help_message = helpbuf;
                sprintf(help_message,
                	"  After resolving the conflits,\n"
			"mark the corrected paths with 'git add <paths>' "
			"and commit the result.\n"
			"When commiting, use the option "
			"'-c %s' to retain authorship and message.\n",
			find_unique_abbrev(commit->object.sha1,
						DEFAULT_ABBREV));
        }
	fprintf(stderr, "Automatic %s failed.%s", help_message);
	exit(1);

But I do not care too deeply either way.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-26 13:55             ` Wincent Colaiuta
@ 2007-11-28  8:06               ` Junio C Hamano
  2007-11-28  8:52                 ` Wincent Colaiuta
  0 siblings, 1 reply; 43+ messages in thread
From: Junio C Hamano @ 2007-11-28  8:06 UTC (permalink / raw)
  To: Wincent Colaiuta
  Cc: Johannes Schindelin, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

> Once I get a clear idea of what kind of change is likely to actually  
> get accepted I'll submit a proper patch.

Too often, people disappear with a patch that is basically good but has
room for improvements this way.  I really do not have time nor bandwidth
to keep bugging them for updates, and often end up cleaning up on my own
instead.

This is such a patch, and without acks or comments, it is also very
likely to be lost.

-- >8 --
revert/cherry-pick: Allow overriding the help text by the calling Porcelain

A Porcelain command that uses cherry-pick or revert may make a commit
out of resolved index itself, in which case telling the user to commit
the result is not appropriate at all.  This allows GIT_CHERRY_PICK_HELP
environment variable to be set by the calling Porcelain in order to
override the built-in help text.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * I suspect that "git rebase --continue" can do "git add -u" itself,
   just like recent "git rebase --skip" would do "git reset --hard".

   The overriding help text in this patch can lose its second line that
   tells the user to use "git add <paths>" if we decide to do so.

 builtin-revert.c           |   33 +++++++++++++++++++++++----------
 git-rebase--interactive.sh |    5 +++++
 2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/builtin-revert.c b/builtin-revert.c
index a0586f9..4f86178 100644
--- a/builtin-revert.c
+++ b/builtin-revert.c
@@ -224,6 +224,27 @@ static int merge_recursive(const char *base_sha1,
 	return run_command_v_opt(argv, RUN_COMMAND_NO_STDIN | RUN_GIT_CMD);
 }
 
+static char *help_msg(const unsigned char *sha1)
+{
+	static char helpbuf[1024];
+	char *msg = getenv("GIT_CHERRY_PICK_HELP");
+
+	if (msg)
+		return msg;
+
+	strcpy(helpbuf, "  After resolving the conflicts,\n"
+	       "mark the corrected paths with 'git add <paths>' "
+	       "and commit the result.");
+
+	if (action == CHERRY_PICK) {
+		sprintf(helpbuf + strlen(helpbuf),
+			"\nWhen commiting, use the option "
+			"'-c %s' to retain authorship and message.",
+			find_unique_abbrev(sha1, DEFAULT_ABBREV));
+	}
+	return helpbuf;
+}
+
 static int revert_or_cherry_pick(int argc, const char **argv)
 {
 	unsigned char head[20];
@@ -352,16 +373,8 @@ static int revert_or_cherry_pick(int argc, const char **argv)
 		}
 		if (close(msg_fd) || commit_lock_file(&msg_file) < 0)
 			die ("Error wrapping up %s", defmsg);
-		fprintf(stderr, "Automatic %s failed.  "
-			"After resolving the conflicts,\n"
-			"mark the corrected paths with 'git add <paths>' "
-			"and commit the result.\n", me);
-		if (action == CHERRY_PICK) {
-			fprintf(stderr, "When commiting, use the option "
-				"'-c %s' to retain authorship and message.\n",
-				find_unique_abbrev(commit->object.sha1,
-					DEFAULT_ABBREV));
-		}
+		fprintf(stderr, "Automatic %s failed.%s\n",
+			me, help_msg(commit->object.sha1));
 		exit(1);
 	}
 	if (close(msg_fd) || commit_lock_file(&msg_file) < 0)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index bf44b6a..33a5d4b 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -30,6 +30,11 @@ test -d "$REWRITTEN" && PRESERVE_MERGES=t
 test -f "$DOTEST"/strategy && STRATEGY="$(cat "$DOTEST"/strategy)"
 test -f "$DOTEST"/verbose && VERBOSE=t
 
+GIT_CHERRY_PICK_HELP="  After resolving the conflicts,
+mark the corrected paths with 'git add <paths>', and
+run 'git rebase --continue'"
+export GIT_CHERRY_PICK_HELP
+
 warn () {
 	echo "$*" >&2
 }

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-28  8:06               ` Junio C Hamano
@ 2007-11-28  8:52                 ` Wincent Colaiuta
  2007-11-28  9:47                   ` Junio C Hamano
  0 siblings, 1 reply; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-28  8:52 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Schindelin, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

El 28/11/2007, a las 9:06, Junio C Hamano escribió:

>> Once I get a clear idea of what kind of change is likely to actually
>> get accepted I'll submit a proper patch.
>
> Too often, people disappear with a patch that is basically good but  
> has
> room for improvements this way.  I really do not have time nor  
> bandwidth
> to keep bugging them for updates, and often end up cleaning up on my  
> own
> instead.

The problem in this case was that my patch didn't receive any  
meaningful feedback (ie. suggestions for improvement), only a lot of  
bikeshed stuff about whether the environment variable should have an  
underscore prefix or not, whether or not I should use "export FOO=..."  
or not etc. So I didn't know what was necessary in order to get it  
accepted.

> This is such a patch, and without acks or comments, it is also very
> likely to be lost.

Ok, please disregard the resend that I just posted a few minutes ago  
(hadn't seen your new patch yet).

Cheers,
Wincent

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-28  8:52                 ` Wincent Colaiuta
@ 2007-11-28  9:47                   ` Junio C Hamano
  2007-11-28 10:04                     ` Wincent Colaiuta
  0 siblings, 1 reply; 43+ messages in thread
From: Junio C Hamano @ 2007-11-28  9:47 UTC (permalink / raw)
  To: Wincent Colaiuta
  Cc: Johannes Schindelin, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

Wincent Colaiuta <win@wincent.com> writes:

> The problem in this case was that my patch didn't receive any
> meaningful feedback (ie. suggestions for improvement), only a lot of
> bikeshed stuff about whether the environment variable should have an
> underscore prefix or not, whether or not I should use "export FOO=..."
> or not etc. So I didn't know what was necessary in order to get it
> accepted.

I do not think that is the case.

I think _GIT_FOO vs GIT_FOO is an important detail, not at all a
bikeshed color, to make things consistent.  "export VAR=VAL" also is a
valid concern (you said in a separate message you only know about bash,
and I later asked people if they use shells that get affected with it
but we happily run otherwise.  I personally do not think the latter is a
problem, but since somebody already raised it as a potential issue, it
gave us a good chance to hear from people on minority platforms, if only
to build confidence in us to use that POSIX form.

Maybe it is just me, but I think my suggestion to replace not just "git
commit" part but also "git add" part is also an important design issue.

In any case, after a discussion, sending out a readily applyable patch
would help to make sure we reached a reasonable consensus; it makes it
easier for other people to try out your proposed draft of the consensus
without waiting for me or anybody else and give positive feedback.

The difference between the variant I posted and your revised one I see
are:

 * As discussed, we have precedence like GITHEAD_* and GIT_REFLOG_ACTION
   that are used purely for inter-tool communication without the leading
   underscore, so I followed them for consistency.

 * The part of the message that is overridable is made wider; that way,
   we can later choose to have "git rebase --continue" do the final "git
   add -u" step, just like we made "git rebase --skip" to run "git reset
   --hard", without changing revert/cherry-pick,as I explained in the
   comment to my patch.

 * I made the help-message creation into a separate function.  This is
   just a minor detail, but I think it is good for readability.

 * I am setting and exporting the help environment near the beginning of
   rebase--interactive just once; again I think this is more readable.

But other than that, the basic idea is the same and is all yours.

If these details (I do not think the overridability is a minor detail,
though) look like bikeshedding to you, that is somewhat sad.  You seem
to be very capable of producing usable code, but these details
(consistency and flexibility) matter for longer term stability, and I
would really want to see capable people pay attention to such details,
especially I sometimes fail to do so myself.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-28  9:47                   ` Junio C Hamano
@ 2007-11-28 10:04                     ` Wincent Colaiuta
  2007-11-28 13:57                       ` [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR Johannes Schindelin
  2007-11-28 18:44                       ` Rebase/cherry-picking idea Junio C Hamano
  0 siblings, 2 replies; 43+ messages in thread
From: Wincent Colaiuta @ 2007-11-28 10:04 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Schindelin, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

El 28/11/2007, a las 10:47, Junio C Hamano escribió:

> I think _GIT_FOO vs GIT_FOO is an important detail, not at all a
> bikeshed color, to make things consistent.  "export VAR=VAL" also is a
> valid concern (you said in a separate message you only know about  
> bash,
> and I later asked people if they use shells that get affected with it
> but we happily run otherwise.  I personally do not think the latter  
> is a
> problem, but since somebody already raised it as a potential issue, it
> gave us a good chance to hear from people on minority platforms, if  
> only
> to build confidence in us to use that POSIX form.

I'm still a little concerned that nobody commented when I pointed out  
that export VAR=VAL is used elsewhere in Git, especially in git- 
clone.sh, which is very commonly-used porcelain. Is it a problem?

> If these details (I do not think the overridability is a minor detail,
> though) look like bikeshedding to you, that is somewhat sad.  You seem
> to be very capable of producing usable code, but these details
> (consistency and flexibility) matter for longer term stability, and I
> would really want to see capable people pay attention to such details,
> especially I sometimes fail to do so myself.


I think the *key* difference between our patches was the refactoring  
that you did (extracting into a separate function and at the same time  
making the entire message customizable rather than just the end). I  
think that's easily explained by the fact that as a new contributor I  
am pretty much always going to err on the side of the most minimal  
change possible (minimum number of lines, and changes kept as local as  
possible), even if it isn't the best or most well-engineered one. Your  
patch is more invasive, but it's better too, and I think it's more  
invasive precisely because your knowledge of the codebase and your  
track record gives you the confidence to make non-minimal changes when  
you think they're better. With time I imagine I'll evolve away from  
such defensive, minimal patches as the one I sent.

Cheers,
Wincent

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 10:04                     ` Wincent Colaiuta
@ 2007-11-28 13:57                       ` Johannes Schindelin
  2007-11-28 14:09                         ` David Kastrup
                                           ` (2 more replies)
  2007-11-28 18:44                       ` Rebase/cherry-picking idea Junio C Hamano
  1 sibling, 3 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 13:57 UTC (permalink / raw)
  To: Wincent Colaiuta
  Cc: Junio C Hamano, Johannes Sixt, Benoit Sigoure, Git Mailing List


It might be POSIX, but there are shells that do not like the
expression 'export VAR=VAL'.  To be on the safe side, rewrite them
into 'VAR=VAL' and 'export VAR'.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---

	On Wed, 28 Nov 2007, Wincent Colaiuta wrote:

	> I'm still a little concerned that nobody commented when I 
	> pointed out that export VAR=VAL is used elsewhere in Git, 
	> especially in git-clone.sh, which is very commonly-used 
	> porcelain. Is it a problem?

	How's that for a comment?

 git-clone.sh         |    2 +-
 git-filter-branch.sh |   20 ++++++++++++--------
 git-quiltimport.sh   |   10 ++++++----
 3 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/git-clone.sh b/git-clone.sh
index 24ad179..ecf9d89 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -229,7 +229,7 @@ cleanup() {
 trap cleanup 0
 mkdir -p "$dir" && D=$(cd "$dir" && pwd) || usage
 test -n "$GIT_WORK_TREE" && mkdir -p "$GIT_WORK_TREE" &&
-W=$(cd "$GIT_WORK_TREE" && pwd) && export GIT_WORK_TREE="$W"
+W=$(cd "$GIT_WORK_TREE" && pwd) && GIT_WORK_TREE="$W" && export GIT_WORK_TREE
 if test yes = "$bare" || test -n "$GIT_WORK_TREE"; then
 	GIT_DIR="$D"
 else
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 19cab5a..3afc945 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -66,17 +66,17 @@ set_ident () {
 			h
 			s/^'$lid' \([^<]*\) <[^>]*> .*$/\1/
 			s/'\''/'\''\'\'\''/g
-			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
+			s/.*/GIT_'$uid'_NAME='\''&'\''\nexport GIT_'$uid'_NAME/p
 
 			g
 			s/^'$lid' [^<]* <\([^>]*\)> .*$/\1/
 			s/'\''/'\''\'\'\''/g
-			s/.*/export GIT_'$uid'_EMAIL='\''&'\''/p
+			s/.*/GIT_'$uid'_EMAIL='\''&'\''\nexport GIT_'$uid'_EMAIL/p
 
 			g
 			s/^'$lid' [^<]* <[^>]*> \(.*\)$/\1/
 			s/'\''/'\''\'\'\''/g
-			s/.*/export GIT_'$uid'_DATE='\''&'\''/p
+			s/.*/GIT_'$uid'_DATE='\''&'\''\nexport GIT_'$uid'_DATE/p
 
 			q
 		}
@@ -84,7 +84,7 @@ set_ident () {
 
 	LANG=C LC_ALL=C sed -ne "$pick_id_script"
 	# Ensure non-empty id name.
-	echo "[ -n \"\$GIT_${uid}_NAME\" ] || export GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\""
+	echo "case \"\$GIT_${uid}_NAME\" in \"\") GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\" && export GIT_${uid}_NAME;; esac"
 }
 
 USAGE="[--env-filter <command>] [--tree-filter <command>] \
@@ -206,7 +206,8 @@ done < "$tempdir"/backup-refs
 ORIG_GIT_DIR="$GIT_DIR"
 ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"
 ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"
-export GIT_DIR GIT_WORK_TREE=.
+GIT_WORK_TREE=.
+export GIT_DIR GIT_WORK_TREE
 
 # These refs should be updated if their heads were rewritten
 
@@ -231,7 +232,8 @@ done > "$tempdir"/heads
 test -s "$tempdir"/heads ||
 	die "Which ref do you want to rewrite?"
 
-export GIT_INDEX_FILE="$(pwd)/../index"
+GIT_INDEX_FILE="$(pwd)/../index"
+export GIT_INDEX_FILE
 git read-tree || die "Could not seed the index"
 
 ret=0
@@ -267,7 +269,8 @@ while read commit parents; do
 		git read-tree -i -m $commit:"$filter_subdir"
 	esac || die "Could not initialize the index"
 
-	export GIT_COMMIT=$commit
+	GIT_COMMIT=$commit
+	export GIT_COMMIT
 	git cat-file commit "$commit" >../commit ||
 		die "Cannot read commit $commit"
 
@@ -401,7 +404,8 @@ if [ "$filter_tag_name" ]; then
 
 		[ -f "../map/$sha1" ] || continue
 		new_sha1="$(cat "../map/$sha1")"
-		export GIT_COMMIT="$sha1"
+		GIT_COMMIT="$sha1"
+		export GIT_COMMIT
 		new_ref="$(echo "$ref" | eval "$filter_tag_name")" ||
 			die "tag name filter failed: $filter_tag_name"
 
diff --git a/git-quiltimport.sh b/git-quiltimport.sh
index 6b0c4d2..233e5ea 100755
--- a/git-quiltimport.sh
+++ b/git-quiltimport.sh
@@ -77,8 +77,9 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do
 	}
 
 	# Parse the author information
-	export GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
-	export GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
+	GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
+	GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
+	export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
 	while test -z "$GIT_AUTHOR_EMAIL" && test -z "$GIT_AUTHOR_NAME" ; do
 		if [ -n "$quilt_author" ] ; then
 			GIT_AUTHOR_NAME="$quilt_author_name";
@@ -104,8 +105,9 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do
 			GIT_AUTHOR_EMAIL="$patch_author_email"
 		fi
 	done
-	export GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info")
-	export SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info")
+	GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info")
+	SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info")
+	export GIT_AUTHOR_DATE SUBJECT
 	if [ -z "$SUBJECT" ] ; then
 		SUBJECT=$(echo $patch_name | sed -e 's/.patch$//')
 	fi
-- 
1.5.3.6.2064.g4e322

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 13:57                       ` [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR Johannes Schindelin
@ 2007-11-28 14:09                         ` David Kastrup
  2007-11-28 14:19                         ` Nguyen Thai Ngoc Duy
  2007-11-28 14:21                         ` Johannes Sixt
  2 siblings, 0 replies; 43+ messages in thread
From: David Kastrup @ 2007-11-28 14:09 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Wincent Colaiuta, Junio C Hamano, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> It might be POSIX, but there are shells that do not like the
> expression 'export VAR=VAL'.  To be on the safe side, rewrite them
> into 'VAR=VAL' and 'export VAR'.

This seems like activism to me: if no supported shell has a problem with
that construct, why bother?

There probably should be a list of shells we try supporting, and in
particular a list of those where we don't bother.

And if a POSIX construct is supported by all shells we try supporting, I
don't see a point in patching it away.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 13:57                       ` [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR Johannes Schindelin
  2007-11-28 14:09                         ` David Kastrup
@ 2007-11-28 14:19                         ` Nguyen Thai Ngoc Duy
  2007-11-28 14:24                           ` David Kastrup
  2007-11-28 14:27                           ` Johannes Schindelin
  2007-11-28 14:21                         ` Johannes Sixt
  2 siblings, 2 replies; 43+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2007-11-28 14:19 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Wincent Colaiuta, Junio C Hamano, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

On Nov 28, 2007 8:57 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> It might be POSIX, but there are shells that do not like the
> expression 'export VAR=VAL'.  To be on the safe side, rewrite them
> into 'VAR=VAL' and 'export VAR'.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>
>         On Wed, 28 Nov 2007, Wincent Colaiuta wrote:
>
>         > I'm still a little concerned that nobody commented when I
>         > pointed out that export VAR=VAL is used elsewhere in Git,
>         > especially in git-clone.sh, which is very commonly-used
>         > porcelain. Is it a problem?
>
>         How's that for a comment?
>
>  git-clone.sh         |    2 +-
>  git-filter-branch.sh |   20 ++++++++++++--------
>  git-quiltimport.sh   |   10 ++++++----
>  3 files changed, 19 insertions(+), 13 deletions(-)

Why leave test scripts behind?

-- 
Duy

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 13:57                       ` [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR Johannes Schindelin
  2007-11-28 14:09                         ` David Kastrup
  2007-11-28 14:19                         ` Nguyen Thai Ngoc Duy
@ 2007-11-28 14:21                         ` Johannes Sixt
  2007-11-28 14:29                           ` Johannes Schindelin
  2 siblings, 1 reply; 43+ messages in thread
From: Johannes Sixt @ 2007-11-28 14:21 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Wincent Colaiuta, Junio C Hamano, Benoit Sigoure,
	Git Mailing List

Johannes Schindelin schrieb:
> -			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
> +			s/.*/GIT_'$uid'_NAME='\''&'\''\nexport GIT_'$uid'_NAME/p

Recently there was a report that \n in the substitution side of s/// is not 
supported by all seds :-(

> -	export GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
> -	export GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
> +	GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
> +	GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
> +	export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL

This even fixes a bug: ash supports export VAR=VAL, but *does* word-split 
VAL if it is not quoted.

-- Hannes

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:19                         ` Nguyen Thai Ngoc Duy
@ 2007-11-28 14:24                           ` David Kastrup
  2007-11-28 14:27                             ` Nguyen Thai Ngoc Duy
  2007-11-28 14:27                           ` Johannes Schindelin
  1 sibling, 1 reply; 43+ messages in thread
From: David Kastrup @ 2007-11-28 14:24 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy
  Cc: Johannes Schindelin, Wincent Colaiuta, Junio C Hamano,
	Johannes Sixt, Benoit Sigoure, Git Mailing List

"Nguyen Thai Ngoc Duy" <pclouds@gmail.com> writes:

> On Nov 28, 2007 8:57 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>>
>> It might be POSIX, but there are shells that do not like the
>> expression 'export VAR=VAL'.  To be on the safe side, rewrite them
>> into 'VAR=VAL' and 'export VAR'.
>
> Why leave test scripts behind?

Good keyword: how about starting the basic tests by testing for shell
features that are known and accepted to be used in git?

That way, we get direct feedback when feature assumptions are
problematic with some shells.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:24                           ` David Kastrup
@ 2007-11-28 14:27                             ` Nguyen Thai Ngoc Duy
  2007-11-28 14:36                               ` Johannes Schindelin
  0 siblings, 1 reply; 43+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2007-11-28 14:27 UTC (permalink / raw)
  To: David Kastrup
  Cc: Johannes Schindelin, Wincent Colaiuta, Junio C Hamano,
	Johannes Sixt, Benoit Sigoure, Git Mailing List

On Nov 28, 2007 9:24 PM, David Kastrup <dak@gnu.org> wrote:
> "Nguyen Thai Ngoc Duy" <pclouds@gmail.com> writes:
>
> > On Nov 28, 2007 8:57 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> >>
> >> It might be POSIX, but there are shells that do not like the
> >> expression 'export VAR=VAL'.  To be on the safe side, rewrite them
> >> into 'VAR=VAL' and 'export VAR'.
> >
> > Why leave test scripts behind?
>
> Good keyword: how about starting the basic tests by testing for shell
> features that are known and accepted to be used in git?
>
> That way, we get direct feedback when feature assumptions are
> problematic with some shells.

Uh.. I meant there are "export VAL=VAL" usage in test scripts and they
should be fixed as well. Anyway your idea is nice.
-- 
Duy

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:19                         ` Nguyen Thai Ngoc Duy
  2007-11-28 14:24                           ` David Kastrup
@ 2007-11-28 14:27                           ` Johannes Schindelin
  1 sibling, 0 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 14:27 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy
  Cc: Wincent Colaiuta, Junio C Hamano, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

Hi,

On Wed, 28 Nov 2007, Nguyen Thai Ngoc Duy wrote:

> On Nov 28, 2007 8:57 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> >
> > It might be POSIX, but there are shells that do not like the
> > expression 'export VAR=VAL'.  To be on the safe side, rewrite them
> > into 'VAR=VAL' and 'export VAR'.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> >
> >         On Wed, 28 Nov 2007, Wincent Colaiuta wrote:
> >
> >         > I'm still a little concerned that nobody commented when I
> >         > pointed out that export VAR=VAL is used elsewhere in Git,
> >         > especially in git-clone.sh, which is very commonly-used
> >         > porcelain. Is it a problem?
> >
> >         How's that for a comment?
> >
> >  git-clone.sh         |    2 +-
> >  git-filter-branch.sh |   20 ++++++++++++--------
> >  git-quiltimport.sh   |   10 ++++++----
> >  3 files changed, 19 insertions(+), 13 deletions(-)
> 
> Why leave test scripts behind?

Because I did a

	git grep 'export.*=' *.sh

instead of a

	git grep 'export.*=' -- \*.sh

But this patch is

- good of its own, and

- a comment ;-)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:21                         ` Johannes Sixt
@ 2007-11-28 14:29                           ` Johannes Schindelin
  2007-11-28 14:39                             ` Johannes Sixt
  2007-11-28 14:41                             ` David Kastrup
  0 siblings, 2 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 14:29 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Wincent Colaiuta, Junio C Hamano, Benoit Sigoure,
	Git Mailing List

Hi,

On Wed, 28 Nov 2007, Johannes Sixt wrote:

> Johannes Schindelin schrieb:
> > -			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
> > +			s/.*/GIT_'$uid'_NAME='\''&'\''\nexport
> > GIT_'$uid'_NAME/p
> 
> Recently there was a report that \n in the substitution side of s/// is not
> supported by all seds :-(

Okay, how about replacing the line with

+			s/.*/GIT_'$uid'_NAME='\''&'\''\
+export GIT_'$uid'_NAME/p

Hmm?  (It works here.)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:27                             ` Nguyen Thai Ngoc Duy
@ 2007-11-28 14:36                               ` Johannes Schindelin
  0 siblings, 0 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 14:36 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy
  Cc: Wincent Colaiuta, Junio C Hamano, Johannes Sixt, Benoit Sigoure,
	Git Mailing List



On Wed, 28 Nov 2007, Nguyen Thai Ngoc Duy wrote:

> > how about starting the basic tests by testing for shell features that 
> > are known and accepted to be used in git?
> >
> > That way, we get direct feedback when feature assumptions are 
> > problematic with some shells.
> 
> Uh.. I meant there are "export VAL=VAL" usage in test scripts and they 
> should be fixed as well. Anyway your idea is nice.

I have an even better idea: how about getting rid of all shell scripts, 
making them builtins? ;-)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:29                           ` Johannes Schindelin
@ 2007-11-28 14:39                             ` Johannes Sixt
  2007-11-28 15:56                               ` [PATCH v2] " Johannes Schindelin
  2007-11-28 18:49                               ` [PATCH] " Junio C Hamano
  2007-11-28 14:41                             ` David Kastrup
  1 sibling, 2 replies; 43+ messages in thread
From: Johannes Sixt @ 2007-11-28 14:39 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Wincent Colaiuta, Junio C Hamano, Benoit Sigoure,
	Git Mailing List

Johannes Schindelin schrieb:
> Hi,
> 
> On Wed, 28 Nov 2007, Johannes Sixt wrote:
> 
>> Johannes Schindelin schrieb:
>>> -			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
>>> +			s/.*/GIT_'$uid'_NAME='\''&'\''\nexport
>>> GIT_'$uid'_NAME/p
>> Recently there was a report that \n in the substitution side of s/// is not
>> supported by all seds :-(
> 
> Okay, how about replacing the line with
> 
> +			s/.*/GIT_'$uid'_NAME='\''&'\''\
> +export GIT_'$uid'_NAME/p
> 
> Hmm?  (It works here.)

This looks good. The other case I'm refering to was also solved in this way.

-- Hannes

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:29                           ` Johannes Schindelin
  2007-11-28 14:39                             ` Johannes Sixt
@ 2007-11-28 14:41                             ` David Kastrup
  1 sibling, 0 replies; 43+ messages in thread
From: David Kastrup @ 2007-11-28 14:41 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Johannes Sixt, Wincent Colaiuta, Junio C Hamano, Benoit Sigoure,
	Git Mailing List

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> On Wed, 28 Nov 2007, Johannes Sixt wrote:
>
>> Johannes Schindelin schrieb:
>> > -			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
>> > +			s/.*/GIT_'$uid'_NAME='\''&'\''\nexport
>> > GIT_'$uid'_NAME/p
>> 
>> Recently there was a report that \n in the substitution side of s/// is not
>> supported by all seds :-(
>
> Okay, how about replacing the line with
>
> +			s/.*/GIT_'$uid'_NAME='\''&'\''\
> +export GIT_'$uid'_NAME/p
>
> Hmm?  (It works here.)

Do we really want to replace code which is not as far as I know known to
fail under any of the supported shells with something which quite
possibly relies on particular sed implementations (and we have fewer
portability guarantees or even experience about sed than about the
shell, right?)?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

* [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:39                             ` Johannes Sixt
@ 2007-11-28 15:56                               ` Johannes Schindelin
  2007-11-28 16:03                                 ` David Kastrup
  2007-11-28 18:49                               ` [PATCH] " Junio C Hamano
  1 sibling, 1 reply; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 15:56 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Wincent Colaiuta, Junio C Hamano, Benoit Sigoure,
	Git Mailing List


It might be POSIX, but there are shells that do not like the
expression 'export VAR=VAL'.  To be on the safe side, rewrite them
into 'VAR=VAL' and 'export VAR'.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---

	On Wed, 28 Nov 2007, Johannes Sixt wrote:

	> Johannes Schindelin schrieb:
	> > 
	> > On Wed, 28 Nov 2007, Johannes Sixt wrote:
	> > 
	> > > Johannes Schindelin schrieb:
	> > > > -			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
	> > > > +			s/.*/GIT_'$uid'_NAME='\''&'\''\nexport
	> > > > GIT_'$uid'_NAME/p
	> > >
	> > > Recently there was a report that \n in the substitution side 
	> > > of s/// is not supported by all seds :-(
	> > 
	> > Okay, how about replacing the line with
	> > 
	> > +			s/.*/GIT_'$uid'_NAME='\''&'\''\
	> > +export GIT_'$uid'_NAME/p
	> > 
	> > Hmm?  (It works here.)
	> 
	> This looks good. The other case I'm refering to was also solved 
	> in this way.

	Done.

 git-clone.sh         |    2 +-
 git-filter-branch.sh |   23 +++++++++++++++--------
 git-quiltimport.sh   |   10 ++++++----
 3 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/git-clone.sh b/git-clone.sh
index 24ad179..ecf9d89 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -229,7 +229,7 @@ cleanup() {
 trap cleanup 0
 mkdir -p "$dir" && D=$(cd "$dir" && pwd) || usage
 test -n "$GIT_WORK_TREE" && mkdir -p "$GIT_WORK_TREE" &&
-W=$(cd "$GIT_WORK_TREE" && pwd) && export GIT_WORK_TREE="$W"
+W=$(cd "$GIT_WORK_TREE" && pwd) && GIT_WORK_TREE="$W" && export GIT_WORK_TREE
 if test yes = "$bare" || test -n "$GIT_WORK_TREE"; then
 	GIT_DIR="$D"
 else
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 19cab5a..074b2c0 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -66,17 +66,20 @@ set_ident () {
 			h
 			s/^'$lid' \([^<]*\) <[^>]*> .*$/\1/
 			s/'\''/'\''\'\'\''/g
-			s/.*/export GIT_'$uid'_NAME='\''&'\''/p
+			s/.*/GIT_'$uid'_NAME='\''&'\''\
+export GIT_'$uid'_NAME/p
 
 			g
 			s/^'$lid' [^<]* <\([^>]*\)> .*$/\1/
 			s/'\''/'\''\'\'\''/g
-			s/.*/export GIT_'$uid'_EMAIL='\''&'\''/p
+			s/.*/GIT_'$uid'_EMAIL='\''&'\''\
+export GIT_'$uid'_EMAIL/p
 
 			g
 			s/^'$lid' [^<]* <[^>]*> \(.*\)$/\1/
 			s/'\''/'\''\'\'\''/g
-			s/.*/export GIT_'$uid'_DATE='\''&'\''/p
+			s/.*/GIT_'$uid'_DATE='\''&'\''\
+export GIT_'$uid'_DATE/p
 
 			q
 		}
@@ -84,7 +87,7 @@ set_ident () {
 
 	LANG=C LC_ALL=C sed -ne "$pick_id_script"
 	# Ensure non-empty id name.
-	echo "[ -n \"\$GIT_${uid}_NAME\" ] || export GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\""
+	echo "case \"\$GIT_${uid}_NAME\" in \"\") GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\" && export GIT_${uid}_NAME;; esac"
 }
 
 USAGE="[--env-filter <command>] [--tree-filter <command>] \
@@ -206,7 +209,8 @@ done < "$tempdir"/backup-refs
 ORIG_GIT_DIR="$GIT_DIR"
 ORIG_GIT_WORK_TREE="$GIT_WORK_TREE"
 ORIG_GIT_INDEX_FILE="$GIT_INDEX_FILE"
-export GIT_DIR GIT_WORK_TREE=.
+GIT_WORK_TREE=.
+export GIT_DIR GIT_WORK_TREE
 
 # These refs should be updated if their heads were rewritten
 
@@ -231,7 +235,8 @@ done > "$tempdir"/heads
 test -s "$tempdir"/heads ||
 	die "Which ref do you want to rewrite?"
 
-export GIT_INDEX_FILE="$(pwd)/../index"
+GIT_INDEX_FILE="$(pwd)/../index"
+export GIT_INDEX_FILE
 git read-tree || die "Could not seed the index"
 
 ret=0
@@ -267,7 +272,8 @@ while read commit parents; do
 		git read-tree -i -m $commit:"$filter_subdir"
 	esac || die "Could not initialize the index"
 
-	export GIT_COMMIT=$commit
+	GIT_COMMIT=$commit
+	export GIT_COMMIT
 	git cat-file commit "$commit" >../commit ||
 		die "Cannot read commit $commit"
 
@@ -401,7 +407,8 @@ if [ "$filter_tag_name" ]; then
 
 		[ -f "../map/$sha1" ] || continue
 		new_sha1="$(cat "../map/$sha1")"
-		export GIT_COMMIT="$sha1"
+		GIT_COMMIT="$sha1"
+		export GIT_COMMIT
 		new_ref="$(echo "$ref" | eval "$filter_tag_name")" ||
 			die "tag name filter failed: $filter_tag_name"
 
diff --git a/git-quiltimport.sh b/git-quiltimport.sh
index 6b0c4d2..233e5ea 100755
--- a/git-quiltimport.sh
+++ b/git-quiltimport.sh
@@ -77,8 +77,9 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do
 	}
 
 	# Parse the author information
-	export GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
-	export GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
+	GIT_AUTHOR_NAME=$(sed -ne 's/Author: //p' "$tmp_info")
+	GIT_AUTHOR_EMAIL=$(sed -ne 's/Email: //p' "$tmp_info")
+	export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
 	while test -z "$GIT_AUTHOR_EMAIL" && test -z "$GIT_AUTHOR_NAME" ; do
 		if [ -n "$quilt_author" ] ; then
 			GIT_AUTHOR_NAME="$quilt_author_name";
@@ -104,8 +105,9 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do
 			GIT_AUTHOR_EMAIL="$patch_author_email"
 		fi
 	done
-	export GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info")
-	export SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info")
+	GIT_AUTHOR_DATE=$(sed -ne 's/Date: //p' "$tmp_info")
+	SUBJECT=$(sed -ne 's/Subject: //p' "$tmp_info")
+	export GIT_AUTHOR_DATE SUBJECT
 	if [ -z "$SUBJECT" ] ; then
 		SUBJECT=$(echo $patch_name | sed -e 's/.patch$//')
 	fi
-- 
1.5.3.6.2065.gd47ac

^ permalink raw reply related	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 15:56                               ` [PATCH v2] " Johannes Schindelin
@ 2007-11-28 16:03                                 ` David Kastrup
  2007-11-28 22:46                                   ` Junio C Hamano
  0 siblings, 1 reply; 43+ messages in thread
From: David Kastrup @ 2007-11-28 16:03 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Johannes Sixt, Wincent Colaiuta, Junio C Hamano, Benoit Sigoure,
	Git Mailing List

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> It might be POSIX, but there are shells that do not like the
> expression 'export VAR=VAL'.

As long as we have no positive report about any such shell that
_otherwise_ would be usable for git, why bother?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: Rebase/cherry-picking idea
  2007-11-28 10:04                     ` Wincent Colaiuta
  2007-11-28 13:57                       ` [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR Johannes Schindelin
@ 2007-11-28 18:44                       ` Junio C Hamano
  1 sibling, 0 replies; 43+ messages in thread
From: Junio C Hamano @ 2007-11-28 18:44 UTC (permalink / raw)
  To: Wincent Colaiuta
  Cc: Johannes Schindelin, Johannes Sixt, Benoit Sigoure,
	Git Mailing List

Wincent Colaiuta <win@wincent.com> writes:

> I'm still a little concerned that nobody commented when I pointed out
> that export VAR=VAL is used elsewhere in Git, especially in git-
> clone.sh, which is very commonly-used porcelain. Is it a problem?

We are waiting to find out, aren't we, after having the discussion.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 14:39                             ` Johannes Sixt
  2007-11-28 15:56                               ` [PATCH v2] " Johannes Schindelin
@ 2007-11-28 18:49                               ` Junio C Hamano
  2007-11-28 19:03                                 ` Johannes Schindelin
  1 sibling, 1 reply; 43+ messages in thread
From: Junio C Hamano @ 2007-11-28 18:49 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Johannes Schindelin, Wincent Colaiuta, Benoit Sigoure,
	Git Mailing List

Johannes Sixt <j.sixt@viscovery.net> writes:

> Johannes Schindelin schrieb:
> ...
>>> Recently there was a report that \n in the substitution side of s/// is not
>>> supported by all seds :-(
>>
>> Okay, how about replacing the line with
>>
>> +			s/.*/GIT_'$uid'_NAME='\''&'\''\
>> +export GIT_'$uid'_NAME/p
>>
>> Hmm?  (It works here.)
>
> This looks good. The other case I'm refering to was also solved in this way.

That looks ugly to me.

Is there a particular reason to force linebreak when a semicolon would
do?

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 18:49                               ` [PATCH] " Junio C Hamano
@ 2007-11-28 19:03                                 ` Johannes Schindelin
  2007-11-28 22:48                                   ` Junio C Hamano
  0 siblings, 1 reply; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 19:03 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Hi,

On Wed, 28 Nov 2007, Junio C Hamano wrote:

> Johannes Sixt <j.sixt@viscovery.net> writes:
> 
> > Johannes Schindelin schrieb:
> > ...
> >>> Recently there was a report that \n in the substitution side of s/// is not
> >>> supported by all seds :-(
> >>
> >> Okay, how about replacing the line with
> >>
> >> +			s/.*/GIT_'$uid'_NAME='\''&'\''\
> >> +export GIT_'$uid'_NAME/p
> >>
> >> Hmm?  (It works here.)
> >
> > This looks good. The other case I'm refering to was also solved in this way.
> 
> That looks ugly to me.
> 
> Is there a particular reason to force linebreak when a semicolon would
> do?

D'oh.  Of course.  You want me to resend?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 16:03                                 ` David Kastrup
@ 2007-11-28 22:46                                   ` Junio C Hamano
  2007-11-28 22:53                                     ` David Kastrup
  2007-11-28 23:05                                     ` Johannes Schindelin
  0 siblings, 2 replies; 43+ messages in thread
From: Junio C Hamano @ 2007-11-28 22:46 UTC (permalink / raw)
  To: David Kastrup
  Cc: Johannes Schindelin, Johannes Sixt, Wincent Colaiuta,
	Benoit Sigoure, Git Mailing List

David Kastrup <dak@gnu.org> writes:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
>> It might be POSIX, but there are shells that do not like the
>> expression 'export VAR=VAL'.
>
> As long as we have no positive report about any such shell that
> _otherwise_ would be usable for git, why bother?

I thought somebody already mention that ash mishandles "export VAR=VAL"
but otherwise Ok.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 19:03                                 ` Johannes Schindelin
@ 2007-11-28 22:48                                   ` Junio C Hamano
  2007-11-28 23:08                                     ` Johannes Schindelin
  0 siblings, 1 reply; 43+ messages in thread
From: Junio C Hamano @ 2007-11-28 22:48 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

>> Is there a particular reason to force linebreak when a semicolon would
>> do?
>
> D'oh.  Of course.  You want me to resend?

Semicolon I can handle but you seem to have local changes to filter
branch.

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 22:46                                   ` Junio C Hamano
@ 2007-11-28 22:53                                     ` David Kastrup
  2007-11-28 23:02                                       ` Jeff King
  2007-11-29  7:39                                       ` Johannes Sixt
  2007-11-28 23:05                                     ` Johannes Schindelin
  1 sibling, 2 replies; 43+ messages in thread
From: David Kastrup @ 2007-11-28 22:53 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Schindelin, Johannes Sixt, Wincent Colaiuta,
	Benoit Sigoure, Git Mailing List

Junio C Hamano <gitster@pobox.com> writes:

> David Kastrup <dak@gnu.org> writes:
>
>> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>>
>>> It might be POSIX, but there are shells that do not like the
>>> expression 'export VAR=VAL'.
>>
>> As long as we have no positive report about any such shell that
>> _otherwise_ would be usable for git, why bother?
>
> I thought somebody already mention that ash mishandles "export VAR=VAL"
> but otherwise Ok.

dak@lola:~$ ash
$ export JUNK=woozle
$ sh -c 'echo $JUNK'
woozle
$ exit
dak@lola:~$ dash
$ export JUNK=woozle
$ sh -c 'echo $JUNK'
woozle
$ exit

What problem are we talking about exactly, and with what shell?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 22:53                                     ` David Kastrup
@ 2007-11-28 23:02                                       ` Jeff King
  2007-11-28 23:10                                         ` David Kastrup
  2007-11-29  7:39                                       ` Johannes Sixt
  1 sibling, 1 reply; 43+ messages in thread
From: Jeff King @ 2007-11-28 23:02 UTC (permalink / raw)
  To: David Kastrup
  Cc: Junio C Hamano, Johannes Schindelin, Johannes Sixt,
	Wincent Colaiuta, Benoit Sigoure, Git Mailing List

On Wed, Nov 28, 2007 at 11:53:13PM +0100, David Kastrup wrote:

> dak@lola:~$ ash
> $ export JUNK=woozle
> $ sh -c 'echo $JUNK'
> woozle
> $ exit
> dak@lola:~$ dash
> $ export JUNK=woozle
> $ sh -c 'echo $JUNK'
> woozle
> $ exit
> 
> What problem are we talking about exactly, and with what shell?

$ uname -sr
FreeBSD 6.1-RELEASE-p17-jc1
$ /bin/sh
$ FOO='with spaces'
$ echo $FOO
with spaces
$ OK=$FOO; export OK
$ sh -c 'echo $OK'
with spaces
$ export BAD=$FOO
$ sh -c 'echo $BAD'
with
$ echo $BAD
with

-Peff

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 22:46                                   ` Junio C Hamano
  2007-11-28 22:53                                     ` David Kastrup
@ 2007-11-28 23:05                                     ` Johannes Schindelin
  1 sibling, 0 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 23:05 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Hi,

On Wed, 28 Nov 2007, Junio C Hamano wrote:

> > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> >
> >> It might be POSIX, but there are shells that do not like the
> >> expression 'export VAR=VAL'.
> >
> > As long as we have no positive report about any such shell that
> > _otherwise_ would be usable for git, why bother?
> 
> I thought somebody already mention that ash mishandles "export VAR=VAL"
> but otherwise Ok.

I thought I read an implicit request from you.  And yes, there was an 
incidental bugfix in quiltimport.

Besides, this "why bother?" sounds awfully like "it's in POSIX and I 
ignore the experience of Junio who knows that there are/were reasons not 
to use export VAR=VAL" to me.  After all, I read this often enough on this 
list, and just forgot to fix it in filter-branch before submitting the 
patch.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 22:48                                   ` Junio C Hamano
@ 2007-11-28 23:08                                     ` Johannes Schindelin
  0 siblings, 0 replies; 43+ messages in thread
From: Johannes Schindelin @ 2007-11-28 23:08 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes Sixt, Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Hi,

On Wed, 28 Nov 2007, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> >> Is there a particular reason to force linebreak when a semicolon would
> >> do?
> >
> > D'oh.  Of course.  You want me to resend?
> 
> Semicolon I can handle but you seem to have local changes to filter
> branch.

Only that patch to de-uglify the functions in the commit filter that I 
sent out earlier.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 23:02                                       ` Jeff King
@ 2007-11-28 23:10                                         ` David Kastrup
  0 siblings, 0 replies; 43+ messages in thread
From: David Kastrup @ 2007-11-28 23:10 UTC (permalink / raw)
  To: Jeff King
  Cc: Junio C Hamano, Johannes Schindelin, Johannes Sixt,
	Wincent Colaiuta, Benoit Sigoure, Git Mailing List

Jeff King <peff@peff.net> writes:

> On Wed, Nov 28, 2007 at 11:53:13PM +0100, David Kastrup wrote:
>
>> dak@lola:~$ ash
>> $ export JUNK=woozle
>> $ sh -c 'echo $JUNK'
>> woozle
>> $ exit
>> dak@lola:~$ dash
>> $ export JUNK=woozle
>> $ sh -c 'echo $JUNK'
>> woozle
>> $ exit
>> 
>> What problem are we talking about exactly, and with what shell?
>
> $ uname -sr
> FreeBSD 6.1-RELEASE-p17-jc1
> $ /bin/sh
> $ FOO='with spaces'
> $ echo $FOO
> with spaces
> $ OK=$FOO; export OK
> $ sh -c 'echo $OK'
> with spaces
> $ export BAD=$FOO
> $ sh -c 'echo $BAD'
> with
> $ echo $BAD
> with

I'd write
export BAD="$FOO"
anyhow.  And also OK="$FOO" by the way.  The alternatives scare me.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-28 22:53                                     ` David Kastrup
  2007-11-28 23:02                                       ` Jeff King
@ 2007-11-29  7:39                                       ` Johannes Sixt
  2007-11-29 10:17                                         ` David Kastrup
  1 sibling, 1 reply; 43+ messages in thread
From: Johannes Sixt @ 2007-11-29  7:39 UTC (permalink / raw)
  To: David Kastrup
  Cc: Junio C Hamano, Johannes Schindelin, Wincent Colaiuta,
	Benoit Sigoure, Git Mailing List

David Kastrup schrieb:
> Junio C Hamano <gitster@pobox.com> writes:
>> I thought somebody already mention that ash mishandles "export VAR=VAL"
>> but otherwise Ok.
> 
> dak@lola:~$ ash
> $ export JUNK=woozle
> $ sh -c 'echo $JUNK'
> woozle
> $ exit
> dak@lola:~$ dash
> $ export JUNK=woozle
> $ sh -c 'echo $JUNK'
> woozle
> $ exit
> 
> What problem are we talking about exactly, and with what shell?

$ export foo="bar    baz"
$ bash
bash$ export JUNK=$foo
bash$ sh -c 'echo "$JUNK"'
bar    baz
bash$ exit
exit
$ ash
ash$ export JUNK=$foo
ash$ sh -c 'echo "$JUNK"'
bar
ash$ exit

The problem is $foo not being quoted on the RHS of the assignment of the 
export command: bash doesn't word-split, but ash does. Hence, *if*
export VAR=VAL is used, always quote VAL.

-- Hannes

^ permalink raw reply	[flat|nested] 43+ messages in thread

* Re: [PATCH v2] Replace instances of export VAR=VAL with VAR=VAL; export VAR
  2007-11-29  7:39                                       ` Johannes Sixt
@ 2007-11-29 10:17                                         ` David Kastrup
  0 siblings, 0 replies; 43+ messages in thread
From: David Kastrup @ 2007-11-29 10:17 UTC (permalink / raw)
  To: Johannes Sixt
  Cc: Junio C Hamano, Johannes Schindelin, Wincent Colaiuta,
	Benoit Sigoure, Git Mailing List

Johannes Sixt <j.sixt@viscovery.net> writes:

>> What problem are we talking about exactly, and with what shell?
>
> $ export foo="bar    baz"
> $ bash
> bash$ export JUNK=$foo
> bash$ sh -c 'echo "$JUNK"'
> bar    baz
> bash$ exit
> exit
> $ ash
> ash$ export JUNK=$foo
> ash$ sh -c 'echo "$JUNK"'
> bar
> ash$ exit
>
> The problem is $foo not being quoted on the RHS of the assignment of
> the export command: bash doesn't word-split, but ash does. Hence, *if*
> export VAR=VAL is used, always quote VAL.

I much prefer the quoting solution over the quite more invasive rewrites
proposed here.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2007-11-29 10:18 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-26  9:02 Rebase/cherry-picking idea Wincent Colaiuta
2007-11-26  9:32 ` Benoit Sigoure
2007-11-26 11:27   ` Wincent Colaiuta
2007-11-26 12:34     ` Wincent Colaiuta
2007-11-26 12:39       ` Benoit Sigoure
2007-11-26 12:51       ` Johannes Sixt
2007-11-26 13:15         ` Wincent Colaiuta
2007-11-26 13:41           ` Johannes Schindelin
2007-11-26 13:55             ` Wincent Colaiuta
2007-11-28  8:06               ` Junio C Hamano
2007-11-28  8:52                 ` Wincent Colaiuta
2007-11-28  9:47                   ` Junio C Hamano
2007-11-28 10:04                     ` Wincent Colaiuta
2007-11-28 13:57                       ` [PATCH] Replace instances of export VAR=VAL with VAR=VAL; export VAR Johannes Schindelin
2007-11-28 14:09                         ` David Kastrup
2007-11-28 14:19                         ` Nguyen Thai Ngoc Duy
2007-11-28 14:24                           ` David Kastrup
2007-11-28 14:27                             ` Nguyen Thai Ngoc Duy
2007-11-28 14:36                               ` Johannes Schindelin
2007-11-28 14:27                           ` Johannes Schindelin
2007-11-28 14:21                         ` Johannes Sixt
2007-11-28 14:29                           ` Johannes Schindelin
2007-11-28 14:39                             ` Johannes Sixt
2007-11-28 15:56                               ` [PATCH v2] " Johannes Schindelin
2007-11-28 16:03                                 ` David Kastrup
2007-11-28 22:46                                   ` Junio C Hamano
2007-11-28 22:53                                     ` David Kastrup
2007-11-28 23:02                                       ` Jeff King
2007-11-28 23:10                                         ` David Kastrup
2007-11-29  7:39                                       ` Johannes Sixt
2007-11-29 10:17                                         ` David Kastrup
2007-11-28 23:05                                     ` Johannes Schindelin
2007-11-28 18:49                               ` [PATCH] " Junio C Hamano
2007-11-28 19:03                                 ` Johannes Schindelin
2007-11-28 22:48                                   ` Junio C Hamano
2007-11-28 23:08                                     ` Johannes Schindelin
2007-11-28 14:41                             ` David Kastrup
2007-11-28 18:44                       ` Rebase/cherry-picking idea Junio C Hamano
2007-11-26 17:26         ` Junio C Hamano
2007-11-26 19:12           ` Marco Costalba
2007-11-27  1:08           ` Shawn O. Pearce
2007-11-27  1:25             ` Junio C Hamano
2007-11-26 13:26   ` 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).