Subject: git ls-files -o under .git/ prints all repository files

From: Yasushi SHOJI <[email-masked]>
Date: Fri, 19 Jan 2007 10:04:12 +0900

Hi all,

ls-files -o prints all files under .git if you are in the .git
directory.  this is pretty dangerous since we now have git clean to
delete files marked others.

sure in UNIX env., you can easily shoot yourself in the foot. but it'd
might be nice to help newbies.

I'm not sure how we should fix this.  should we

1) prevent to run any git command under .git unless .git is also
   managed by git (ie. .git/.git or something exists)

2) prevent ls-files -o to print any files under .git/ even if we are
   in the directory.

the way to reproduce is:

$ git init
Initialized empty Git repository in .git/
$ echo hello > hello.c
$ git add .
$ git commit -m initial
Created initial commit b40c824b521f6c60434043f0cce08a88b4031ed8
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 hello.c
$ cd .git
$ git ls-files -o
HEAD
config
description
hooks/applypatch-msg
hooks/commit-msg
hooks/post-commit
hooks/post-update
hooks/pre-applypatch
hooks/pre-commit
hooks/pre-rebase
hooks/update
index
info/exclude
logs/refs/heads/master
objects/b4/0c824b521f6c60434043f0cce08a88b4031ed8
objects/bc/2d2dcb34e8313627d45ad6ef38beddf560501d
objects/ce/013625030ba8dba906f756967f9e9ca394464a
refs/heads/master
$ git clean
Removing HEAD
Not removing branches/
Removing config
Removing description
Not removing hooks/
Removing index
Not removing info/
Not removing logs/
Not removing objects/
Not removing refs/
Not removing remotes/
$ cd ..
$ git ls-files
fatal: Not a git repository
$ 
-- 
          yashi