On Wed, Dec 02, 2009 at 07:20:28PM +0900, Nanako Shiraishi wrote: > Quoting David Soria Parra <sn_@xxxxxxx> writes: > > > I'm aware that it's not possible to give more than one --track > > option. Implementing the possibility to specify multiple --track option > > would certainly a good improvment later, but would also require a lot > > more work as far as I understand the clone code. > > I'm sorry if I'm asking the obvious, but how can multiple --track > options be a useful future enhancement? If I understand your use > case correctly, it's useful when you want to work on only one > branch that isn't the default, and that is why you don't want to > get data necessary for other branches. What does it mean to give > two --track options? You will get one master branch that tracks > both versions, and "git pull" will merge both branches you track? I would find something like this useful for cloning git.git, where I explicitly fetch maint, master, next, and pu, but none of html, man, or todo. This makes "gitk --all" much nicer to view. However, I don't think --track is the right term. There are really two things happening here: 1. Setting the fetch refspec(s). 2. Choosing an initial branch to checkout. We can already do (2) with "-b". But there is no way to do (1) currently. If we are going to implement (1), I don't see a reason to be restrictive about it. We should really accept arbitrary refspecs, and then provide a syntax on top of that for doing both (1) and (2) together. I am thinking something like: # most general case git clone -f 'refs/heads/subset/*:refs/remotes/origin/*' remote.git # expands to refs/heads/subset/*:refs/remotes/origin/* git clone -f 'refs/heads/subset/*' remote.git # expands to refs/heads/subset/*, which then expands as above git clone -f 'subset/*' remote.git # multiple -f should add multiple refspec lines git clone -f maint -f master -f next -f pu git.git # choose your favorite branch git clone -f maint -f master -f next -f pu -b next git.git And for convenience of the user, you would want a way to avoid repeating the name of the "I want to check this out" branch. So either: 1. Add "--track foo" as a convenience wrapper for "-f foo -b foo". 2. If no "-b" is given, the first "-f" is assumed as "-b". So "git clone -f foo" becomes equivalent to David's --track. And of course the name "-f" (for --fetch, if you were wondering) is open to suggestion. What do you think? -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html