From: Alex Riesen Date: Fri, 22 Dec 2006 16:09:44 GMT Subject: Re: [PATCH] sha1_name(): accept ':directory/' to get at the cache_tree Message-ID: <20061222160944.GA4651@steel.home> In-Reply-To: Johannes Schindelin, Fri, Dec 22, 2006 13:18:55 +0100: > > > If the cache tree is not up-to-date, it will be updated first. So, now > > > > > > $ git show :Documentation/ > > > > > > will in effect show what files/directories are in the index' version > > > of the directory Documentation. The three commands > > > > > > $ git show :./ > > > $ git show :. > > > $ git show : > > > > > > are all equivalent and show the index' idea of the root directory. > > > > That is a bit unexpected if you're not in the root directory of > > repository, but in some subdir of the working directory. > > Why root? Why not the current directory relative to root? > > Why root? Because you are not asking for the working directory. Use "ls" > for that. You are asking for the index. If you git-show a commit, you > don't expect the output to be restricted by the subdirectory you're in, > either, right? Of course I do. You're breaking a very well-known and widely used idiom here: the "." means current or at least somehow related to the current directory. Why would you expect "git show :." to show everything from root on if your current directory is "Documentation"? Yes, it is a commit which "git show" displays, but the patches/diffs are restricted by filenames, and that is where the old rules come into play. And I would actually expect ":/" to filter from the root on, and ":." to mean the current directory.