Merge branch 'jc/push-2.0-default-to-simple'
Finally update the "git push" default behaviour to "simple".
This commit is contained in:
commit
009055f3ec
@ -142,19 +142,13 @@ advice.*::
|
|||||||
--
|
--
|
||||||
pushUpdateRejected::
|
pushUpdateRejected::
|
||||||
Set this variable to 'false' if you want to disable
|
Set this variable to 'false' if you want to disable
|
||||||
'pushNonFFCurrent', 'pushNonFFDefault',
|
'pushNonFFCurrent',
|
||||||
'pushNonFFMatching', 'pushAlreadyExists',
|
'pushNonFFMatching', 'pushAlreadyExists',
|
||||||
'pushFetchFirst', and 'pushNeedsForce'
|
'pushFetchFirst', and 'pushNeedsForce'
|
||||||
simultaneously.
|
simultaneously.
|
||||||
pushNonFFCurrent::
|
pushNonFFCurrent::
|
||||||
Advice shown when linkgit:git-push[1] fails due to a
|
Advice shown when linkgit:git-push[1] fails due to a
|
||||||
non-fast-forward update to the current branch.
|
non-fast-forward update to the current branch.
|
||||||
pushNonFFDefault::
|
|
||||||
Advice to set 'push.default' to 'upstream' or 'current'
|
|
||||||
when you ran linkgit:git-push[1] and pushed 'matching
|
|
||||||
refs' by default (i.e. you did not provide an explicit
|
|
||||||
refspec, and no 'push.default' configuration was set)
|
|
||||||
and it resulted in a non-fast-forward error.
|
|
||||||
pushNonFFMatching::
|
pushNonFFMatching::
|
||||||
Advice shown when you ran linkgit:git-push[1] and pushed
|
Advice shown when you ran linkgit:git-push[1] and pushed
|
||||||
'matching refs' explicitly (i.e. you used ':', or
|
'matching refs' explicitly (i.e. you used ':', or
|
||||||
@ -1980,7 +1974,7 @@ When pushing to a remote that is different from the remote you normally
|
|||||||
pull from, work as `current`. This is the safest option and is suited
|
pull from, work as `current`. This is the safest option and is suited
|
||||||
for beginners.
|
for beginners.
|
||||||
+
|
+
|
||||||
This mode will become the default in Git 2.0.
|
This mode has become the default in Git 2.0.
|
||||||
|
|
||||||
* `matching` - push all branches having the same name on both ends.
|
* `matching` - push all branches having the same name on both ends.
|
||||||
This makes the repository you are pushing to remember the set of
|
This makes the repository you are pushing to remember the set of
|
||||||
@ -1999,8 +1993,8 @@ suitable for pushing into a shared central repository, as other
|
|||||||
people may add new branches there, or update the tip of existing
|
people may add new branches there, or update the tip of existing
|
||||||
branches outside your control.
|
branches outside your control.
|
||||||
+
|
+
|
||||||
This is currently the default, but Git 2.0 will change the default
|
This used to be the default, but not since Git 2.0 (`simple` is the
|
||||||
to `simple`.
|
new default).
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -83,8 +83,8 @@ the local side, the remote side is updated if a branch of the same name
|
|||||||
already exists on the remote side.
|
already exists on the remote side.
|
||||||
|
|
||||||
--all::
|
--all::
|
||||||
Instead of naming each ref to push, specifies that all
|
Push all branches (i.e. refs under `refs/heads/`); cannot be
|
||||||
refs under `refs/heads/` be pushed.
|
used with other <refspec>.
|
||||||
|
|
||||||
--prune::
|
--prune::
|
||||||
Remove remote branches that don't have a local counterpart. For example
|
Remove remote branches that don't have a local counterpart. For example
|
||||||
@ -442,8 +442,10 @@ Examples
|
|||||||
configured for the current branch).
|
configured for the current branch).
|
||||||
|
|
||||||
`git push origin`::
|
`git push origin`::
|
||||||
Without additional configuration, works like
|
Without additional configuration, pushes the current branch to
|
||||||
`git push origin :`.
|
the configured upstream (`remote.origin.merge` configuration
|
||||||
|
variable) if it has the same name as the current branch, and
|
||||||
|
errors out without pushing otherwise.
|
||||||
+
|
+
|
||||||
The default behavior of this command when no <refspec> is given can be
|
The default behavior of this command when no <refspec> is given can be
|
||||||
configured by setting the `push` option of the remote, or the `push.default`
|
configured by setting the `push` option of the remote, or the `push.default`
|
||||||
|
2
advice.c
2
advice.c
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
int advice_push_update_rejected = 1;
|
int advice_push_update_rejected = 1;
|
||||||
int advice_push_non_ff_current = 1;
|
int advice_push_non_ff_current = 1;
|
||||||
int advice_push_non_ff_default = 1;
|
|
||||||
int advice_push_non_ff_matching = 1;
|
int advice_push_non_ff_matching = 1;
|
||||||
int advice_push_already_exists = 1;
|
int advice_push_already_exists = 1;
|
||||||
int advice_push_fetch_first = 1;
|
int advice_push_fetch_first = 1;
|
||||||
@ -23,7 +22,6 @@ static struct {
|
|||||||
} advice_config[] = {
|
} advice_config[] = {
|
||||||
{ "pushupdaterejected", &advice_push_update_rejected },
|
{ "pushupdaterejected", &advice_push_update_rejected },
|
||||||
{ "pushnonffcurrent", &advice_push_non_ff_current },
|
{ "pushnonffcurrent", &advice_push_non_ff_current },
|
||||||
{ "pushnonffdefault", &advice_push_non_ff_default },
|
|
||||||
{ "pushnonffmatching", &advice_push_non_ff_matching },
|
{ "pushnonffmatching", &advice_push_non_ff_matching },
|
||||||
{ "pushalreadyexists", &advice_push_already_exists },
|
{ "pushalreadyexists", &advice_push_already_exists },
|
||||||
{ "pushfetchfirst", &advice_push_fetch_first },
|
{ "pushfetchfirst", &advice_push_fetch_first },
|
||||||
|
1
advice.h
1
advice.h
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
extern int advice_push_update_rejected;
|
extern int advice_push_update_rejected;
|
||||||
extern int advice_push_non_ff_current;
|
extern int advice_push_non_ff_current;
|
||||||
extern int advice_push_non_ff_default;
|
|
||||||
extern int advice_push_non_ff_matching;
|
extern int advice_push_non_ff_matching;
|
||||||
extern int advice_push_already_exists;
|
extern int advice_push_already_exists;
|
||||||
extern int advice_push_fetch_first;
|
extern int advice_push_fetch_first;
|
||||||
|
@ -26,7 +26,6 @@ static struct push_cas_option cas;
|
|||||||
static const char **refspec;
|
static const char **refspec;
|
||||||
static int refspec_nr;
|
static int refspec_nr;
|
||||||
static int refspec_alloc;
|
static int refspec_alloc;
|
||||||
static int default_matching_used;
|
|
||||||
|
|
||||||
static void add_refspec(const char *ref)
|
static void add_refspec(const char *ref)
|
||||||
{
|
{
|
||||||
@ -204,9 +203,9 @@ static void setup_push_current(struct remote *remote, struct branch *branch)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static char warn_unspecified_push_default_msg[] =
|
static char warn_unspecified_push_default_msg[] =
|
||||||
N_("push.default is unset; its implicit value is changing in\n"
|
N_("push.default is unset; its implicit value has changed in\n"
|
||||||
"Git 2.0 from 'matching' to 'simple'. To squelch this message\n"
|
"Git 2.0 from 'matching' to 'simple'. To squelch this message\n"
|
||||||
"and maintain the current behavior after the default changes, use:\n"
|
"and maintain the traditional behavior, use:\n"
|
||||||
"\n"
|
"\n"
|
||||||
" git config --global push.default matching\n"
|
" git config --global push.default matching\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -247,14 +246,14 @@ static void setup_default_push_refspecs(struct remote *remote)
|
|||||||
|
|
||||||
switch (push_default) {
|
switch (push_default) {
|
||||||
default:
|
default:
|
||||||
case PUSH_DEFAULT_UNSPECIFIED:
|
|
||||||
default_matching_used = 1;
|
|
||||||
warn_unspecified_push_default_configuration();
|
|
||||||
/* fallthru */
|
|
||||||
case PUSH_DEFAULT_MATCHING:
|
case PUSH_DEFAULT_MATCHING:
|
||||||
add_refspec(":");
|
add_refspec(":");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PUSH_DEFAULT_UNSPECIFIED:
|
||||||
|
warn_unspecified_push_default_configuration();
|
||||||
|
/* fallthru */
|
||||||
|
|
||||||
case PUSH_DEFAULT_SIMPLE:
|
case PUSH_DEFAULT_SIMPLE:
|
||||||
if (triangular)
|
if (triangular)
|
||||||
setup_push_current(remote, branch);
|
setup_push_current(remote, branch);
|
||||||
@ -283,12 +282,6 @@ static const char message_advice_pull_before_push[] =
|
|||||||
"'git pull ...') before pushing again.\n"
|
"'git pull ...') before pushing again.\n"
|
||||||
"See the 'Note about fast-forwards' in 'git push --help' for details.");
|
"See the 'Note about fast-forwards' in 'git push --help' for details.");
|
||||||
|
|
||||||
static const char message_advice_use_upstream[] =
|
|
||||||
N_("Updates were rejected because a pushed branch tip is behind its remote\n"
|
|
||||||
"counterpart. If you did not intend to push that branch, you may want to\n"
|
|
||||||
"specify branches to push or set the 'push.default' configuration variable\n"
|
|
||||||
"to 'simple', 'current' or 'upstream' to push only the current branch.");
|
|
||||||
|
|
||||||
static const char message_advice_checkout_pull_push[] =
|
static const char message_advice_checkout_pull_push[] =
|
||||||
N_("Updates were rejected because a pushed branch tip is behind its remote\n"
|
N_("Updates were rejected because a pushed branch tip is behind its remote\n"
|
||||||
"counterpart. Check out this branch and integrate the remote changes\n"
|
"counterpart. Check out this branch and integrate the remote changes\n"
|
||||||
@ -317,13 +310,6 @@ static void advise_pull_before_push(void)
|
|||||||
advise(_(message_advice_pull_before_push));
|
advise(_(message_advice_pull_before_push));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void advise_use_upstream(void)
|
|
||||||
{
|
|
||||||
if (!advice_push_non_ff_default || !advice_push_update_rejected)
|
|
||||||
return;
|
|
||||||
advise(_(message_advice_use_upstream));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void advise_checkout_pull_push(void)
|
static void advise_checkout_pull_push(void)
|
||||||
{
|
{
|
||||||
if (!advice_push_non_ff_matching || !advice_push_update_rejected)
|
if (!advice_push_non_ff_matching || !advice_push_update_rejected)
|
||||||
@ -385,10 +371,7 @@ static int push_with_options(struct transport *transport, int flags)
|
|||||||
if (reject_reasons & REJECT_NON_FF_HEAD) {
|
if (reject_reasons & REJECT_NON_FF_HEAD) {
|
||||||
advise_pull_before_push();
|
advise_pull_before_push();
|
||||||
} else if (reject_reasons & REJECT_NON_FF_OTHER) {
|
} else if (reject_reasons & REJECT_NON_FF_OTHER) {
|
||||||
if (default_matching_used)
|
advise_checkout_pull_push();
|
||||||
advise_use_upstream();
|
|
||||||
else
|
|
||||||
advise_checkout_pull_push();
|
|
||||||
} else if (reject_reasons & REJECT_ALREADY_EXISTS) {
|
} else if (reject_reasons & REJECT_ALREADY_EXISTS) {
|
||||||
advise_ref_already_exists();
|
advise_ref_already_exists();
|
||||||
} else if (reject_reasons & REJECT_FETCH_FIRST) {
|
} else if (reject_reasons & REJECT_FETCH_FIRST) {
|
||||||
|
Loading…
Reference in New Issue
Block a user