mirror of
https://github.com/git/git.git
synced 2026-08-08 17:11:48 +00:00
A local branch that descends from the selected graph without containing its tip cannot be replayed as a descendant of the squashed commit. Find those branches with ref-filter before creating any replacement objects and refuse the operation unless --update-refs=head was requested. Limit this protection to local branches, matching the refs that the default history rewrite mode updates; tags and remote-tracking refs remain untouched. Sort the blocking refs and print their short branch names so the user can decide whether to move them or leave them behind. Add advice.historyUpdateRefs for the hint that points to --update-refs=head. Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
90 lines
2.6 KiB
C
90 lines
2.6 KiB
C
#ifndef ADVICE_H
|
|
#define ADVICE_H
|
|
|
|
struct string_list;
|
|
|
|
/*
|
|
* To add a new advice, you need to:
|
|
* Define a new advice_type.
|
|
* Add a new entry to advice_setting array.
|
|
* Add the new config variable to Documentation/config/advice.adoc.
|
|
* Call advise_if_enabled to print your advice.
|
|
*/
|
|
enum advice_type {
|
|
ADVICE_ADD_EMBEDDED_REPO,
|
|
ADVICE_ADD_EMPTY_PATHSPEC,
|
|
ADVICE_ADD_IGNORED_FILE,
|
|
ADVICE_AMBIGUOUS_FETCH_REFSPEC,
|
|
ADVICE_AM_WORK_DIR,
|
|
ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME,
|
|
ADVICE_COMMIT_BEFORE_MERGE,
|
|
ADVICE_DEFAULT_BRANCH_NAME, /* To be retired sometime after Git 3.0 */
|
|
ADVICE_DETACHED_HEAD,
|
|
ADVICE_DIVERGING,
|
|
ADVICE_FETCH_SET_HEAD_WARN,
|
|
ADVICE_FETCH_SHOW_FORCED_UPDATES,
|
|
ADVICE_FORCE_DELETE_BRANCH,
|
|
ADVICE_GRAFT_FILE_DEPRECATED,
|
|
ADVICE_HISTORY_UPDATE_REFS,
|
|
ADVICE_IGNORED_HOOK,
|
|
ADVICE_IMPLICIT_IDENTITY,
|
|
ADVICE_MERGE_CONFLICT,
|
|
ADVICE_NESTED_TAG,
|
|
ADVICE_OBJECT_NAME_WARNING,
|
|
ADVICE_PUSH_ALREADY_EXISTS,
|
|
ADVICE_PUSH_FETCH_FIRST,
|
|
ADVICE_PUSH_NEEDS_FORCE,
|
|
ADVICE_PUSH_NON_FF_CURRENT,
|
|
ADVICE_PUSH_NON_FF_MATCHING,
|
|
ADVICE_PUSH_REF_NEEDS_UPDATE,
|
|
ADVICE_PUSH_REPO_LOOKS_LIKE_REF,
|
|
ADVICE_PUSH_UNQUALIFIED_REF_NAME,
|
|
ADVICE_PUSH_UPDATE_REJECTED,
|
|
ADVICE_PUSH_UPDATE_REJECTED_ALIAS,
|
|
ADVICE_REBASE_TODO_ERROR,
|
|
ADVICE_REF_SYNTAX,
|
|
ADVICE_RESET_NO_REFRESH_WARNING,
|
|
ADVICE_RESOLVE_CONFLICT,
|
|
ADVICE_RM_HINTS,
|
|
ADVICE_SEQUENCER_IN_USE,
|
|
ADVICE_SET_UPSTREAM_FAILURE,
|
|
ADVICE_SKIPPED_CHERRY_PICKS,
|
|
ADVICE_SPARSE_INDEX_EXPANDED,
|
|
ADVICE_STATUS_AHEAD_BEHIND_WARNING,
|
|
ADVICE_STATUS_HINTS,
|
|
ADVICE_STATUS_U_OPTION,
|
|
ADVICE_SUBMODULES_NOT_UPDATED,
|
|
ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE,
|
|
ADVICE_SUBMODULE_MERGE_CONFLICT,
|
|
ADVICE_SUGGEST_DETACHING_HEAD,
|
|
ADVICE_UPDATE_SPARSE_PATH,
|
|
ADVICE_WAITING_FOR_EDITOR,
|
|
ADVICE_WORKTREE_ADD_ORPHAN,
|
|
};
|
|
|
|
int git_default_advice_config(const char *var, const char *value);
|
|
__attribute__((format (printf, 1, 2)))
|
|
void advise(const char *advice, ...);
|
|
|
|
/**
|
|
* Checks if advice type is enabled (can be printed to the user).
|
|
* Should be called before advise().
|
|
*/
|
|
int advice_enabled(enum advice_type type);
|
|
|
|
/**
|
|
* Checks the visibility of the advice before printing.
|
|
*/
|
|
__attribute__((format (printf, 2, 3)))
|
|
void advise_if_enabled(enum advice_type type, const char *advice, ...);
|
|
|
|
int error_resolve_conflict(const char *me);
|
|
void NORETURN die_resolve_conflict(const char *me);
|
|
void NORETURN die_conclude_merge(void);
|
|
void NORETURN die_ff_impossible(void);
|
|
void advise_on_updating_sparse_paths(struct string_list *pathspec_list);
|
|
void detach_advice(const char *new_name);
|
|
void advise_on_moving_dirty_path(struct string_list *pathspec_list);
|
|
|
|
#endif /* ADVICE_H */
|