Shawn O. Pearce  committed 82dd4e0

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 <>

  • Participants
  • Parent commits ba6c761

Comments (0)

Files changed (1)

File lib/choose_repository.tcl

 		$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