git-gui: tolerate major version changes when comparing the git version

Since git 2.0.0 starting git gui in a submodule using a gitfile fails with the following error: No working directory ../../../<path> couldn't change working directory to "../../../<path>": no such file or directory This is because "git rev-parse --show-toplevel" is only run when git gui sees a git version of at least 1.7.0 (which is the version in which the --show-toplevel option was introduced). But "package vsatisfies" returns false when the major version changes, which is not what we want here. Fix that for both places where the git version is checked using vsatisfies by appending a '-' to the version number. This tells vsatisfies that a change of the major version is not considered to be a problem, as long as the new major version is larger. This is done for both the place that caused the reported bug and another spot where the git version is tested for another feature. Reported-by: Chris Packham <judge.packham@gmail.com> Reported-by: Yann Dirson <ydirson@free.fr> Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de>

Jens Lehmann committed May 17, 2014 at 21:49 UTC 3decb8e0ac5d951f0a0cf6e604790b471aef22e1
1 file changed +2 -2
git-gui.sh
+2 -2
@@ -1283,7 +1283,7 @@ load_config 0
1283 apply_config
1284
1285 # v1.7.0 introduced --show-toplevel to return the canonical work-tree
1286 -if {[package vsatisfies $_git_version 1.7.0]} {
1286 +if {[package vsatisfies $_git_version 1.7.0-]} {
1287 if { [is_Cygwin] } {
1288 catch {set _gitworktree [exec cygpath --windows [git rev-parse --show-toplevel]]}
1289 } else {
@@ -1539,7 +1539,7 @@ proc rescan_stage2 {fd after} {
1539 close $fd
1540 }
1541
1542 - if {[package vsatisfies $::_git_version 1.6.3]} {
1542 + if {[package vsatisfies $::_git_version 1.6.3-]} {
1543 set ls_others [list --exclude-standard]
1544 } else {
1545 set ls_others [list --exclude-per-directory=.gitignore]