sequencer: treat REVERT_HEAD as a pseudo ref
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
b6d2558c9e
commit
b8825ef233
1
path.c
1
path.c
@ -1528,7 +1528,6 @@ char *xdg_cache_home(const char *filename)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
REPO_GIT_PATH_FUNC(revert_head, "REVERT_HEAD")
|
|
||||||
REPO_GIT_PATH_FUNC(squash_msg, "SQUASH_MSG")
|
REPO_GIT_PATH_FUNC(squash_msg, "SQUASH_MSG")
|
||||||
REPO_GIT_PATH_FUNC(merge_msg, "MERGE_MSG")
|
REPO_GIT_PATH_FUNC(merge_msg, "MERGE_MSG")
|
||||||
REPO_GIT_PATH_FUNC(merge_rr, "MERGE_RR")
|
REPO_GIT_PATH_FUNC(merge_rr, "MERGE_RR")
|
||||||
|
8
path.h
8
path.h
@ -170,7 +170,6 @@ void report_linked_checkout_garbage(void);
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct path_cache {
|
struct path_cache {
|
||||||
const char *revert_head;
|
|
||||||
const char *squash_msg;
|
const char *squash_msg;
|
||||||
const char *merge_msg;
|
const char *merge_msg;
|
||||||
const char *merge_rr;
|
const char *merge_rr;
|
||||||
@ -181,12 +180,11 @@ struct path_cache {
|
|||||||
const char *shallow;
|
const char *shallow;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PATH_CACHE_INIT \
|
#define PATH_CACHE_INIT \
|
||||||
{ \
|
{ \
|
||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL \
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL \
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *git_path_revert_head(struct repository *r);
|
|
||||||
const char *git_path_squash_msg(struct repository *r);
|
const char *git_path_squash_msg(struct repository *r);
|
||||||
const char *git_path_merge_msg(struct repository *r);
|
const char *git_path_merge_msg(struct repository *r);
|
||||||
const char *git_path_merge_rr(struct repository *r);
|
const char *git_path_merge_rr(struct repository *r);
|
||||||
|
16
sequencer.c
16
sequencer.c
@ -2317,8 +2317,10 @@ void sequencer_post_commit_cleanup(struct repository *r, int verbose)
|
|||||||
need_cleanup = 1;
|
need_cleanup = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_exists(git_path_revert_head(r))) {
|
if (refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD")) {
|
||||||
if (!unlink(git_path_revert_head(r)) && verbose)
|
if (!refs_delete_ref(get_main_ref_store(r), "", "REVERT_HEAD",
|
||||||
|
NULL, 0) &&
|
||||||
|
verbose)
|
||||||
warning(_("cancelling a revert in progress"));
|
warning(_("cancelling a revert in progress"));
|
||||||
opts.action = REPLAY_REVERT;
|
opts.action = REPLAY_REVERT;
|
||||||
need_cleanup = 1;
|
need_cleanup = 1;
|
||||||
@ -2677,7 +2679,7 @@ static int create_seq_dir(struct repository *r)
|
|||||||
const char *in_progress_error = NULL;
|
const char *in_progress_error = NULL;
|
||||||
const char *in_progress_advice = NULL;
|
const char *in_progress_advice = NULL;
|
||||||
unsigned int advise_skip =
|
unsigned int advise_skip =
|
||||||
file_exists(git_path_revert_head(r)) ||
|
refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD") ||
|
||||||
refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD");
|
refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD");
|
||||||
|
|
||||||
if (!sequencer_get_last_command(r, &action)) {
|
if (!sequencer_get_last_command(r, &action)) {
|
||||||
@ -2778,7 +2780,7 @@ static int rollback_single_pick(struct repository *r)
|
|||||||
struct object_id head_oid;
|
struct object_id head_oid;
|
||||||
|
|
||||||
if (!refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD") &&
|
if (!refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD") &&
|
||||||
!file_exists(git_path_revert_head(r)))
|
!refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD"))
|
||||||
return error(_("no cherry-pick or revert in progress"));
|
return error(_("no cherry-pick or revert in progress"));
|
||||||
if (read_ref_full("HEAD", 0, &head_oid, NULL))
|
if (read_ref_full("HEAD", 0, &head_oid, NULL))
|
||||||
return error(_("cannot resolve HEAD"));
|
return error(_("cannot resolve HEAD"));
|
||||||
@ -2872,7 +2874,7 @@ int sequencer_skip(struct repository *r, struct replay_opts *opts)
|
|||||||
*/
|
*/
|
||||||
switch (opts->action) {
|
switch (opts->action) {
|
||||||
case REPLAY_REVERT:
|
case REPLAY_REVERT:
|
||||||
if (!file_exists(git_path_revert_head(r))) {
|
if (!refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD")) {
|
||||||
if (action != REPLAY_REVERT)
|
if (action != REPLAY_REVERT)
|
||||||
return error(_("no revert in progress"));
|
return error(_("no revert in progress"));
|
||||||
if (!rollback_is_safe())
|
if (!rollback_is_safe())
|
||||||
@ -4210,7 +4212,7 @@ static int continue_single_pick(struct repository *r)
|
|||||||
const char *argv[] = { "commit", NULL };
|
const char *argv[] = { "commit", NULL };
|
||||||
|
|
||||||
if (!refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD") &&
|
if (!refs_ref_exists(get_main_ref_store(r), "CHERRY_PICK_HEAD") &&
|
||||||
!file_exists(git_path_revert_head(r)))
|
!refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD"))
|
||||||
return error(_("no cherry-pick or revert in progress"));
|
return error(_("no cherry-pick or revert in progress"));
|
||||||
return run_command_v_opt(argv, RUN_GIT_CMD);
|
return run_command_v_opt(argv, RUN_GIT_CMD);
|
||||||
}
|
}
|
||||||
@ -4390,7 +4392,7 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
|
|||||||
/* Verify that the conflict has been resolved */
|
/* Verify that the conflict has been resolved */
|
||||||
if (refs_ref_exists(get_main_ref_store(r),
|
if (refs_ref_exists(get_main_ref_store(r),
|
||||||
"CHERRY_PICK_HEAD") ||
|
"CHERRY_PICK_HEAD") ||
|
||||||
file_exists(git_path_revert_head(r))) {
|
refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD")) {
|
||||||
res = continue_single_pick(r);
|
res = continue_single_pick(r);
|
||||||
if (res)
|
if (res)
|
||||||
goto release_todo_list;
|
goto release_todo_list;
|
||||||
|
@ -1678,7 +1678,7 @@ void wt_status_get_state(struct repository *r,
|
|||||||
oidcpy(&state->cherry_pick_head_oid, &oid);
|
oidcpy(&state->cherry_pick_head_oid, &oid);
|
||||||
}
|
}
|
||||||
wt_status_check_bisect(NULL, state);
|
wt_status_check_bisect(NULL, state);
|
||||||
if (!stat(git_path_revert_head(r), &st) &&
|
if (refs_ref_exists(get_main_ref_store(r), "REVERT_HEAD") &&
|
||||||
!get_oid("REVERT_HEAD", &oid)) {
|
!get_oid("REVERT_HEAD", &oid)) {
|
||||||
state->revert_in_progress = 1;
|
state->revert_in_progress = 1;
|
||||||
oidcpy(&state->revert_head_oid, &oid);
|
oidcpy(&state->revert_head_oid, &oid);
|
||||||
|
Loading…
Reference in New Issue
Block a user