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

Re: $ git checkout and symlinks

From
Pierre Habouzit <madcoder@debian.org>
Date
Jul 4, 2007, 22:23 UTC
Message-ID
<20070704222351.GC13286@artemis.corp>
In-Reply-To
<20070704210559.GB13286@artemis.corp>
On Wed, Jul 04, 2007 at 11:05:59PM +0200, Pierre Habouzit wrote:
Show 20 quoted lines
> On Wed, Jul 04, 2007 at 01:52:32PM -0700, Junio C Hamano wrote:
> > Pierre Habouzit <madcoder@debian.org> writes:
> > 
> > >   if in a branch $ you track the file: dir1/file1.c
> > > and in the branch $ you track elsewhere/file1.c and dir1 be
> > > symlink on elsewhere, then it's not possible to checkout the branch
> > > $. You have to manually
> > > remove the symlink `dir1` else git complains that checkouting branch1
> > > would overwrite dir1/file1.c.
> > >
> > >   I'm not sure how to fix this, and it's quite painful actually :)
> > 
> > Yeah, I think our handling of symlinks in both read-tree and
> > merge-recursive codepath are Ok for symlinks at the leaf level
> > but not for intermediate levels.  I think we have some patches
> > in the recent git (post 1.5.1) to fix (perhaps some of) the
> > issues, though.
> 
>   that was with the git in debian unstable, 1.5.2.3 actually.  I'll try
> again with HEAD to see if that's fixed.
  HEADS does not fixes it either.
  Here is how to reproduce the problem step by step:
$ git init-db 				# init a repo

$ mkdir dir $ echo wibble > dir/a $ git add a $ git commit -a -m'add a' # have dir/a live in master

$ git checkout -b break $ git mv dir new # rename dir into new $ ln -s new dir # symlink dir to new $ git add dir # add the symlink $ git commit -a -m 'break things' # commit

$ git checkout master fatal: Untracked working tree file 'dir/a' would be overwritten by merge.

  The same is true for current git.git HEAD, or git 1.5.2.x
Cheers,
-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org
Previous: Pierre HabouzitNext: Junio C Hamano
Message 4 of 11 in “[BUG (or misfeature?)] git checkout and symlinks”
  1. Pierre HabouzitJul 4, 2007
  2. Junio C HamanoJul 4, 2007
  3. Pierre HabouzitJul 4, 2007
  4. Pierre HabouzitJul 4, 2007
  5. Teach read-tree 2-way merge to ignore intermediate symlinksJunio C Hamano, Jul 12, 2007
  6. git-log --follow?Junio C Hamano, Jul 12, 2007
  7. Johannes SchindelinJul 12, 2007
  8. Linus TorvaldsJul 12, 2007
  9. Junio C HamanoJul 12, 2007
  10. Linus TorvaldsJul 12, 2007
  11. Pierre HabouzitJul 12, 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.