From patchwork Sun Jan 14 21:43:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kristoffer Haugsbakk X-Patchwork-Id: 13519259 Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 064EA14293 for ; Sun, 14 Jan 2024 21:44:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=khaugsbakk.name header.i=@khaugsbakk.name header.b="kGjR1zKk"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="C9N2JUZx" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id DCA295C0154; Sun, 14 Jan 2024 16:44:12 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Sun, 14 Jan 2024 16:44:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=khaugsbakk.name; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1705268652; x= 1705355052; bh=3PMwYZ3TK+aS0letAdpJMqPmC2YZhQB8Jz2gw+rBO/A=; b=k GjR1zKkbiKOcmZKryfI3zSGUnBnjkLmKshqDolCuF9nFSKEwZWp4ky8PkkXi4xxI WPME9WdxnIQT+6MJFEUPvWQvor8BmJDeEzFtr8cAcSieEn6ZgXT72xZlT7vzlJuV 7P7/Wu92nEZbKbv+AMGD1lIRfwI5G8K+QfrzvcOGOyVlBgVVoUNO/tnEUyR7JVPz rehhEQ3+TdXAjY1gj1gpyA8GD2lbu5zByGFRq6ZOOMsSSSej7FVkKXk7aMCRxXFi tutkm4UUSRPUYPGL5Ta5U4VMQ0NNc7k/6Gl9xoh9+cPlPjZLGikLjdfONJrWeyhQ qI+YQ4R+VH78CJ3i1N0xQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1705268652; x= 1705355052; bh=3PMwYZ3TK+aS0letAdpJMqPmC2YZhQB8Jz2gw+rBO/A=; b=C 9N2JUZxWa8SGq9hZ7wty7k1YKKGAS34aZUFTWWFiB5YJVWSPGc9jRQ0CEJdmcQ2w moO8a2tGgmnI/PdfYwZQDA7H3z70UxtTX0ZoPVDjibAIOsqPh8vk0id4iG1qdK1B SZHwKXtLTHE7GFsYv8OcdAd3XGxR0YMz3uYORyYzyHCZG9sP4wRA/aWYEpTe200b 3jYhD57nP+Kezn/n1tO7KovoXdzpT4tvtd/ObTSzJFeuAi9Y0hum9spRZLonXSK6 bZBbTVD1Xvmh48Ayn1eAsZ/S2h32ehsuk9pBYcDByBeA10uobanVNnPEVymFmi8v q7VwkQMsJQVmV23RHphag== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeiledgudehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefmrhhi shhtohhffhgvrhcujfgruhhgshgsrghkkhcuoegtohguvgeskhhhrghughhssggrkhhkrd hnrghmvgeqnecuggftrfgrthhtvghrnhepteduieehgedutdfgudevkefhveduieeiteej hfffteeitdegjeeihedthfejgfetnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomheptghouggvsehkhhgruhhgshgsrghkkhdrnhgrmhgv X-ME-Proxy: Feedback-ID: i2671468f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 14 Jan 2024 16:44:10 -0500 (EST) From: Kristoffer Haugsbakk To: git@vger.kernel.org Cc: Kristoffer Haugsbakk , ps@pks.im, stolee@gmail.com, Eric Sunshine , Taylor Blau Subject: [PATCH v2 1/4] config: format newlines Date: Sun, 14 Jan 2024 22:43:16 +0100 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Remove unneeded newlines according to `clang-format`. Signed-off-by: Kristoffer Haugsbakk --- Notes (series): Honestly the formatter changing these lines over and over again was just annoying. And we're visiting the file anyway. builtin/config.c | 1 - config.c | 2 -- 2 files changed, 3 deletions(-) diff --git a/builtin/config.c b/builtin/config.c index 11a4d4ef141..87d0dc92d99 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -760,7 +760,6 @@ int cmd_config(int argc, const char **argv, const char *prefix) given_config_source.scope = CONFIG_SCOPE_COMMAND; } - if (respect_includes_opt == -1) config_options.respect_includes = !given_config_source.file; else diff --git a/config.c b/config.c index 9ff6ae1cb90..d26e16e3ce3 100644 --- a/config.c +++ b/config.c @@ -95,7 +95,6 @@ static long config_file_ftell(struct config_source *conf) return ftell(conf->u.file); } - static int config_buf_fgetc(struct config_source *conf) { if (conf->u.buf.pos < conf->u.buf.len) @@ -3418,7 +3417,6 @@ int git_config_set_multivar_in_file_gently(const char *config_filename, write_err_out: ret = write_error(get_lock_file_path(&lock)); goto out_free; - } void git_config_set_multivar_in_file(const char *config_filename, From patchwork Sun Jan 14 21:43:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kristoffer Haugsbakk X-Patchwork-Id: 13519260 Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C0C6F156DD for ; Sun, 14 Jan 2024 21:44:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=khaugsbakk.name header.i=@khaugsbakk.name header.b="gLMLIa7A"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="3uwXpulb" Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 1BC855C0163; Sun, 14 Jan 2024 16:44:15 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sun, 14 Jan 2024 16:44:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=khaugsbakk.name; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1705268655; x= 1705355055; bh=TLtZL3NgybPv6rdIHhR1knaHaa+Qi6aI6gTVnGlZrQM=; b=g LMLIa7AfyS5mFtCGc0DGOoyxeIrHS0npIfjYLeQAcSb4NhmEClAireEkKcUPbo6r BlD2q8F2FoynLTv5DWN55zjXw5DyKyB6rwE2vi+qyTcF72++eXtVfjrvo/YFS8zJ 4TDmCVWoPBJAB5lPkT2lXXskt5hZQ0rQZd12ht1U0U43MV/j3KfH2rSVcs+bTxwW Vlo3+dsSbXn8ae5Wp2kL6Sgz93z/+aWJrDGfMFh8QAxF4NxM70Syf1QSkZzy9fb5 Rv8IRK9oWRTX8jT/Vd/wlxVgRn0yjhPffyxmvp3X08wI51eMLSG6G8A+jOlTU0BC SuoZUlkhtljJwagPH9JIA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1705268655; x= 1705355055; bh=TLtZL3NgybPv6rdIHhR1knaHaa+Qi6aI6gTVnGlZrQM=; b=3 uwXpulbQHXE8Z5CrShnC3qDXDF70B9WoS96GYTRgzmTliw/GJ1U5MddPtuR5jDat cMwH46hmLjW2K/Dd3FmxZ1juVzJMbMVEBCpN+hrxgrxgNlc2PrDqf/teHQ6C5njG e4AYUKCeLbUtrIxq3n1ACMG2eBEgazhIGXz9fghPcXYAO+3NaA4yuOggA/EvzryM M2vkUX2WUBECY1pGPCeI/nFZg2ADc2x13A4i1EWmQIktnGi4cwtnQP5NoznVGTaE L+RH9O4+XpwR5rYDp5jlK0iGEz2FV94RHdmk3DUp0K6pTDRMz6YEZocLdDHIDoe/ YSBkPWITkoKTXI0Grf5yw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeiledgudehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpefmrhhi shhtohhffhgvrhcujfgruhhgshgsrghkkhcuoegtohguvgeskhhhrghughhssggrkhhkrd hnrghmvgeqnecuggftrfgrthhtvghrnhepteduieehgedutdfgudevkefhveduieeiteej hfffteeitdegjeeihedthfejgfetnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomheptghouggvsehkhhgruhhgshgsrghkkhdrnhgrmhgv X-ME-Proxy: Feedback-ID: i2671468f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 14 Jan 2024 16:44:13 -0500 (EST) From: Kristoffer Haugsbakk To: git@vger.kernel.org Cc: Kristoffer Haugsbakk , ps@pks.im, stolee@gmail.com, Eric Sunshine , Taylor Blau Subject: [PATCH v2 2/4] config: rename global config function Date: Sun, 14 Jan 2024 22:43:17 +0100 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Rename this function to a more descriptive name since we want to use the existing name for a new function. Signed-off-by: Kristoffer Haugsbakk --- builtin/config.c | 2 +- builtin/gc.c | 4 ++-- builtin/var.c | 2 +- config.c | 4 ++-- config.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/builtin/config.c b/builtin/config.c index 87d0dc92d99..6fff2655816 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -710,7 +710,7 @@ int cmd_config(int argc, const char **argv, const char *prefix) if (use_global_config) { char *user_config, *xdg_config; - git_global_config(&user_config, &xdg_config); + git_global_config_paths(&user_config, &xdg_config); if (!user_config) /* * It is unknown if HOME/.gitconfig exists, so diff --git a/builtin/gc.c b/builtin/gc.c index 7c11d5ebef0..c078751824c 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -1546,7 +1546,7 @@ static int maintenance_register(int argc, const char **argv, const char *prefix) char *user_config = NULL, *xdg_config = NULL; if (!config_file) { - git_global_config(&user_config, &xdg_config); + git_global_config_paths(&user_config, &xdg_config); config_file = user_config; if (!user_config) die(_("$HOME not set")); @@ -1614,7 +1614,7 @@ static int maintenance_unregister(int argc, const char **argv, const char *prefi int rc; char *user_config = NULL, *xdg_config = NULL; if (!config_file) { - git_global_config(&user_config, &xdg_config); + git_global_config_paths(&user_config, &xdg_config); config_file = user_config; if (!user_config) die(_("$HOME not set")); diff --git a/builtin/var.c b/builtin/var.c index 8cf7dd9e2e5..cf5567208a2 100644 --- a/builtin/var.c +++ b/builtin/var.c @@ -90,7 +90,7 @@ static char *git_config_val_global(int ident_flag UNUSED) char *user, *xdg; size_t unused; - git_global_config(&user, &xdg); + git_global_config_paths(&user, &xdg); if (xdg && *xdg) { normalize_path_copy(xdg, xdg); strbuf_addf(&buf, "%s\n", xdg); diff --git a/config.c b/config.c index d26e16e3ce3..ebc6a57e1c3 100644 --- a/config.c +++ b/config.c @@ -1987,7 +1987,7 @@ char *git_system_config(void) return system_config; } -void git_global_config(char **user_out, char **xdg_out) +void git_global_config_paths(char **user_out, char **xdg_out) { char *user_config = xstrdup_or_null(getenv("GIT_CONFIG_GLOBAL")); char *xdg_config = NULL; @@ -2040,7 +2040,7 @@ static int do_git_config_sequence(const struct config_options *opts, data, CONFIG_SCOPE_SYSTEM, NULL); - git_global_config(&user_config, &xdg_config); + git_global_config_paths(&user_config, &xdg_config); if (xdg_config && !access_or_die(xdg_config, R_OK, ACCESS_EACCES_OK)) ret += git_config_from_file_with_options(fn, xdg_config, data, diff --git a/config.h b/config.h index 14f881ecfaf..e5e523553cc 100644 --- a/config.h +++ b/config.h @@ -382,7 +382,7 @@ int config_error_nonbool(const char *); #endif char *git_system_config(void); -void git_global_config(char **user, char **xdg); +void git_global_config_paths(char **user, char **xdg); int git_config_parse_parameter(const char *, config_fn_t fn, void *data); From patchwork Sun Jan 14 21:43:18 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Kristoffer Haugsbakk X-Patchwork-Id: 13519261 Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4FDD1643A for ; Sun, 14 Jan 2024 21:44:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=khaugsbakk.name header.i=@khaugsbakk.name header.b="fr6U1nLS"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="cvJ/zux7" Received: from compute6.internal (compute6.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 05EE85C0154; Sun, 14 Jan 2024 16:44:17 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute6.internal (MEProxy); Sun, 14 Jan 2024 16:44:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=khaugsbakk.name; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm1; t=1705268657; x=1705355057; bh=B40a88ix/gHP6N5GaV7MGR4o3NZlLWSB w/bHGClsxEQ=; b=fr6U1nLS/U1zp09KEk/cbYXImlwgMUKrxJ+drABrnA1qOHd9 RfRP1Bl0ksvKH/detyoqn0ON/1fUxnECkRBZWqEcXcxiaPWb+J1VbJ13NTKHB3jJ 7npyni7rL2VjvbaSzkYMZjUYKoIQcLXlR5wZ5qdMRS2ZwV4xMXSkUe/omqLskK+o N/mhV6tIAwwPFWoz28ah4ZjymyrYo+gzrSCdtRr7RH7llFoGiTSq3j1I6I3KRHg3 DCKdNUap9+hqkIdZncWKOQ1nTkmx4dBr2Trg/1lc825sNhAIziiSgLZ/fei0xmKa K0q63EeUMwUm2qGw26BezjzXtnCq2Yvm1J1Sdg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1705268657; x= 1705355057; bh=B40a88ix/gHP6N5GaV7MGR4o3NZlLWSBw/bHGClsxEQ=; b=c vJ/zux74MZ7J/YbLlizC/roXPyhOsE0+2Q297fngIuJKG5AJPkWGg9cDYy8Ry+U8 7gleSg2vmpfBjyPU30Oa9VVPzVzbMPwK+7PMHC5T1QgODwnK+VZ5BL4n9awrdrle 2LWMR0MJaYTA1wAq4IMB6GgJqJbiyXSQ3BV9qaErS9QCQVy9ZZBkia9KApblA6OV kXpuBvXs8QwirxvfWfS6TPzuHqTWfdugCSLGhFVVvbvPadRtEV9TkBfZWkael8JV pxiYO9FabZojZZ4ECZ1lvusceYJlz5QDzYS8ehSp2jVfHFb/ytdfGHHlUdcNIHSQ ERe7DuU13q4V8GpvRdsIQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeiledgudehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepmfhr ihhsthhofhhfvghrucfjrghughhssggrkhhkuceotghouggvsehkhhgruhhgshgsrghkkh drnhgrmhgvqeenucggtffrrghtthgvrhhnpeevgfelveeikeegjeeikeeuvefhleeiuddv leegfeekjedtkeevtdetgfffveettdenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegtohguvgeskhhhrghughhssggrkhhkrdhnrghmvg X-ME-Proxy: Feedback-ID: i2671468f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 14 Jan 2024 16:44:15 -0500 (EST) From: Kristoffer Haugsbakk To: git@vger.kernel.org Cc: Kristoffer Haugsbakk , ps@pks.im, stolee@gmail.com, Eric Sunshine , Taylor Blau Subject: [PATCH v2 3/4] config: factor out global config file retrieval Date: Sun, 14 Jan 2024 22:43:18 +0100 Message-ID: <32e5ec7d866ff8fd26554b325812c6e19cb65126.1705267839.git.code@khaugsbakk.name> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Factor out code that retrieves the global config file so that we can use it in `gc.c` as well. Use the old name from the previous commit since this function acts functionally the same as `git_system_config` but for “global”. Signed-off-by: Kristoffer Haugsbakk --- Notes (series): v2: • Don’t die; return `NULL` builtin/config.c | 25 +++---------------------- config.c | 20 ++++++++++++++++++++ config.h | 4 ++++ 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/builtin/config.c b/builtin/config.c index 6fff2655816..08fe36d4997 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -708,30 +708,11 @@ int cmd_config(int argc, const char **argv, const char *prefix) } if (use_global_config) { - char *user_config, *xdg_config; - - git_global_config_paths(&user_config, &xdg_config); - if (!user_config) - /* - * It is unknown if HOME/.gitconfig exists, so - * we do not know if we should write to XDG - * location; error out even if XDG_CONFIG_HOME - * is set and points at a sane location. - */ + given_config_source.file = git_global_config(); + if (!given_config_source.file) die(_("$HOME not set")); - given_config_source.scope = CONFIG_SCOPE_GLOBAL; - - if (access_or_warn(user_config, R_OK, 0) && - xdg_config && !access_or_warn(xdg_config, R_OK, 0)) { - given_config_source.file = xdg_config; - free(user_config); - } else { - given_config_source.file = user_config; - free(xdg_config); - } - } - else if (use_system_config) { + } else if (use_system_config) { given_config_source.file = git_system_config(); given_config_source.scope = CONFIG_SCOPE_SYSTEM; } else if (use_local_config) { diff --git a/config.c b/config.c index ebc6a57e1c3..3cfeb3d8bd9 100644 --- a/config.c +++ b/config.c @@ -1987,6 +1987,26 @@ char *git_system_config(void) return system_config; } +char *git_global_config(void) +{ + char *user_config, *xdg_config; + + git_global_config_paths(&user_config, &xdg_config); + if (!user_config) { + free(xdg_config); + return NULL; + } + + if (access_or_warn(user_config, R_OK, 0) && xdg_config && + !access_or_warn(xdg_config, R_OK, 0)) { + free(user_config); + return xdg_config; + } else { + free(xdg_config); + return user_config; + } +} + void git_global_config_paths(char **user_out, char **xdg_out) { char *user_config = xstrdup_or_null(getenv("GIT_CONFIG_GLOBAL")); diff --git a/config.h b/config.h index e5e523553cc..625e932b993 100644 --- a/config.h +++ b/config.h @@ -382,6 +382,10 @@ int config_error_nonbool(const char *); #endif char *git_system_config(void); +/** + * Returns `NULL` if is uncertain whether or not `HOME/.gitconfig` exists. + */ +char *git_global_config(void); void git_global_config_paths(char **user, char **xdg); int git_config_parse_parameter(const char *, config_fn_t fn, void *data); From patchwork Sun Jan 14 21:43:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Kristoffer Haugsbakk X-Patchwork-Id: 13519262 Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EC57168BD for ; Sun, 14 Jan 2024 21:44:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=khaugsbakk.name Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=khaugsbakk.name header.i=@khaugsbakk.name header.b="GkBKecqC"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="mGdx24gT" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailout.nyi.internal (Postfix) with ESMTP id AB38A5C015A; Sun, 14 Jan 2024 16:44:18 -0500 (EST) Received: from mailfrontend1 ([10.202.2.162]) by compute2.internal (MEProxy); Sun, 14 Jan 2024 16:44:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=khaugsbakk.name; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:subject:subject:to:to; s=fm1; t=1705268658; x=1705355058; bh=DW7CRPU9dPo0SDRpw3mxElfp0Xq0I0hG ctA/vo834Tk=; b=GkBKecqCShQrqBgkvC8VdcArnefLNS88tZ831rkikVi74eDm EdC9CPPdJn3Lc6OQyVStFbYNCbz4fknwvNDUcUZERBCuHCSa54QsB5fGWrZ5OXBO Q0Ppp5r9ETozAzMOZevHWulUProTLAMbPqAUiR/Z+wi4ltCq2Vix1kdEM2t06i+n KMyB+Shv4seU9xaszmD5KcJnQ01CmIvOkwODAnkP0eQTO9I4JRFUVp+dW5ZJcOvq TwECNJviJRW97ddNhQzsMx46M0Yw+9NwimRserwwlrd5fuFCEur7YKZKw/PVMPqx l+K4Y3k6f6feBUDSKWB7sd8QfOtF2r4FrJW/KA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1705268658; x= 1705355058; bh=DW7CRPU9dPo0SDRpw3mxElfp0Xq0I0hGctA/vo834Tk=; b=m Gdx24gToGOYmU9D2MbssC5V5ZmL6XQvxWg7nxAZDXxZiVLBIirRNTGXGtX/axIBI 7TdCQl4HKVVYBcECPdmeaULuxo6SlFPOqtUsXD9bgvZJwoYWtSeLisl0r3PyDrsv 7yaSsXesog85TgJ2fjzavVMWzlZHUQQnnIj0pBwUSF3dQFZKn961bE5ixWSyopwE 4vHpHbedJhyQxtC+LPKlGEKYkuOP5knWg2IIImRHZHCFFZZn5T59JafKm3JtRnAD 4uliBB657VoupCeDkJeV9kUo4PttsGPT1b17/WtAwYewvtmBFZZs8jmPkk7QBLJJ A4lhfTrKbz8f5o9ZwKTsQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeiledgudehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefhvfevufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepmfhr ihhsthhofhhfvghrucfjrghughhssggrkhhkuceotghouggvsehkhhgruhhgshgsrghkkh drnhgrmhgvqeenucggtffrrghtthgvrhhnpeevgfelveeikeegjeeikeeuvefhleeiuddv leegfeekjedtkeevtdetgfffveettdenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegtohguvgeskhhhrghughhssggrkhhkrdhnrghmvg X-ME-Proxy: Feedback-ID: i2671468f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 14 Jan 2024 16:44:17 -0500 (EST) From: Kristoffer Haugsbakk To: git@vger.kernel.org Cc: Kristoffer Haugsbakk , ps@pks.im, stolee@gmail.com, Eric Sunshine , Taylor Blau Subject: [PATCH v2 4/4] maintenance: use XDG config if it exists Date: Sun, 14 Jan 2024 22:43:19 +0100 Message-ID: <8bd67c5bf01ca10fbf575dfa2cf88f8c88b48276.1705267839.git.code@khaugsbakk.name> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 `git maintenance register` registers the repository in the user's global config. `$XDG_CONFIG_HOME/git/config` is supposed to be used if `~/.gitconfig` does not exist. However, this command creates a `~/.gitconfig` file and writes to that one even though the XDG variant exists. This used to work correctly until 50a044f1e4 (gc: replace config subprocesses with API calls, 2022-09-27), when the command started calling the config API instead of git-config(1). Also change `unregister` accordingly. Signed-off-by: Kristoffer Haugsbakk --- Notes (series): v2: • Add `unregister` tests • Use subshell when exporting an env. variable • Style in tests • Free variables properly builtin/gc.c | 27 ++++++++++++------------- t/t7900-maintenance.sh | 45 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 14 deletions(-) diff --git a/builtin/gc.c b/builtin/gc.c index c078751824c..cb80ced6cb5 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -1543,19 +1543,18 @@ static int maintenance_register(int argc, const char **argv, const char *prefix) if (!found) { int rc; - char *user_config = NULL, *xdg_config = NULL; + char *global_config_file = NULL; if (!config_file) { - git_global_config_paths(&user_config, &xdg_config); - config_file = user_config; - if (!user_config) - die(_("$HOME not set")); + global_config_file = git_global_config(); + config_file = global_config_file; } + if (!config_file) + die(_("$HOME not set")); rc = git_config_set_multivar_in_file_gently( config_file, "maintenance.repo", maintpath, CONFIG_REGEX_NONE, 0); - free(user_config); - free(xdg_config); + free(global_config_file); if (rc) die(_("unable to add '%s' value of '%s'"), @@ -1612,18 +1611,18 @@ static int maintenance_unregister(int argc, const char **argv, const char *prefi if (found) { int rc; - char *user_config = NULL, *xdg_config = NULL; + char *global_config_file = NULL; + if (!config_file) { - git_global_config_paths(&user_config, &xdg_config); - config_file = user_config; - if (!user_config) - die(_("$HOME not set")); + global_config_file = git_global_config(); + config_file = global_config_file; } + if (!config_file) + die(_("$HOME not set")); rc = git_config_set_multivar_in_file_gently( config_file, key, NULL, maintpath, CONFIG_FLAGS_MULTI_REPLACE | CONFIG_FLAGS_FIXED_VALUE); - free(user_config); - free(xdg_config); + free(global_config_file); if (rc && (!force || rc == CONFIG_NOTHING_SET)) diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh index 00d29871e65..0943dfa18a3 100755 --- a/t/t7900-maintenance.sh +++ b/t/t7900-maintenance.sh @@ -67,6 +67,51 @@ test_expect_success 'maintenance.auto config option' ' test_subcommand ! git maintenance run --auto --quiet $XDG_CONFIG_HOME/git/config && + git maintenance register && + git config --file=$XDG_CONFIG_HOME/git/config --get maintenance.repo >actual && + pwd >expect && + test_cmp expect actual + ) +' + +test_expect_success 'register does not need XDG_CONFIG_HOME config to exist' ' + test_when_finished git maintenance unregister && + test_path_is_missing $XDG_CONFIG_HOME/git/config && + git maintenance register && + git config --global --get maintenance.repo >actual && + pwd >expect && + test_cmp expect actual +' + +test_expect_success 'unregister uses XDG_CONFIG_HOME config if it exists' ' + test_when_finished rm -r .config/git/config && + ( + XDG_CONFIG_HOME=.config && + export XDG_CONFIG_HOME && + mkdir -p $XDG_CONFIG_HOME/git && + >$XDG_CONFIG_HOME/git/config && + git maintenance register && + git maintenance unregister && + test_must_fail git config --file=$XDG_CONFIG_HOME/git/config --get maintenance.repo >actual && + test_must_be_empty actual + ) +' + +test_expect_success 'unregister does not need XDG_CONFIG_HOME config to exist' ' + test_path_is_missing $XDG_CONFIG_HOME/git/config && + git maintenance register && + git maintenance unregister && + test_must_fail git config --global --get maintenance.repo >actual && + test_must_be_empty actual +' + test_expect_success 'maintenance..enabled' ' git config maintenance.gc.enabled false && git config maintenance.commit-graph.enabled true &&