All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>
To: Huynh Khoi Nguyen NGUYEN  <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
Cc: git@vger.kernel.org,
	NGUYEN Huynh Khoi Nguyen <nguyenhu@ensibm.imag.fr>,
	Lucien KONG <Lucien.Kong@ensimag.imag.fr>,
	Valentin DUPERRAY <Valentin.Duperray@ensimag.imag.fr>,
	Thomas NGUY <Thomas.Nguy@ensimag.imag.fr>,
	Franck JONAS <Franck.Jonas@ensimag.imag.fr>
Subject: Re: [PATCHv4] Read (but not write) from XDG configuration, XDG attributes and XDG ignore files
Date: Sat, 02 Jun 2012 13:20:40 +0200	[thread overview]
Message-ID: <vpq7gvq9czb.fsf@bauges.imag.fr> (raw)
In-Reply-To: <1338585788-9764-1-git-send-email-Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> (Huynh Khoi Nguyen NGUYEN's message of "Fri, 1 Jun 2012 23:23:08 +0200")

Huynh Khoi Nguyen NGUYEN <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
writes:

> Git will not be able to write in this new configuration file.

The use of the future is ambiguous, and since another patch will allow
writing, I'd rather rephrase it as e.g.

Git currently does not write to this new configuration file.

> If core.excludesfile is not define, Git will read the global exclude

s/define/defined/

> files in $XDG_CONFIG_HOME/git/ignore. Same goes for
> core.attributesfile in $XDG_CONFIG_HOME/git/attributes. If
> $XDG_CONFIG_HOME is either not set or empty, $HOME/.config will be
> used.

I'd prefer having two separate patches for the config file and for the
two others. If ignore and attributes are simple enough, they may go to
the same patch, but ideally, there would be two separate patches again.

> --- a/Documentation/git-config.txt
> +++ b/Documentation/git-config.txt

No doc for core.excludesfile and core.attributesfile change :-(.

> --- a/attr.c
> +++ b/attr.c
> @@ -497,6 +497,9 @@ static int git_attr_system(void)
>  static void bootstrap_attr_stack(void)
>  {
>  	struct attr_stack *elem;
> +	char *xdg_attributes_file;
> +
> +	home_config_paths(NULL, &xdg_attributes_file, "attributes");
>  
>  	if (attr_stack)
>  		return;
> @@ -522,6 +525,13 @@ static void bootstrap_attr_stack(void)
>  			elem->prev = attr_stack;
>  			attr_stack = elem;
>  		}
> +	} else if (!access(xdg_attributes_file, R_OK)) {
> +		elem = read_attr_from_file(xdg_attributes_file, 1);
> +		if (elem) {
> +			elem->origin = NULL;
> +			elem->prev = attr_stack;
> +			attr_stack = elem;
> +		}
>  	}
>  
>  	if (!is_bare_repository() || direction == GIT_ATTR_INDEX) {

The logic seems overly complex, and you duplicate the if() uselessly.

Why not just set the variable git_attributes_file before entering the
if? Something like this:

diff --git a/attr.c b/attr.c
index 303751f..71dc472 100644
--- a/attr.c
+++ b/attr.c
@@ -515,6 +515,9 @@ static void bootstrap_attr_stack(void)
 		}
 	}
 
+	if (!git_attributes_file)
+		git_attributes_file = "foo";
+
 	if (git_attributes_file) {
 		elem = read_attr_from_file(git_attributes_file, 1);
 		if (elem) {

(obviously replacing "foo" by the actual code involving
home_config_paths(..., "attributes")).

Doing so, you may even get rid of the "if (git_attributes_file)" on the
next line.

Then, the logic is really "core.excludesfile defaults to the XDG file",
not "if such variable is set then do that else do something else".

> --- a/dir.c
> +++ b/dir.c
> @@ -1234,13 +1234,17 @@ int remove_dir_recursively(struct strbuf *path, int flag)
>  void setup_standard_excludes(struct dir_struct *dir)
>  {
>  	const char *path;
> +	char *xdg_path;
>  
>  	dir->exclude_per_dir = ".gitignore";
>  	path = git_path("info/exclude");
> +	home_config_paths(NULL, &xdg_path, "ignore");
>  	if (!access(path, R_OK))
>  		add_excludes_from_file(dir, path);
>  	if (excludes_file && !access(excludes_file, R_OK))
>  		add_excludes_from_file(dir, excludes_file);
> +	else if (!access(xdg_path, R_OK))
> +		add_excludes_from_file(dir, xdg_path);
>  }

Same remark here. Look at the patch I sent earlier to give a default
value:

http://thread.gmane.org/gmane.comp.version-control.git/133343/focus=133415

For example, you version reads from XDG file if core.excludesfile is
set, but the file it points to doesn't exist. I don't think this is
expected.

> +	echo foo >to_be_excluded &&
> +	git add to_be_excluded &&
> +	git rm --cached to_be_excluded &&

Err, why add and remove it? You just need to create it, right?

> +	cd .. &&
> +	mkdir -p .config/git/ &&

I don't like these relative references to $HOME. If you mean $HOME, why
not say

mkdir -p $HOME/.config/git/
echo "f attr_f" >$HOME/.config/git/

?

(you don't even need to "cd")

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

  reply	other threads:[~2012-06-02 11:20 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1338400509-26087-1-git-send-email-Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr>
2012-05-30 21:19 ` [PATCHv2] Possibility to read both from ~/.gitconfig and from $XDG_CONFIG_HOME/git/config Huynh Khoi Nguyen NGUYEN
2012-05-30 21:54   ` Junio C Hamano
2012-05-31 22:06     ` Ramsay Jones
2012-05-31 14:40   ` [PATCHv3] Read from XDG configuration file, not write Huynh Khoi Nguyen NGUYEN
2012-05-31 20:13     ` Junio C Hamano
2012-06-01 21:23     ` [PATCHv4] Read (but not write) from XDG configuration, XDG attributes and XDG ignore files Huynh Khoi Nguyen NGUYEN
2012-06-02 11:20       ` Matthieu Moy [this message]
2012-06-02 15:52         ` nguyenhu
2012-06-02 21:05           ` Matthieu Moy
2012-06-03 20:14       ` [PATCHv5 1/4] Read (but not write) from $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen NGUYEN
2012-06-03 20:14         ` [PATCHv5 2/4] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Huynh Khoi Nguyen NGUYEN
2012-06-04 11:43           ` Matthieu Moy
2012-06-05 13:17             ` nguyenhu
2012-06-03 20:14         ` [PATCHv5 3/4] Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes Huynh Khoi Nguyen NGUYEN
2012-06-03 20:14         ` [PATCHv5 4/4] Write to $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen NGUYEN
2012-06-04 21:17           ` Matthieu Moy
2012-06-05 13:04             ` nguyenhu
2012-06-06 13:21         ` [PATCHv6 1/4] Read (but not write) from " Huynh Khoi Nguyen NGUYEN
2012-06-06 13:21           ` [PATCHv6 2/4] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Huynh Khoi Nguyen NGUYEN
2012-06-07 23:31             ` Junio C Hamano
2012-06-08  8:47               ` Matthieu Moy
2012-06-08  9:02               ` nguyenhu
2012-06-06 13:21           ` [PATCHv6 3/4] Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes Huynh Khoi Nguyen NGUYEN
2012-06-06 13:21           ` [PATCHv6 4/4] Write to $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen NGUYEN
2012-06-09  3:48             ` David Aguilar
2012-06-09  6:19               ` Junio C Hamano
2012-06-09 17:25                 ` David Aguilar
2012-06-10 13:21                 ` Matthieu Moy
2012-06-11 23:45                   ` nguyenhu
2012-06-07 22:58           ` [PATCHv6 1/4] Read (but not write) from " Junio C Hamano
2012-06-08  9:57             ` nguyenhu
2012-06-12 17:42               ` Ramsay Jones
2012-06-08 12:26             ` nguyenhu
2012-06-08 12:33               ` Erik Faye-Lund
2012-06-08 12:54                 ` nguyenhu
2012-06-08 12:57                   ` Erik Faye-Lund
2012-06-08 15:08               ` Junio C Hamano
2012-06-09 10:53                 ` nguyenhu
2012-06-10  6:41                   ` Junio C Hamano
2012-06-10 13:48                     ` nguyenhu
2012-06-10 18:44                       ` Erik Faye-Lund
2012-06-10 20:02                         ` nguyenhu
2012-06-10 20:27                           ` Erik Faye-Lund
2012-06-11 15:50                         ` Junio C Hamano
2012-06-11 16:53                           ` nguyenhu
2012-06-11 22:59                             ` nguyenhu
2012-06-11 23:03                             ` Erik Faye-Lund
2012-06-12  2:49           ` [PATCHv7 " Huynh Khoi Nguyen Nguyen
2012-06-12  2:49             ` [PATCHv7 2/4] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Huynh Khoi Nguyen Nguyen
2012-06-12  2:49             ` [PATCHv7 3/4] Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes Huynh Khoi Nguyen Nguyen
2012-06-12  2:49             ` [PATCHv7 4/4] Write to $XDG_CONFIG_HOME/git/config file Huynh Khoi Nguyen Nguyen
2012-06-14 17:31             ` [PATCHv7 1/4] Read (but not write) from " Ramsay Jones
2012-06-21 16:55             ` Matthieu Moy
2012-06-21 17:22               ` Junio C Hamano
2012-06-22  9:03                 ` [PATCH 0/4 v8] Git configuration directory Matthieu Moy
2012-06-22  9:03                   ` [PATCH 1/4 v8] config: read (but not write) from $XDG_CONFIG_HOME/git/config file Matthieu Moy
2012-07-12  7:55                     ` Thomas Rast
2012-07-12 12:04                       ` [PATCH] config: fix several access(NULL) calls Matthieu Moy
2012-07-12 12:39                         ` Thomas Rast
2012-07-12 17:14                         ` Junio C Hamano
2012-07-12 19:34                           ` Matthieu Moy
2012-07-12 20:12                             ` Junio C Hamano
2012-07-13  8:48                               ` Matthieu Moy
2012-07-13  8:59                                 ` [PATCH v2] " Matthieu Moy
2012-07-13 13:00                                 ` [PATCH] " Jeff King
2012-07-13 13:15                                   ` Matthieu Moy
2012-07-13 14:05                                     ` Thomas Rast
2012-07-13 14:23                                       ` Matthieu Moy
2012-07-13 16:49                                         ` Junio C Hamano
2012-07-16  9:45                                           ` Matthieu Moy
2012-07-16 16:35                                             ` Junio C Hamano
2012-07-16 16:39                                               ` Matthieu Moy
2012-07-16 16:56                                                 ` Junio C Hamano
2012-06-22  9:03                   ` [PATCH 2/4 v8] Let core.excludesfile default to $XDG_CONFIG_HOME/git/ignore Matthieu Moy
2012-06-22  9:03                   ` [PATCH 3/4 v8] Let core.attributesfile " Matthieu Moy
2012-06-22 21:20                     ` Junio C Hamano
2012-06-25  6:32                       ` Matthieu Moy
2012-06-25  7:22                         ` Junio C Hamano
2012-06-25  7:56                           ` Matthieu Moy
2012-06-22  9:03                   ` [PATCH 4/4 v8] config: write to $XDG_CONFIG_HOME/git/config file if appropriate Matthieu Moy
2012-06-22 21:20                     ` Junio C Hamano
2012-06-25  6:45                       ` Matthieu Moy
2012-06-25 18:08                         ` Junio C Hamano
2012-06-22 21:19                   ` [PATCH 0/4 v8] Git configuration directory Junio C Hamano
2012-06-04 17:54       ` [PATCHv4] Read (but not write) from XDG configuration, XDG attributes and XDG ignore files Ramsay Jones
2012-06-04 18:41         ` Junio C Hamano
2012-06-12 17:32           ` Ramsay Jones
2012-06-05 12:19         ` nguyenhu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=vpq7gvq9czb.fsf@bauges.imag.fr \
    --to=matthieu.moy@grenoble-inp.fr \
    --cc=Franck.Jonas@ensimag.imag.fr \
    --cc=Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr \
    --cc=Lucien.Kong@ensimag.imag.fr \
    --cc=Thomas.Nguy@ensimag.imag.fr \
    --cc=Valentin.Duperray@ensimag.imag.fr \
    --cc=git@vger.kernel.org \
    --cc=nguyenhu@ensibm.imag.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.