static int revert_or_cherry_pick(int argc, const char **argv) { struct rev_info revs; git_config(git_default_config, NULL); me = action == REVERT ? "revert" : "cherry-pick"; setenv(GIT_REFLOG_ACTION, me, 0); parse_args(argc, argv); if (allow_ff) { if (signoff) die("cherry-pick --ff cannot be used with --signoff"); if (no_commit) die("cherry-pick --ff cannot be used with --no-commit"); if (no_replay) die("cherry-pick --ff cannot be used with -x"); if (edit) die("cherry-pick --ff cannot be used with --edit"); } if (read_cache() < 0) die("git %s: failed to read the index", me); prepare_revs(&revs); while ((commit = get_revision(&revs))) { int res = do_pick_commit(); if (res) return res; } return 0; }
static int pick_commits(struct commit_list *todo_list, struct replay_opts *opts) { struct commit_list *cur; int res; setenv(GIT_REFLOG_ACTION, action_name(opts), 0); if (opts->allow_ff) assert(!(opts->signoff || opts->no_commit || opts->record_origin || opts->edit)); read_and_refresh_cache(opts); for (cur = todo_list; cur; cur = cur->next) { save_todo(cur, opts); res = do_pick_commit(cur->item, opts); if (res) return res; } /* * Sequence of picks finished successfully; cleanup by * removing the .git/sequencer directory */ remove_sequencer_state(); return 0; }
static int pick_commits(struct commit_list *todo_list, struct replay_opts *opts) { struct commit_list *cur; int res; setenv(GIT_REFLOG_ACTION, action_name(opts), 0); if (opts->allow_ff) assert(!(opts->signoff || opts->no_commit || opts->record_origin || opts->edit)); read_and_refresh_cache(opts); for (cur = todo_list; cur; cur = cur->next) { save_todo(cur, opts); res = do_pick_commit(cur->item, opts); if (res) { if (!cur->next) /* * An error was encountered while * picking the last commit; the * sequencer state is useless now -- * the user simply needs to resolve * the conflict and commit */ remove_sequencer_state(0); return res; } } /* * Sequence of picks finished successfully; cleanup by * removing the .git/sequencer directory */ remove_sequencer_state(1); return 0; }
static int pick_commits(struct todo_list *todo_list, struct replay_opts *opts) { int res; setenv(GIT_REFLOG_ACTION, action_name(opts), 0); if (opts->allow_ff) assert(!(opts->signoff || opts->no_commit || opts->record_origin || opts->edit)); if (read_and_refresh_cache(opts)) return -1; while (todo_list->current < todo_list->nr) { struct todo_item *item = todo_list->items + todo_list->current; if (save_todo(todo_list, opts)) return -1; res = do_pick_commit(item->command, item->commit, opts); todo_list->current++; if (res) return res; } /* * Sequence of picks finished successfully; cleanup by * removing the .git/sequencer directory */ return sequencer_remove_state(opts); }
static int single_pick(struct commit *cmit, struct replay_opts *opts) { int ret; setenv(GIT_REFLOG_ACTION, action_name(opts), 0); ret = do_pick_commit(cmit, opts); if (ret) return ret; finish(opts); return 0; }
static int single_pick(struct commit *cmit, struct replay_opts *opts) { setenv(GIT_REFLOG_ACTION, action_name(opts), 0); return do_pick_commit(cmit, opts); }
static int single_pick(struct commit *cmit, struct replay_opts *opts) { setenv(GIT_REFLOG_ACTION, action_name(opts), 0); return do_pick_commit(opts->action == REPLAY_PICK ? TODO_PICK : TODO_REVERT, cmit, opts); }