From cc6825e194c86382068548354faa43839410a8d3 Mon Sep 17 00:00:00 2001 From: Remi Rampin Date: Fri, 6 Mar 2015 11:21:52 -0500 Subject: [PATCH] git-gui: Fixes chooser not accepting gitfiles Support the case where .git is a platform independent symbolic link and not a directory. This occurs when --separate-git-dir is used when creating the local repository to store the .git directory elsewhere. git-gui does not support such repositories when using the repository chooser as the test to determine that the chosen directory is a git repository fails for such repositories. This commit enables _is_git to read the real location from the symbolic link file. Signed-off-by: Chris Packham Signed-off-by: Remi Rampin Signed-off-by: Pat Thoyts --- lib/choose_repository.tcl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/choose_repository.tcl b/lib/choose_repository.tcl index 92d602221..abc6b1dbc 100644 --- a/lib/choose_repository.tcl +++ b/lib/choose_repository.tcl @@ -339,6 +339,16 @@ method _git_init {} { } proc _is_git {path} { + if {[file isfile $path]} { + set fp [open $path r] + gets $fp line + close $fp + if {[regexp "^gitdir: (.+)$" $line line link_target]} { + set path [file join [file dirname $path] $link_target] + set path [file normalize $path] + } + } + if {[file exists [file join $path HEAD]] && [file exists [file join $path objects]] && [file exists [file join $path config]]} { -- 2.11.0