git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] revert: refactor code that prints success or failure message
@ 2010-07-12 11:54 Christian Couder
  2010-07-12 16:30 ` Jonathan Nieder
  2010-07-12 18:27 ` Ramkumar Ramachandra
  0 siblings, 2 replies; 7+ messages in thread
From: Christian Couder @ 2010-07-12 11:54 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: git, Johannes Schindelin, Sverre Rabbelier, Ramkumar Ramachandra,
	Jonathan Nieder, Jeff King

This patch refactors the code that prints a message like
"Automatic cherry-pick failed. <help message>". This code was
duplicated in both do_recursive_merge() and do_pick_commit().

To do that, now do_recursive_merge() returns an int to signal
success or failure. And in case of failure we just return 1
from do_pick_commit() instead of doing "exit(1)" from either
do_recursive_merge() or do_pick_commit().

In case of successful merge, do_recursive_merge() used to print
something like "Finished one cherry-pick." but nothing was
printed in case a special strategy like "resolve" was used.
Now in this case a message like "Finished one cherry-pick with
strategy resolve." is printed.

So the command behavior should be more consistent wether we are
using a special strategy or not.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
	I also wonder why messages like "Finished one cherry-pick."
	are printed on stderr instead of stdout.
	Maybe this could be changed in this patch or in
	another one.

	And while at making a backward incompatible change, maybe
	we could change the message to something like:

	"Finished cherry-pick <sha1>"

 builtin/revert.c                    |   51 ++++++++++++++++++++---------------
 t/t3508-cherry-pick-many-commits.sh |   26 +++++++++++++++++-
 2 files changed, 54 insertions(+), 23 deletions(-)

diff --git a/builtin/revert.c b/builtin/revert.c
index 8b9d829..b082bb4 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -311,10 +311,9 @@ static int fast_forward_to(const unsigned char *to, const unsigned char *from)
 	return write_ref_sha1(ref_lock, to, "cherry-pick");
 }
 
-static void do_recursive_merge(struct commit *base, struct commit *next,
-			       const char *base_label, const char *next_label,
-			       unsigned char *head, struct strbuf *msgbuf,
-			       char *defmsg)
+static int do_recursive_merge(struct commit *base, struct commit *next,
+			      const char *base_label, const char *next_label,
+			      unsigned char *head, struct strbuf *msgbuf)
 {
 	struct merge_options o;
 	struct tree *result, *next_tree, *base_tree, *head_tree;
@@ -357,14 +356,9 @@ static void do_recursive_merge(struct commit *base, struct commit *next,
 					i++;
 			}
 		}
-		write_message(msgbuf, defmsg);
-		fprintf(stderr, "Automatic %s failed.%s\n",
-			me, help_msg());
-		rerere(allow_rerere_auto);
-		exit(1);
 	}
-	write_message(msgbuf, defmsg);
-	fprintf(stderr, "Finished one %s.\n", me);
+
+	return !clean;
 }
 
 static int do_pick_commit(void)
@@ -375,6 +369,8 @@ static int do_pick_commit(void)
 	struct commit_message msg = { NULL, NULL, NULL, NULL, NULL };
 	char *defmsg = NULL;
 	struct strbuf msgbuf = STRBUF_INIT;
+	struct strbuf mebuf = STRBUF_INIT;
+	int res;
 
 	if (no_commit) {
 		/*
@@ -470,30 +466,41 @@ static int do_pick_commit(void)
 		}
 	}
 
-	if (!strategy || !strcmp(strategy, "recursive") || action == REVERT)
-		do_recursive_merge(base, next, base_label, next_label,
-				   head, &msgbuf, defmsg);
-	else {
-		int res;
+	strbuf_addstr(&mebuf, me);
+
+	if (!strategy || !strcmp(strategy, "recursive") || action == REVERT) {
+		res = do_recursive_merge(base, next, base_label, next_label,
+					 head, &msgbuf);
+		write_message(&msgbuf, defmsg);
+	} else {
 		struct commit_list *common = NULL;
 		struct commit_list *remotes = NULL;
+
+		strbuf_addf(&mebuf, " with strategy %s", strategy);
 		write_message(&msgbuf, defmsg);
+
 		commit_list_insert(base, &common);
 		commit_list_insert(next, &remotes);
 		res = try_merge_command(strategy, common,
 					sha1_to_hex(head), remotes);
 		free_commit_list(common);
 		free_commit_list(remotes);
-		if (res) {
-			fprintf(stderr, "Automatic %s with strategy %s failed.%s\n",
-				me, strategy, help_msg());
-			rerere(allow_rerere_auto);
-			exit(1);
-		}
 	}
 
+	if (res) {
+		fprintf(stderr, "Automatic %s failed.%s\n",
+			mebuf.buf, help_msg());
+		rerere(allow_rerere_auto);
+	} else {
+		fprintf(stderr, "Finished one %s.\n", mebuf.buf);
+	}
+
+	strbuf_release(&mebuf);
 	free_message(&msg);
 
+	if (res)
+		return 1;
+
 	/*
 	 *
 	 * If we are cherry-pick, and if the merge did not result in
diff --git a/t/t3508-cherry-pick-many-commits.sh b/t/t3508-cherry-pick-many-commits.sh
index f90ed3d..6555f92 100755
--- a/t/t3508-cherry-pick-many-commits.sh
+++ b/t/t3508-cherry-pick-many-commits.sh
@@ -23,12 +23,36 @@ test_expect_success setup '
 '
 
 test_expect_success 'cherry-pick first..fourth works' '
+	cat <<-EOF > expected &&
+	Finished one cherry-pick.
+	Finished one cherry-pick.
+	Finished one cherry-pick.
+	EOF
+
+	git checkout -f master &&
+	git reset --hard first &&
+	test_tick &&
+	git cherry-pick first..fourth 2>actual &&
+	git diff --quiet other &&
+	git diff --quiet HEAD other &&
+	test_cmp expected actual &&
+	test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)"
+'
+
+test_expect_success 'cherry-pick --strategy resolve first..fourth works' '
+	cat <<-EOF > expected &&
+	Finished one cherry-pick with strategy resolve.
+	Finished one cherry-pick with strategy resolve.
+	Finished one cherry-pick with strategy resolve.
+	EOF
+
 	git checkout -f master &&
 	git reset --hard first &&
 	test_tick &&
-	git cherry-pick first..fourth &&
+	git cherry-pick --strategy resolve first..fourth 2>actual &&
 	git diff --quiet other &&
 	git diff --quiet HEAD other &&
+	test_cmp expected actual &&
 	test "$(git rev-parse --verify HEAD)" != "$(git rev-parse --verify fourth)"
 '
 
-- 
1.7.2.rc1.213.gf3fb81

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

* Re: [PATCH 1/2] revert: refactor code that prints success or failure message
  2010-07-12 11:54 [PATCH 1/2] revert: refactor code that prints success or failure message Christian Couder
@ 2010-07-12 16:30 ` Jonathan Nieder
  2010-07-13 21:02   ` Christian Couder
  2010-07-12 18:27 ` Ramkumar Ramachandra
  1 sibling, 1 reply; 7+ messages in thread
From: Jonathan Nieder @ 2010-07-12 16:30 UTC (permalink / raw)
  To: Christian Couder
  Cc: Junio C Hamano, git, Johannes Schindelin, Sverre Rabbelier,
	Ramkumar Ramachandra, Jeff King

Hi,

Christian Couder wrote:

> This patch refactors the code that prints a message like
> "Automatic cherry-pick failed. <help message>".

From the point of view of refactoring, it does not seem
so promising: the patch adds more code than it removes.

 $ git diff --numstat HEAD^
 29	22	builtin/revert.c
 25	 1	t/t3508-cherry-pick-many-commits.sh

So I am hoping there is some other reason.

> To do that, now do_recursive_merge() returns an int to signal
> success or failure. And in case of failure we just return 1
> from do_pick_commit() instead of doing "exit(1)" from either
> do_recursive_merge() or do_pick_commit().

This part sounds like libification...

> In case of successful merge, do_recursive_merge() used to print
> something like "Finished one cherry-pick." but nothing was
> printed in case a special strategy like "resolve" was used.
> Now in this case a message like "Finished one cherry-pick with
> strategy resolve." is printed.
>
> So the command behavior should be more consistent wether we are
> using a special strategy or not.

This part sounds like improving output in the cherry-pick --strategy
success case.

> 	I also wonder why messages like "Finished one cherry-pick."
> 	are printed on stderr instead of stdout.

Progress reports tend to go to stderr, since they are not what the
user wanted to learn from the command but side-effects.  In other
words, I think the general principle is that

 $ git <foo> 2>/dev/null

should output whatever a traditional Unix command would (usually
nothing).

> 	And while at making a backward incompatible change, maybe
> 	we could change the message to something like:
> 
> 	"Finished cherry-pick <sha1>"

Does <sha1> represent the old commit or the new one?

I can’t come up with a reason to worry about backward compatibility in
this case.  Messages to stderr from porcelain are not guaranteed to be
stable.

> +++ b/builtin/revert.c
> @@ -357,14 +356,9 @@ static void do_recursive_merge(struct commit *base, struct commit *next,
>  					i++;
>  			}
>  		}
> -		write_message(msgbuf, defmsg);
> -		fprintf(stderr, "Automatic %s failed.%s\n",
> -			me, help_msg());
> -		rerere(allow_rerere_auto);
> -		exit(1);
>  	}
> -	write_message(msgbuf, defmsg);
> -	fprintf(stderr, "Finished one %s.\n", me);
> +
> +	return !clean;
>  }

The return value is 1 if dirty, 0 if clean.  In any other
situation (e.g., the index locking or the merge machinery breaks)
it will still die, so this is not about libification.  Is it
is for unification with the try_merge_command case?

> @@ -470,30 +466,41 @@ static int do_pick_commit(void)
[...]
> +	if (res) {
> +		fprintf(stderr, "Automatic %s failed.%s\n",
> +			mebuf.buf, help_msg());
> +		rerere(allow_rerere_auto);
> +	} else {
> +		fprintf(stderr, "Finished one %s.\n", mebuf.buf);
> +	}
> +
> +	strbuf_release(&mebuf);

Yep, looks like it is.

[...]
> --- a/t/t3508-cherry-pick-many-commits.sh
> +++ b/t/t3508-cherry-pick-many-commits.sh
> @@ -23,12 +23,36 @@ test_expect_success setup '

New tests for the success output.

>  '
>  
>  test_expect_success 'cherry-pick first..fourth works' '
> +	cat <<-EOF > expected &&
> +	Finished one cherry-pick.
> +	Finished one cherry-pick.
> +	Finished one cherry-pick.
> +	EOF
> +
> +	git checkout -f master &&
> +	git reset --hard first &&
> +	test_tick &&
> +	git cherry-pick first..fourth 2>actual &&
> +	git diff --quiet other &&
> +	git diff --quiet HEAD other &&
> +	test_cmp expected actual &&

This breaks test runs with sh -x or GIT_TRACE=1 (I am not sure
whether we support them, but I think it is worth avoiding
problems where possible).  Maybe:

	...
	grep "Finished one cherry-pick\." actual >filtered &&
	n=$(wc -l <filtered) &&
	... &&
	test $n -eq 3

Summary: I was misled by the commit message.  Maybe something
like

	Subject: cherry-pick --strategy: report success

	"git cherry-pick foo" has always reported success
	with "Finished one cherry-pick" and cherry-pick
	--strategy is starting to feel left out.  Move the
	code to write that message from do_recursive_merge
	to do_cherry_pick so other strategies can share it.

would have set me straight.

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

* Re: [PATCH 1/2] revert: refactor code that prints success or failure message
  2010-07-12 11:54 [PATCH 1/2] revert: refactor code that prints success or failure message Christian Couder
  2010-07-12 16:30 ` Jonathan Nieder
@ 2010-07-12 18:27 ` Ramkumar Ramachandra
  2010-07-13 21:16   ` Christian Couder
  1 sibling, 1 reply; 7+ messages in thread
From: Ramkumar Ramachandra @ 2010-07-12 18:27 UTC (permalink / raw)
  To: Christian Couder
  Cc: Junio C Hamano, git, Johannes Schindelin, Sverre Rabbelier,
	Jonathan Nieder, Jeff King

Hi Christian,

Christian Couder writes:
> This patch refactors the code that prints a message like
> "Automatic cherry-pick failed. <help message>". This code was
[...]

This is good stuff. Can we expect the git-rebase--interactive.sh to be
refactored to use the "cherry pick a range" feature in future?

-- Ram

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

* Re: [PATCH 1/2] revert: refactor code that prints success or failure message
  2010-07-12 16:30 ` Jonathan Nieder
@ 2010-07-13 21:02   ` Christian Couder
  2010-07-13 22:16     ` Jonathan Nieder
  0 siblings, 1 reply; 7+ messages in thread
From: Christian Couder @ 2010-07-13 21:02 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: Junio C Hamano, git, Johannes Schindelin, Sverre Rabbelier,
	Ramkumar Ramachandra, Jeff King

On Monday 12 July 2010 18:30:43 Jonathan Nieder wrote:
> Hi,
> 
> Christian Couder wrote:
> > This patch refactors the code that prints a message like
> > "Automatic cherry-pick failed. <help message>".
> 
> From the point of view of refactoring, it does not seem
> so promising: the patch adds more code than it removes.
> 
>  $ git diff --numstat HEAD^
>  29	22	builtin/revert.c
>  25	 1	t/t3508-cherry-pick-many-commits.sh
> 
> So I am hoping there is some other reason.

If it makes the code easier to maintain it's still a refactoring even if it 
adds some lines, but anyway as I say below I will improve the commit message.
 
> > To do that, now do_recursive_merge() returns an int to signal
> > success or failure. And in case of failure we just return 1
> > from do_pick_commit() instead of doing "exit(1)" from either
> > do_recursive_merge() or do_pick_commit().
> 
> This part sounds like libification...

Yes, but it's just because it's needed for the refactoring.

> > In case of successful merge, do_recursive_merge() used to print
> > something like "Finished one cherry-pick." but nothing was
> > printed in case a special strategy like "resolve" was used.
> > Now in this case a message like "Finished one cherry-pick with
> > strategy resolve." is printed.
> > 
> > So the command behavior should be more consistent wether we are
> > using a special strategy or not.
> 
> This part sounds like improving output in the cherry-pick --strategy
> success case.

Yes.

> > 	I also wonder why messages like "Finished one cherry-pick."
> > 	are printed on stderr instead of stdout.
> 
> Progress reports tend to go to stderr, since they are not what the
> user wanted to learn from the command but side-effects.  In other
> words, I think the general principle is that
> 
>  $ git <foo> 2>/dev/null
> 
> should output whatever a traditional Unix command would (usually
> nothing).

Ok.

> > 	And while at making a backward incompatible change, maybe
> > 	we could change the message to something like:
> > 	
> > 	"Finished cherry-pick <sha1>"
> 
> Does <sha1> represent the old commit or the new one?

The old one.

> I can’t come up with a reason to worry about backward compatibility in
> this case.  Messages to stderr from porcelain are not guaranteed to be
> stable.

Ok, so I think I will propose a patch to do that.

> > +++ b/builtin/revert.c
> > @@ -357,14 +356,9 @@ static void do_recursive_merge(struct commit *base,
> > struct commit *next,
> > 
> >  					i++;
> >  			
> >  			}
> >  		
> >  		}
> > 
> > -		write_message(msgbuf, defmsg);
> > -		fprintf(stderr, "Automatic %s failed.%s\n",
> > -			me, help_msg());
> > -		rerere(allow_rerere_auto);
> > -		exit(1);
> > 
> >  	}
> > 
> > -	write_message(msgbuf, defmsg);
> > -	fprintf(stderr, "Finished one %s.\n", me);
> > +
> > +	return !clean;
> > 
> >  }
> 
> The return value is 1 if dirty, 0 if clean.  In any other
> situation (e.g., the index locking or the merge machinery breaks)
> it will still die, so this is not about libification.  Is it
> is for unification with the try_merge_command case?

Yes.

> > @@ -470,30 +466,41 @@ static int do_pick_commit(void)
> 
> [...]
> 
> > +	if (res) {
> > +		fprintf(stderr, "Automatic %s failed.%s\n",
> > +			mebuf.buf, help_msg());
> > +		rerere(allow_rerere_auto);
> > +	} else {
> > +		fprintf(stderr, "Finished one %s.\n", mebuf.buf);
> > +	}
> > +
> > +	strbuf_release(&mebuf);
> 
> Yep, looks like it is.

Right.

> [...]
> 
> > --- a/t/t3508-cherry-pick-many-commits.sh
> > +++ b/t/t3508-cherry-pick-many-commits.sh
> > @@ -23,12 +23,36 @@ test_expect_success setup '
> 
> New tests for the success output.
> 
> >  '
> >  
> >  test_expect_success 'cherry-pick first..fourth works' '
> > 
> > +	cat <<-EOF > expected &&
> > +	Finished one cherry-pick.
> > +	Finished one cherry-pick.
> > +	Finished one cherry-pick.
> > +	EOF
> > +
> > +	git checkout -f master &&
> > +	git reset --hard first &&
> > +	test_tick &&
> > +	git cherry-pick first..fourth 2>actual &&
> > +	git diff --quiet other &&
> > +	git diff --quiet HEAD other &&
> > +	test_cmp expected actual &&
> 
> This breaks test runs with sh -x or GIT_TRACE=1 (I am not sure
> whether we support them, but I think it is worth avoiding
> problems where possible).  Maybe:

I don't know about sh -x but there is this code in test-lib.sh to warn about 
GIT_TRACE use:

case $(echo $GIT_TRACE |tr "[A-Z]" "[a-z]") in
	1|2|true)
		echo "* warning: Some tests will not work if GIT_TRACE" \
			"is set as to trace on STDERR ! *"
		echo "* warning: Please set GIT_TRACE to something" \
			"other than 1, 2 or true ! *"
		;;
esac

> 	...
> 	grep "Finished one cherry-pick\." actual >filtered &&
> 	n=$(wc -l <filtered) &&
> 	... &&
> 	test $n -eq 3
> 
> Summary: I was misled by the commit message.  Maybe something
> like
> 
> 	Subject: cherry-pick --strategy: report success
> 
> 	"git cherry-pick foo" has always reported success
> 	with "Finished one cherry-pick" and cherry-pick
> 	--strategy is starting to feel left out.  Move the
> 	code to write that message from do_recursive_merge
> 	to do_cherry_pick so other strategies can share it.
> 
> would have set me straight.

Ok, I will improve it.

Thanks,
Christian.

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

* Re: [PATCH 1/2] revert: refactor code that prints success or failure message
  2010-07-12 18:27 ` Ramkumar Ramachandra
@ 2010-07-13 21:16   ` Christian Couder
  0 siblings, 0 replies; 7+ messages in thread
From: Christian Couder @ 2010-07-13 21:16 UTC (permalink / raw)
  To: Ramkumar Ramachandra
  Cc: Junio C Hamano, git, Johannes Schindelin, Sverre Rabbelier,
	Jonathan Nieder, Jeff King

Hi Ram,

On Monday 12 July 2010 20:27:33 Ramkumar Ramachandra wrote:
> Hi Christian,
> 
> Christian Couder writes:
> > This patch refactors the code that prints a message like
> > "Automatic cherry-pick failed. <help message>". This code was
> 
> [...]
> 
> This is good stuff. Can we expect the git-rebase--interactive.sh to be
> refactored to use the "cherry pick a range" feature in future?

I am trying to improve cherry-pick step by step so that hopefully in the end 
we have some sequencer like functionalities. So yes, I hope that it will be 
possible to refactor git-rebase--interactive.sh and perhaps other such shell 
scripts.

Thanks,
Christian.

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

* Re: [PATCH 1/2] revert: refactor code that prints success or failure message
  2010-07-13 21:02   ` Christian Couder
@ 2010-07-13 22:16     ` Jonathan Nieder
  2010-07-15  9:26       ` Christian Couder
  0 siblings, 1 reply; 7+ messages in thread
From: Jonathan Nieder @ 2010-07-13 22:16 UTC (permalink / raw)
  To: Christian Couder
  Cc: Junio C Hamano, git, Johannes Schindelin, Sverre Rabbelier,
	Ramkumar Ramachandra, Jeff King

Christian Couder wrote:

> I don't know about sh -x but there is this code in test-lib.sh to warn about 
> GIT_TRACE use:
> 
> case $(echo $GIT_TRACE |tr "[A-Z]" "[a-z]") in
> 	1|2|true)
> 		echo "* warning: Some tests will not work if GIT_TRACE" \
> 			"is set as to trace on STDERR ! *"
> 		echo "* warning: Please set GIT_TRACE to something" \
> 			"other than 1, 2 or true ! *"
> 		;;
> esac

Oh!  I just remembered

  http://thread.gmane.org/gmane.comp.version-control.git/146767

I guess the answer is we half-support it.  Maybe a test_cmp_err()
helper to strip out xtrace[1] and GIT_TRACE[2] output is needed.

>> Summary: I was misled by the commit message.
[...]
> Ok, I will improve it.

Thanks, and sorry for the unfocused review.

Jonathan

[1] Sadly, it is not obvious to me that the format of output produced
by set -x is portable.  Any sufficiently unixy system (e.g., any
system supporting the Posix User Portability Utilities option) will
use $PS4 which defaults to ‘+ ’ at the beginning of trace lines, but
even for Posix that is only optional.

[2] All trace output starts with ‘trace: ’, with one exception.

diff --git a/exec_cmd.c b/exec_cmd.c
index bf22570..75d2930 100644
--- a/exec_cmd.c
+++ b/exec_cmd.c
@@ -28,7 +28,7 @@ const char *system_path(const char *path)
 	    !(prefix = strip_path_suffix(argv0_path, BINDIR)) &&
 	    !(prefix = strip_path_suffix(argv0_path, "git"))) {
 		prefix = PREFIX;
-		trace_printf("RUNTIME_PREFIX requested, "
+		trace_printf("trace: RUNTIME_PREFIX requested, "
 				"but prefix computation failed.  "
 				"Using static fallback '%s'.\n", prefix);
 	}
-- 

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

* Re: [PATCH 1/2] revert: refactor code that prints success or failure message
  2010-07-13 22:16     ` Jonathan Nieder
@ 2010-07-15  9:26       ` Christian Couder
  0 siblings, 0 replies; 7+ messages in thread
From: Christian Couder @ 2010-07-15  9:26 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: Junio C Hamano, git, Johannes Schindelin, Sverre Rabbelier,
	Ramkumar Ramachandra, Jeff King

Hi,

On Wednesday 14 July 2010 00:16:20 Jonathan Nieder wrote:
> Christian Couder wrote:
> > I don't know about sh -x but there is this code in test-lib.sh to warn
> > about GIT_TRACE use:
> > 
> > case $(echo $GIT_TRACE |tr "[A-Z]" "[a-z]") in
> > 
> > 	1|2|true)
> > 	
> > 		echo "* warning: Some tests will not work if GIT_TRACE" \
> > 		
> > 			"is set as to trace on STDERR ! *"
> > 		
> > 		echo "* warning: Please set GIT_TRACE to something" \
> > 		
> > 			"other than 1, 2 or true ! *"
> > 		
> > 		;;
> > 
> > esac
> 
> Oh!  I just remembered
> 
>   http://thread.gmane.org/gmane.comp.version-control.git/146767
> 
> I guess the answer is we half-support it.  Maybe a test_cmp_err()
> helper to strip out xtrace[1] and GIT_TRACE[2] output is needed.

I don't understand the result of the above thread but when I try "bash -x 
t3508-cherry-pick-many-commits.sh" it works on my machine.
So I didn't change the tests.

> >> Summary: I was misled by the commit message.
> 
> [...]
> 
> > Ok, I will improve it.
> 
> Thanks, and sorry for the unfocused review.

No problem it's still better than no review :-)

Thanks,
Christian.

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

end of thread, other threads:[~2010-07-15  9:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-12 11:54 [PATCH 1/2] revert: refactor code that prints success or failure message Christian Couder
2010-07-12 16:30 ` Jonathan Nieder
2010-07-13 21:02   ` Christian Couder
2010-07-13 22:16     ` Jonathan Nieder
2010-07-15  9:26       ` Christian Couder
2010-07-12 18:27 ` Ramkumar Ramachandra
2010-07-13 21:16   ` Christian Couder

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).