From: Paolo Bonzini <bonzini@gnu.org>
To: <git@vger.kernel.org>
Cc: gitster@pobox.com
Subject: [PATCH v3 0/3] add push --current and remote.*.pushHeadOnly
Date: Mon, 20 Jul 2009 13:58:11 +0200 [thread overview]
Message-ID: <1248091094-31485-1-git-send-email-bonzini@gnu.org> (raw)
This second series is gets rid of the most annoying part (IMHO) of
push.default = tracking, i.e. the fact that its behavior cannot be
achieved using git's ordinary tools. While autosetuppush is enough to
set the refspecs correctly, push.tracking does not push _all_ tracked
branches, but only the current one (because it implicitly adds only one
refspec, while autosetuppush places them all in the configuration).
What I introduce here is "git push --current" and a companion
remote.*.pushHeadOnly option to make it the default. The difference
between "git push HEAD" and "git push --current" is that the latter
will still walk the remote.*.push refspecs, but honor only the one
matching HEAD. This means that this option, unlike the "HEAD" refspec,
supports a destination name that differs from the source name.
Together with autosetuppush, this more or less achieves the same result
as push.tracking, at least for newly created remotes. Two (three?)
subsequent series will handle the transition.
Patch 1 partially reverts bba0fd2 (push: do not give big warning when
no preference is configured, 2009-07-18). Patch 2 is the meat of the
implementation. Most of it actually touches the transport mechanism,
not builtin-push.c (which covers only one detail about how to handle
"git push --current" when the remote does not have a corresponding
push refspec). Patch 3 adds remote.*.pushHeadOnly.
v3:
documentation changes from Bjoern Steinbrink
includes tests for http-push.c changes
v2:
update to recent master
changes from Nanako's review
Paolo Bonzini (3):
reintroduce PUSH_DEFAULT_UNSPECIFIED
push: add --current
push: add remote.*.pushHeadOnly configuration
Documentation/config.txt | 6 ++++
Documentation/git-push.txt | 17 ++++++++++-
builtin-push.c | 17 +++++++++--
cache.h | 1 +
environment.c | 2 +-
http-push.c | 27 ++++++++++++++----
remote.c | 42 ++++++++++++++++++++++++-----
remote.h | 3 ++
t/t5516-fetch-push.sh | 64 ++++++++++++++++++++++++++++++++++++++++++++
t/t5540-http-push.sh | 32 ++++++++++++++++++++++
transport.c | 22 ++++++++++++++-
transport.h | 1 +
12 files changed, 214 insertions(+), 20 deletions(-)
next reply other threads:[~2009-07-20 11:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-20 11:58 Paolo Bonzini [this message]
2009-07-20 11:58 ` [PATCH 1/3] reintroduce PUSH_DEFAULT_UNSPECIFIED Paolo Bonzini
2009-07-20 11:58 ` [PATCH 2/3] push: add --current Paolo Bonzini
2009-07-20 11:58 ` [PATCH 3/3] push: add remote.*.pushHeadOnly configuration Paolo Bonzini
2009-07-20 20:38 ` [PATCH v3 0/3] add push --current and remote.*.pushHeadOnly Junio C Hamano
2009-07-20 22:09 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1248091094-31485-1-git-send-email-bonzini@gnu.org \
--to=bonzini@gnu.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).