Skip to content

Commit

Permalink
pull,rebase: handle GIT_WORK_TREE better
Browse files Browse the repository at this point in the history
You can't currently run git-pull or git-rebase from outside
of the work tree, even with GIT_WORK_TREE set, due to an
overeager require_work_tree function. Commit e2eb527
documents this problem and provides the infrastructure for a
fix, but left it to later commits to audit and update
individual scripts.

Changing these scripts to use require_work_tree_exists is
easy to verify. We immediately call cd_to_toplevel, anyway.
Therefore no matter which function we use, the state
afterwards is one of:

  1. We have a work tree, and we are at the top level.

  2. We don't have a work tree, and we have died.

The only catch is that we must also make sure no code that
ran before the cd_to_toplevel assumed that we were already
in the working tree.

In this case, we will only have included shell libraries and
called set_reflog_action, neither of which care about the
current working directory at all.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Oct 13, 2011
1 parent e2eb527 commit 035b5bf
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion git-pull.sh
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
. git-sh-setup
set_reflog_action "pull $*"
require_work_tree
require_work_tree_exists
cd_to_toplevel


2 changes: 1 addition & 1 deletion git-rebase.sh
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@ SUBDIRECTORY_OK=Yes
OPTIONS_SPEC=
. git-sh-setup
set_reflog_action rebase
require_work_tree
require_work_tree_exists
cd_to_toplevel

LF='

0 comments on commit 035b5bf

Please sign in to comment.