git ate my home directory :-(

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

git ate my home directory :-(

From: Richard Weinberger <richard@nod.at>
Date: 2016-06-15 22:56:31

Hi!

Today I've discovered that on the build server my home directory was empty.
A post-mortem analysis showed that the git-clean command I've added to my kernel build script
is the evil doer.
In my scripts I'm setting GIT_DIR to use git-fetch and git-reset without changing the
current working directory all the time.
But calling git-clean with GIT_DIR acts basically like a "rm -Rf .".

Here a small demo:

test@linux:~> git --version
git version 1.8.1.4
test@linux:~> ls
test@linux:~> touch a b c d e
test@linux:~> mkdir x
test@linux:~> cd x
test@linux:~/x> git init
Initialized empty Git repository in /home/test/x/.git/
test@linux:~/x> cd ..
test@linux:~> ls
a  b  c  d  e  x
test@linux:~> export GIT_DIR=/home/test/x/.git/
test@linux:~> git clean -d -f
Removing a
Removing b
Removing c
Removing d
Removing e
Removing x/
test@linux:~> ls
test@linux:~>
test@linux:~> # :-(

Is this behavior intended?

Thanks,
//richard

Re: git ate my home directory :-(

From: Jonathan Nieder <hidden>
Date: 2016-06-15 22:56:31

Hi,

Richard Weinberger wrote:
In my scripts I'm setting GIT_DIR to use git-fetch and git-reset without changing the
current working directory all the time.
Yeah, for historical reasons GIT_WORK_TREE defaults to $(pwd) when
GIT_DIR is explicitly set.

In git versions including the patch 2cd83d10bb6b (setup: suppress
implicit "." work-tree for bare repos, 2013-03-08, currently in "next"
but not "master"), you can set GIT_IMPLICIT_WORK_TREE=0 to avoid this
behavior.

Thanks for a useful example, and sorry for the trouble.

Sincerely,
Jonathan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help