Thread (5 messages) flat view 5 messages, 2 authors, 2016-06-15

Re: [RFC] git-clone: add --track <headname> support

From: Martin Langhoff <hidden>
Date: 2016-06-15 22:43:04

Carl Worth wrote:
Whether we're talking about cogito migration or not, I also want these
operations to be dead simple. So I really appreciate seeing your
efforts on this front.
Hi Carl! Yes - this stuff should be simple, and _really hard to fsck up_.
I seem to recall Linus complaining about the <repo>#branchname syntax
because it allows for only one branch name. So one thing to think
about is how to allow for multiple branches to be tracked while
cloning, ("--track branch1 --track branch2" ?).
That wouldn't be hard to implement. Actually, we could support both.
Separately, something I've always wanted is a succint way to advertise
a complete specification of a branch that users could conveniently
take, (read, "cut-and-paste, preferably with double-click"), and use
whether they wanted to do any one of the following operations:
(...)
For this, I think the <repo>#branch syntax is actually worthing
thinking about. With it, the above three operations could be provided
with operations something like:

	git clone <repo>#branch

	git fetch <repo>#branch

	git track <repo>#branch
So you are proposing (or maybe I am re-interpreting things so) that

  git track <repo>#branch

should Do The Right Thing:

 - perform a clone if we aren't in a repo
 - set things up for tracking the branch if we are in a repo

I like the idea. :-)
Where this new git-track command would encompass a lot of the work
that git-clone is doing currently. That is, the git-clone rewrite
that Junio is envisioning could be implemented something like:

	mkdir <branch>
	cd <branch>
	git init-db
	git track <repo>#branch
Oops - looks like we are talking about different things. What you write
above can be done with "git-branch --track" on 1.5.1 so it's already in
existence.
By the way, the <repo>#branch syntax isn't essential for what I'm
describing here. This syntax does provide something that could be
usefully provided to either git-clone or git-fetch as a single
command. This is opposed to the current state where I have to say
things like:

	If you've got a clone already, do: [*]

		git fetch <repo> branch:branch
		git checkout branch

	If you don't have a clone yet, do:

		git clone <repo>
		git checkout -b branch origin/branch
With my proposed git-track as a wrapper around git-clone _and_
git-branch --track, you only need to say

    To start working on foo, do

      git track <repo>#branch

And if the user has an existing checkout they can do if from inside the
checkout, or perhaps better, saying

     git track --reference <myoldcheckout> <repo>#branch

to avoid the biiig download.


cheers,



m
-- 
-----------------------------------------------------------------------
Martin @ Catalyst .Net .NZ  Ltd, PO Box 11-053, Manners St,  Wellington
WEB: http://catalyst.net.nz/           PHYS: Level 2, 150-154 Willis St
OFFICE: +64(4)916-7224  UK: 0845 868 5733 ext 7224  MOB: +64(21)364-017
      Make things as simple as possible, but no simpler - Einstein
-----------------------------------------------------------------------
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help