Bug: git add with absolute path fails if repo root dir is a symlink

Previous thread: by COCA COLA on Sunday, December 26, 2010 - 11:07 pm. (1 message)

Next thread: False positives in git diff-index by Alexander Gladysh on Monday, December 27, 2010 - 1:49 am. (6 messages)
From: Alexander Gladysh
Date: Sunday, December 26, 2010 - 11:25 pm

Hi, list.

Yet another issue with Git symlink handling.

I can't run git add with absolute path if the repository's root
directory is a symlink.

Please see the transcript below for details.

Alexander.

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 10.10
Release:	10.10
Codename:	maverick

$ uname -a
Linux ubuntu 2.6.35-24-generic #42-Ubuntu SMP Thu Dec 2 01:41:57 UTC
2010 i686 GNU/Linux

$ git --version
git version 1.7.3.4

$ mkdir myrepo && cd myrepo
$ git init
$ touch alpha
$ git add alpha
$ git commit -m "initial commit"

$ cd ../
$ ln -s myrepo mysymlink
$ cd mysymlink
$ git status
$ touch beta

$ git add ~/tmp/git-test/mysymlink/beta
fatal: '/home/agladysh/tmp/git-test/mysymlink/beta' is outside repository

$ cd ../myrepo/
$ git add ~/tmp/git-test/myrepo/beta
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   beta
#
--

From: Alexander Gladysh
Date: Monday, December 27, 2010 - 12:23 am

Note that this issue is also triggered if *any* of the directories in
path above of my repo are symlinks.

This is a show-stopper for my current workflow.

Is there a way to quickly workaround this somehow?

Alexander.
--

From: Carlo Marcelo Arenas Belon
Date: Monday, December 27, 2010 - 1:13 am

When using absolute path names, git will compare the path given with the
git work tree and any name that is referred through a symlink in that

use relative paths (implemented below through an alias named "myadd") :

[alias]
        myadd = "!sh -c 'cd `dirname \"$1\"` && git add `basename \"$1\"`' -"

so in your workflow you would use "myadd" instead of "add" to convert your
absolute paths (with symlinks) into relative paths

Carlo
--

Previous thread: by COCA COLA on Sunday, December 26, 2010 - 11:07 pm. (1 message)

Next thread: False positives in git diff-index by Alexander Gladysh on Monday, December 27, 2010 - 1:49 am. (6 messages)