From: rae l Date: Sun, 07 Oct 2007 16:42:10 GMT Subject: Re: [PATCH] Make git-clean a builtin Message-ID: <91b13c310710070942q31cb4b5do81d1488bbd88dff@mail.gmail.com> In-Reply-To: <20071007154126.GD5642@mediacenter.austin.rr.com> On 10/7/07, Shawn Bohrer wrote: > Thanks for the input. > > On Sat, Oct 06, 2007 at 06:31:36PM -0700, Linus Torvalds wrote: > > This looks better, but I think you'd be even better off actually using the > > "read_directory()" interface directly, instead of exec'ing off "git > > ls-files" and parsing the line output. > > Perhaps, I'll take a look at how git-ls-files does it and see if I can > do that directly. Since I'm new to git (and C) it will probably take me > a while to re-implement though. > > > I also would still worry a bit about 'chdir(x)' and 'chdir("..")', because > > quite frankly, they are *not* mirrors of each other (think symlinks, but > > also error behaviour due to directories that might be non-executable). > > Now, admittedly, if a directory isn't executable, I can imagine other git > > things having problems (anybody want to test?), but that whole pattern is > > just very fragile and not very reliable. > > Yes it does seem fragile, but 'chdir("-")' doesn't work in C and I > couldn't find any equivalents. I actually did think about symlinks, and > my code does do the right thing since I test if it is a directory before > doing the 'chdir(x)'. Symlinks are therefore treated as normal files and > removed. 'chdir -' is just supported by the shell, and the C interface could use chdir(OLDPWD).