git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCHv2] rebase: pass --[no]-signoff option to git am
@ 2017-04-14 16:50 Giuseppe Bilotta
  2017-04-14 22:44 ` Ævar Arnfjörð Bjarmason
  0 siblings, 1 reply; 3+ messages in thread
From: Giuseppe Bilotta @ 2017-04-14 16:50 UTC (permalink / raw)
  To: Git ML; +Cc: Junio C Hamano, Giuseppe Bilotta

This makes it easy to sign off a whole patchset before submission.

To make things work, we also fix a design issue in git-am that made it
ignore the signoff option during rebase (specifically, signoff was
handled in parse_mail(), but not in parse_mail_rebasing()).

This is trivially fixed by moving the conditional addition of the
signoff from parse_mail() to the caller (am_run()), after either of the
parse_mail*() functions were called.

Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
 Documentation/git-rebase.txt | 5 +++++
 builtin/am.c                 | 6 +++---
 git-rebase.sh                | 3 ++-
 3 files changed, 10 insertions(+), 4 deletions(-)

Compared to v1, we also pass --no-signoff (which is accepted by git-am to
override a preceding --signoff, so it works the same way) and make sure
that git-am actually obeys --signoff while rebasing (which was not the
case anymore since df2760a576a8d26e26a6a11aa497e347c7402fd3).

diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 67d48e6883..e6f0b93337 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -385,6 +385,11 @@ have the long commit hash prepended to the format.
 	Recreate merge commits instead of flattening the history by replaying
 	commits a merge commit introduces. Merge conflict resolutions or manual
 	amendments to merge commits are not preserved.
+
+--signoff::
+	This flag is passed to 'git am' to sign off all the rebased
+	commits (see linkgit:git-am[1]).
+
 +
 This uses the `--interactive` machinery internally, but combining it
 with the `--interactive` option explicitly is generally not a good
diff --git a/builtin/am.c b/builtin/am.c
index f7a7a971fb..d072027b5a 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -1321,9 +1321,6 @@ static int parse_mail(struct am_state *state, const char *mail)
 	strbuf_addbuf(&msg, &mi.log_message);
 	strbuf_stripspace(&msg, 0);
 
-	if (state->signoff)
-		am_signoff(&msg);
-
 	assert(!state->author_name);
 	state->author_name = strbuf_detach(&author_name, NULL);
 
@@ -1848,6 +1845,9 @@ static void am_run(struct am_state *state, int resume)
 			if (skip)
 				goto next; /* mail should be skipped */
 
+			if (state->signoff)
+				am_append_signoff(state);
+
 			write_author_script(state);
 			write_commit_msg(state);
 		}
diff --git a/git-rebase.sh b/git-rebase.sh
index 48d7c5ded4..e2ec5c092d 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -34,6 +34,7 @@ root!              rebase all reachable commits up to the root(s)
 autosquash         move commits that begin with squash!/fixup! under -i
 committer-date-is-author-date! passed to 'git am'
 ignore-date!       passed to 'git am'
+[no]-signoff!      passed to 'git am'
 whitespace=!       passed to 'git apply'
 ignore-whitespace! passed to 'git apply'
 C=!                passed to 'git apply'
@@ -321,7 +322,7 @@ do
 	--ignore-whitespace)
 		git_am_opt="$git_am_opt $1"
 		;;
-	--committer-date-is-author-date|--ignore-date)
+	--committer-date-is-author-date|--ignore-date|--signoff|--no-signoff)
 		git_am_opt="$git_am_opt $1"
 		force_rebase=t
 		;;
-- 
2.12.2.765.g845dc5dc05


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

* Re: [PATCHv2] rebase: pass --[no]-signoff option to git am
  2017-04-14 16:50 [PATCHv2] rebase: pass --[no]-signoff option to git am Giuseppe Bilotta
@ 2017-04-14 22:44 ` Ævar Arnfjörð Bjarmason
  2017-04-14 22:53   ` Giuseppe Bilotta
  0 siblings, 1 reply; 3+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2017-04-14 22:44 UTC (permalink / raw)
  To: Giuseppe Bilotta; +Cc: Git ML, Junio C Hamano

On Fri, Apr 14, 2017 at 6:50 PM, Giuseppe Bilotta
<giuseppe.bilotta@gmail.com> wrote:

It should be --[no-]signoff, not --[no]-signoff, since the latter
implies that ---signoff works, see my 2c7ee986c7 where I fixed some
existing instances of this.

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

* Re: [PATCHv2] rebase: pass --[no]-signoff option to git am
  2017-04-14 22:44 ` Ævar Arnfjörð Bjarmason
@ 2017-04-14 22:53   ` Giuseppe Bilotta
  0 siblings, 0 replies; 3+ messages in thread
From: Giuseppe Bilotta @ 2017-04-14 22:53 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason; +Cc: Git ML, Junio C Hamano

On Sat, Apr 15, 2017 at 12:44 AM, Ævar Arnfjörð Bjarmason
<avarab@gmail.com> wrote:
> On Fri, Apr 14, 2017 at 6:50 PM, Giuseppe Bilotta
> <giuseppe.bilotta@gmail.com> wrote:
>
> It should be --[no-]signoff, not --[no]-signoff, since the latter
> implies that ---signoff works, see my 2c7ee986c7 where I fixed some
> existing instances of this.

Oops, yes of course. I'll resubmit.

-- 
Giuseppe "Oblomov" Bilotta

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

end of thread, other threads:[~2017-04-14 22:54 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-14 16:50 [PATCHv2] rebase: pass --[no]-signoff option to git am Giuseppe Bilotta
2017-04-14 22:44 ` Ævar Arnfjörð Bjarmason
2017-04-14 22:53   ` Giuseppe Bilotta

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).