On Sun, Oct 19, 2008 at 09:18:19AM -0700, Maciej Pasternacki wrote: > When "git pull" is ran outside of work tree, it is unable to update work tree > with pulled changes; specifying --git-dir and --work-tree does not help here > because "cd_to_toplevel" call in git-pull occurs after "require_work_tree"; > changing order may break the commend if there is no working tree. Some more > commands behave in a similar way. I took a closer look at this. I'm not sure that there is actually a problem with moving the cd_to_toplevel before require_work_tree. cd_to_toplevel makes sure there is actually something to cdup to. In my test without a work-tree, "git rev-parse --show-cdup" simply printed nothing, causing no "cd" to occur. Moreover, git-pull is not the only script with this problem. There are quite a few with require_work_tree cd_to_toplevel which will break in the same way with --work-tree. And there are even more with just require_work_tree that don't cd_to_toplevel at all. So I suspect that --work-tree is largely broken in our scripts and nobody has actually tried it. So: 1. I think we can fix this breakage by swapping the two. 2. There is still breakage in other scripts, some of which may need quite in-depth fixes (e.g., git-bisect requires a work tree but does not chdir at all. For the require_work_tree test to work, it needs to be inside the work tree, and the script will need a careful looking over to see what ramifications that has). 3. I think your -C option has some merit independent of this, since it allows you to chdir and still use the usual lookup rules (e.g., see if it is bare vs a regular repository). But I don't feel strongly about it one way or the other. -Peff -- 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