Skip to contentSkip to conversation

.gitk should created hidden in windows

DISCUSSION Steve Wagner 5 participants 8 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hi Paul, i write this to the git mailing list because of the advice from
Johannes Schindelin in the MSysGit Issue:

http://code.google.com/p/msysgit/issues/detail?id=143

The problem is that windows dose not hides files beginning with a dot as it is in unix. So the .gitk file is created as visible in the windows user profile. Problematic too is that i can no set the hidden attribute to this file, because it is recreated every time i start gitk, so the hidden attribute gets lost.

Can you control this and create the file with the hidden attribute on windows?

Steve

#1 lore raw
Quoted 8 lines · Steve Wagner

The problem is that windows dose not hides files beginning with a dot as it is in unix. So the .gitk file is created as visible in the windows user profile. Problematic too is that i can no set the hidden attribute to this file, because it is recreated every time i start gitk, so the hidden attribute gets lost.

Can you control this and create the file with the hidden attribute on windows?

Please try this patch and let me know if it does what you want.

Paul.

gitk +3 -0
index d7de27e..54f3f2b 100755
@@ -2487,6 +2487,9 @@ proc savestuff {w} {
     if {![winfo viewable .]} return
     catch {
 	set f [open "~/.gitk-new" w]
+	if {$::tcl_platform(platform) eq {windows}} {
+	    file attributes "~/.gitk-new" -hidden true
+	}
 	puts $f [list set mainfont $mainfont]
 	puts $f [list set textfont $textfont]
 	puts $f [list set uifont $uifont]
#2 lore raw

2009/3/23 Paul Mackerras <[email protected]>:

Quoted 21 lines
Quoted 8 lines · Steve Wagner

The problem is that windows dose not hides files beginning with a dot as it is in unix. So the .gitk file is created as visible in the windows user profile. Problematic too is that i can no set the hidden attribute to this file, because it is recreated every time i start gitk, so the hidden attribute gets lost.

Can you control this and create the file with the hidden attribute on windows?

Please try this patch and let me know if it does what you want.

Paul.

gitk +0 -0
index d7de27e..54f3f2b 100755
@@ -2487,6 +2487,9 @@ proc savestuff {w} {

    if {![winfo viewable .]} return

Quoted 8 lines

    catch {
       set f [open "~/.gitk-new" w]
+       if {$::tcl_platform(platform) eq {windows}} {
+           file attributes "~/.gitk-new" -hidden true
+       }
       puts $f [list set mainfont $mainfont] puts $f [list set textfont $textfont] puts $f [list set uifont $uifont]

How about making all files beginning with . hidden? .gitignore for example

#3 lore raw

Hi,

Quoted 2 lines · John Tapsell

How about making all files beginning with . hidden? .gitignore for example

Uhm.

Did you miss that this patch was about gitk, not git.git?

Ciao,
Dscho

#4 lore raw
In reply to Paul Mackerras

Seems to work here. Thanks for fixing it!

Steve

Quoted 30 lines · Paul Mackerras
Quoted 8 lines · Steve Wagner

The problem is that windows dose not hides files beginning with a dot as it is in unix. So the .gitk file is created as visible in the windows user profile. Problematic too is that i can no set the hidden attribute to this file, because it is recreated every time i start gitk, so the hidden attribute gets lost.

Can you control this and create the file with the hidden attribute on windows?

Please try this patch and let me know if it does what you want.

Paul.

gitk +3 -0
index d7de27e..54f3f2b 100755
@@ -2487,6 +2487,9 @@ proc savestuff {w} {
     if {![winfo viewable .]} return
     catch {
 	set f [open "~/.gitk-new" w]
+	if {$::tcl_platform(platform) eq {windows}} {
+	    file attributes "~/.gitk-new" -hidden true
+	}
 	puts $f [list set mainfont $mainfont]
 	puts $f [list set textfont $textfont]
 	puts $f [list set uifont $uifont]
#5 lore raw
In reply to Paul Mackerras
Quoted 2 lines · Paul Mackerras

Please try this patch and let me know if it does what you want.

[snip]

This patch works fine on my Vista installation. The .gitk file is now hidden.

An alternative that was discussed was to move it rather than hide it so that it ends up in the Application Data folder along with settings for other applications. The following patch does this but hits rather more lines of code and ends up needing to check the original location as well.

gitk +15 -5
index a7294a1..5ec6e7b 100755
@@ -2509,12 +2509,13 @@ proc savestuff {w} {
     global viewname viewfiles viewargs viewargscmd viewperm nextviewnum
     global cmitmode wrapcomment datetimeformat limitdiffs
     global colors bgcolor fgcolor diffcolors diffcontext selectbgcolor
-    global autoselect extdifftool perfile_attrs markbgcolor
+    global autoselect extdifftool perfile_attrs markbgcolor rcfile
 
     if {$stuffsaved} return
     if {![winfo viewable .]} return
-    catch {
-	set f [open "~/.gitk-new" w]
+    set tmpfile "${rcfile}-new"
+    if {[catch {
+	set f [open $tmpfile {CREAT WRONLY}]
 	puts $f [list set mainfont $mainfont]
 	puts $f [list set textfont $textfont]
 	puts $f [list set uifont $uifont]
@@ -2555,7 +2556,10 @@ proc savestuff {w} {
 	}
 	puts $f "}"
 	close $f
-	file rename -force "~/.gitk-new" "~/.gitk"
+	file rename -force $tmpfile $rcfile
+    } err]} {
+        tk_messageBox -icon error -message $err \
+            -title "Failed to save preferences"
     }
     set stuffsaved 1
 }
@@ -10790,7 +10794,13 @@ namespace import ::msgcat::mc
 ## And eventually load the actual message catalog
 ::msgcat::mcload $gitk_msgsdir
 
-catch {source ~/.gitk}
+set rcfile ~/.gitk
+if {$::tcl_platform(platform) eq "windows"} {
+    # Load old settings file if present
+    if {[file exists ~/.gitk]} {catch {source ~/.gitk}}
+    set rcfile [file join $env(APPDATA) gitk.settings]
+}
+catch {source $rcfile}
 
 font create optionfont -family sans-serif -size -12
#6 lore raw

Hi,

Quoted 5 lines · Pat Thoyts
Quoted 2 lines · Paul Mackerras

Please try this patch and let me know if it does what you want.

[snip]

Quoted 8 lines

This patch works fine on my Vista installation. The .gitk file is now hidden.

An alternative that was discussed was to move it rather than hide it so that it ends up in the Application Data folder along with settings for other applications. The following patch does this but hits rather more lines of code and ends up needing to check the original location as well.

While I see your point, keep in mind that this patch would make Git for Windows even more incompatible with Git "In The Rest Of The World"...

Ciao,
Dscho

#7 lore raw
In reply to Pat Thoyts
Quoted 4 lines · Pat Thoyts

An alternative that was discussed was to move it rather than hide it so that it ends up in the Application Data folder along with settings for other applications. The following patch does this but hits rather more lines of code and ends up needing to check the original location as well.

Sounds OK, but wouldn't we want to ignore ~/.gitk if there is a gitk.settings in application data directory?

Paul.