git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/3] config: add core.sharedconfig

From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Date
Dec 10, 2010, 01:29 UTC
Message-ID
<AANLkTikAwvsb_rLc45ZTuTHEqYV78dAZCdgw-1f+D1+B@mail.gmail.com>
In-Reply-To
<7vwrnig6gr.fsf@alter.siamese.dyndns.org>
2010/12/10 Junio C Hamano <gitster@pobox.com>:
Show 13 quoted lines
>> @@ -910,6 +918,12 @@ int git_config(config_fn_t fn, void *data)
>>
>>       repo_config = git_pathdup("config");
>>       if (!access(repo_config, R_OK)) {
>> +             git_config_from_file(get_shared_config, repo_config, NULL);
>> +             if (core_shared_config) {
>> +                     ret += git_config_from_sha1(fn, core_shared_config, data);
>> +                     found += 1;
>> +             }
>> +
>
> What is the point of this "found++" when you will increment it for finding
> the repository-local configuration anyway?

It seems that every time a config source is used, found++. So I increase it because there's is another source used, a blob.

Show 32 quoted lines
> I originally liked what the first two tried to do, but think about the use
> case.  How would this whole thing work?
>
>  - The user clones from the project to get a repository with a working
>   tree;
>
>  - The user somehow learns that s/he can run one command to get
>   project-wide preference of the project:
>
>     $ git config core.sharedconfig refs/remotes/origin/config:git.config
>
>  - Everything hopefully should work the way project wishes in that blob,
>   unless the end user later overrides them by adding different settings
>   to .git/config.
>
> How is that different from:
>
>  - The user clones from the project to get a repository with a working
>   tree;
>
>  - The user somehow learns that s/he can run one command to get
>   project-wide preference of the project:
>
>     $ ./setup-project-preference.sh
>
>   Typically, such a ./setup-project-preference.sh script would only
>   consist of a series of "git config $foo $bar", so any user who can say
>   "git config core.sharedconfig $foo" should be able to use it as well.
>
>  - Everything should work the way project wishes with the settings made to
>   .git/config by the script, unless the end user later overrides them by
>   modifying settings in .git/config.

The shared config can be updated automatically (after fetching, of course). Remote setup for a small team, for example, can benefit from this. Every time a new member joins, somebody adds new remote to the shared config and pushes out. Everybody else will have it.

> One minor difference is that some configuration variables are additive,
> and you cannot subtract from them with your approach.

You can't subtract some keys from $HOME/.gitconfig by modifying $GIT_DIR/config either. I mean, that could be addressed in a general way, not specific to shared config.

-- 
Duy
Previous: Jonathan Nieder
Message 11 of 11 in “[RFC/WIP 0/3] Shared config”
  1. Nguyễn Thái Ngọc DuyDec 9, 2010
  2. 1/3 config: read full file content before parsingNguyễn Thái Ngọc Duy, Dec 9, 2010
  3. 2/3 config: add git_config_from_sha1() to read from a blobNguyễn Thái Ngọc Duy, Dec 9, 2010
  4. Thiago FarinaDec 9, 2010
  5. Jonathan NiederDec 9, 2010
  6. 3/3 config: add core.sharedconfigNguyễn Thái Ngọc Duy, Dec 9, 2010
  7. Thiago FarinaDec 9, 2010
  8. Nguyen Thai Ngoc DuyDec 10, 2010
  9. Junio C HamanoDec 9, 2010
  10. Jonathan NiederDec 9, 2010
  11. Nguyen Thai Ngoc DuyDec 10, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.