Re: git ls-files -o under .git/ prints all repository files
- From
Alex Riesen <raa.lkml@gmail.com>
- Date
- Jan 19, 2007, 10:38 UTC
- Message-ID
- <81b0412b0701190238o79ce8473t2faf1a797565bc5d@mail.gmail.com>
- In-Reply-To
- <45B09926.5060306@fs.ei.tum.de>
On 1/19/07, Simon 'corecode' Schubert <corecode@fs.ei.tum.de> wrote:
Show 13 quoted lines
> Alex Riesen wrote: > >> >> i would claim .git to be off limits and unrelated to the working dir > >> >> (file-wise). if you want to list files there, do a find . or so. > >> >> After all you wouldn't expect cd /usr && git-ls-files -o work there > >> >> unless you have a /.git or /usr/.git, right? > >> > Right, just see no practical point changing ls-file for that. > >> right. .git should be forbidden in higher layers already. > > > > That's where I disagree. git-clean shouldn't clean it, but > > git-ls-files will do no harm to the directory > > of course git-ls-files will do no harm. but "fixing" every consumer of > git-ls-files seems wrong to me.
There are not that many users of ls-files, which could harm a repo. Besides of git-clean, cannot think of any.
> okay, what do I expect when doing cd .git && git-ls-files?
> Either listing *all files* in the repo (like git-ls-files from the
> repo root) or no files at all, or failure (".git is private").List nothing. That's what it does. It could return non-0 (which it does not), but aside from that,... looks very sensible.
Show 5 quoted lines
> NAME > git-ls-files - Information about files in the index/working directory > > That's pretty clear to me. Working directory. .git is *not* part of the working directory. >
Alright, it is not. I can even imagine someone having a script containing "git-ls-files -o| rm -f; git reset --hard" to get clean working dir, and starting the script in .git one day. Make "-o" list nothing as well?
Show 8 quoted lines
> > Works. And the path contains .git component. And git-clean
> > here is ok. The test should check if we are in $GIT_DIR
> > and probably $GIT_DIR/{objects,refs,logs}, not just below
> > .git (with ".git" anywhere in pwd, which the mercurial
> > example seem to suggest).
>
> No, the path does *not* contain a .git component. You just
> committed to the root of the *inside* repo."$OLDPWD/.git/hooks". It does contain ".git" :)