Re: [PATCH v4 20/45] cherry-pick: copy notes and run hooks

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH v4 20/45] cherry-pick: copy notes and run hooks

From: Thomas Rast <hidden>
Date: 2016-06-15 22:57:38

Felipe Contreras [off-list ref] writes:
+static void finish(struct replay_opts *opts)
+{
+	if (opts->action != REPLAY_PICK)
+		return;
+
+	run_rewrite_hook(&rewritten, "cherry-pick");
+	copy_rewrite_notes(&rewritten, "cherry-pick");
+}
+
Ok, so I see that with the previous two commits, you automatically get
handling of the notes.rewrite.cherry-pick variable and friends.  This is
good.

However, there are some open points:

* The docs in git-config(1) "notes.rewrite.cherry-pick" and githooks(5)
  "post-rewrite" and are now stale in so far as they contain a list of
  commands doing rewriting.

* This pretends to be cherry-pick even when the hook is called from
  rebase.

  We could claim (and document) that git-rebase with certain options
  shall be the same as running cherry-pick with some other options.
  However, git-am already goes out of its way to ensure that it only
  does the rewriting/post-rewrite if called from rebase (so that the
  user-facing git-am command is not affected).  So it's more consistent
  to ensure that git-cherry-pick, when called from rebase, also pretends
  to be rebase.

* githooks(5) documents explicitly that by the time post-rewrite is
  called, the notes have been rewritten.  Your change does it in the
  opposite order.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

Re: [PATCH v4 20/45] cherry-pick: copy notes and run hooks

From: Felipe Contreras <hidden>
Date: 2016-06-15 22:57:38

On Sun, Jun 9, 2013 at 12:22 PM, Thomas Rast [off-list ref] wrote:
Felipe Contreras [off-list ref] writes:
quoted
+static void finish(struct replay_opts *opts)
+{
+     if (opts->action != REPLAY_PICK)
+             return;
+
+     run_rewrite_hook(&rewritten, "cherry-pick");
+     copy_rewrite_notes(&rewritten, "cherry-pick");
+}
+
Ok, so I see that with the previous two commits, you automatically get
handling of the notes.rewrite.cherry-pick variable and friends.  This is
good.

However, there are some open points:

* The docs in git-config(1) "notes.rewrite.cherry-pick" and githooks(5)
  "post-rewrite" and are now stale in so far as they contain a list of
  commands doing rewriting.
Fine.
--- a/builtin/sequencer.c
+++ b/builtin/sequencer.c
@@ -28,9 +28,9 @@ static void finish(struct replay_opts *opts)
        if (opts->action != REPLAY_PICK)
                return;

-       name = opts->action_name ? opts->action_name : "cherry-pick";
+       name = opts->action_name

-       if (!*name)
+       if (!name || !*name)
                return;

        run_rewrite_hook(&rewritten, name);
Now, we won't run when 'git cherry-pick' is called, only when an
action-name is specified; when called from 'git rebase'.
* This pretends to be cherry-pick even when the hook is called from
  rebase.
No.

http://mid.gmane.org/1370796057-25312-31-git-send-email-felipe.contreras@gmail.com
* githooks(5) documents explicitly that by the time post-rewrite is
  called, the notes have been rewritten.  Your change does it in the
  opposite order.
OK.

But it doesn't matter, because the patch won't be applied.

-- 
Felipe Contreras
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help