Matthieu Moy venit, vidit, dixit 07.02.2011 07:48: > Jeff King <peff@xxxxxxxx> writes: > >> On Sun, Feb 06, 2011 at 09:50:37PM -0800, Junio C Hamano wrote: >> >>> As it takes pathspecs (think "git add -u this-file"), it fundamentally >>> shouldn't be tree-wide. I think the original implementation didn't take >>> pathspecs and was mistakenly done as tree-wide operation, but I think it >>> was fixed rather quickly. >> >> Is "git add -p" broken, then? It takes pathspecs relative to the current >> directory, but "git add -p" without arguments operates from the root, >> not from the current subdirectory. > > It's not just "git add -p". Take "git log", "git status", "git > commit", "git diff" ... well, most Git commands taking pathspecs > optionally: > > git foo => tree-wide > git foo . => the . acts as a path limiter > > and this is the right thing to do. Making "git foo" equivalent to "git > foo ." makes it hard to recover the tree-wide behavior from a > subdirectory (git foo ../../../). > First of all, I'd vote for having this work the same way across all commands - as Junio explained, the destinction we currently have is not easy to grasp, and is violated by add -p. Second, we have an established, natural syntax for "base on cwd", namely ".", but we do not have any for "base on worktree root". (I think we discussed and discarded "/" at some point.) So, if we go for "relative to cwd by default" we would need a simple way to specify the root - and by simple I mean taking at most 2 chars in the pathspec, not a long option! In summary, I think going for "relative to worktree root by default" is more in line with git's overall philosophy (so it teaches the right concept), something the user is exposed to already in most places (but not all), and limiting to "." already works in most (all?) places, even with "status" and "status -s". We would only need to change the few places where we still default to cwd, and make sure they accept "." when we change their default to repo root. Cheers, Michael -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html