On Wed, Sep 02, 2009 at 10:03:05AM +0200, SZEDER Gábor wrote: > As the subject says, 'git add -u' does not work from an untracked > subdir, because it doesn't add modified files to the index. The > following script reproduces the issue: > > mkdir repo > cd repo > git init > echo 1 >foo > git add foo > git commit -m first > echo 2 >foo > mkdir untracked_subdir > cd untracked_subdir > git add -u > git diff > > It worked in the initial 'git add -u' implementation (dfdac5d, git-add > -u: match the index with working tree, 2007-04-20), but 2ed2c222 > (git-add -u paths... now works from subdirectory, 2007-08-16) broke it > later, and is broken ever since. It is not just untracked subdirs. Try: mkdir repo && cd repo && git init echo 1 >foo mkdir subdir echo 1 >subdir/bar git add . && git commit -m first echo 2 >foo echo 2 >subdir/bar cd subdir git add -u git diff ;# still shows foo/1 in index git diff --cached ;# shows subdir/bar was updated While I have sometimes found the behavior a bit annoying[1], I always assumed that was the intended behavior. And indeed, in modern builtin-add.c, we find this: if ((addremove || take_worktree_changes) && !argc) { static const char *here[2] = { ".", NULL }; argc = 1; argv = here; } which seems pretty explicit. -Peff [1] I would prefer "git add -u ." to add only the current directory, and "git add -u" to touch everything. But then, I am one of the people who turn off status.relativepaths, so I think I may be in the minority in always wanting to think of the project as a whole. -- 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