git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
MLMartin Langhoff <martin@catalyst.net.nz>
Date
Apr 12, 2007, 21:46 UTC
Message-ID
<461EA8C5.1070503@catalyst.net.nz>
In-Reply-To
<87veg1tuuv.wl%cworth@cworth.org>
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:
(...)
Show 9 quoted lines
> 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. :-)
Show 8 quoted lines
> 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.

Show 15 quoted lines
> 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
-----------------------------------------------------------------------
Previous: Carl WorthNext: Carl Worth
Message 5 of 9 in “[RFC] git-clone: add --track <headname> support”
  1. Martin LanghoffApr 12, 2007
  2. Junio C HamanoApr 12, 2007
  3. Martin LanghoffApr 12, 2007
  4. Carl WorthApr 12, 2007
  5. Martin LanghoffApr 12, 2007
  6. Carl WorthApr 12, 2007
  7. Martin LanghoffApr 12, 2007
  8. Junio C HamanoApr 13, 2007
  9. Junio C HamanoApr 13, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.