Subject: Re: [PATCH] gitk: Comply with XDG base directory specification

From: Paul Mackerras <[email-masked]>
Date: Tue, 21 Jan 2014 22:10:41 +1100

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.