summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keeping <john@keeping.me.uk>2013-04-27 14:24:16 +0100
committerPat Thoyts <patthoyts@users.sourceforge.net>2013-06-07 23:03:29 +0100
commit2f38dd03fcefb7ad3a6db2703eeb6dd9b4fd34b6 (patch)
tree0ac14cc5c417d7059c7cf3d7138a3e0a0f752c02
parent7d2017e7738ace254d0b653ce844d07af8ecf026 (diff)
downloadgit-2f38dd03fcefb7ad3a6db2703eeb6dd9b4fd34b6.tar.gz
git-gui: fix file name handling with non-empty prefix
Commit e3d06ca (git-gui: Detect full path when parsing arguments - 2012-10-02) fixed the handling of absolute paths passed to the browser and blame subcommands by checking whether the file exists without the prefix before prepending the prefix and checking again. Since we have chdir'd to the top level of the working tree before doing this, this does not work if a file with the same name exists in a subdirectory and at the top level (for example Makefile in git.git's t/ directory). Instead of doing this, revert that patch and fix absolute path issue by using "file join" to prepend the prefix to the supplied path. This will correctly handle absolute paths by skipping the prefix in that case. Acked-by: Andrew Wong <andrew.kw.w@gmail.com> Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
-rwxr-xr-xgit-gui.sh14
1 files changed, 3 insertions, 11 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 7031759751..153f85da06 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -3017,19 +3017,11 @@ blame {
set jump_spec {}
set is_path 0
foreach a $argv {
- if {[file exists $a]} {
- if {$path ne {}} usage
- set path [normalize_relpath $a]
- break
- } elseif {[file exists $_prefix$a]} {
- if {$path ne {}} usage
- set path [normalize_relpath $_prefix$a]
- break
- }
+ set p [file join $_prefix $a]
- if {$is_path} {
+ if {$is_path || [file exists $p]} {
if {$path ne {}} usage
- set path [normalize_relpath $_prefix$a]
+ set path [normalize_relpath $p]
break
} elseif {$a eq {--}} {
if {$path ne {}} {