git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
Date
Jan 19, 2007, 10:10 UTC
Message-ID
<45B09926.5060306@fs.ei.tum.de>
In-Reply-To
<81b0412b0701190133o70ab9da3ga0441e9ca16991a9@mail.gmail.com>
Alex Riesen wrote:
Show 9 quoted lines
>> >> 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.
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").
To add some facts to it:
GIT-LS-FILES(1)                                                GIT-LS-FILES(1)
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.
Show 20 quoted lines
>> > I can imagine keeping hooks under git control.
>> > In this case path(pwd) does contain .git component
>> > (as in .hg example).
>>
>> doesn't work either:
>>
>> % cd .git/hooks
>> % git add *
>> fatal: unable to add .git/hooks/applypatch-msg to index
> 
> cd .git
> git init
> git add .
> git commit
> 
> 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.
Of course I don't say "refuse operation if there is .git in the path".  What I mean is, "refuse operation if there is $GIT_DIR in the path".  Maybe my example was not complete enough.  With mercurial, you can as well have a .hg in .hg.
cheers
  simon
-- 
Serve - BSD     +++  RENT this banner advert  +++    ASCII Ribbon   /"\
Work - Mac      +++  space for low €€€ NOW!1  +++      Campaign     \ /
Party Enjoy Relax   |   http://dragonflybsd.org      Against  HTML   \
Dude 2c 2 the max   !   http://golden-apple.biz       Mail + News   / \
Previous: Alex RiesenNext: Alex Riesen
Message 13 of 26 in “git ls-files -o under .git/ prints all repository files”
  1. Yasushi SHOJIJan 19, 2007
  2. Junio C HamanoJan 19, 2007
  3. Andy ParkinsJan 19, 2007
  4. Junio C HamanoJan 19, 2007
  5. Andy ParkinsJan 19, 2007
  6. Yasushi SHOJIJan 19, 2007
  7. Simon 'corecode' SchubertJan 19, 2007
  8. Alex RiesenJan 19, 2007
  9. Simon 'corecode' SchubertJan 19, 2007
  10. Alex RiesenJan 19, 2007
  11. Simon 'corecode' SchubertJan 19, 2007
  12. Alex RiesenJan 19, 2007
  13. Simon 'corecode' SchubertJan 19, 2007
  14. Alex RiesenJan 19, 2007
  15. Simon 'corecode' SchubertJan 19, 2007
  16. Andreas EricssonJan 19, 2007
  17. Matthias KestenholzJan 19, 2007
  18. Johannes SchindelinJan 19, 2007
  19. Junio C HamanoJan 19, 2007
  20. Yasushi SHOJIJan 23, 2007
  21. Commands requiring a work tree must not run in GIT_DIRJohannes Schindelin, Jan 23, 2007
  22. Junio C HamanoJan 24, 2007
  23. Johannes SchindelinJan 24, 2007
  24. Junio C HamanoJan 24, 2007
  25. Alex RiesenJan 19, 2007
  26. Alex RiesenJan 19, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.