git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Felipe Contreras <felipe.contreras@gmail.com>,
	git@vger.kernel.org, Sverre Rabbelier <srabbelier@gmail.com>,
	Richard Hansen <rhansen@bbn.com>,
	Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Subject: Re: [PATCH v5 06/10] fast-export: add new --refspec option
Date: Wed, 6 Nov 2013 14:14:27 -0800	[thread overview]
Message-ID: <20131106221427.GB13258@sigill.intra.peff.net> (raw)
In-Reply-To: <xmqq38n98cud.fsf@gitster.dls.corp.google.com>

On Wed, Nov 06, 2013 at 01:00:42PM -0800, Junio C Hamano wrote:

> I didn't think things through, but at the external UI level, I see a
> possibility of a nicer way to express the above.
> 
> In our "push" refspec (and export is about pushing what we have), a
> colonless refspec A is a short-hand for A:A, so the traditional
> 
> 	git fast-export master
> 
> can be thought of, in a new world order with a patch that lets you
> do a ref mapping, a short-hand for an identical mapping:
> 
> 	git fast-export master:master
> 
> It follows that the syntax naturally support
> 
> 	git fast-export refs/heads/master:refs/heads/foobar
> 
> I would think.
> 
> That approach lets you express ref mapping without a new option
> --refspec, which goes contrary to existing UI for any commands in
> Git (I think nobody takes refspec as a value to a dashed-option in
> the transport; both in fetch and push, they are proper operands,
> i.e. command line arguments to the command), no?

I think that is much nicer for the simple cases, but how do we handle
more complex rev expressions? One can say:

  git fast-export master ^origin

or even:

  git fast-export origin..master

The "^origin" is not a refspec, and finding the refspec in the
dot-expression would involve parsing it into two components. I think you
can come up with a workable system by parsing the arguments as revision
specifiers and then applying some rules. E.g., a positive ref "foo" is a
refspec "foo:foo", but negative "^bar" does not impact refspecs at all,
and the same rules are applied for "bar..foo". There is a syntactic
conflict where "foo:bar" would be interpreted as a tree:path by the
revision code, though, whereas in this context it means a refspec.

So I think it is possible to go that route (and perhaps preferable,
even, because it keeps the simple and common cases easy for the user),
but the implementation is not as simple as just treating the arguments
as refspecs.

-Peff

  reply	other threads:[~2013-11-06 22:14 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-31  9:36 [PATCH v5 10/10] transport-helper: add support to delete branches Felipe Contreras
2013-10-31  9:36 ` [PATCH v5 00/10] transport-helper: updates Felipe Contreras
2013-10-31 17:59   ` Max Horn
2013-10-31 18:10     ` Junio C Hamano
2013-10-31 18:30       ` Felipe Contreras
2013-10-31 18:34       ` Junio C Hamano
2013-10-31 18:41       ` Max Horn
2013-11-11  5:09   ` [PATCH v5 11/10] test-hg.sh: tests are now expected to pass Richard Hansen
2013-11-11  5:10   ` [PATCH v5 12/10] remote-bzr: support the new 'force' option Richard Hansen
2013-11-11 11:51     ` Felipe Contreras
2013-11-11 18:12       ` Richard Hansen
2013-11-11 18:15         ` Felipe Contreras
2013-10-31  9:36 ` [PATCH v5 01/10] transport-helper: fix extra lines Felipe Contreras
2013-10-31 18:16   ` Junio C Hamano
2013-10-31  9:36 ` [PATCH v5 08/10] fast-import: add support to delete refs Felipe Contreras
2013-10-31 18:41   ` Max Horn
2013-10-31  9:36 ` [PATCH v5 05/10] fast-export: improve argument parsing Felipe Contreras
2013-10-31  9:36 ` [PATCH v5 06/10] fast-export: add new --refspec option Felipe Contreras
2013-10-31 18:26   ` Junio C Hamano
2013-10-31 18:41     ` Felipe Contreras
2013-11-06 21:00       ` Junio C Hamano
2013-11-06 22:14         ` Jeff King [this message]
2013-11-06 22:31           ` Junio C Hamano
2013-11-06 22:41             ` Junio C Hamano
2013-11-08 23:44           ` Junio C Hamano
2013-11-09  0:06             ` Jeff King
2013-11-07  1:00         ` Felipe Contreras
2013-10-31  9:36 ` [PATCH v5 03/10] transport-helper: add 'force' to 'export' helpers Felipe Contreras
2013-10-31 18:21   ` Junio C Hamano
2013-10-31 18:55     ` Felipe Contreras
2013-10-31 19:07       ` Junio C Hamano
2013-11-01 14:49         ` Junio C Hamano
2013-11-01 15:37           ` Felipe Contreras
2013-11-01 16:35             ` Junio C Hamano
2013-11-01 17:28               ` Eric Sunshine
2013-11-11  5:01   ` [PATCH] fixup! " Richard Hansen
2013-10-31  9:36 ` [PATCH v5 09/10] fast-export: add support to delete refs Felipe Contreras
2013-10-31 19:29   ` Max Horn
2013-10-31 19:41     ` Felipe Contreras
2013-10-31 19:47       ` Max Horn
2013-10-31 19:53         ` Felipe Contreras
2013-10-31 22:38           ` Max Horn
2013-10-31  9:36 ` [PATCH v5 07/10] transport-helper: add support for old:new refspec Felipe Contreras
2013-10-31  9:36 ` [PATCH v5 04/10] transport-helper: check for 'forced update' message Felipe Contreras
2013-10-31  9:36 ` [PATCH v5 02/10] transport-helper: don't update refs in dry-run Felipe Contreras

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=20131106221427.GB13258@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ramsay@ramsay1.demon.co.uk \
    --cc=rhansen@bbn.com \
    --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.
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).