BUG: git_work_tree issue with git alias and scripting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Attached is a simple script exposing a possible bug when git alias is
combined with git commands in script. It should be pretty self-explanatory.
Check what it does and execute it. On my Linux and OSX, both with git 2.5.1
behave the same, ie. git add fails even the file "test" is in $PWD.

Summary: $GIT_WORK_TREE persists in env, and then some git commands operate
on repo in $PWD (like git log), while some others (like git add) operate on
repo in $GIT_WORK_TREE, making it inconsistent and results in very
unexpected results.

Cheers, Tuomo


---
#!/bin/sh

# setup a test repo
mkdir bar
cd bar
git init
echo "test" > bar
git add bar
git commit -m "test commit in bar"
echo "adding this will fail later on" > test
cd ..

# setup a repo with an alias and script alias will execute
mkdir foo
cd foo
git init

cat >foo.sh <<EOF
#!/bin/sh -x
cd $PWD/../bar
env | egrep "^(GIT_WORK_TREE|PWD)"
echo "Git log works (bar log shows up):"
git log --oneline | head -1
echo "Git add does not (tries to add files in GIT_WORK_TREE=foo, while
PWD=bar):"
git add test
EOF
chmod 755 foo.sh

cat >>.git/config <<EOF
[alias]
  foo = !$PWD/foo.sh
EOF

git add foo.sh
git commit -m "committing foo.sh"

# run test via alias
git foo
--
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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]