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

Re: Switching heads and head vs branch after CVS import

From
Linus Torvalds <torvalds@osdl.org>
Date
Aug 15, 2005, 02:49 UTC
Message-ID
<Pine.LNX.4.58.0508141937251.3553@g5.osdl.org>
In-Reply-To
<46a038f905081419057cc6b5cd@mail.gmail.com>
On Mon, 15 Aug 2005, Martin Langhoff wrote:
Show 7 quoted lines
> 
> > So in a cvsimport, you'll never see a merge back to the head, even if one
> > technically took place.
> 
> There may be some surprises in here! gitk --all shows at least one
> branch opening and merging back into origin, and it has figured it out
> correctly

Oh, wow. The new cvsimport is obviously being a hell of a lot smarter than my original one was. Goodie.

> Except for the keyword expansion. surely there's a way to tell cvsps
> to not do it. Why would we ever want it?

Ahh. I don't think we should blame cvsps, I think cvsimport should use the "-ko" flag to disable keyword expansion or whatever the magic flag is.

Sven, Matthias, opinions? I've never used CVS keyword expansion, and always felt it was pointless, but hey..

Show 5 quoted lines
> > branches and heads are the same thing in git. 
> 
> right. There are two separate directories in .git for them, so I was
> misled by that. Should I assume git is safe from name clashes or is it
> up to porcelain to deal with such minutiae?
Well, you actually are _expected_ to get clashes.

What happens normally (at least for core git) is that the ".git/branches" directory contains external sources for the branches (for example, a "git clone" will fill in the "origin" source, while I often have a ".git/branches/parent" in my tree because). That is just a pointer to where the external branch exists.

Then, when you do something like
	git fetch parent

it will look up the source of "parent" by looking in the ".git/branches/parent" file, and update the ".git/refs/heads/parent" branch appropriately from that external branch.

So in this example the parent "head" ("local branch") points to the actual _commit_ we have, while the ".git/branches/parent thing points to what _external_ branch it came from.

But yes, you _can_ mess this up if you want to. If you have the same "external branch" name that you use for an "internal branch", you deserve all the confusion you get ;)

		Linus
Previous: Martin LanghoffNext: Sven Verdoolaege
Message 5 of 16 in “Switching heads and head vs branch after CVS import”
  1. Martin LanghoffAug 15, 2005
  2. Junio C HamanoAug 15, 2005
  3. Linus TorvaldsAug 15, 2005
  4. Martin LanghoffAug 15, 2005
  5. Linus TorvaldsAug 15, 2005
  6. Sven VerdoolaegeAug 15, 2005
  7. Matthias UrlichsAug 15, 2005
  8. Martin LanghoffAug 15, 2005
  9. Wolfgang DenkAug 15, 2005
  10. Matthias UrlichsAug 15, 2005
  11. Sven VerdoolaegeAug 15, 2005
  12. Linus TorvaldsAug 15, 2005
  13. Martin LanghoffAug 15, 2005
  14. Wolfgang DenkAug 15, 2005
  15. Linus TorvaldsAug 15, 2005
  16. Johannes SchindelinAug 15, 2005

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.