Re: [PATCH] gitk: Comply with XDG base directory specification
On Tue, Jan 21, 2014 at 11:10 AM, Paul Mackerras 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] gitk: Comply with XDG base directory specification
On Fri, Dec 13, 2013 at 07:46:36PM +, 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. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] gitk: Comply with XDG base directory specification
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 --- 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html