Browse Source

git-gui: Handle workdir detection when CYGWIN=nowinsymlinks

If the user has put nowinsymlinks into their CYGWIN environment
variable any symlinks created by a Cygwin process (e.g. ln -s)
will not have the ".lnk" suffix.  In this case workdir is still
a workdir, but our detection of looking for "info.lnk" fails
as the symlink is actually a normal file called "info".

Instead we just always use Cygwin's test executable to see if
info/exclude is a file.  If it is, we assume from there on it
can be read by git-ls-files --others and is thus safe to use
on the command line.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Shawn O. Pearce 17 years ago
parent
commit
7f83aa2d3d
  1. 23
      git-gui.sh

23
git-gui.sh

@ -1127,27 +1127,18 @@ proc rescan {after {honor_trustmtime 1}} { @@ -1127,27 +1127,18 @@ proc rescan {after {honor_trustmtime 1}} {
}

if {[is_Cygwin]} {
set is_git_info_link {}
set is_git_info_exclude {}
proc have_info_exclude {} {
global is_git_info_link is_git_info_exclude
global is_git_info_exclude

if {$is_git_info_link eq {}} {
set is_git_info_link [file isfile [gitdir info.lnk]]
}

if {$is_git_info_link} {
if {$is_git_info_exclude eq {}} {
if {[catch {exec test -f [gitdir info exclude]}]} {
set is_git_info_exclude 0
} else {
set is_git_info_exclude 1
}
if {$is_git_info_exclude eq {}} {
if {[catch {exec test -f [gitdir info exclude]}]} {
set is_git_info_exclude 0
} else {
set is_git_info_exclude 1
}
return $is_git_info_exclude
} else {
return [file readable [gitdir info exclude]]
}
return $is_git_info_exclude
}
} else {
proc have_info_exclude {} {

Loading…
Cancel
Save