git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] gitk: Comply with XDG base directory specification
@ 2013-12-13 19:46 Astril Hayato
  2014-01-21 11:10 ` Paul Mackerras
  0 siblings, 1 reply; 3+ messages in thread
From: Astril Hayato @ 2013-12-13 19:46 UTC (permalink / raw)
  To: git; +Cc: paulus, Astril Hayato

Write the gitk config data to $XDG_CONFIG_HOME/git/gitk ($HOME/.config/git/gitk
by default) in line with the XDG specification. This makes it consistent with
git which also follows the spec.

If $HOME/.gitk already exists use that for backward compatibility, so only new
installations are affected.

Signed-off-by: Astril Hayato <astrilhayato@gmail.com>
---
 gitk | 33 ++++++++++++++++++++++++++++-----
 1 file changed, 28 insertions(+), 5 deletions(-)

diff --git a/gitk b/gitk
index 33c3a6c..34dd4a6 100755
--- a/gitk
+++ b/gitk
@@ -2761,14 +2761,17 @@ proc savestuff {w} {
     global linkfgcolor circleoutlinecolor
     global autoselect autosellen extdifftool perfile_attrs markbgcolor use_ttk
     global hideremotes want_ttk maxrefs
+    global config_file config_file_tmp
 
     if {$stuffsaved} return
     if {![winfo viewable .]} return
     catch {
-	if {[file exists ~/.gitk-new]} {file delete -force ~/.gitk-new}
-	set f [open "~/.gitk-new" w]
+	if {[file exists $config_file_tmp]} {
+	    file delete -force $config_file_tmp
+	}
+	set f [open $config_file_tmp w]
 	if {$::tcl_platform(platform) eq {windows}} {
-	    file attributes "~/.gitk-new" -hidden true
+	    file attributes $config_file_tmp -hidden true
 	}
 	puts $f [list set mainfont $mainfont]
 	puts $f [list set textfont $textfont]
@@ -2845,7 +2848,7 @@ proc savestuff {w} {
 	}
 	puts $f "}"
 	close $f
-	file rename -force "~/.gitk-new" "~/.gitk"
+	file rename -force $config_file_tmp $config_file
     }
     set stuffsaved 1
 }
@@ -12058,7 +12061,27 @@ namespace import ::msgcat::mc
 ## And eventually load the actual message catalog
 ::msgcat::mcload $gitk_msgsdir
 
-catch {source ~/.gitk}
+catch {
+    # follow the XDG base directory specification by default. See
+    # http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
+    if {[info exists env(XDG_CONFIG_HOME)] && $env(XDG_CONFIG_HOME) ne ""} {
+	# XDG_CONFIG_HOME environment variable is set
+	set config_file [file join $env(XDG_CONFIG_HOME) git gitk]
+	set config_file_tmp [file join $env(XDG_CONFIG_HOME) git gitk-tmp]
+    } else {
+	# default XDG_CONFIG_HOME
+	set config_file "~/.config/git/gitk"
+	set config_file_tmp "~/.config/git/gitk-tmp"
+    }
+    if {![file exists $config_file]} {
+	if {![file exists [file dirname $config_file]]} {
+	    file mkdir [file dirname $config_file]
+	}
+	# for backward compatability use the old config file if it exists
+	if {[file exists "~/.gitk"]} {set config_file "~/.gitk"}
+    }
+    source $config_file
+}
 
 parsefont mainfont $mainfont
 eval font create mainfont [fontflags mainfont]
-- 
1.8.5.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] gitk: Comply with XDG base directory specification
  2013-12-13 19:46 [PATCH] gitk: Comply with XDG base directory specification Astril Hayato
@ 2014-01-21 11:10 ` Paul Mackerras
  2014-01-21 17:40   ` Astril Hayato
  0 siblings, 1 reply; 3+ messages in thread
From: Paul Mackerras @ 2014-01-21 11:10 UTC (permalink / raw)
  To: Astril Hayato; +Cc: git

On Fri, Dec 13, 2013 at 07:46:36PM +0000, Astril Hayato wrote:
> Write the gitk config data to $XDG_CONFIG_HOME/git/gitk ($HOME/.config/git/gitk
> by default) in line with the XDG specification. This makes it consistent with
> git which also follows the spec.
> 
> If $HOME/.gitk already exists use that for backward compatibility, so only new
> installations are affected.

Sounds reasonable...

> @@ -12058,7 +12061,27 @@ namespace import ::msgcat::mc
>  ## And eventually load the actual message catalog
>  ::msgcat::mcload $gitk_msgsdir
>  
> -catch {source ~/.gitk}
> +catch {
> +    # follow the XDG base directory specification by default. See
> +    # http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
> +    if {[info exists env(XDG_CONFIG_HOME)] && $env(XDG_CONFIG_HOME) ne ""} {
> +	# XDG_CONFIG_HOME environment variable is set
> +	set config_file [file join $env(XDG_CONFIG_HOME) git gitk]
> +	set config_file_tmp [file join $env(XDG_CONFIG_HOME) git gitk-tmp]
> +    } else {
> +	# default XDG_CONFIG_HOME
> +	set config_file "~/.config/git/gitk"
> +	set config_file_tmp "~/.config/git/gitk-tmp"
> +    }
> +    if {![file exists $config_file]} {
> +	if {![file exists [file dirname $config_file]]} {
> +	    file mkdir [file dirname $config_file]
> +	}
> +	# for backward compatability use the old config file if it exists
> +	if {[file exists "~/.gitk"]} {set config_file "~/.gitk"}

Don't we need to set config_file_tmp here too?

And, do we really want to create the ~/.config/git directory if we are
using the old-style ~/.gitk as the config file?

Paul.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] gitk: Comply with XDG base directory specification
  2014-01-21 11:10 ` Paul Mackerras
@ 2014-01-21 17:40   ` Astril Hayato
  0 siblings, 0 replies; 3+ messages in thread
From: Astril Hayato @ 2014-01-21 17:40 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: git

On Tue, Jan 21, 2014 at 11:10 AM, Paul Mackerras <paulus@samba.org> wrote:
>> +    if {![file exists $config_file]} {
>> +     if {![file exists [file dirname $config_file]]} {
>> +         file mkdir [file dirname $config_file]
>> +     }
>> +     # for backward compatability use the old config file if it exists
>> +     if {[file exists "~/.gitk"]} {set config_file "~/.gitk"}
>
> Don't we need to set config_file_tmp here too?

Yeah it's probably best to keep the two files together.

>
> And, do we really want to create the ~/.config/git directory if we are
> using the old-style ~/.gitk as the config file?

Probably not. I'll prepare a new patch restoring the old behaviour.

Regards,
Astril.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-01-21 17:41 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-13 19:46 [PATCH] gitk: Comply with XDG base directory specification Astril Hayato
2014-01-21 11:10 ` Paul Mackerras
2014-01-21 17:40   ` Astril Hayato

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).