On Tue, Feb 3, 2015 at 6:24 AM, Remi Rampin <[email protected]> wrote:
> If _is_git had to follow "gitdir: ..." files to reach the actual Git
> directory, we set _gitdir to that final path.
> ---
> lib/choose_repository.tcl | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/lib/choose_repository.tcl b/lib/choose_repository.tcl
> index 49ff641..641068d 100644
> --- a/lib/choose_repository.tcl
> +++ b/lib/choose_repository.tcl
> @@ -338,13 +338,17 @@ method _git_init {} {
> return 1
> }
>
> -proc _is_git {path} {
> +proc _is_git {path {outdir_var ""}} {
> + if {$outdir_var ne ""} {
> + upvar 1 $outdir_var outdir
> + }
> if {[file isfile $path]} {
> set fp [open $path r]
> gets $fp line
> close $fp
> if {[regexp "^gitdir: (.+)$" $line line link_target]} {
> - return [_is_git [file join [file dirname $path]
> $link_target]]
> + set link_target_abs [file join [file dirname $path]
> $link_target]
At this point link_target_abs is something like
sub/../.git/modules/sub. It might be nice to normalize this with 'git
rev-parse --git-dir' or even just (cd $link_target_abs && pwd). I'm
not sure if tcl has anything built in that could do this kind of
normalization.
> + return [_is_git $link_target_abs outdir]
> }
> return 0
> }
> @@ -352,12 +356,14 @@ proc _is_git {path} {
> if {[file exists [file join $path HEAD]]
> && [file exists [file join $path objects]]
> && [file exists [file join $path config]]} {
> + set outdir $path
> return 1
> }
> if {[is_Cygwin]} {
> if {[file exists [file join $path HEAD]]
> && [file exists [file join $path objects.lnk]]
> && [file exists [file join $path config.lnk]]} {
> + set outdir $path
> return 1
> }
> }
> @@ -1103,7 +1109,7 @@ method _open_local_path {} {
> }
>
> method _do_open2 {} {
> - if {![_is_git [file join $local_path .git]]} {
> + if {![_is_git [file join $local_path .git] actualgit]} {
> error_popup [mc "Not a Git repository: %s" [file tail
> $local_path]]
> return
> }
> @@ -1116,7 +1122,7 @@ method _do_open2 {} {
> }
>
> _append_recentrepos [pwd]
> - set ::_gitdir .git
> + set ::_gitdir $actualgit
> set ::_prefix {}
> set done 1
> }
> --
> 1.9.5.msysgit.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html