All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH 3/3] config: add core.sharedconfig
Date: Thu,  9 Dec 2010 22:09:48 +0700	[thread overview]
Message-ID: <1291907388-9068-4-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1291907388-9068-1-git-send-email-pclouds@gmail.com>

core.sharedconfig can take anything that resolves to a blob.
$GIT_DIR/config will override the shared config. Nested shared
config is not allowed.

No protection is provided. It's up to the project to maintain good
config. The config could be in a separate branch that only a few
people are allowed to push, for example. To be safest, just put SHA-1
there.

git-fsck and git-prune should learn about this key and protect it from
being pruned.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 Hopefully nobody sets core.sharedconfig = :path/to/config or similar

 And I should not open $GIT_DIR/config twice. Well, it does not hurt
 much.

 cache.h       |    1 +
 config.c      |   14 ++++++++++++++
 environment.c |    1 +
 3 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/cache.h b/cache.h
index e83bc2d..e91ce35 100644
--- a/cache.h
+++ b/cache.h
@@ -559,6 +559,7 @@ extern int read_replace_refs;
 extern int fsync_object_files;
 extern int core_preload_index;
 extern int core_apply_sparse_checkout;
+extern const char *core_shared_config;
 
 enum safe_crlf {
 	SAFE_CRLF_FALSE = 0,
diff --git a/config.c b/config.c
index e7a9ff4..735b3f4 100644
--- a/config.c
+++ b/config.c
@@ -883,6 +883,14 @@ int git_config_from_parameters(config_fn_t fn, void *data)
 	return 0;
 }
 
+static int get_shared_config(const char *var, const char *value, void *dummy)
+{
+	if (!strcmp(var, "core.sharedconfig"))
+		return git_config_string(&core_shared_config, var, value);
+
+	return 0;
+}
+
 int git_config(config_fn_t fn, void *data)
 {
 	int ret = 0, found = 0;
@@ -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;
+		}
+
 		ret += git_config_from_file(fn, repo_config, data);
 		found += 1;
 	}
diff --git a/environment.c b/environment.c
index 913b058..8bfb548 100644
--- a/environment.c
+++ b/environment.c
@@ -55,6 +55,7 @@ enum object_creation_mode object_creation_mode = OBJECT_CREATION_MODE;
 char *notes_ref_name;
 int grafts_replace_parents = 1;
 int core_apply_sparse_checkout;
+const char *core_shared_config;
 struct startup_info *startup_info;
 
 /* Parallel index stat data preload? */
-- 
1.7.3.3.476.g893a9

  parent reply	other threads:[~2010-12-09 15:12 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-09 15:09 [RFC/WIP 0/3] Shared config Nguyễn Thái Ngọc Duy
2010-12-09 15:09 ` [PATCH 1/3] config: read full file content before parsing Nguyễn Thái Ngọc Duy
2010-12-09 15:09 ` [PATCH 2/3] config: add git_config_from_sha1() to read from a blob Nguyễn Thái Ngọc Duy
2010-12-09 15:58   ` Thiago Farina
2010-12-09 17:02     ` Jonathan Nieder
2010-12-09 15:09 ` Nguyễn Thái Ngọc Duy [this message]
2010-12-09 16:00   ` [PATCH 3/3] config: add core.sharedconfig Thiago Farina
2010-12-10  1:53     ` Nguyen Thai Ngoc Duy
2010-12-09 18:13   ` Junio C Hamano
2010-12-09 18:19     ` Jonathan Nieder
2010-12-10  1:29     ` Nguyen Thai Ngoc Duy

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=1291907388-9068-4-git-send-email-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    /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.