From: David Symonds Date: Thu, 08 Nov 2007 02:33:12 GMT Subject: [PATCH] git-checkout: Handle relative paths containing "..". Message-ID: <1194489192-20021-1-git-send-email-dsymonds@gmail.com> Based on gitte's idea. Signed-off-by: David Symonds --- git-checkout.sh | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/git-checkout.sh b/git-checkout.sh index 8993920..b2c50aa 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -134,9 +134,10 @@ Did you intend to checkout '$@' which can not be resolved as commit?" fi # Make sure the request is about existing paths. - git ls-files --error-unmatch -- "$@" >/dev/null || exit - git ls-files -- "$@" | - git checkout-index -f -u --stdin + git ls-files --full-name --error-unmatch -- "$@" >/dev/null || exit + git ls-files --full-name -- "$@" | + (cd "$(git-rev-parse --show-cdup)" && + git checkout-index -f -u --stdin) # Run a post-checkout hook -- the HEAD does not change so the # current HEAD is passed in for both args -- 1.5.3.5.1529.g69a1-dirty