From: Josh Triplett <josh@joshtriplett.org>
To: git@vger.kernel.org, gitster@pobox.com
Subject: [PATCHv2 0/2] Add url.<base>.pushInsteadOf: URL rewriting for push only
Date: Mon, 7 Sep 2009 01:55:40 -0700 [thread overview]
Message-ID: <cover.1252313313.git.josh@joshtriplett.org> (raw)
Many sites host repositories via both git:// for fetch-only anonymous
access and ssh:// for push-capable access. The "insteadOf" mechanism
makes it straightforward to substitute the push-capable URLs for the
pull-only URLs, which proves convenient when the site hosts many
repositories using the same URL scheme. However, if you use such a
substitution and you cannot use the ssh:// URLs (either because you
don't have SSH access or you don't have permission to a particular
repository), you cannot clone or fetch either, even though you could do
so via the git:// URLs. A situation like this arises when sharing git
configuration files between systems, of which only a few have SSH access
to repositories.
"pushurl" provides a way to specify URLs used only for push, but this
requires configuring a pushurl for each such repository. As in the
rationale for insteadOf, it makes sense to configure this for all
repositories hosted on a given system at once.
This patch series adds a new "pushInsteadOf" option to go with
"insteadOf". pushInsteadOf allows systematically rewriting fetch-only
URLs to push-capable URLs when used with push. For instance:
[url "ssh://example.org/"]
pushInsteadOf = "git://example.org/"
This will allow clones of "git://example.org/path/to/repo" to
subsequently push to "ssh://example.org/path/to/repo", without manually
configuring pushurl for that remote.
Includes documentation for the new option, bash completion updates, and
test cases (both that pushInsteadOf applies to push and that it does
*not* apply to fetch).
Changes in v2:
- Don't add implicit pushurls from pushInsteadOf to remotes with explicit
pushurls (suggested by Junio).
- Fix pushInsteadOf rewrites to occur before insteadOf rewrites, to avoid
basing the pushInsteadOf rewrites on the rewritten URLs.
Josh Triplett (2):
Wrap rewrite globals in a struct in preparation for adding another set
Add url.<base>.pushInsteadOf: URL rewriting for push only
Documentation/config.txt | 13 +++++
Documentation/urls.txt | 18 +++++++
contrib/completion/git-completion.bash | 2 +-
remote.c | 83 ++++++++++++++++++++------------
t/t5516-fetch-push.sh | 31 ++++++++++++
5 files changed, 115 insertions(+), 32 deletions(-)
next reply other threads:[~2009-09-07 8:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-07 8:55 Josh Triplett [this message]
2009-09-07 8:56 ` [PATCHv2 1/2] Wrap rewrite globals in a struct in preparation for adding another set Josh Triplett
2009-09-07 8:56 ` [PATCHv2 2/2] Add url.<base>.pushInsteadOf: URL rewriting for push only Josh Triplett
2009-09-08 7:02 ` Junio C Hamano
2009-09-08 7:15 ` Josh Triplett
2009-09-08 7:41 ` [PATCH] Add test for ignoring pushInsteadOf when remote has explicit pushurl Josh Triplett
2009-09-08 16:34 ` Junio C Hamano
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=cover.1252313313.git.josh@joshtriplett.org \
--to=josh@joshtriplett.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.