summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorLibravatar Shawn O. Pearce <spearce@spearce.org>2007-10-12 16:33:45 -0400
committerLibravatar Shawn O. Pearce <spearce@spearce.org>2007-10-12 23:07:59 -0400
commit82dd4e0465282e39962ba8fdb01c42aa665b1999 (patch)
tree31b3739cb07b55ac976cae9d387b1650d14d1ce2 /lib
parentgit-gui: Support cloning Cygwin based work-dirs (diff)
downloadtgif-82dd4e0465282e39962ba8fdb01c42aa665b1999.tar.xz
git-gui: Collapse $env(HOME) to ~/ in recent repositories on Windows
Apparently native Tcl/Tk on Windows is using \ as the return value from [file separator] but [file normalize] on that same system is using / rather than \ to represent a directory separator. I really think that is nuts, but its what is happening. So we can actually just hardcode our separator to / as all systems we support (Windows, Mac OS X, UNIX) use /. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/choose_repository.tcl8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/choose_repository.tcl b/lib/choose_repository.tcl
index bf04361464..2bac50e149 100644
--- a/lib/choose_repository.tcl
+++ b/lib/choose_repository.tcl
@@ -140,12 +140,16 @@ constructor pick {} {
$w_recentlist tag conf link \
-foreground blue \
-underline 1
- set home "[file normalize $::env(HOME)][file separator]"
+ set home $::env(HOME)
+ if {[is_Cygwin]} {
+ set home [exec cygpath --windows --absolute $home]
+ }
+ set home "[file normalize $home]/"
set hlen [string length $home]
foreach p $sorted_recent {
set path $p
if {[string equal -length $hlen $home $p]} {
- set p "~[file separator][string range $p $hlen end]"
+ set p "~/[string range $p $hlen end]"
}
regsub -all "\n" $p "\\n" p
$w_recentlist insert end $p link