
Add an advice to the recently improved error message added in f8aae12034 ("push: allow unqualified dest refspecs to DWIM", 2008-04-23). Now with advice.pushUnqualifiedRefName=true (on by default) we show a hint about how to proceed: $ ./git-push avar v2.19.0^{commit}:newbranch -n error: The destination you provided is not a full refname (i.e., starting with "refs/"). We tried to guess what you meant by: - Looking for a ref that matches 'newbranch' on the remote side. - Checking if the <src> being pushed ('v2.19.0^{commit}') is a ref in "refs/{heads,tags}/". If so we add a corresponding refs/{heads,tags}/ prefix on the remote side. Neither worked, so we gave up. You must fully qualify the ref. hint: The <src> part of the refspec is a commit object. hint: Did you mean to create a new branch by pushing to hint: 'v2.19.0^{commit}:refs/heads/newbranch'? error: failed to push some refs to 'git@github.com:avar/git.git' When trying to push a tag, tree or a blob we suggest that perhaps the user meant to push them to refs/tags/ instead. The if/else duplication for all of OBJ_{COMMIT,TAG,TREE,BLOB} is unfortunate, but is required to correctly mark the messages for translation. See the discussion in <87r2gxebsi.fsf@evledraar.gmail.com> about that. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
#ifndef ADVICE_H
|
|
#define ADVICE_H
|
|
|
|
#include "git-compat-util.h"
|
|
|
|
extern int advice_push_update_rejected;
|
|
extern int advice_push_non_ff_current;
|
|
extern int advice_push_non_ff_matching;
|
|
extern int advice_push_already_exists;
|
|
extern int advice_push_fetch_first;
|
|
extern int advice_push_needs_force;
|
|
extern int advice_push_unqualified_ref_name;
|
|
extern int advice_status_hints;
|
|
extern int advice_status_u_option;
|
|
extern int advice_commit_before_merge;
|
|
extern int advice_reset_quiet_warning;
|
|
extern int advice_resolve_conflict;
|
|
extern int advice_implicit_identity;
|
|
extern int advice_detached_head;
|
|
extern int advice_set_upstream_failure;
|
|
extern int advice_object_name_warning;
|
|
extern int advice_amworkdir;
|
|
extern int advice_rm_hints;
|
|
extern int advice_add_embedded_repo;
|
|
extern int advice_ignored_hook;
|
|
extern int advice_waiting_for_editor;
|
|
extern int advice_graft_file_deprecated;
|
|
extern int advice_checkout_ambiguous_remote_branch_name;
|
|
|
|
int git_default_advice_config(const char *var, const char *value);
|
|
__attribute__((format (printf, 1, 2)))
|
|
void advise(const char *advice, ...);
|
|
int error_resolve_conflict(const char *me);
|
|
extern void NORETURN die_resolve_conflict(const char *me);
|
|
void NORETURN die_conclude_merge(void);
|
|
void detach_advice(const char *new_name);
|
|
|
|
#endif /* ADVICE_H */
|