From: Geoff Russell <hidden> Date: 2016-06-15 22:45:00
For reasons which would take a while to explain, I'm building a repository
in a directory using "--git-dir=xxxx/.git --work-tree=." and
then doing an "mv xxxx/.git ./.git" and then trying to work with
that repository --- but can't
Below is a sample script. The last line (git add) fails with
fatal: unable to create
'/usr/local/AusTop/AuPrograms/AuServer/testgit/aaa/bbb/.git/index.lock':
No such file or directory
git doesn't seem to realise that there is a .git back up the tree.
I'm using 1.5.5.1
Cheers,
Geoff Russell
------------------------ sample script
#!/bin/sh
if [ -d "testgit" ] ; then
echo "remove testgit"
/bin/rm -rf testgit
fi
mkdir testgit && echo yyyy >testgit/sample.sh && cd testgit
mkdir aaa && mkdir aaa/bbb
echo xxxx > aaa/bbb/sample2.sh
mkdir xxx
git --git-dir=xxx/.git --work-tree=. init
git --git-dir=xxx/.git --work-tree=. add *.sh
git --git-dir=xxx/.git --work-tree=. commit -m demo
mv xxx/.git .
cd aaa/bbb
git add sample2.sh
For reasons which would take a while to explain, I'm building a repository
in a directory using "--git-dir=xxxx/.git --work-tree=." and
then doing an "mv xxxx/.git ./.git" and then trying to work with
that repository --- but can't
Below is a sample script. The last line (git add) fails with
fatal: unable to create
'/usr/local/AusTop/AuPrograms/AuServer/testgit/aaa/bbb/.git/index.lock':
No such file or directory
git doesn't seem to realise that there is a .git back up the tree.
It's because when you did git --work-tree=. init, worktree is stored
in .git/config. The code that chdir() in setup_git_directory()
probably forgot to chdir() back to toplevel worktree. Workaround could
be just remove core.worktree in .git/config.
I'm using 1.5.5.1
Cheers,
Geoff Russell
------------------------ sample script
#!/bin/sh
if [ -d "testgit" ] ; then
echo "remove testgit"
/bin/rm -rf testgit
fi
mkdir testgit && echo yyyy >testgit/sample.sh && cd testgit
mkdir aaa && mkdir aaa/bbb
echo xxxx > aaa/bbb/sample2.sh
mkdir xxx
git --git-dir=xxx/.git --work-tree=. init
git --git-dir=xxx/.git --work-tree=. add *.sh
git --git-dir=xxx/.git --work-tree=. commit -m demo
mv xxx/.git .
cd aaa/bbb
git add sample2.sh
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Geoff Russell <hidden> Date: 2016-06-15 22:45:00
On Thu, Jul 24, 2008 at 11:42 AM, Nguyen Thai Ngoc Duy
[off-list ref] wrote:
On 7/24/08, Geoff Russell [off-list ref] wrote:
quoted
For reasons which would take a while to explain, I'm building a repository
in a directory using "--git-dir=xxxx/.git --work-tree=." and
then doing an "mv xxxx/.git ./.git" and then trying to work with
that repository --- but can't
Below is a sample script. The last line (git add) fails with
fatal: unable to create
'/usr/local/AusTop/AuPrograms/AuServer/testgit/aaa/bbb/.git/index.lock':
No such file or directory
git doesn't seem to realise that there is a .git back up the tree.
It's because when you did git --work-tree=. init, worktree is stored
in .git/config. The code that chdir() in setup_git_directory()
probably forgot to chdir() back to toplevel worktree. Workaround could
be just remove core.worktree in .git/config.
Many thanks, the work-around works. I'm not sure if this is a bug or
a feature, but I'm happy either way.
Cheers,
Geoff Russell
quoted
I'm using 1.5.5.1
Cheers,
Geoff Russell
------------------------ sample script
#!/bin/sh
if [ -d "testgit" ] ; then
echo "remove testgit"
/bin/rm -rf testgit
fi
mkdir testgit && echo yyyy >testgit/sample.sh && cd testgit
mkdir aaa && mkdir aaa/bbb
echo xxxx > aaa/bbb/sample2.sh
mkdir xxx
git --git-dir=xxx/.git --work-tree=. init
git --git-dir=xxx/.git --work-tree=. add *.sh
git --git-dir=xxx/.git --work-tree=. commit -m demo
mv xxx/.git .
cd aaa/bbb
git add sample2.sh
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Duy
--
6 Fifth Ave,
St Morris, S.A. 5068
Australia
Ph: 041 8805 184 / 08 8332 5069
From: Jan Hudec <hidden> Date: 2016-06-15 22:45:06
On Thu, Jul 24, 2008 at 12:06:28 +0930, Geoff Russell wrote:
On Thu, Jul 24, 2008 at 11:42 AM, Nguyen Thai Ngoc Duy
[off-list ref] wrote:
quoted
On 7/24/08, Geoff Russell [off-list ref] wrote:
quoted
For reasons which would take a while to explain, I'm building a repository
in a directory using "--git-dir=xxxx/.git --work-tree=." and
then doing an "mv xxxx/.git ./.git" and then trying to work with
that repository --- but can't
Below is a sample script. The last line (git add) fails with
fatal: unable to create
'/usr/local/AusTop/AuPrograms/AuServer/testgit/aaa/bbb/.git/index.lock':
No such file or directory
git doesn't seem to realise that there is a .git back up the tree.
It's because when you did git --work-tree=. init, worktree is stored
in .git/config. The code that chdir() in setup_git_directory()
probably forgot to chdir() back to toplevel worktree. Workaround could
be just remove core.worktree in .git/config.
Many thanks, the work-around works. I'm not sure if this is a bug or
a feature, but I'm happy either way.
That depends on what the value of core.worktree is:
- If it is '.', than I think it should be considered a bug in git init,
because that value is just plain nonsense.
- If it is '..', than it's a user error and the right thing is to just
remove it when you relocate the .git directory.
- If it was '/usr/local/AusTop/AuPrograms/AuServer/testgit/' than it would
have worked, so it's not that.
Best regards,
Jan
--
Jan 'Bulb' Hudec [off-list ref]