From: Felipe Contreras Date: Thu, 06 Jun 2013 08:59:01 GMT Subject: [PATCH v3 6/9] cherry-pick: add support to copy notes Message-ID: <1370509144-31974-7-git-send-email-felipe.contreras@gmail.com> In-Reply-To: <1370509144-31974-1-git-send-email-felipe.contreras@gmail.com> Signed-off-by: Felipe Contreras --- sequencer.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/sequencer.c b/sequencer.c index 74480d7..6d13e63 100644 --- a/sequencer.c +++ b/sequencer.c @@ -14,6 +14,7 @@ #include "merge-recursive.h" #include "refs.h" #include "argv-array.h" +#include "builtin.h" #define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION" @@ -158,6 +159,32 @@ static void run_rewrite_hook(const char *name) finish_command(&proc); } +static void copy_notes(const char *name) +{ + struct notes_rewrite_cfg *cfg; + int i; + + cfg = init_copy_notes_for_rewrite(name); + if (!cfg) + return; + + for (i = 0; i < rewritten.nr; i++) { + struct rewritten_list_item *item = &rewritten.items[i]; + copy_note_for_rewrite(cfg, item->from, item->to); + } + + finish_copy_notes_for_rewrite(cfg); +} + +static void finish(struct replay_opts *opts) +{ + if (opts->action != REPLAY_PICK) + return; + + run_rewrite_hook("cherry-pick"); + copy_notes("cherry-pick"); +} + static void remove_sequencer_state(void) { struct strbuf seq_dir = STRBUF_INIT; @@ -1131,8 +1158,7 @@ static int pick_commits(struct commit_list *todo_list, struct replay_opts *opts) } } - if (opts->action == REPLAY_PICK) - run_rewrite_hook("cherry-pick"); + finish(opts); /* * Sequence of picks finished successfully; cleanup by @@ -1188,8 +1214,7 @@ static int single_pick(struct commit *cmit, struct replay_opts *opts) ret = do_pick_commit(cmit, opts); if (ret) return ret; - if (opts->action == REPLAY_PICK) - run_rewrite_hook("cherry-pick"); + finish(opts); return 0; } -- 1.8.3.698.g079b096