From: Johan Herland <johan@herland.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Dmitry Potapov <dpotapov@gmail.com>,
git@vger.kernel.org, Sverre Rabbelier <srabbelier@gmail.com>,
Jeff King <peff@peff.net>,
Nguyen Thai Ngoc Duy <pclouds@gmail.com>,
Nicolas Pitre <nico@fluxnic.net>
Subject: Re: [1.8.0] Provide proper remote ref namespaces
Date: Wed, 09 Feb 2011 02:24:45 +0100 [thread overview]
Message-ID: <201102090224.45397.johan@herland.net> (raw)
In-Reply-To: <7vzkq6p1ap.fsf@alter.siamese.dyndns.org>
On Wednesday 09 February 2011, Junio C Hamano wrote:
> Johan Herland <johan@herland.net> writes:
> > Ah, yes, I should have been more specific:
> > remote.origin.fetch = ~refs/tags/*:refs/tags/*
>
> Hmmm, I was in the vicinity of builtin/fetch.c:find_non_local_tags()
> today, and I had to wonder what the implementation of this would look
> like....
AFAIK, find_non_local_tags() is called to produce a list of refs to be auto-
followed. Currently it produces this list by traversing the remote refs, and
selecting refs that follow all of these criteria:
A. Ref name starts with "refs/tags"
B. Ref refers (after peeling) to an object that is either already locally
available, or is already on the list of objects to be fetched.
C. Ref name does not already exist locally.
Now, here's roughly how I would change it to implement the "~from:to"-style
refspecs:
0. Change its name from find_non_local_tags() to find_auto_follow_refs().
1. At the top, enumerate the auto-following refspecs
("~refs/tags/*:refs/tags/*" in this case)
2. When traversing the remote refs, instead of criteria A above, we want to
check if ref->name matches the remote side of any of the auto-following
refspecs enumerated in step #1. Skip past all non-matches.
3. Criteria B stays unchanged.
4. When checking criteria C, we want to check against the _local_ side of
the matched auto-following refspec.
AFAICS, that's pretty much what should be needed. There are some other
things to consider as well, but IMHO none of those seem like show stoppers:
For example, there may be command-line options for making auto-following
refspecs explicit (i.e. corresponding to --tags; basically disables the "~"
in the refspec), or disabling auto-following (i.e. corresponding to --no-
tags; basically disregards refspecs with "~").
Another slight complication is refspecs with _both_ "~" and "+" (i.e. both
auto-following and --force behavior), which may be resolved by disregarding
criteria C for those refspecs.
Have fun! :)
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2011-02-09 1:25 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-01 10:44 [1.8.0] Remote tag namespace Nguyen Thai Ngoc Duy
2011-02-01 14:10 ` Leo Razoumov
2011-02-01 15:07 ` Marc Branchaud
2011-02-01 15:35 ` Nguyen Thai Ngoc Duy
2011-02-02 19:38 ` Marc Branchaud
2011-02-01 18:14 ` Jeff King
2011-02-01 23:14 ` Sverre Rabbelier
2011-02-02 2:21 ` [1.8.0] Provide proper remote ref namespaces Johan Herland
2011-02-02 13:27 ` Santi Béjar
2011-02-02 15:51 ` Johan Herland
2011-02-02 16:19 ` Santi Béjar
2011-02-03 5:33 ` Nguyen Thai Ngoc Duy
2011-02-03 8:46 ` Johan Herland
2011-02-03 11:35 ` Nguyen Thai Ngoc Duy
2011-02-03 13:10 ` Johan Herland
2011-02-03 14:10 ` Santi Béjar
2011-02-03 15:48 ` Nguyen Thai Ngoc Duy
2011-02-04 22:39 ` Junio C Hamano
2011-02-05 1:18 ` Johan Herland
2011-02-05 18:00 ` Kevin P. Fleming
2011-02-05 21:40 ` Dmitry Potapov
2011-02-06 0:04 ` Johan Herland
2011-02-06 12:03 ` Dmitry Potapov
2011-02-06 14:09 ` Nicolas Pitre
2011-02-06 15:17 ` Dmitry Potapov
2011-02-06 16:11 ` Johan Herland
2011-02-06 17:28 ` Dmitry Potapov
2011-02-06 22:12 ` Johan Herland
2011-02-07 0:07 ` Dmitry Potapov
[not found] ` <201102070429.05033.johan@herland.net>
2011-02-07 3:47 ` Nicolas Pitre
2011-02-08 1:06 ` Dmitry Potapov
2011-02-08 8:15 ` Johan Herland
2011-02-08 19:11 ` Enrico Weigelt
2011-02-08 23:13 ` Junio C Hamano
2011-02-09 1:24 ` Johan Herland [this message]
2011-02-07 19:05 ` Bernhard R. Link
2011-02-08 1:20 ` Dmitry Potapov
2011-02-06 20:28 ` Matthieu Moy
2011-02-06 23:22 ` Johan Herland
2011-02-06 23:51 ` Matthieu Moy
2011-02-07 3:51 ` Johan Herland
2011-02-07 5:11 ` Jeff King
2011-02-07 8:58 ` Johan Herland
2011-02-07 9:01 ` Sverre Rabbelier
2011-02-07 10:06 ` Johan Herland
2011-02-07 10:22 ` Nguyen Thai Ngoc Duy
2011-02-07 20:19 ` Jeff King
2011-02-08 0:59 ` Johan Herland
2011-02-11 15:13 ` Jakub Narebski
2011-02-13 23:36 ` Johan Herland
2011-02-14 7:35 ` Junio C Hamano
2011-02-14 9:18 ` Johan Herland
2011-02-14 9:59 ` Jakub Narebski
2011-02-14 17:30 ` Junio C Hamano
2011-02-14 18:06 ` Re* " Junio C Hamano
2011-02-14 18:53 ` Jay Soffian
2011-02-14 19:44 ` Sverre Rabbelier
2011-02-14 19:50 ` Jay Soffian
2011-02-14 21:21 ` [1.8.0 RFC] push: start warning upcoming default change for push.default Jonathan Nieder
2011-02-14 21:41 ` Jay Soffian
2011-02-14 21:55 ` Jonathan Nieder
2011-02-14 21:57 ` Re* [1.8.0] Provide proper remote ref namespaces Matthieu Moy
2011-02-14 22:35 ` Jeff King
2011-02-14 22:38 ` Sverre Rabbelier
2011-02-14 23:36 ` [1.8.0 RFC] push: start warning upcoming default change for push.default Jonathan Nieder
2011-02-14 23:45 ` Re* [1.8.0] Provide proper remote ref namespaces Junio C Hamano
2011-02-14 23:05 ` Junio C Hamano
2011-02-15 15:06 ` Johan Herland
2011-02-15 18:06 ` Junio C Hamano
2011-02-16 0:54 ` [PATCH] push.default: Rename 'tracking' to 'upstream' Johan Herland
2011-02-16 6:35 ` Junio C Hamano
2011-02-16 8:55 ` Matthieu Moy
2011-02-16 9:42 ` Martin von Zweigbergk
2011-02-16 10:08 ` Jakub Narebski
2011-02-16 10:26 ` Matthieu Moy
2011-02-16 10:27 ` Sverre Rabbelier
2011-02-16 17:56 ` Junio C Hamano
2011-02-16 18:08 ` Sverre Rabbelier
2011-02-16 18:37 ` Junio C Hamano
2011-02-18 0:51 ` Martin von Zweigbergk
2011-02-18 0:57 ` Martin von Zweigbergk
2011-02-16 10:54 ` Bernhard R. Link
2011-02-14 9:40 ` [1.8.0] Provide proper remote ref namespaces Jakub Narebski
2011-02-14 15:45 ` Marc Branchaud
2011-02-14 19:35 ` Nicolas Pitre
2011-02-14 18:30 ` Junio C Hamano
2011-02-14 19:06 ` Nicolas Pitre
2011-02-14 19:46 ` Sverre Rabbelier
2011-02-07 6:54 ` Matthieu Moy
2011-02-07 0:14 ` Dmitry Potapov
2011-02-05 18:39 ` Nicolas Pitre
2011-02-05 19:37 ` Jeff King
2011-02-05 19:55 ` Nicolas Pitre
2011-02-05 23:39 ` Johan Herland
2011-02-06 20:04 ` Junio C Hamano
2011-02-07 16:10 ` Marc Branchaud
2011-02-07 19:40 ` Junio C Hamano
2011-02-07 20:37 ` Nicolas Pitre
2011-02-07 5:18 ` Jeff King
2011-02-07 14:53 ` Nicolas Pitre
2011-02-07 20:25 ` Jeff King
2011-02-07 20:51 ` Nicolas Pitre
2011-02-07 20:56 ` Jeff King
2011-02-01 23:15 ` [1.8.0] Remote tag namespace Johan Herland
-- strict thread matches above, loose matches on Subject: below --
2011-02-07 3:35 [1.8.0] Provide proper remote ref namespaces Johan Herland
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201102090224.45397.johan@herland.net \
--to=johan@herland.net \
--cc=dpotapov@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=nico@fluxnic.net \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=srabbelier@gmail.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).