Jeff King <peff@xxxxxxxx> writes: > And then convert the two scripts in my patch to use it (along with the > change to require_work_tree_exists). That would make my prior analysis > hold, then, as the annoying do-nothing behavior of "cd_to_toplevel" only > kicks in when we are outside the work tree (i.e., it could not have > happened before in those scripts, because the existing require_work_tree > call would cause us to die). > ... > Right. I suspect the proposed behavior for cd_to_toplevel is what they > all would want eventually, but some scripts may need minor tweaks. I > think we should follow the same path as require_work_tree_exists, and > introduce the new function, use it where we know it's safe, and then > eventually get rid of the old one. > > The real trick is coming up with a good name, because cd_to_toplevel is > already taken. :) It is not as simple as that I am afraid. We could introduce cd_to_top with the new semantics and use it in pull and rebase, but a case that would break is for a script (let's call that hypothetical operation "git svn dcommit", even though I do not know if dcommit uses the real working tree or a temporary one) that prepares a temporary working tree inside .git/svn/ and run "git rebase" there without setting GIT_WORKING_TREE to point at the temporary directory. With cd_to_toplevel, such a "rebase" would work and "git svn dcommit" can take that result and do whatever it wants to the real working tree after it finishes. When we start using cd_to_top in the updated "rebase", such a script suddenly breaks, as we would start touching the real working tree. So I do not think it makes much sense to add cd_to_top with updated semantics while keeping cd_to_toplevel. What we could do is to update cd_to_toplevel so that it would notice and warn when the results between the historical incorrect behaviour and the updated behaviour would be different. The warning can first read "You are running 'rebase' somewhere in $GIT_DIR without setting $GIT_WORK_TREE; we historically used the directory you started 'rebase' as the top level of the working tree, and this version continues to do so, but it will change to work on the real working tree associated with your $GIT_DIR in future versions of git. Update your script to correctly set $GIT_WORK_TREE", and then we transition to start using the new semantics while rewording the warning message, and then later remove the warning altogether. -- 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