Re: Document clone of clone loosing branches?
On Sat, Jun 14, 2008 at 03:05:48PM +0200, Vaclav Hanzl wrote:
Show 6 quoted lines
> I wander whether man git-clone is correct when it says "creates
> remote-tracking branches for each branch in the cloned repository".
>
> IMHO remote-tracking branches in the original repository _are_
> branches and they are _not_ cloned (when using git-clone with no
> options) - maybe this is worth noting very explicitly?
The new repository has remote tracking branches of the _regular_ branches that are in the original repository. So the statement is correct; git-clone creates remote-tracking branches, and it makes one such branch for each branch in the cloned repository.
Unless you are complaining that it makes one for each non-remote branch in the cloned repository. But I think it is the general pattern to refer to things in refs/heads/ as simply unadorned "branch". If you want to say "all refs, including remote-tracking branches", you would typically say "refs" (which would also include tags).
> When git newby like me converts a CVS repository, containing just few
> short old branches (stable release bug fixes) and then clones it
> around, with naive belief that clone is a 1:1 copy or something close,
> nasty surprise can happen:
In that sense, clone is a bit of a misnomer, because the two _are_ different. The cloned repo has its origin pointing to the original repo, and the origin of the original repo (and its associated tracking branches) are forgotten.
> - converted repository has those branches, OK
> - clone of it also has them, but as a remote tracking branches
> - clone of clone has it as dangling objects only (can go away later)
The clone of clone does not have dangling objects; either it sees a ref (because it is a branch in the clone) and it grabs the objects, or it does not see it, in which case it does not download those objects.
> Trying to play it safe, I used git-clone many times while starting
> with git, and I got really nervous when I first discovered that my old
> stable release bug fix branch is not visible in some repositories :-)
Yes, this is sometimes annoying if what you _really_ want is another clone of the clone's origin. For me, this happens because I want to clone Junio's git.git (to do some experimentation that might trash the repo), but:
- I am too lazy to type Junio's git URL
- I want the hard-link space-saving of cloning my local repo
So I do something like:
ref=/path/to/my/git/repo
git clone --reference $ref `cd $ref && git config remote.origin.url`
which you can easily put in an alias.
-Peff