From patchwork Wed Aug 7 06:56:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755874 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 315C51B1428 for ; Wed, 7 Aug 2024 06:56:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013814; cv=none; b=LPEKLEhJaQcS3NkxHQ5sgoOZ8zZuIURYOBzXHFbyiK8vsiCFk/omJ2SvI5yb85ceXrspApAuDlBwPhcR6EJnlHH2rrFSX525z4xE/yzjS42aqPvo1MtAYzOvjprIyDWiE9cDSjszrbW8zsyJlbLnbb+Aga16CbF3UNRt2RtJX80= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013814; c=relaxed/simple; bh=6/Bgkaw3uX2Ss4jv7TTwF9FcXlbSDxm6y/wS7SJU+N4=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=CBF2kc6ciVpKHxqTVH+mgTl2jFY0MlV1yWQOx60JcCVl8ofWOcnoSoPQO5/7eI7m8+oyw77ho3+KC7+HETIexT50SZFrLC5t2qjNniDZCf+dvTc9wEzCcPnHg/7ddFoyS189nINY7+HLrj/UUbME3u0sWuoLIjM8DM6p5bJy7u0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=An34ptuu; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=SJ8RByK0; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="An34ptuu"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="SJ8RByK0" Received: from compute8.internal (compute8.nyi.internal [10.202.2.227]) by mailfout.nyi.internal (Postfix) with ESMTP id 583A5138FCA2 for ; Wed, 7 Aug 2024 02:56:50 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute8.internal (MEProxy); Wed, 07 Aug 2024 02:56:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013810; x=1723100210; bh=8XBHBS+mo0 W076TOuHzeZULu/9gMd3gkQ/LDPEnioW4=; b=An34ptuuX6C1fByNjYNQ/1D/mm xBZxsWwWM8OaqlzEKtfXauzcvtKMnsAxk5xPKYI2ro+ree9U5fibrOI6tGMM5E5j 4KAjQaTeJMslk/jELhtBbOYtsXImBfiQvSoZ1pynXECmjqB5yRTSlWn+hGYgR2/Q fKEY75nsf6231Xnwp1TAkHI12IDQjKAOhp0THoT95fmPs6NG/b7GbMox0cYHdAot cKcfTEPTL6EHBXQ3/pFXJmDBAG+7Evr6s6PELhduNtiMzsxAXUGUa3LsTjgOvGLz TvW3jipBPgziSfzl/Yk0DJxcdHrzCG6hZysqCD3eBs9VX6r4LLy6nBXiTZ1w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013810; x=1723100210; bh=8XBHBS+mo0W076TOuHzeZULu/9gM d3gkQ/LDPEnioW4=; b=SJ8RByK0NeqoD8e+VYSdL1f6Y2VraOkxQQuDKMy0uJ3q WxTTqgH61OupbLBv0OpGw+EgN4F3trenM3uvnUrZIrFrm94qMKmtY7hJzTdsoLKI tiBXnatZr/AOsJ4tJQJ0Rxl7Oe0sWpNhKpKHDII9A47B/+Mjk3S4cCDsyEmtH2/g 6hiHTJquYzkpMfBAYMAEGTholJTaIacotTv2qi2Egx3KOqmgJ1WTfz0XuTJxtIdO D0/Ftig0g6QTGLCgLj5HxZuNL1IyPyE4L8iNfZCt8q8DUoJKd/+wg4cYipBqUxln V4oqfPABBqYwmfGA3h1w6De7CI1UyThADDxjjGXBPw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:56:49 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id b82e511c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:56:45 +0000 (UTC) Date: Wed, 7 Aug 2024 08:56:47 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 01/20] path: expose `do_git_path()` as `repo_git_pathv()` Message-ID: <7ce3278f649ce70453242e5458d28c5fd54576ba.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: We're about to move functions of the "path" subsytem that do not use a `struct repository` into "path.h" as static inlined functions. This will require us to call `do_git_path()`, which is internal to "path.c". Expose the function as `repo_git_pathv()` to prepare for the change. Signed-off-by: Patrick Steinhardt --- path.c | 20 ++++++++++---------- path.h | 8 ++++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/path.c b/path.c index 19f7684f38..71f1cb4dfb 100644 --- a/path.c +++ b/path.c @@ -417,9 +417,9 @@ static void strbuf_worktree_gitdir(struct strbuf *buf, strbuf_git_common_path(buf, repo, "worktrees/%s", wt->id); } -static void do_git_path(const struct repository *repo, - const struct worktree *wt, struct strbuf *buf, - const char *fmt, va_list args) +void repo_git_pathv(const struct repository *repo, + const struct worktree *wt, struct strbuf *buf, + const char *fmt, va_list args) { int gitdir_len; strbuf_worktree_gitdir(buf, repo, wt); @@ -438,7 +438,7 @@ char *repo_git_path(const struct repository *repo, struct strbuf path = STRBUF_INIT; va_list args; va_start(args, fmt); - do_git_path(repo, NULL, &path, fmt, args); + repo_git_pathv(repo, NULL, &path, fmt, args); va_end(args); return strbuf_detach(&path, NULL); } @@ -449,7 +449,7 @@ void strbuf_repo_git_path(struct strbuf *sb, { va_list args; va_start(args, fmt); - do_git_path(repo, NULL, sb, fmt, args); + repo_git_pathv(repo, NULL, sb, fmt, args); va_end(args); } @@ -458,7 +458,7 @@ char *git_path_buf(struct strbuf *buf, const char *fmt, ...) va_list args; strbuf_reset(buf); va_start(args, fmt); - do_git_path(the_repository, NULL, buf, fmt, args); + repo_git_pathv(the_repository, NULL, buf, fmt, args); va_end(args); return buf->buf; } @@ -467,7 +467,7 @@ void strbuf_git_path(struct strbuf *sb, const char *fmt, ...) { va_list args; va_start(args, fmt); - do_git_path(the_repository, NULL, sb, fmt, args); + repo_git_pathv(the_repository, NULL, sb, fmt, args); va_end(args); } @@ -476,7 +476,7 @@ const char *git_path(const char *fmt, ...) struct strbuf *pathname = get_pathname(); va_list args; va_start(args, fmt); - do_git_path(the_repository, NULL, pathname, fmt, args); + repo_git_pathv(the_repository, NULL, pathname, fmt, args); va_end(args); return pathname->buf; } @@ -486,7 +486,7 @@ char *git_pathdup(const char *fmt, ...) struct strbuf path = STRBUF_INIT; va_list args; va_start(args, fmt); - do_git_path(the_repository, NULL, &path, fmt, args); + repo_git_pathv(the_repository, NULL, &path, fmt, args); va_end(args); return strbuf_detach(&path, NULL); } @@ -517,7 +517,7 @@ const char *worktree_git_path(const struct worktree *wt, const char *fmt, ...) struct strbuf *pathname = get_pathname(); va_list args; va_start(args, fmt); - do_git_path(the_repository, wt, pathname, fmt, args); + repo_git_pathv(the_repository, wt, pathname, fmt, args); va_end(args); return pathname->buf; } diff --git a/path.h b/path.h index a6f0b70692..94e7030f0b 100644 --- a/path.h +++ b/path.h @@ -66,6 +66,14 @@ char *repo_git_path(const struct repository *repo, const char *fmt, ...) __attribute__((format (printf, 2, 3))); +/* + * Print a path into the git directory of repository `repo` into the provided + * buffer. + */ +void repo_git_pathv(const struct repository *repo, + const struct worktree *wt, struct strbuf *buf, + const char *fmt, va_list args); + /* * Construct a path into the git directory of repository `repo` and append it * to the provided buffer `sb`. From patchwork Wed Aug 7 06:56:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755875 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 F23DF1B1428 for ; Wed, 7 Aug 2024 06:56:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013818; cv=none; b=j8IyXtgqZ0XoMCBBIF8il/mCpgCTo08jXn0Zw/Q7OQathbPVadacsrY7alL0SZeQ8k+/TDlDHkxOvJTD13XhDM4guSnwIz8tUdgP4+wG5n9fcSEPBML+UgfYDV9UorhQNvUcvpIIv/fCA/rHl8AodLqVvMPajpb2TClgaazj710= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013818; c=relaxed/simple; bh=DJ/o3ltrq2xqIgs3blzbhAqeUBGVtq+AEBg8Yxy1uDU=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=p7csWX6JLdgzLNE4Zc6dpM8RS3aOBeTqDpb9G9bp8Gcbder7gFjFe9DTW3IuBEVttyLpwwvbBBTFt2srvVTZCLEs7n/bbd1AdSqx49bd6z72d6Qh07wSs7GotBbKNHMkULOFDOYbNGW5GZnBhfzpAsAXHqIYMWCVW9mXEPp/Mac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=otGtEv92; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=LwJsCFqa; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="otGtEv92"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="LwJsCFqa" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfout.nyi.internal (Postfix) with ESMTP id 28AF3138FC5F for ; Wed, 7 Aug 2024 02:56:55 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Aug 2024 02:56:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013815; x=1723100215; bh=UQz2rZMzI/ FunerOge2k+jn1V4DadtL9PoGE/sysOro=; b=otGtEv923KJAY7kPa5v1dy4uVb vIQ3jDYWl2gm5r/UD6LpHmVtshDh5R9W+V5kLHMcuA0FN65k4l5MlngwQLRtr/YK aY3215+jmSDVlNu43XspBkAmB3waE4vA7LKhGQ3V4yhPw+mZUi7pD9NgO8g66bHj KNBUGeRM59qJMPTmkiyWDUg7NlHX5MAFba4gsA6OzQ73zh52+eH+6wdWYAclrPwZ skrrapUDTJU8HXPrDj0Q8Ph1MU5WJN5y5MFiLSahIuLsMTjo8Dj0Q3BQzXD1aUut kdHjCJE9nlylolNg1sBt57W3MQOSqsPp07NI95laUhR3oio0bq3Z+lDnG1oQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013815; x=1723100215; bh=UQz2rZMzI/FunerOge2k+jn1V4Da dtL9PoGE/sysOro=; b=LwJsCFqazv1LOcatAIitvLiAfAMVvNviYNX5hNCC87VR 5eLNIEplnr5Ri/AL7gnsojfywgSS+F7UhsqCcG4szAJn3pxyd+NCtH0Wyl2A+vig kjH2TTL5xohKZa2bNm1Ah0kJpmRTVjfE6cT10gxF5TG7m9euWmhxEgWN+FqV9KsK IVImhEPUFt9MRD4SVGtsvZ3B7Jy+mjlcHKFxkqJB+4dZEa91nBemsd5AL6Crx3cJ G5vvp+v8Iq0uaowoSWJU+9R62mVzuJav+sVlY5g0cR8M1lNBSTZHfnq0K9kxNtBq k17LwnK0P/e2AA8BkCiKNoa98IyPmV+Hm1WXSqBkZg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:56:54 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id deb84a5b (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:56:50 +0000 (UTC) Date: Wed, 7 Aug 2024 08:56:52 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 02/20] path: expose `do_git_common_path()` as `strbuf_git_common_pathv()` Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: With the same reasoning as the preceding commit, expose the function `do_git_common_path()` as `strbuf_git_common_pathv()`. Signed-off-by: Patrick Steinhardt --- path.c | 22 +++++++++++----------- path.h | 5 ++++- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/path.c b/path.c index 71f1cb4dfb..bff98b255e 100644 --- a/path.c +++ b/path.c @@ -617,16 +617,16 @@ int strbuf_git_path_submodule(struct strbuf *buf, const char *path, return err; } -static void do_git_common_path(const struct repository *repo, - struct strbuf *buf, - const char *fmt, - va_list args) +void strbuf_git_common_pathv(struct strbuf *sb, + const struct repository *repo, + const char *fmt, + va_list args) { - strbuf_addstr(buf, repo->commondir); - if (buf->len && !is_dir_sep(buf->buf[buf->len - 1])) - strbuf_addch(buf, '/'); - strbuf_vaddf(buf, fmt, args); - strbuf_cleanup_path(buf); + strbuf_addstr(sb, repo->commondir); + if (sb->len && !is_dir_sep(sb->buf[sb->len - 1])) + strbuf_addch(sb, '/'); + strbuf_vaddf(sb, fmt, args); + strbuf_cleanup_path(sb); } const char *git_common_path(const char *fmt, ...) @@ -634,7 +634,7 @@ const char *git_common_path(const char *fmt, ...) struct strbuf *pathname = get_pathname(); va_list args; va_start(args, fmt); - do_git_common_path(the_repository, pathname, fmt, args); + strbuf_git_common_pathv(pathname, the_repository, fmt, args); va_end(args); return pathname->buf; } @@ -645,7 +645,7 @@ void strbuf_git_common_path(struct strbuf *sb, { va_list args; va_start(args, fmt); - do_git_common_path(repo, sb, fmt, args); + strbuf_git_common_pathv(sb, repo, fmt, args); va_end(args); } diff --git a/path.h b/path.h index 94e7030f0b..77eb0e6543 100644 --- a/path.h +++ b/path.h @@ -37,6 +37,10 @@ void strbuf_git_common_path(struct strbuf *sb, const struct repository *repo, const char *fmt, ...) __attribute__((format (printf, 3, 4))); +void strbuf_git_common_pathv(struct strbuf *sb, + const struct repository *repo, + const char *fmt, + va_list args); /* * Return a statically allocated path into the main repository's @@ -45,7 +49,6 @@ void strbuf_git_common_path(struct strbuf *sb, const char *git_common_path(const char *fmt, ...) __attribute__((format (printf, 1, 2))); - /* * The `git_path` family of functions will construct a path into a repository's * git directory. From patchwork Wed Aug 7 06:56:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755876 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 543D01B4C55 for ; Wed, 7 Aug 2024 06:57:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013823; cv=none; b=SOKw5MYZA6P8RXjhVVCc5L8onvIRqeimJqx7xc8kwJYQQIWH//pPAbC4oD78qj7J1yD3SY3k0DkyYkHjQShMqAwTFMrakwWoP8nnbZ1hFCEs/S8IbM0gtUy0qoNlfiFcMP+4eIZ/CgUtBNGDp56Ggp685Za366p1ny8onzHDIuk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013823; c=relaxed/simple; bh=qXihFKikmPcuhBDJ+VXw4bq1vhfYIEq8tpHauXwIeV8=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=e1Pxd4lRsLmOZrfbHZmEuxHPEl9HFTSzJnt8186J+9YuQHlQ6Uo2uzvpKZv6YZH9FTivqur2aBqBcfuQLMy1pzqngUpWtpbrap3OGIdbJMK0yJSTbx3Uj646AAo+VX357yidvIE2B4rKkH4I7px3VJeaEGgR6J3VCtqBBVWLcOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=lIMovo0y; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=O/22L1FE; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="lIMovo0y"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="O/22L1FE" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfout.nyi.internal (Postfix) with ESMTP id F198A138CDF7 for ; Wed, 7 Aug 2024 02:56:59 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 07 Aug 2024 02:56:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013819; x=1723100219; bh=+z8Ihh81hU +VHetWpubaMX8D8+1/vAOSGbBZ8kTKMzM=; b=lIMovo0y+z07m0tun115nfP2eV +lLKoknB6TptPDdjXU8fYLhmSoA7MwAsR9QdrM2g8isYiHY1j+HHi2TczvaBQYUn sH/zptoyvhZVRhE7n1mm1yuXj4eL8SLLGANrLq0uUZGHRYw51hzj0i3EhmA0YwBV 6prwEs1thdrWSSDh3h/DPByAoPii6prSZXUFUJSJntmNFMvAC6Wj1LqJZ6Z1RybF Y2jwwN9beDa76e44fp+bxiKlkLbFQtOdh6I2gI4HaE8kfew3o/raoN7iR98RthPW d2WGxUXV4QnmgQdlsw4kpI69TkSApCxBer0Ttagex2VtO4keTnp5GUT1QIsQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013819; x=1723100219; bh=+z8Ihh81hU+VHetWpubaMX8D8+1/ vAOSGbBZ8kTKMzM=; b=O/22L1FEl+MF/WgQ+DhimwluPVYDmo3iUf5lvYqJwMRw 6mdyUXdsMoohDv0FoRclUoyApgyaBoVJ0qoE7nNnPs6ySIJLDd/5nOSdKTmo9piq vzLNP4nS0ofR9pWBgu9Xfhl2lk5PYZ51OZgeLgwn5xEjBTAmqln0NQw9/6+1S59w 92hDi+9k33UwmbTt6kvrksX8We419M7xRm3usYHyNxRe2WWl5IzDHbVW/Q9urCB9 xIBZwOqp32L7N0jrYY8Vbl+2uRqvsA9F+p8g6RjoQKg8tVHML6+xgTHrSeJ+V1K3 xTF3jiTHF9HLTcHOD5GF1rUCzUECK4WBe3HDy6+SwA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:56:59 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 5fa178e3 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:56:54 +0000 (UTC) Date: Wed, 7 Aug 2024 08:56:56 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 03/20] editor: do not rely on `the_repository` for interactive edits Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: We implicitly rely on `the_repository` when editing a file interactively because we call `git_path()`. Adapt the function to instead take a `sturct repository` as parameter so that we can remove this hidden dependency. Signed-off-by: Patrick Steinhardt --- add-patch.c | 3 ++- editor.c | 12 +++++++----- editor.h | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/add-patch.c b/add-patch.c index 46f6bddfe5..4e3aa02ed8 100644 --- a/add-patch.c +++ b/add-patch.c @@ -1140,7 +1140,8 @@ static int edit_hunk_manually(struct add_p_state *s, struct hunk *hunk) "removed, then the edit is\n" "aborted and the hunk is left unchanged.\n")); - if (strbuf_edit_interactively(&s->buf, "addp-hunk-edit.diff", NULL) < 0) + if (strbuf_edit_interactively(&s->buf, "addp-hunk-edit.diff", NULL, + the_repository) < 0) return -1; /* strip out commented lines */ diff --git a/editor.c b/editor.c index d1ba2d7c34..6c461dd253 100644 --- a/editor.c +++ b/editor.c @@ -134,13 +134,15 @@ int launch_sequence_editor(const char *path, struct strbuf *buffer, } int strbuf_edit_interactively(struct strbuf *buffer, const char *path, - const char *const *env) + const char *const *env, struct repository *r) { - char *path2 = NULL; + struct strbuf sb = STRBUF_INIT; int fd, res = 0; - if (!is_absolute_path(path)) - path = path2 = xstrdup(git_path("%s", path)); + if (!is_absolute_path(path)) { + strbuf_repo_git_path(&sb, r, "%s", path); + path = sb.buf; + } fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666); if (fd < 0) @@ -157,6 +159,6 @@ int strbuf_edit_interactively(struct strbuf *buffer, const char *path, unlink(path); } - free(path2); + strbuf_release(&sb); return res; } diff --git a/editor.h b/editor.h index 8016bb5e00..d4c4d216ac 100644 --- a/editor.h +++ b/editor.h @@ -1,6 +1,7 @@ #ifndef EDITOR_H #define EDITOR_H +struct repository; struct strbuf; const char *git_editor(void); @@ -29,6 +30,6 @@ int launch_sequence_editor(const char *path, struct strbuf *buffer, * If `path` is relative, it refers to a file in the `.git` directory. */ int strbuf_edit_interactively(struct strbuf *buffer, const char *path, - const char *const *env); + const char *const *env, struct repository *r); #endif From patchwork Wed Aug 7 06:57:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755877 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 7A0ED18FC9B for ; Wed, 7 Aug 2024 06:57:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013827; cv=none; b=iaRtOpEK+cliZ6hxp2GvXfDXgPYT8qqajde0caAd0vVMmfrkXNvvgp1m+yi3BSDz5AeBZ08CGqw78Ey21ACkDB8jxvLdE7kRMZrzF+ME+ffAYGJsTOwVG1v+ERhDNru5HHS2K05EAbp2yZD90q/qDG9kVDtN1UA8PAEl9zYggXk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013827; c=relaxed/simple; bh=wl3E4/uN880lZtSXZnoBcfyNB0tlKZURls70twNPfIc=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=EYl8J7tqRzDEpvy5DGJO8Uj+/P/14/ow891CWz0v4Lli0jbkpy2t4TikTafpBOi04oqhfwKzuWpveSuJtKMjQN7Lcwvdtj1cm25Y6/ZekpYWOHTS2aMqngEEBUrxm/9L5TfeaHQN/9W1OCJvwLgyntpHmLDqrOz2+qo+dgk/BgQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=XY44oUb8; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=hdj47ww3; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="XY44oUb8"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="hdj47ww3" Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailfout.nyi.internal (Postfix) with ESMTP id C97DB138FCA2 for ; Wed, 7 Aug 2024 02:57:04 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Wed, 07 Aug 2024 02:57:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013824; x=1723100224; bh=XyrdssCvXH ox+b01MDR3i6tsp2GN4Y/B7MGBUwh09k0=; b=XY44oUb85cCqBcMkfmZE6DHnk9 pedwMULywIJsAPkeo5UzLga5e/SfcH8sI1+rUmPdcccr90hLsg6hRVWU8QBuEMRK wkCPVeMghcIO0bWfvRMy+A5GO6Hf15NR6xeBGCzZytJORzM7SPjpdw2aok0YQT6R Jdh3ERuRMpC+9SFw3SmAvU4Be6+36YPOLZRd1vIVAhgozmKLqboiquh2Jv2AQpFB bEbbkq5f5KJzqZh7Tt5sxTMGqYwFK+0Ayn9k2Zk+8ffTOWcnzSK3O+6RLTfA8jsK vGamtXeSSgu/p0Hi2tPW6zkp+k+LUFzcpRdRxymXZZ96L0yBftKN91Z0F++g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013824; x=1723100224; bh=XyrdssCvXHox+b01MDR3i6tsp2GN 4Y/B7MGBUwh09k0=; b=hdj47ww3PDg3sHU0xNBQG+hfGIHKF0KUOgLuiD3kgqQG hJTxmuyGjQp/0iEmuw1J382oMJ8lTvNPVYQs3bnCtqFFKontHA9SkmxD7LH9wxwI btJSkTv81rUxAbbwip6K8IL0+Umxh3ukrjyDECFipkoKAjZaPSXu/NTpfqQwuPmW GKobxC1ITbsnATL+b2U7iXOSNU959TjG3AqM28K0sHBfCyS7YkvUznFsoda5f88v mfHUTjHOmkkCgGdXbOfp6sWdNJmJAVYapAh9xK8Phvry2BrcBOsKtchPKRO6hE5J zMLJZnzcvbsGR9K8LVGKjk6Irfurmv2WcI/jW2h82w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:04 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id db8d2e15 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:56:59 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:01 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 04/20] hooks: remove implicit dependency on `the_repository` Message-ID: <9a0964aff3a91fe017992ad2d0266c18b7262ee1.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: We implicitly depend on `the_repository` in our hook subsystem because we use `strbuf_git_path()` to compute hook paths. Remove this dependency by accepting a `struct repository` as parameter instead. Signed-off-by: Patrick Steinhardt --- builtin/am.c | 9 +++++---- builtin/bugreport.c | 2 +- builtin/checkout.c | 2 +- builtin/clone.c | 2 +- builtin/gc.c | 2 +- builtin/hook.c | 2 +- builtin/merge.c | 2 +- builtin/rebase.c | 2 +- builtin/receive-pack.c | 10 +++++----- builtin/worktree.c | 2 +- commit.c | 2 +- hook.c | 21 +++++++++++---------- hook.h | 13 ++++++++----- read-cache.c | 6 +++--- refs.c | 2 +- reset.c | 2 +- sequencer.c | 6 +++--- transport.c | 2 +- 18 files changed, 47 insertions(+), 42 deletions(-) diff --git a/builtin/am.c b/builtin/am.c index a12be088f7..d8875ad402 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -490,7 +490,8 @@ static int run_applypatch_msg_hook(struct am_state *state) assert(state->msg); if (!state->no_verify) - ret = run_hooks_l("applypatch-msg", am_path(state, "final-commit"), NULL); + ret = run_hooks_l(the_repository, "applypatch-msg", + am_path(state, "final-commit"), NULL); if (!ret) { FREE_AND_NULL(state->msg); @@ -512,7 +513,7 @@ static int run_post_rewrite_hook(const struct am_state *state) strvec_push(&opt.args, "rebase"); opt.path_to_stdin = am_path(state, "rewritten"); - return run_hooks_opt("post-rewrite", &opt); + return run_hooks_opt(the_repository, "post-rewrite", &opt); } /** @@ -1663,7 +1664,7 @@ static void do_commit(const struct am_state *state) const char *reflog_msg, *author, *committer = NULL; struct strbuf sb = STRBUF_INIT; - if (!state->no_verify && run_hooks("pre-applypatch")) + if (!state->no_verify && run_hooks(the_repository, "pre-applypatch")) exit(1); if (write_index_as_tree(&tree, the_repository->index, get_index_file(), 0, NULL)) @@ -1716,7 +1717,7 @@ static void do_commit(const struct am_state *state) fclose(fp); } - run_hooks("post-applypatch"); + run_hooks(the_repository, "post-applypatch"); free_commit_list(parents); strbuf_release(&sb); diff --git a/builtin/bugreport.c b/builtin/bugreport.c index b3cc77af53..bdfed3d8f1 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -58,7 +58,7 @@ static void get_populated_hooks(struct strbuf *hook_info, int nongit) for (p = hook_name_list; *p; p++) { const char *hook = *p; - if (hook_exists(hook)) + if (hook_exists(the_repository, hook)) strbuf_addf(hook_info, "%s\n", hook); } } diff --git a/builtin/checkout.c b/builtin/checkout.c index 0f21ddd2c6..89543b3054 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -125,7 +125,7 @@ static void branch_info_release(struct branch_info *info) static int post_checkout_hook(struct commit *old_commit, struct commit *new_commit, int changed) { - return run_hooks_l("post-checkout", + return run_hooks_l(the_repository, "post-checkout", oid_to_hex(old_commit ? &old_commit->object.oid : null_oid()), oid_to_hex(new_commit ? &new_commit->object.oid : null_oid()), changed ? "1" : "0", NULL); diff --git a/builtin/clone.c b/builtin/clone.c index af6017d41a..29d4b79eb5 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -788,7 +788,7 @@ static int checkout(int submodule_progress, int filter_submodules) if (write_locked_index(the_repository->index, &lock_file, COMMIT_LOCK)) die(_("unable to write new index file")); - err |= run_hooks_l("post-checkout", oid_to_hex(null_oid()), + err |= run_hooks_l(the_repository, "post-checkout", oid_to_hex(null_oid()), oid_to_hex(&oid), "1", NULL); if (!err && (option_recurse_submodules.nr > 0)) { diff --git a/builtin/gc.c b/builtin/gc.c index 72bac2554f..2ca6288c6b 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -463,7 +463,7 @@ static int need_to_gc(void) else return 0; - if (run_hooks("pre-auto-gc")) + if (run_hooks(the_repository, "pre-auto-gc")) return 0; return 1; } diff --git a/builtin/hook.c b/builtin/hook.c index 5234693a94..cc37438fde 100644 --- a/builtin/hook.c +++ b/builtin/hook.c @@ -58,7 +58,7 @@ static int run(int argc, const char **argv, const char *prefix) hook_name = argv[0]; if (!ignore_missing) opt.error_if_missing = 1; - ret = run_hooks_opt(hook_name, &opt); + ret = run_hooks_opt(the_repository, hook_name, &opt); if (ret < 0) /* error() return */ ret = 1; return ret; diff --git a/builtin/merge.c b/builtin/merge.c index c896b18d1a..662a49a0e8 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -478,7 +478,7 @@ static void finish(struct commit *head_commit, } /* Run a post-merge hook */ - run_hooks_l("post-merge", squash ? "1" : "0", NULL); + run_hooks_l(the_repository, "post-merge", squash ? "1" : "0", NULL); if (new_head) apply_autostash_ref(the_repository, "MERGE_AUTOSTASH"); diff --git a/builtin/rebase.c b/builtin/rebase.c index e3a8e74cfc..fa0ca613e1 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -1774,7 +1774,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix) /* If a hook exists, give it a chance to interrupt*/ if (!ok_to_skip_pre_rebase && - run_hooks_l("pre-rebase", options.upstream_arg, + run_hooks_l(the_repository, "pre-rebase", options.upstream_arg, argc ? argv[0] : NULL, NULL)) die(_("The pre-rebase hook refused to rebase.")); diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 339524ae2a..4ff22d8b15 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -792,7 +792,7 @@ static int run_and_feed_hook(const char *hook_name, feed_fn feed, struct child_process proc = CHILD_PROCESS_INIT; struct async muxer; int code; - const char *hook_path = find_hook(hook_name); + const char *hook_path = find_hook(the_repository, hook_name); if (!hook_path) return 0; @@ -922,7 +922,7 @@ static int run_update_hook(struct command *cmd) { struct child_process proc = CHILD_PROCESS_INIT; int code; - const char *hook_path = find_hook("update"); + const char *hook_path = find_hook(the_repository, "update"); if (!hook_path) return 0; @@ -1098,7 +1098,7 @@ static int run_proc_receive_hook(struct command *commands, int hook_use_push_options = 0; int version = 0; int code; - const char *hook_path = find_hook("proc-receive"); + const char *hook_path = find_hook(the_repository, "proc-receive"); if (!hook_path) { rp_error("cannot find hook 'proc-receive'"); @@ -1409,7 +1409,7 @@ static const char *push_to_checkout(unsigned char *hash, strvec_pushf(env, "GIT_WORK_TREE=%s", absolute_path(work_tree)); strvec_pushv(&opt.env, env->v); strvec_push(&opt.args, hash_to_hex(hash)); - if (run_hooks_opt(push_to_checkout_hook, &opt)) + if (run_hooks_opt(the_repository, push_to_checkout_hook, &opt)) return "push-to-checkout hook declined"; else return NULL; @@ -1618,7 +1618,7 @@ static void run_update_post_hook(struct command *commands) struct child_process proc = CHILD_PROCESS_INIT; const char *hook; - hook = find_hook("post-update"); + hook = find_hook(the_repository, "post-update"); if (!hook) return; diff --git a/builtin/worktree.c b/builtin/worktree.c index 1d51e54fcd..a4b7f24e1e 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -573,7 +573,7 @@ static int add_worktree(const char *path, const char *refname, NULL); opt.dir = path; - ret = run_hooks_opt("post-checkout", &opt); + ret = run_hooks_opt(the_repository, "post-checkout", &opt); } strvec_clear(&child_env); diff --git a/commit.c b/commit.c index 087cb19f4f..24ab5c1b50 100644 --- a/commit.c +++ b/commit.c @@ -1960,5 +1960,5 @@ int run_commit_hook(int editor_is_used, const char *index_file, va_end(args); opt.invoked_hook = invoked_hook; - return run_hooks_opt(name, &opt); + return run_hooks_opt(the_repository, name, &opt); } diff --git a/hook.c b/hook.c index 7e90787bca..a9320cb0ce 100644 --- a/hook.c +++ b/hook.c @@ -10,14 +10,14 @@ #include "environment.h" #include "setup.h" -const char *find_hook(const char *name) +const char *find_hook(struct repository *r, const char *name) { static struct strbuf path = STRBUF_INIT; int found_hook; strbuf_reset(&path); - strbuf_git_path(&path, "hooks/%s", name); + strbuf_repo_git_path(&path, r, "hooks/%s", name); found_hook = access(path.buf, X_OK) >= 0; #ifdef STRIP_EXTENSION if (!found_hook) { @@ -48,9 +48,9 @@ const char *find_hook(const char *name) return path.buf; } -int hook_exists(const char *name) +int hook_exists(struct repository *r, const char *name) { - return !!find_hook(name); + return !!find_hook(r, name); } static int pick_next_hook(struct child_process *cp, @@ -121,7 +121,8 @@ static void run_hooks_opt_clear(struct run_hooks_opt *options) strvec_clear(&options->args); } -int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options) +int run_hooks_opt(struct repository *r, const char *hook_name, + struct run_hooks_opt *options) { struct strbuf abs_path = STRBUF_INIT; struct hook_cb_data cb_data = { @@ -129,7 +130,7 @@ int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options) .hook_name = hook_name, .options = options, }; - const char *const hook_path = find_hook(hook_name); + const char *const hook_path = find_hook(r, hook_name); int ret = 0; const struct run_process_parallel_opts opts = { .tr2_category = "hook", @@ -173,14 +174,14 @@ int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options) return ret; } -int run_hooks(const char *hook_name) +int run_hooks(struct repository *r, const char *hook_name) { struct run_hooks_opt opt = RUN_HOOKS_OPT_INIT; - return run_hooks_opt(hook_name, &opt); + return run_hooks_opt(r, hook_name, &opt); } -int run_hooks_l(const char *hook_name, ...) +int run_hooks_l(struct repository *r, const char *hook_name, ...) { struct run_hooks_opt opt = RUN_HOOKS_OPT_INIT; va_list ap; @@ -191,5 +192,5 @@ int run_hooks_l(const char *hook_name, ...) strvec_push(&opt.args, arg); va_end(ap); - return run_hooks_opt(hook_name, &opt); + return run_hooks_opt(r, hook_name, &opt); } diff --git a/hook.h b/hook.h index 6511525aeb..11863fa734 100644 --- a/hook.h +++ b/hook.h @@ -2,6 +2,8 @@ #define HOOK_H #include "strvec.h" +struct repository; + struct run_hooks_opt { /* Environment vars to be set for each hook */ @@ -55,12 +57,12 @@ struct hook_cb_data { * or disabled. Note that this points to static storage that will be * overwritten by further calls to find_hook and run_hook_*. */ -const char *find_hook(const char *name); +const char *find_hook(struct repository *r, const char *name); /** * A boolean version of find_hook() */ -int hook_exists(const char *hookname); +int hook_exists(struct repository *r, const char *hookname); /** * Takes a `hook_name`, resolves it to a path with find_hook(), and @@ -70,13 +72,14 @@ int hook_exists(const char *hookname); * Returns the status code of the run hook, or a negative value on * error(). */ -int run_hooks_opt(const char *hook_name, struct run_hooks_opt *options); +int run_hooks_opt(struct repository *r, const char *hook_name, + struct run_hooks_opt *options); /** * A wrapper for run_hooks_opt() which provides a dummy "struct * run_hooks_opt" initialized with "RUN_HOOKS_OPT_INIT". */ -int run_hooks(const char *hook_name); +int run_hooks(struct repository *r, const char *hook_name); /** * Like run_hooks(), a wrapper for run_hooks_opt(). @@ -87,5 +90,5 @@ int run_hooks(const char *hook_name); * hook. This function behaves like the old run_hook_le() API. */ LAST_ARG_MUST_BE_NULL -int run_hooks_l(const char *hook_name, ...); +int run_hooks_l(struct repository *r, const char *hook_name, ...); #endif diff --git a/read-cache.c b/read-cache.c index 48bf24f87c..742369b295 100644 --- a/read-cache.c +++ b/read-cache.c @@ -3156,9 +3156,9 @@ static int do_write_locked_index(struct index_state *istate, else ret = close_lock_file_gently(lock); - run_hooks_l("post-index-change", - istate->updated_workdir ? "1" : "0", - istate->updated_skipworktree ? "1" : "0", NULL); + run_hooks_l(the_repository, "post-index-change", + istate->updated_workdir ? "1" : "0", + istate->updated_skipworktree ? "1" : "0", NULL); istate->updated_workdir = 0; istate->updated_skipworktree = 0; diff --git a/refs.c b/refs.c index e082fc59b0..0afc70b51b 100644 --- a/refs.c +++ b/refs.c @@ -2132,7 +2132,7 @@ static int run_transaction_hook(struct ref_transaction *transaction, const char *hook; int ret = 0, i; - hook = find_hook("reference-transaction"); + hook = find_hook(transaction->ref_store->repo, "reference-transaction"); if (!hook) return ret; diff --git a/reset.c b/reset.c index 9550dea03d..b22b1be792 100644 --- a/reset.c +++ b/reset.c @@ -79,7 +79,7 @@ static int update_refs(const struct reset_head_opts *opts, reflog_head); } if (!ret && run_hook) - run_hooks_l("post-checkout", + run_hooks_l(the_repository, "post-checkout", oid_to_hex(head ? head : null_oid()), oid_to_hex(oid), "1", NULL); strbuf_release(&msg); diff --git a/sequencer.c b/sequencer.c index 0291920f0b..edeeec6f15 100644 --- a/sequencer.c +++ b/sequencer.c @@ -1316,7 +1316,7 @@ static int run_rewrite_hook(const struct object_id *oldoid, struct child_process proc = CHILD_PROCESS_INIT; int code; struct strbuf sb = STRBUF_INIT; - const char *hook_path = find_hook("post-rewrite"); + const char *hook_path = find_hook(the_repository, "post-rewrite"); if (!hook_path) return 0; @@ -1614,7 +1614,7 @@ static int try_to_commit(struct repository *r, } } - if (hook_exists("prepare-commit-msg")) { + if (hook_exists(r, "prepare-commit-msg")) { res = run_prepare_commit_msg_hook(r, msg, hook_commit); if (res) goto out; @@ -5149,7 +5149,7 @@ static int pick_commits(struct repository *r, hook_opt.path_to_stdin = rebase_path_rewritten_list(); strvec_push(&hook_opt.args, "rebase"); - run_hooks_opt("post-rewrite", &hook_opt); + run_hooks_opt(r, "post-rewrite", &hook_opt); } apply_autostash(rebase_path_autostash()); diff --git a/transport.c b/transport.c index 12cc5b4d96..f8cd2810a5 100644 --- a/transport.c +++ b/transport.c @@ -1271,7 +1271,7 @@ static int run_pre_push_hook(struct transport *transport, struct ref *r; struct child_process proc = CHILD_PROCESS_INIT; struct strbuf buf; - const char *hook_path = find_hook("pre-push"); + const char *hook_path = find_hook(the_repository, "pre-push"); if (!hook_path) return 0; From patchwork Wed Aug 7 06:57:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755878 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 7E6BF18FC9B for ; Wed, 7 Aug 2024 06:57:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013832; cv=none; b=aVqoH4MxG6lWn4l6q1x+m/ka2f0uo34ujQ+RKzMqalxW6VjqAlMaQy2f15uoLov1UPI4dcC6ishhVPrXNpMYuhQCwiT5+8BgjSU+avcE6meXtf5psSJ8YhGnBDjyhF2LuuinZaxGqaJYA0uJnpRLqLw4VvKro2OPMPT1H8Pfi2o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013832; c=relaxed/simple; bh=hLHUHG+xLVWBrUUzBWhLUtIhK+Jy5AyY2kGyy2lCu4I=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=XRJgJ+q7xKsRGSD6Ig1+Mrt0jGdW4kINqh+BUpM8mSdITl7EWJnAD5+zoeZB97Hh0g0cYIO0ggwd7VFtd5XvBl9OiEbN1MS9zRqhGCv76TkNO8aY+mCnPL45SWnSvug8eQpEFJtzgF1ilW6ThBxK2VodkoIKa0BeCQ264vr3Xxg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=D5wg89EB; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=G66mnE6X; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="D5wg89EB"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="G66mnE6X" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfout.nyi.internal (Postfix) with ESMTP id 9C65D138CDF7 for ; Wed, 7 Aug 2024 02:57:08 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 07 Aug 2024 02:57:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013828; x=1723100228; bh=SPgZJxQFxI c28gww5uaHt5cddCHvIozZftOuKyR/nlI=; b=D5wg89EBezp/p1S5XRFLkLSliH eIn3ggWWcmMxAVywNNZgGR/CLicQ1UxAhVER+uoyh/OY2XzUwm0HxkJVnL28pQ7f /ng1qTcBB9bYk1ObBh92bJjHNUxidgjUU1JoAMeEXIp5516yhaN9yT0cnjuG9y7k dtvz6hDdTkxwsx5IESeXY9rzlZ1QKat+ef3WN2jjPu33ZwKPBGQ7xxWAefCnE9AN uVUtGK4oIwspFjtor4qLAoqGyYIu07jyNr8axRCcqQnJiZ5wSgGk/589h72uanu/ U07d2rX1FXC+FIxrnGDs/1b95/itmUQGywn0oQYpBEx3hYGPS/14tOs4CTPA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013828; x=1723100228; bh=SPgZJxQFxIc28gww5uaHt5cddCHv IozZftOuKyR/nlI=; b=G66mnE6Xd+k8CgigP8n5uHpa7xeGKErAp4AcXwA9r74J 64vUPCtn3GKEPFmVoN8LRcJCPJ8qtIRFlaus6RdvGDFa8zDjG3kWXdAZxDkFHJP7 hPmosDHzb4lDfDJxMWd8P4B+5z8b910cF9pzYsm3WEv/+lj+YfPpU8sWeP4RhBOX y1Qf2DVpcyt7bh7sEpaMeHMVf1hutb2c6JkImyWlzpRz3oDJ9vOph+t8A6lWXlSE LJfPsPMa19oPA/UT8wWINKCFwA9OxUkKBRFTtejO966jNx+JeWqqZJ98llKtkjfN TqvDswPR+5MwYR0v49jOwd8NV5PraOkNEmTz1z/+Wg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepudenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:07 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 3c20f19e (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:03 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:06 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 05/20] path: stop relying on `the_repository` when reporting garbage Message-ID: <4368b32f6526b54faf50efaa8b4fb5db6ec31c50.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: We access `the_repository` in `report_linked_checkout_garbage()` both directly and indirectly via `get_git_dir()`. Remove this dependency by instead passing a `struct repository` as parameter. Signed-off-by: Patrick Steinhardt --- builtin/count-objects.c | 2 +- path.c | 6 +++--- path.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builtin/count-objects.c b/builtin/count-objects.c index 2d4bb5e8d0..ec6098a149 100644 --- a/builtin/count-objects.c +++ b/builtin/count-objects.c @@ -113,7 +113,7 @@ int cmd_count_objects(int argc, const char **argv, const char *prefix) usage_with_options(count_objects_usage, opts); if (verbose) { report_garbage = real_report_garbage; - report_linked_checkout_garbage(); + report_linked_checkout_garbage(the_repository); } for_each_loose_file_in_objdir(get_object_directory(), diff --git a/path.c b/path.c index bff98b255e..d6bdb992ba 100644 --- a/path.c +++ b/path.c @@ -365,15 +365,15 @@ static void update_common_dir(struct strbuf *buf, int git_dir_len, strbuf_addstr(buf, LOCK_SUFFIX); } -void report_linked_checkout_garbage(void) +void report_linked_checkout_garbage(struct repository *r) { struct strbuf sb = STRBUF_INIT; const struct common_dir *p; int len; - if (!the_repository->different_commondir) + if (!r->different_commondir) return; - strbuf_addf(&sb, "%s/", get_git_dir()); + strbuf_addf(&sb, "%s/", r->gitdir); len = sb.len; for (p = common_list; p->path; p++) { const char *path = p->path; diff --git a/path.h b/path.h index 77eb0e6543..3d21b9cd16 100644 --- a/path.h +++ b/path.h @@ -158,7 +158,7 @@ int strbuf_git_path_submodule(struct strbuf *sb, const char *path, const char *fmt, ...) __attribute__((format (printf, 3, 4))); -void report_linked_checkout_garbage(void); +void report_linked_checkout_garbage(struct repository *r); /* * You can define a static memoized git path like: From patchwork Wed Aug 7 06:57:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755879 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 30C951B8E9A for ; Wed, 7 Aug 2024 06:57:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013835; cv=none; b=ezmxC3t2Ggtea642DCc5yZDSb7k8n4y/TEJWrZX+zI4osl1pyVpJtwCXzJY8ObIyBL22GzBE3OGQA7bzAC2jS/UZRo315vy0tlKEUuOAB8Os4yUq6f5kX7eNcn7z1Twi8C3lWb+QIDzDjZ41PZQ4+N0CstLBOyUipjpL0a207Bc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013835; c=relaxed/simple; bh=pfhETFuTZ1uwEMGgQPLym+iJJiUDauwBXUftiow0ecc=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=XI/09etD6uN9sN3elSKcB72REwpuVwgVWLpSwPk+tvKFvoEt7Ldsr5WgrBH2c83MykUy9dQsHT3iNUuFh37td19OooelpCwUD/vt5zPg3s5TGBW/wfr8LDsyWzYX03xqHDYIxVioPykbLlNqAGuH2QjU2rOc/xaEe0xq/Fwq7+s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=lrO984pE; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=u6HgHG60; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="lrO984pE"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="u6HgHG60" Received: from compute8.internal (compute8.nyi.internal [10.202.2.227]) by mailfout.nyi.internal (Postfix) with ESMTP id 7D007138FCA2 for ; Wed, 7 Aug 2024 02:57:13 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute8.internal (MEProxy); Wed, 07 Aug 2024 02:57:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013833; x=1723100233; bh=BPgFGO5bHU IF4b1oVF3IooHKlS6bY5oqzlFx64vMURU=; b=lrO984pEuxf/xQCsM7zvtTMin8 ocET8KOHN/EjKRIH/uGwWIUcsQYolkvJWRcVBVqXSlHw44lwTHc1l/e4f2mUyIc/ oiXNW4kCjuSOJhdST5IunnR39Q/XANB+LmGddOLBgzmrqtsHr+A4ADqkWVyEVvLN HU8WmxqeLDDVsjCdAm3MUHgDmU5sEUvAtrgpnSQOK0U3YRhktm+q1AQlU64ZgUK/ XG3YKmAbChp/SjzDgjPZH9sfiq1X36Ea71AQKiWuD8E1+hdSXfBZx+2DCz3rfXxn 2gDisVEyX7gQrvqTCBKbs193vHQi9fz6S/l8MTVab1vWE9WeaYvbqQ29hCYw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013833; x=1723100233; bh=BPgFGO5bHUIF4b1oVF3IooHKlS6b Y5oqzlFx64vMURU=; b=u6HgHG60MYYURTA6W7sxDe7Hwkxe5KMGDSaxIhHWttYG 9yQ9rmjexiqFZDFmPCbl/yv5aE7jIgHAPYPqkW2+LR8Ub7IVCYMVSVsSKxJoDrux 91bEQQt9gGgZGLcmagsuVUIf8OL028G3OC++pz0t8nrvP3T6djiNavAKyBSNP4cv F0R3COJ2iFAYc+pMUBcgTesyBnDrilE8TQa8K5Jql2uism1fKzBCxDCkVhd9QMGp N9ZP8QZxkfGkXtJyUmvtbrhnJen3wOaWjMfh7Cv+eFzcSxSE1ZjSWiROqTYa4OS9 mRpFKipz9klhec6ezObw+E1doHjpzL2gQfZpuN7U4w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:12 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 8a140e4c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:08 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:10 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 06/20] path: stop relying on `the_repository` in `worktree_git_path()` Message-ID: <67405dcd0a121aee971f854dc35ba89bd4f808c4.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: When not provided a worktree, then `worktree_git_path()` will fall back to returning a path relative to the main repository. In this case, we implicitly rely on `the_repository` to derive the path. Remove this dependency by passing a `struct repository` as parameter. Signed-off-by: Patrick Steinhardt --- builtin/fsck.c | 2 +- builtin/worktree.c | 4 ++-- path.c | 9 +++++++-- path.h | 5 +++-- revision.c | 2 +- worktree.c | 2 +- wt-status.c | 14 +++++++------- 7 files changed, 22 insertions(+), 16 deletions(-) diff --git a/builtin/fsck.c b/builtin/fsck.c index d13a226c2e..ad36df9628 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c @@ -1050,7 +1050,7 @@ int cmd_fsck(int argc, const char **argv, const char *prefix) * and may get overwritten by other calls * while we're examining the index. */ - path = xstrdup(worktree_git_path(wt, "index")); + path = xstrdup(worktree_git_path(the_repository, wt, "index")); read_index_from(&istate, path, get_worktree_git_dir(wt)); fsck_index(&istate, path, wt->is_current); discard_index(&istate); diff --git a/builtin/worktree.c b/builtin/worktree.c index a4b7f24e1e..eb0a386992 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -1146,14 +1146,14 @@ static void validate_no_submodules(const struct worktree *wt) struct strbuf path = STRBUF_INIT; int i, found_submodules = 0; - if (is_directory(worktree_git_path(wt, "modules"))) { + if (is_directory(worktree_git_path(the_repository, wt, "modules"))) { /* * There could be false positives, e.g. the "modules" * directory exists but is empty. But it's a rare case and * this simpler check is probably good enough for now. */ found_submodules = 1; - } else if (read_index_from(&istate, worktree_git_path(wt, "index"), + } else if (read_index_from(&istate, worktree_git_path(the_repository, wt, "index"), get_worktree_git_dir(wt)) > 0) { for (i = 0; i < istate.cache_nr; i++) { struct cache_entry *ce = istate.cache[i]; diff --git a/path.c b/path.c index d6bdb992ba..567eff5253 100644 --- a/path.c +++ b/path.c @@ -512,12 +512,17 @@ const char *mkpath(const char *fmt, ...) return cleanup_path(pathname->buf); } -const char *worktree_git_path(const struct worktree *wt, const char *fmt, ...) +const char *worktree_git_path(struct repository *r, + const struct worktree *wt, const char *fmt, ...) { struct strbuf *pathname = get_pathname(); va_list args; + + if (wt && wt->repo != r) + BUG("worktree not connected to expected repository"); + va_start(args, fmt); - repo_git_pathv(the_repository, wt, pathname, fmt, args); + repo_git_pathv(r, wt, pathname, fmt, args); va_end(args); return pathname->buf; } diff --git a/path.h b/path.h index 3d21b9cd16..6228ca03d7 100644 --- a/path.h +++ b/path.h @@ -97,9 +97,10 @@ const char *git_path(const char *fmt, ...) * Similar to git_path() but can produce paths for a specified * worktree instead of current one */ -const char *worktree_git_path(const struct worktree *wt, +const char *worktree_git_path(struct repository *r, + const struct worktree *wt, const char *fmt, ...) - __attribute__((format (printf, 2, 3))); + __attribute__((format (printf, 3, 4))); /* * Return a path into the main repository's (the_repository) git directory. diff --git a/revision.c b/revision.c index 1c0192f522..0b92a13af5 100644 --- a/revision.c +++ b/revision.c @@ -1872,7 +1872,7 @@ void add_index_objects_to_pending(struct rev_info *revs, unsigned int flags) continue; /* current index already taken care of */ if (read_index_from(&istate, - worktree_git_path(wt, "index"), + worktree_git_path(the_repository, wt, "index"), get_worktree_git_dir(wt)) > 0) do_add_index_objects_to_pending(revs, &istate, flags); discard_index(&istate); diff --git a/worktree.c b/worktree.c index f3c4c8ec54..886c5db691 100644 --- a/worktree.c +++ b/worktree.c @@ -252,7 +252,7 @@ const char *worktree_lock_reason(struct worktree *wt) if (!wt->lock_reason_valid) { struct strbuf path = STRBUF_INIT; - strbuf_addstr(&path, worktree_git_path(wt, "locked")); + strbuf_addstr(&path, worktree_git_path(the_repository, wt, "locked")); if (file_exists(path.buf)) { struct strbuf lock_reason = STRBUF_INIT; if (strbuf_read_file(&lock_reason, path.buf, 0) < 0) diff --git a/wt-status.c b/wt-status.c index b778eef989..b477239039 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1618,7 +1618,7 @@ static char *get_branch(const struct worktree *wt, const char *path) struct object_id oid; const char *branch_name; - if (strbuf_read_file(&sb, worktree_git_path(wt, "%s", path), 0) <= 0) + if (strbuf_read_file(&sb, worktree_git_path(the_repository, wt, "%s", path), 0) <= 0) goto got_nothing; while (sb.len && sb.buf[sb.len - 1] == '\n') @@ -1716,18 +1716,18 @@ int wt_status_check_rebase(const struct worktree *wt, { struct stat st; - if (!stat(worktree_git_path(wt, "rebase-apply"), &st)) { - if (!stat(worktree_git_path(wt, "rebase-apply/applying"), &st)) { + if (!stat(worktree_git_path(the_repository, wt, "rebase-apply"), &st)) { + if (!stat(worktree_git_path(the_repository, wt, "rebase-apply/applying"), &st)) { state->am_in_progress = 1; - if (!stat(worktree_git_path(wt, "rebase-apply/patch"), &st) && !st.st_size) + if (!stat(worktree_git_path(the_repository, wt, "rebase-apply/patch"), &st) && !st.st_size) state->am_empty_patch = 1; } else { state->rebase_in_progress = 1; state->branch = get_branch(wt, "rebase-apply/head-name"); state->onto = get_branch(wt, "rebase-apply/onto"); } - } else if (!stat(worktree_git_path(wt, "rebase-merge"), &st)) { - if (!stat(worktree_git_path(wt, "rebase-merge/interactive"), &st)) + } else if (!stat(worktree_git_path(the_repository, wt, "rebase-merge"), &st)) { + if (!stat(worktree_git_path(the_repository, wt, "rebase-merge/interactive"), &st)) state->rebase_interactive_in_progress = 1; else state->rebase_in_progress = 1; @@ -1743,7 +1743,7 @@ int wt_status_check_bisect(const struct worktree *wt, { struct stat st; - if (!stat(worktree_git_path(wt, "BISECT_LOG"), &st)) { + if (!stat(worktree_git_path(the_repository, wt, "BISECT_LOG"), &st)) { state->bisect_in_progress = 1; state->bisecting_from = get_branch(wt, "BISECT_START"); return 1; From patchwork Wed Aug 7 06:57:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755880 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 809EB1B86DE for ; Wed, 7 Aug 2024 06:57:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013841; cv=none; b=g+GlxRmSSfI7K0XsLwc1kCR9W9ZRuM9k2uoBbAr+q/yB5Q5c8aWrZOUcOmGwk1BNWI+tR9S6XpDlaBybjycVraWOnq6dDMTkIqQ8wgogvoJrhmSM+zm9bcG9ChLln9aptXn8mpdDA1gEYO9JTh/VY8pligkwWNgtn8crz4Jhq+E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013841; c=relaxed/simple; bh=PkwhfhVqKQxl8s6fp7wuaf2Qxaeihj86BBVeOIvFiEQ=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=R/wfzZhQmTx4vnic1jxYzp59uG1/b3DUdev5ac1RfNo+vWwHlGBDfv8lGmVr63QdhZX33YE2AkKPLf/kKNME6m7FlkZRCYoPL9p1lkM5XXVWEj2fnB8nZm/RLgo1o7jOl9NqfMTkVYypBjb+Da5ciTKbgLBXaO9dbk4wJm7YZXc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=JLgbIiFe; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=O8kamzZg; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="JLgbIiFe"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="O8kamzZg" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 51A091151ADA for ; Wed, 7 Aug 2024 02:57:18 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 07 Aug 2024 02:57:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013838; x=1723100238; bh=x4R5U/LkvS i3Ww9kiG8f46geUgMmvfgs6xvtz2iEfbA=; b=JLgbIiFe20IcRvs1bPkHc3JDa1 dpxNKTVOzZpBFoQ/yFCZgKm+8ouv+NbQjCxVgvgtbxX06sCBSAMv1JmMg0e9Az/e JTwtDCiPc7+oEZ154OcfGDumRSyZf9bUMp8hLbDsEVok3ktwvWaRu45XA1Jd3xZl oTG4FSzscPy2R4g+dRONOVbiIDYiuJ4s61qc2kygrkOJ1J0KfWupT3oG30QnfCJv AL9Zmo00qlTt5q3LoXtWe3mlbUUTBHeEUTJ5npix1TNFl76w5EJQn+t4L1ZTUhRG zlHIsfm7siGWhyNG4R7PEsxoF91+UCWyylBu40QUSEImxTUr7cVFVUgbMWjw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013838; x=1723100238; bh=x4R5U/LkvSi3Ww9kiG8f46geUgMm vfgs6xvtz2iEfbA=; b=O8kamzZgnLyk+4XP7c3dz3A9F3AQKsdh/NhqDwy6t1J0 iLAWbFgmxwDyWlk0jQz/87EEKv2o0NoWcQp0wUmikNOOqym27XLz2REulD/kVvZE wprOX0TpfM5iUglpCw8XN6mVVlLSgl2gsFrdAXAV9hmluCMPSF6FPq2AQg/IbbgR gcoS9732HMTLabkPWtLh6ndeyBW82h5cB1Kmbv9YGhxXQ+ZgATSVe6EBdml/6PEj ZMtaNMrLZ5P7JkpyYyDj606+IyAIk4ENcw5lE8HtMyHm9y9BaOWLCQasUBfZv2V9 JuhtnRT07pzVu+Zgxt2/zVW132vNUytlNYbAUQQAaQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepvdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:17 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id f210615c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:13 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:15 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 07/20] path: hide functions using `the_repository` by default Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: The path subsytem provides a bunch of legacy functions that compute paths relative to the "gitdir" and "commondir" directories of the global `the_repository` variable. Use of those functions is discouraged, and it is easy to miss the implicit dependency on `the_repository` that calls to those functions may cause. With `USE_THE_REPOSITORY_VARIABLE`, we have recently introduced a tool that allows us to get rid of such functions over time. With this define, we can hide away functions that have such implicit dependency such that other subsystems that want to be free of `the_repository` will not use them by accident. Move all path-related functions that use `the_repository` into a block that gets only conditionally compiled depending on whether or not the macro has been defined. This also removes all dependencies on that variable in "path.c", allowing us to remove the definition of said preprocessor macro. Signed-off-by: Patrick Steinhardt --- path.c | 52 +------------------- path.h | 147 ++++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 100 insertions(+), 99 deletions(-) diff --git a/path.c b/path.c index 567eff5253..d073ae6449 100644 --- a/path.c +++ b/path.c @@ -2,8 +2,6 @@ * Utilities for paths and pathnames */ -#define USE_THE_REPOSITORY_VARIABLE - #include "git-compat-util.h" #include "abspath.h" #include "environment.h" @@ -30,7 +28,7 @@ static int get_st_mode_bits(const char *path, int *mode) return 0; } -static struct strbuf *get_pathname(void) +struct strbuf *get_pathname(void) { static struct strbuf pathname_array[4] = { STRBUF_INIT, STRBUF_INIT, STRBUF_INIT, STRBUF_INIT @@ -453,44 +451,6 @@ void strbuf_repo_git_path(struct strbuf *sb, va_end(args); } -char *git_path_buf(struct strbuf *buf, const char *fmt, ...) -{ - va_list args; - strbuf_reset(buf); - va_start(args, fmt); - repo_git_pathv(the_repository, NULL, buf, fmt, args); - va_end(args); - return buf->buf; -} - -void strbuf_git_path(struct strbuf *sb, const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - repo_git_pathv(the_repository, NULL, sb, fmt, args); - va_end(args); -} - -const char *git_path(const char *fmt, ...) -{ - struct strbuf *pathname = get_pathname(); - va_list args; - va_start(args, fmt); - repo_git_pathv(the_repository, NULL, pathname, fmt, args); - va_end(args); - return pathname->buf; -} - -char *git_pathdup(const char *fmt, ...) -{ - struct strbuf path = STRBUF_INIT; - va_list args; - va_start(args, fmt); - repo_git_pathv(the_repository, NULL, &path, fmt, args); - va_end(args); - return strbuf_detach(&path, NULL); -} - char *mkpathdup(const char *fmt, ...) { struct strbuf sb = STRBUF_INIT; @@ -634,16 +594,6 @@ void strbuf_git_common_pathv(struct strbuf *sb, strbuf_cleanup_path(sb); } -const char *git_common_path(const char *fmt, ...) -{ - struct strbuf *pathname = get_pathname(); - va_list args; - va_start(args, fmt); - strbuf_git_common_pathv(pathname, the_repository, fmt, args); - va_end(args); - return pathname->buf; -} - void strbuf_git_common_path(struct strbuf *sb, const struct repository *repo, const char *fmt, ...) diff --git a/path.h b/path.h index 6228ca03d7..22fdfc3d3a 100644 --- a/path.h +++ b/path.h @@ -25,7 +25,7 @@ char *mkpathdup(const char *fmt, ...) __attribute__((format (printf, 1, 2))); /* - * The `git_common_path` family of functions will construct a path into a + * The `strbuf_git_common_path` family of functions will construct a path into a * repository's common git directory, which is shared by all worktrees. */ @@ -43,14 +43,7 @@ void strbuf_git_common_pathv(struct strbuf *sb, va_list args); /* - * Return a statically allocated path into the main repository's - * (the_repository) common git directory. - */ -const char *git_common_path(const char *fmt, ...) - __attribute__((format (printf, 1, 2))); - -/* - * The `git_path` family of functions will construct a path into a repository's + * The `repo_git_path` family of functions will construct a path into a repository's * git directory. * * These functions will perform adjustments to the resultant path to account @@ -87,14 +80,7 @@ void strbuf_repo_git_path(struct strbuf *sb, __attribute__((format (printf, 3, 4))); /* - * Return a statically allocated path into the main repository's - * (the_repository) git directory. - */ -const char *git_path(const char *fmt, ...) - __attribute__((format (printf, 1, 2))); - -/* - * Similar to git_path() but can produce paths for a specified + * Similar to repo_git_path() but can produce paths for a specified * worktree instead of current one */ const char *worktree_git_path(struct repository *r, @@ -102,27 +88,6 @@ const char *worktree_git_path(struct repository *r, const char *fmt, ...) __attribute__((format (printf, 3, 4))); -/* - * Return a path into the main repository's (the_repository) git directory. - */ -char *git_pathdup(const char *fmt, ...) - __attribute__((format (printf, 1, 2))); - -/* - * Construct a path into the main repository's (the_repository) git directory - * and place it in the provided buffer `buf`, the contents of the buffer will - * be overridden. - */ -char *git_path_buf(struct strbuf *buf, const char *fmt, ...) - __attribute__((format (printf, 2, 3))); - -/* - * Construct a path into the main repository's (the_repository) git directory - * and append it to the provided buffer `sb`. - */ -void strbuf_git_path(struct strbuf *sb, const char *fmt, ...) - __attribute__((format (printf, 2, 3))); - /* * Return a path into the worktree of repository `repo`. * @@ -164,19 +129,10 @@ void report_linked_checkout_garbage(struct repository *r); /* * You can define a static memoized git path like: * - * static GIT_PATH_FUNC(git_path_foo, "FOO") + * static REPO_GIT_PATH_FUNC(git_path_foo, "FOO") * * or use one of the global ones below. */ -#define GIT_PATH_FUNC(func, filename) \ - const char *func(void) \ - { \ - static char *ret; \ - if (!ret) \ - ret = git_pathdup(filename); \ - return ret; \ - } - #define REPO_GIT_PATH_FUNC(var, filename) \ const char *git_path_##var(struct repository *r) \ { \ @@ -260,4 +216,99 @@ char *xdg_cache_home(const char *filename); */ void safe_create_dir(const char *dir, int share); +/* + * Do not use this function. It is only exported to other subsystems until we + * can get rid of the below block of functions that implicitly rely on + * `the_repository`. + */ +struct strbuf *get_pathname(void); + +# ifdef USE_THE_REPOSITORY_VARIABLE +# include "strbuf.h" +# include "repository.h" + +/* + * Return a statically allocated path into the main repository's + * (the_repository) common git directory. + */ +__attribute__((format (printf, 1, 2))) +static inline const char *git_common_path(const char *fmt, ...) +{ + struct strbuf *pathname = get_pathname(); + va_list args; + va_start(args, fmt); + strbuf_git_common_pathv(pathname, the_repository, fmt, args); + va_end(args); + return pathname->buf; +} + +/* + * Construct a path into the main repository's (the_repository) git directory + * and place it in the provided buffer `buf`, the contents of the buffer will + * be overridden. + */ +__attribute__((format (printf, 2, 3))) +static inline char *git_path_buf(struct strbuf *buf, const char *fmt, ...) +{ + va_list args; + strbuf_reset(buf); + va_start(args, fmt); + repo_git_pathv(the_repository, NULL, buf, fmt, args); + va_end(args); + return buf->buf; +} + +/* + * Construct a path into the main repository's (the_repository) git directory + * and append it to the provided buffer `sb`. + */ +__attribute__((format (printf, 2, 3))) +static inline void strbuf_git_path(struct strbuf *sb, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + repo_git_pathv(the_repository, NULL, sb, fmt, args); + va_end(args); +} + +/* + * Return a statically allocated path into the main repository's + * (the_repository) git directory. + */ +__attribute__((format (printf, 1, 2))) +static inline const char *git_path(const char *fmt, ...) +{ + struct strbuf *pathname = get_pathname(); + va_list args; + va_start(args, fmt); + repo_git_pathv(the_repository, NULL, pathname, fmt, args); + va_end(args); + return pathname->buf; +} + +#define GIT_PATH_FUNC(func, filename) \ + const char *func(void) \ + { \ + static char *ret; \ + if (!ret) \ + ret = git_pathdup(filename); \ + return ret; \ + } + +/* + * Return a path into the main repository's (the_repository) git directory. + */ +__attribute__((format (printf, 1, 2))) +static inline char *git_pathdup(const char *fmt, ...) +{ + struct strbuf path = STRBUF_INIT; + va_list args; + va_start(args, fmt); + repo_git_pathv(the_repository, NULL, &path, fmt, args); + va_end(args); + return strbuf_detach(&path, NULL); +} + +# endif /* USE_THE_REPOSITORY_VARIABLE */ + #endif /* PATH_H */ From patchwork Wed Aug 7 06:57:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755881 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 885431B86DB for ; Wed, 7 Aug 2024 06:57:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013847; cv=none; b=o8PI9gJeg/HhlCt13CENUpWIOrM3ptnSmXusRfGWFTFfsDbt19ds+SsTRze8o0l3wT+rPQ86BiRvVLhswJocPiievl6E2JDVhE/saXvTIxJFch1os479hrLBq0NWIcHn9BA52P/4/vZm2tcNyHs1+QkJE587/nhyWZLYvUhsXQ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013847; c=relaxed/simple; bh=aFTmtAmaV9RxMQ8fYN+JWzHj3BlvfMAK5oeHd4rcRXc=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=iCyLGVf63ztve9w7sDU9PkbEAvvM9xvUDTtbqaH/jIxn+5ZxP0l1kIIqtYF0uBUXsXThui/zYwQ+BP+VGQ78Co5OgW/Ej/B4/KRDxko9TD07WrRq2Qtturestv2LO818B0m4VZdspJvZYykYCQBHeDxqw0zgqGezab+Ck8bNPtM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=lenwgWmP; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=fwo3pdPa; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="lenwgWmP"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="fwo3pdPa" Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 249FB1151AB7 for ; Wed, 7 Aug 2024 02:57:23 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Wed, 07 Aug 2024 02:57:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013843; x=1723100243; bh=gxXjBtMFdd zdR2KAtdgq8TU828bIdP+wmR3xn8bfWDI=; b=lenwgWmPuVRkmQIhb8AwS79g6J ogMIfFGGq/ZBPl3JvBSbCWvQugw2vhMmyQ3wKqdj5CnZ4Cx7YcKVOjeS7E5ParpO mxiq4klj7qQsHpvARbdA1Y5/AUpCla6qDXo+mbP68LpxAg/iorJXbliOqbn/l474 tpJznLpL6VurIhW4P8cFs32tY/4pdeU0jZKLFVbFF2V0GMY8iiLzf7JMk9HY2Kpo V7vxrHaqDUtQ4lPcmfw3RyHDdbE1c46S5eFEZ83AK25Cd8BEXx+HGQOFtW07Zka4 kIvmD82mo3VfWgOw+RX21ijZUvX+tYqIqEBrnZmLlQgPbEgi77r8Es2DXU3g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013843; x=1723100243; bh=gxXjBtMFddzdR2KAtdgq8TU828bI dP+wmR3xn8bfWDI=; b=fwo3pdPaT0nJLYDD+eQ3mXjvadJNl0i/UyWx6VFIIj9L ZwHzIIqw0Dw2iYr3B5jC0mDP2PqIyrD1u5qLzjZt+P9KlTmFjTIzRDJ55GXx+mju g0lyosRJtgcRLUiK7k6l6iDT9USxBFNDATwkXsGpBrvMyAbxSA1ZqP7vj+R4mS68 DpwdiGYVzau/FLmitwwawnhRsfxKdL6N1M4z1lEzEuYh2pwFOYUxeC6v5c9OA0+F R9OJk4b2eEBvBItcYoIZpPKFRxNFqDhadKYzxfbb9rjFSSVSNOhxS6YmLfrH86V9 57BHfCU2Hxr1/TeVG09KeeOSAIduXtsDVaDxlzA8WQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:22 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id b728782e (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:17 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:19 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 08/20] config: introduce missing setters that take repo as parameter Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: While we already provide some of the config-setting interfaces with a `struct repository` as parameter, others only have a variant that implicitly depend on `the_repository`. Fill in those gaps such that we can start to deprecate the repo-less variants. Signed-off-by: Patrick Steinhardt --- config.c | 93 ++++++++++++++++++++++++++++++++++++++++++++------------ config.h | 15 ++++++++- 2 files changed, 87 insertions(+), 21 deletions(-) diff --git a/config.c b/config.c index 6421894614..ac89b708e7 100644 --- a/config.c +++ b/config.c @@ -3178,21 +3178,39 @@ static void maybe_remove_section(struct config_store_data *store, *end_offset = store->parsed[store->parsed_nr - 1].end; } +int repo_config_set_in_file_gently(struct repository *r, const char *config_filename, + const char *key, const char *comment, const char *value) +{ + return repo_config_set_multivar_in_file_gently(r, config_filename, key, value, NULL, comment, 0); +} + int git_config_set_in_file_gently(const char *config_filename, const char *key, const char *comment, const char *value) { - return git_config_set_multivar_in_file_gently(config_filename, key, value, NULL, comment, 0); + return repo_config_set_in_file_gently(the_repository, config_filename, + key, comment, value); +} + +void repo_config_set_in_file(struct repository *r, const char *config_filename, + const char *key, const char *value) +{ + repo_config_set_multivar_in_file(r, config_filename, key, value, NULL, 0); } void git_config_set_in_file(const char *config_filename, const char *key, const char *value) { - git_config_set_multivar_in_file(config_filename, key, value, NULL, 0); + repo_config_set_in_file(the_repository, config_filename, key, value); +} + +int repo_config_set_gently(struct repository *r, const char *key, const char *value) +{ + return repo_config_set_multivar_gently(r, key, value, NULL, 0); } int git_config_set_gently(const char *key, const char *value) { - return git_config_set_multivar_gently(key, value, NULL, 0); + return repo_config_set_gently(the_repository, key, value); } int repo_config_set_worktree_gently(struct repository *r, @@ -3209,13 +3227,18 @@ int repo_config_set_worktree_gently(struct repository *r, return repo_config_set_multivar_gently(r, key, value, NULL, 0); } -void git_config_set(const char *key, const char *value) +void repo_config_set(struct repository *r, const char *key, const char *value) { - git_config_set_multivar(key, value, NULL, 0); + repo_config_set_multivar(r, key, value, NULL, 0); trace2_cmd_set_config(key, value); } +void git_config_set(const char *key, const char *value) +{ + repo_config_set(the_repository, key, value); +} + char *git_config_prepare_comment_string(const char *comment) { size_t leading_blanks; @@ -3293,11 +3316,12 @@ static void validate_comment_string(const char *comment) * - the config file is removed and the lock file rename()d to it. * */ -int git_config_set_multivar_in_file_gently(const char *config_filename, - const char *key, const char *value, - const char *value_pattern, - const char *comment, - unsigned flags) +int repo_config_set_multivar_in_file_gently(struct repository *r, + const char *config_filename, + const char *key, const char *value, + const char *value_pattern, + const char *comment, + unsigned flags) { int fd = -1, in_fd = -1; int ret; @@ -3317,7 +3341,7 @@ int git_config_set_multivar_in_file_gently(const char *config_filename, store.multi_replace = (flags & CONFIG_FLAGS_MULTI_REPLACE) != 0; if (!config_filename) - config_filename = filename_buf = git_pathdup("config"); + config_filename = filename_buf = repo_git_path(r, "config"); /* * The lock serves a purpose in addition to locking: the new @@ -3526,7 +3550,7 @@ int git_config_set_multivar_in_file_gently(const char *config_filename, ret = 0; /* Invalidate the config cache */ - git_config_clear(); + repo_config_clear(r); out_free: rollback_lock_file(&lock); @@ -3543,12 +3567,24 @@ int git_config_set_multivar_in_file_gently(const char *config_filename, goto out_free; } -void git_config_set_multivar_in_file(const char *config_filename, - const char *key, const char *value, - const char *value_pattern, unsigned flags) +int git_config_set_multivar_in_file_gently(const char *config_filename, + const char *key, const char *value, + const char *value_pattern, + const char *comment, + unsigned flags) { - if (!git_config_set_multivar_in_file_gently(config_filename, key, value, - value_pattern, NULL, flags)) + return repo_config_set_multivar_in_file_gently(the_repository, config_filename, + key, value, value_pattern, + comment, flags); +} + +void repo_config_set_multivar_in_file(struct repository *r, + const char *config_filename, + const char *key, const char *value, + const char *value_pattern, unsigned flags) +{ + if (!repo_config_set_multivar_in_file_gently(r, config_filename, key, value, + value_pattern, NULL, flags)) return; if (value) die(_("could not set '%s' to '%s'"), key, value); @@ -3556,6 +3592,14 @@ void git_config_set_multivar_in_file(const char *config_filename, die(_("could not unset '%s'"), key); } +void git_config_set_multivar_in_file(const char *config_filename, + const char *key, const char *value, + const char *value_pattern, unsigned flags) +{ + repo_config_set_multivar_in_file(the_repository, config_filename, + key, value, value_pattern, flags); +} + int git_config_set_multivar_gently(const char *key, const char *value, const char *value_pattern, unsigned flags) { @@ -3576,12 +3620,21 @@ int repo_config_set_multivar_gently(struct repository *r, const char *key, return res; } +void repo_config_set_multivar(struct repository *r, + const char *key, const char *value, + const char *value_pattern, unsigned flags) +{ + char *file = repo_git_path(r, "config"); + git_config_set_multivar_in_file(file, key, value, + value_pattern, flags); + free(file); +} + void git_config_set_multivar(const char *key, const char *value, const char *value_pattern, unsigned flags) { - git_config_set_multivar_in_file(git_path("config"), - key, value, value_pattern, - flags); + repo_config_set_multivar(the_repository, key, value, + value_pattern, flags); } static size_t section_name_match (const char *buf, const char *name) diff --git a/config.h b/config.h index 54b47dec9e..b13e1bfb8d 100644 --- a/config.h +++ b/config.h @@ -298,14 +298,18 @@ int git_config_pathname(char **, const char *, const char *); int git_config_expiry_date(timestamp_t *, const char *, const char *); int git_config_color(char *, const char *, const char *); int git_config_set_in_file_gently(const char *, const char *, const char *, const char *); +int repo_config_set_in_file_gently(struct repository *r, const char *config_filename, + const char *key, const char *comment, const char *value); /** * write config values to a specific config file, takes a key/value pair as * parameter. */ void git_config_set_in_file(const char *, const char *, const char *); +void repo_config_set_in_file(struct repository *, const char *, const char *, const char *); int git_config_set_gently(const char *, const char *); +int repo_config_set_gently(struct repository *r, const char *, const char *); /** * Write a config value that should apply to the current worktree. If @@ -318,6 +322,7 @@ int repo_config_set_worktree_gently(struct repository *, const char *, const cha * write config values to `.git/config`, takes a key/value pair as parameter. */ void git_config_set(const char *, const char *); +void repo_config_set(struct repository *, const char *, const char *); int git_config_parse_key(const char *, char **, size_t *); @@ -341,9 +346,11 @@ int git_config_parse_key(const char *, char **, size_t *); #define CONFIG_FLAGS_FIXED_VALUE (1 << 1) int git_config_set_multivar_gently(const char *, const char *, const char *, unsigned); -void git_config_set_multivar(const char *, const char *, const char *, unsigned); int repo_config_set_multivar_gently(struct repository *, const char *, const char *, const char *, unsigned); +void git_config_set_multivar(const char *, const char *, const char *, unsigned); +void repo_config_set_multivar(struct repository *r, const char *, const char *, const char *, unsigned); int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, const char *, unsigned); +int repo_config_set_multivar_in_file_gently(struct repository *, const char *, const char *, const char *, const char *, const char *, unsigned); char *git_config_prepare_comment_string(const char *); @@ -372,6 +379,12 @@ void git_config_set_multivar_in_file(const char *config_filename, const char *value, const char *value_pattern, unsigned flags); +void repo_config_set_multivar_in_file(struct repository *r, + const char *config_filename, + const char *key, + const char *value, + const char *value_pattern, + unsigned flags); /** * rename or remove sections in the config file From patchwork Wed Aug 7 06:57:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755882 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 D0C581B8EA8 for ; Wed, 7 Aug 2024 06:57:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013850; cv=none; b=kFKULyRR/tKmiGjzRAXz6j1Wq5VxqK/V9/h/r8KR+gnQK7XGVL7YMb6ai5UIS2JzvZflG3zBJIkx3yugi61a5fyUBgL4+QBLo6rR+X25DzUcBLxsCjL8aJZJbWDV4JwdrG2tlAiyOFp8womBVi9M8eBefTNXd6I6/WEdoovsHHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013850; c=relaxed/simple; bh=yZ7yuUXkJ0zjyzgAkCkYTZQcrXhI2/NuYOILePnSykM=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=GcduQ4uP1lgq8zDSumC69YV71McHzxgiXGK2Kcf3GMBUfSLxbPika5cOPFA7eEeekBT7FS+ngIl03eRVE/accKU5TT6vXOWeB3WVzTSY/WD7pTKksoqi74xOf/rlZ9BHNanMlrcQ9ijwE1ZJeUBlhCZY8ttuh+2eZ10eQLPDRu8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=MYcFMaA3; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=VFQMLaif; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="MYcFMaA3"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="VFQMLaif" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfout.nyi.internal (Postfix) with ESMTP id 01167138CDF7 for ; Wed, 7 Aug 2024 02:57:28 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Aug 2024 02:57:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013847; x=1723100247; bh=SMPzZ45r17 ezP+iDwALzHCTPtjSYAJ6W7FXGE7PHd2k=; b=MYcFMaA311C2aeVyoSCBUqOEOW 04rB7XxCYkljo6CNkLaZZ/lbOUIeBY6gFZPH1go2VHT9zIkCV9/TT8udVP7HgWvJ 9PKJClfTJwcv3nSdkfhaBLnS8UoIO40eXHXQYCg0F6D6L0wF7d5SKuZ/vc4YI+qE jL9U66wvTn16tzujPmtrK3Fg1uyyUfRZKHSOtfaAgZbOMqHSD3K/0U+sdpzx60i1 Cgr2pwoK2V4+DH3g6ZukzYBlBF+oaYPLZuGE4/FwOqOJH7TJJ5nIVJ9sCRuQSexo B2xoeDvIMF4pIh9S+zET8PJ+vkjGXu1E+LPGdTE4VJtQ2XuMyuwD4ud89BLQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013847; x=1723100247; bh=SMPzZ45r17ezP+iDwALzHCTPtjSY AJ6W7FXGE7PHd2k=; b=VFQMLaiftw9AXD+7wH7g+cqgNo4uhR+3Z7Z8b66IonEI aYDH4FaNhrtohsDCqsAyW25V6NjqK10xVEPAevGOXFKoIGP2CEk6XRGSNPnxRiqH WRwD05/mVDRc3gLRDVPI7s4rNN55YVrrLfBo2FVacZ78r/kUxzpHnTvqN4MLiPuy wbcJmSv0rr9uEwXvta64vTsAhoTOCQKol/Qa98PjGAb+0fWr2RUt1VG+TE8BJCJJ twhaq9h359508XFyK95FOF00fOWkSRO2rA+FFmXS3Hdo9CsRZmjcCfqovJX0z/2p WrKhnoXlHWPeZqqjByXqVAHca0XvfVHBh2VPOJrbJg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepudenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:27 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 059363da (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:22 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:24 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 09/20] config: expose `repo_config_clear()` Message-ID: <63da87696eb361cd4c6952523941172f2f50f438.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: While we already have `repo_config_clear()` as an alternative to `git_config_clear()` that doesn't rely on `the_repository`, it is not exposed to callers outside of the config subsystem. Do so. Signed-off-by: Patrick Steinhardt --- config.c | 2 +- config.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config.c b/config.c index ac89b708e7..476cd73c9e 100644 --- a/config.c +++ b/config.c @@ -2564,7 +2564,7 @@ static void git_config_check_init(struct repository *repo) repo_read_config(repo); } -static void repo_config_clear(struct repository *repo) +void repo_config_clear(struct repository *repo) { if (!repo->config || !repo->config->hash_initialized) return; diff --git a/config.h b/config.h index b13e1bfb8d..8eb3efa0c4 100644 --- a/config.h +++ b/config.h @@ -651,6 +651,7 @@ int git_config_get_string_multi(const char *key, * Resets and invalidates the config cache. */ void git_config_clear(void); +void repo_config_clear(struct repository *repo); /** * Allocates and copies the retrieved string into the `dest` parameter for From patchwork Wed Aug 7 06:57:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755883 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 B73E51AE053 for ; Wed, 7 Aug 2024 06:57:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013854; cv=none; b=qcy3vpKtR+fuJUwXeP353TDX71y5t6I175lUvv0VW/q0gqwB1h8kheyiC2AbY+6Tju1hyoNLCm/A1PZVV0y+ZZyiwWe8khutLOI9nTG83HJ9DTmyacgEBCETXi5DWd4yemgOzYPAxfCNSZShxFiFKKDIm5akVDIANKYpuGGXTY8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013854; c=relaxed/simple; bh=GMv57+A8V9ZLOnNKoe85t84YHzqxr2BCz9U+D4w5D9I=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=dsNYxOZT6skmPHurZ5MVAj4NurJwVdp+U0M5qJm7gBlSlptdN+7eSE/0g0UPjWAwR1cU4xovsO6Obx4pg9lzZEjSqzj64TxyqH7vEafCOTx0OzU94MimGw3NYO8ARoSThUoz8GN5qDUyQcWFza2X+z/aRIfbXL6ZVw9rvu6whYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=nSVXY8Hj; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=EP1Sgu72; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="nSVXY8Hj"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="EP1Sgu72" Received: from compute8.internal (compute8.nyi.internal [10.202.2.227]) by mailfhigh.nyi.internal (Postfix) with ESMTP id C8A9A1151AB2 for ; Wed, 7 Aug 2024 02:57:31 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute8.internal (MEProxy); Wed, 07 Aug 2024 02:57:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013851; x=1723100251; bh=tGIYBPwCfW BxkD2X67rIMywCoAtMOtefRu1kVr1BcKk=; b=nSVXY8HjVpHpfStH9wx+vcJJPY JiTqhIVrkoqhNL1yW5bXwdjrJkOh/+lR0S/vpXp8mx2NnMvdntTDH7oYcis3GC+P A2dUxP/xohazASkGQLxU1bVY86QwMIRZnBUWCyO3nyrcuoxU6aJ62C2HQMetB8fT wF3Haljm1WZZ7QNn76pslaBaCPab/9TOi1sWalzIZBad0DvOz0ElC0F0tIGd3RGx LwmFi3ON7je5zgt2gfOXDIKI/d4zoe+qcU6E7IzO1jYCkF26XO1khraMsDN5n607 7Z9w4wzL0gHjNrSYB37DO5H6yQUmpSaobyevOUqjLehJySvnRsJr81NKBCMw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013851; x=1723100251; bh=tGIYBPwCfWBxkD2X67rIMywCoAtM OtefRu1kVr1BcKk=; b=EP1Sgu72gsZ6TB6A2hl5Gz7CvOnWvvfxMOcWrYCGTcV/ EX6CgnjlwjPhM9A+lQLEV25qIUh2BYIGp0D86x7I5TjTm2aC5SdtGlK6c+F2onjM c1XEgAxjNRCuGovfHnmtStmDSRJ8BAf6EOaAH2s7JC9hk9F0bq78/bzC0iFpLvs1 AOxQmvUXQBsGO+0vK0zGbrLFwLu3QuWBcjmpHPtjw2Dyzjct+D0KNi4rrXYvUd6Y NT12+0qxRfsgh26b4/KIX+FUif9LOUz43mm9AS7s96pFYTER+CsLvBfnsX2A4QZK AsivxAB+Dt65ePD1Nmi5dL4rIOujxT2g2+Jx2Iekcg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepudenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:31 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id ed0552f0 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:27 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:29 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 10/20] config: pass repo to `git_config_get_index_threads()` Message-ID: <03df1277f70faaaf52df24bcb10732c107c2294c.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor `git_config_get_index_threads()` to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the function accordingly. Signed-off-by: Patrick Steinhardt --- config.c | 4 ++-- config.h | 2 +- read-cache.c | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/config.c b/config.c index 476cd73c9e..387c7282e9 100644 --- a/config.c +++ b/config.c @@ -2826,7 +2826,7 @@ int git_config_get_max_percent_split_change(void) return -1; /* default value */ } -int git_config_get_index_threads(int *dest) +int repo_config_get_index_threads(struct repository *r, int *dest) { int is_bool, val; @@ -2836,7 +2836,7 @@ int git_config_get_index_threads(int *dest) return 0; } - if (!git_config_get_bool_or_int("index.threads", &is_bool, &val)) { + if (!repo_config_get_bool_or_int(r, "index.threads", &is_bool, &val)) { if (is_bool) *dest = val ? 0 : 1; else diff --git a/config.h b/config.h index 8eb3efa0c4..3f68b30047 100644 --- a/config.h +++ b/config.h @@ -710,7 +710,7 @@ int git_config_get_maybe_bool(const char *key, int *dest); */ int git_config_get_pathname(const char *key, char **dest); -int git_config_get_index_threads(int *dest); +int repo_config_get_index_threads(struct repository *r, int *dest); int git_config_get_split_index(void); int git_config_get_max_percent_split_change(void); diff --git a/read-cache.c b/read-cache.c index 742369b295..ad09950153 100644 --- a/read-cache.c +++ b/read-cache.c @@ -2267,7 +2267,7 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist) src_offset = sizeof(*hdr); - if (git_config_get_index_threads(&nr_threads)) + if (repo_config_get_index_threads(the_repository, &nr_threads)) nr_threads = 1; /* TODO: does creating more threads than cores help? */ @@ -2787,7 +2787,7 @@ static int record_eoie(void) * used for threading is written by default if the user * explicitly requested threaded index reads. */ - return !git_config_get_index_threads(&val) && val != 1; + return !repo_config_get_index_threads(the_repository, &val) && val != 1; } static int record_ieot(void) @@ -2802,7 +2802,7 @@ static int record_ieot(void) * written by default if the user explicitly requested * threaded index reads. */ - return !git_config_get_index_threads(&val) && val != 1; + return !repo_config_get_index_threads(the_repository, &val) && val != 1; } enum write_extensions { @@ -2875,7 +2875,7 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile, hashwrite(f, &hdr, sizeof(hdr)); - if (!HAVE_THREADS || git_config_get_index_threads(&nr_threads)) + if (!HAVE_THREADS || repo_config_get_index_threads(the_repository, &nr_threads)) nr_threads = 1; if (nr_threads != 1 && record_ieot()) { From patchwork Wed Aug 7 06:57:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755884 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 19E881AE053 for ; Wed, 7 Aug 2024 06:57:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013859; cv=none; b=tQsPHftBrOWroJptdstUH7TsI7iDkJPrN6TyMM/oOanjk9piluSJPpg764HcExQddTEIKAE2+hwkyQQGAjz9Iz839wPEBHieNAhRTGM84K5arzU1euuTzrX3waNerROgEuVL1bzhanT64UyEa6Tzkl5TFzH7IYAGs9Lt0mYPLkM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013859; c=relaxed/simple; bh=LC0PKfXFk0gm/tGvtQaaDamMvw8fooYBESM9GTDRoy0=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=KMlSDbsHVlQhFAlIVhxfp0wJ7atdIX736FgiNpTChlACDz/OI2m21ocM4HTQX8CYcYFkYX3mZ0RcWyjkvt6DNhMiCGxcGPq4M8nJmTiVTuUTNr1kG33laC651iX/UpInG7eEpFaeP5KjbIU0VpYwVqA+b1T4+705VGi+Ys5/Ysc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=OsJjdwdQ; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=nijoAmQU; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="OsJjdwdQ"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="nijoAmQU" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 9A4441151AAC for ; Wed, 7 Aug 2024 02:57:36 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Wed, 07 Aug 2024 02:57:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013856; x=1723100256; bh=XbH2lsV1YW qoIi5HpGlVEtxIJmOXZLcFUaDB/QH5wsg=; b=OsJjdwdQ9yDwzKslTy5shNTZob asFKI0tpCCPy3M6kFy8Nm6yDAw8dsF8nxbetC6CO9xWhX4XGSD/m3vUFVywjn1tE jaC9bgl2PaRLofS8rDXhB0um4Cv0r/bA7IGBX+A/jkS66pfUuRjmgHZ+tvOY7aP3 c8sADdcb0/FgQsHVb5grXZJZAU4ebdRz7MqgU2NnJxGSIxxqAqmiwXf6mAzltt+3 lf79d6HkEuok/Y+/3lyqrmIo02N91ZqKRj50xiF3iIVSUcnTPHdBZEqmZseVA5Xl ioNYUt1U9RhRjpfF+hAonfKeVHHpUF/t3pkYTBt29blEsiD3mTbjvgiQiC/w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013856; x=1723100256; bh=XbH2lsV1YWqoIi5HpGlVEtxIJmOX ZLcFUaDB/QH5wsg=; b=nijoAmQUBwXg0oo2l0zBcz7vU1Nd77WiLAH6wO8ThHU8 +FKp9T4WjZ4vm0SqoJXxL+qRHMHgFPYtgZAJ0dKP7MqVTEbu2CTsvoAkQnPC7/tl I32OL2J8kVt1HK95NPk872CMIkTPXzIP+U7/61DjXqdFtiSclOx48H6Y8GmcMyyl Va3jRXB0iCmiRVu3Y2l62hcqLOXvvo5MOdkOp2agMZ0HKagN6d1zJeoYvZOmOuPu s0HxvatbLejsJ1H0MeCeUrIPvVTu1BJ6GS3uf+p5kO93lOk1qnQJdqKTx9jR9WZi bSLXTe1lJEu4q1ZwMCZPGseeJlwE4IHFXeqCuP6TGQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepfeenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:35 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 5f8ab52c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:31 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:33 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 11/20] config: pass repo to `git_config_get_split_index()` Message-ID: <85311d686e0b747a902efc55546246fc36faa05f.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor `git_config_get_split_index()` to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the function accordingly. Signed-off-by: Patrick Steinhardt --- builtin/update-index.c | 4 ++-- config.c | 4 ++-- config.h | 2 +- read-cache.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/update-index.c b/builtin/update-index.c index d343416ae2..35a1f957ad 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -1156,7 +1156,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) end_odb_transaction(); if (split_index > 0) { - if (git_config_get_split_index() == 0) + if (repo_config_get_split_index(the_repository) == 0) warning(_("core.splitIndex is set to false; " "remove or change it, if you really want to " "enable split index")); @@ -1165,7 +1165,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) else add_split_index(the_repository->index); } else if (!split_index) { - if (git_config_get_split_index() == 1) + if (repo_config_get_split_index(the_repository) == 1) warning(_("core.splitIndex is set to true; " "remove or change it, if you really want to " "disable split index")); diff --git a/config.c b/config.c index 387c7282e9..89fb7ce6b1 100644 --- a/config.c +++ b/config.c @@ -2801,11 +2801,11 @@ int git_config_get_expiry_in_days(const char *key, timestamp_t *expiry, timestam return -1; /* thing exists but cannot be parsed */ } -int git_config_get_split_index(void) +int repo_config_get_split_index(struct repository *r) { int val; - if (!git_config_get_maybe_bool("core.splitindex", &val)) + if (!repo_config_get_maybe_bool(r, "core.splitindex", &val)) return val; return -1; /* default value */ diff --git a/config.h b/config.h index 3f68b30047..35cee9d4ca 100644 --- a/config.h +++ b/config.h @@ -711,7 +711,7 @@ int git_config_get_maybe_bool(const char *key, int *dest); int git_config_get_pathname(const char *key, char **dest); int repo_config_get_index_threads(struct repository *r, int *dest); -int git_config_get_split_index(void); +int repo_config_get_split_index(struct repository *r); int git_config_get_max_percent_split_change(void); /* This dies if the configured or default date is in the future */ diff --git a/read-cache.c b/read-cache.c index ad09950153..12c2da5a8b 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1945,7 +1945,7 @@ static void tweak_untracked_cache(struct index_state *istate) static void tweak_split_index(struct index_state *istate) { - switch (git_config_get_split_index()) { + switch (repo_config_get_split_index(the_repository)) { case -1: /* unset: do nothing */ break; case 0: /* false */ From patchwork Wed Aug 7 06:57:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755885 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 5E0661AE053 for ; Wed, 7 Aug 2024 06:57:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013863; cv=none; b=Wlbdbi1j3XZB3JjawOhczvKOVpM226UKVPs3ReXfRpQjsCVhPdYLGIZPk1vFlm5QIUk1z33wyd23HhfKJGvDVFwfKT+EsZ07WtvRWuRPe48Kf8z/zS44yhDDu5yIEZtjmSa4/nagDRNNngUqodQmyCcxlSdvw5wnhrL+Xbuo9l8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013863; c=relaxed/simple; bh=ap/mCdk+ccXvTWSUhTm2IZLhzGtpaf53htMbECSd7jE=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=UO9OROD8qM8Ru+0EHA+qau+brpyL9dPMNtLmv4MWdJjP4pNRCYjhoF0VCxlx7jBdhAmHhh9+olunmLWqrQu6xPtIQ4J2HXUrgUlz2Wl+R9KWK/10YutZAEQ9X3xzNHXI6KEnFVCjkOFXIkAG/BG3Jjl+XIj1FpFhBedpMWQ/HdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=S0C2FG33; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=absLo+B0; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="S0C2FG33"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="absLo+B0" Received: from compute8.internal (compute8.nyi.internal [10.202.2.227]) by mailfout.nyi.internal (Postfix) with ESMTP id 6B78C138FCC4 for ; Wed, 7 Aug 2024 02:57:41 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute8.internal (MEProxy); Wed, 07 Aug 2024 02:57:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013861; x=1723100261; bh=av4cxzc/ly je2jr+Vtg7ow9KGhnyhRTFgX2puoK1CpM=; b=S0C2FG33aEpxPZku9TIR9PdilF mv6WbaiIw7U12wEtribzVc+v4da6Bazsq9ncdqLjArzNhvJZNF97Mj9Ac0WMSAEh JmNWC/ZNAo6nHcz2TANacqTRtTU+QAPQxiNW7XVH7Eb9DV1IqnK0fNiEvkqzzpR+ LoAV44paVbcpFj+0k/TWNCy5zmqIyX4ClWntLHvWRHe8k3FhV3Gd7ShEwCVNenl9 IPReEmx/2XA/WEXTS9YylOuwSYI0IzJQi8DRmwP2IitePnf2KzwUC+af6hf8n+Yw mIywl6iPs4wsM9UV2Myf3eoXD8YarXy4DT9NkjM1FlTlyYkATvdTO3fvOkiQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013861; x=1723100261; bh=av4cxzc/lyje2jr+Vtg7ow9KGhny hRTFgX2puoK1CpM=; b=absLo+B025jMsCPz/JwcjrQe2JNRCr+wNsRZQQlzEMcJ 1g4KZaFI9GuboBVt9F+5dbBdKM3odvve5y0sWyBq1L2tXtkjN327luDIz3dK/P4O zbNbTP2ByHP6psrCJeImZakyzaYYFjfuFVg4eTe5aUsgL9aAKYB1adL+ADwMolVf R/VKgpMxWo7UcS8E/D3vcGIBMSbakKjpFH+byaUu2oWCJqWBhbRSHXhZhnbkIOmY vJPnfIhiEqpOV+Mqcj0WUk3jxjj/+ITGfuX5Cu1vuWAHNmX7Du5mreQ17mYx9ohv 5vVpq3PHNnXUnzSmMfvDQKLZfBWbQgeW62Ht2G8QMw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepvdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:40 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id dcbac6cb (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:36 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:38 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 12/20] config: pass repo to `git_config_get_max_percent_split_change()` Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor `git_config_get_max_percent_split_change()` to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the function accordingly. Signed-off-by: Patrick Steinhardt --- config.c | 4 ++-- config.h | 2 +- read-cache.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config.c b/config.c index 89fb7ce6b1..f1d2fb6d4c 100644 --- a/config.c +++ b/config.c @@ -2811,11 +2811,11 @@ int repo_config_get_split_index(struct repository *r) return -1; /* default value */ } -int git_config_get_max_percent_split_change(void) +int repo_config_get_max_percent_split_change(struct repository *r) { int val = -1; - if (!git_config_get_int("splitindex.maxpercentchange", &val)) { + if (!repo_config_get_int(r, "splitindex.maxpercentchange", &val)) { if (0 <= val && val <= 100) return val; diff --git a/config.h b/config.h index 35cee9d4ca..dd7127b8e9 100644 --- a/config.h +++ b/config.h @@ -712,7 +712,7 @@ int git_config_get_pathname(const char *key, char **dest); int repo_config_get_index_threads(struct repository *r, int *dest); int repo_config_get_split_index(struct repository *r); -int git_config_get_max_percent_split_change(void); +int repo_config_get_max_percent_split_change(struct repository *r); /* This dies if the configured or default date is in the future */ int git_config_get_expiry(const char *key, const char **output); diff --git a/read-cache.c b/read-cache.c index 12c2da5a8b..1e52db7f36 100644 --- a/read-cache.c +++ b/read-cache.c @@ -3275,7 +3275,7 @@ static const int default_max_percent_split_change = 20; static int too_many_not_shared_entries(struct index_state *istate) { int i, not_shared = 0; - int max_split = git_config_get_max_percent_split_change(); + int max_split = repo_config_get_max_percent_split_change(the_repository); switch (max_split) { case -1: From patchwork Wed Aug 7 06:57:42 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755886 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 F2F1D18FC9B for ; Wed, 7 Aug 2024 06:57:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013870; cv=none; b=D42JeXd8sGAjLNTA3jUZok49ckXO9WZbCzgzpfEbrt6p2vTA6fVw+FqCQzostcpKlMghXy/dYHBUrnZ6VsG0sXhkBgYmlX5pwyRKJxmuvRFI20LFoj/Y2dG0z0To7l7Jt34pEEc05KO/ZW9An58A9Dks5YsPKhwHI9b74dOf39Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013870; c=relaxed/simple; bh=MhrjKJd/5huM/D+019Oz9tw2A8ihO5UnIGLshPzTE28=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=JRhJl588rGdeVdZeY7Ypy7zzv5xx3H3MiIZz0AiPOQWRYcbxY1NYvQ3mBtEaOyynjBSWJ/ki+cN5eNmvfZ7kNn0stx/MrmdiWU+tA0SmSiIjXmtEY+tXnZSrMqwywLT1JZ674PC6qd1aUi+cO38xx6GpO3HNupfc+4ukg1faKrE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=O0RqV0r7; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=ApCU8gMp; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="O0RqV0r7"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="ApCU8gMp" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 3DDF81151AB2 for ; Wed, 7 Aug 2024 02:57:46 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Aug 2024 02:57:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013866; x=1723100266; bh=YmhYvFropu C0NDsbzNTvL+9aK3hj2+sCilCg4suKUzw=; b=O0RqV0r7PVPmHvCvg2wCRsR6Ku ilPfBGoDxrST4ftXkvluNyHTwcAbcrGtvYbp3JT1CbdwiV6W0DdQc6oCvX9xPP73 21arQU9YtvT4NdiX1JDJqhy3U9Kt2MRQREUxNXytCMV/m8yWYBX9iOvQxVPLvYe3 tQdNdt7ryZjnWPCysQhA/We15xLSnnMJUegepcixD7XfujQF2ZI47MSlQFtnpNrT grN3SRJgIi0lpHXOu3ngp39Tlg53UWYVZSuTB9Pjc3WUlvDMPHps0WlQAqUTJkL5 NYTxM4c0oF1d2YOWUtUOPZB8MUC+Hu3+IRF7mrFdG42K8hLu2rsPYcmwXKhA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013866; x=1723100266; bh=YmhYvFropuC0NDsbzNTvL+9aK3hj 2+sCilCg4suKUzw=; b=ApCU8gMpJYIMq0Qvr2R8/c1ZlHkBUbygltfkHRV3y5u9 W0rPFhxiXl2ygwwY9OVXQ8WBIgJPT2ap6kaeLu9iBbYhPcpmGPFb7cSs6nAnPKa+ uZ3cDL/ZaWcaX44DoHtIK+OLbaQc1oXgb/roTb8O4h/GWkCtfVB2BSuLoPKs7Mts PeKnnANBXZvQxi63PQO9KOPc2Skp0COhODpTztroTEx5NDtVheW7AGlTyW4Etyu6 NOe8g1f1SmJZq97pP2vlDWQ5FV4nAKPDD4CEZCB7JvCXMPA605GS+epm2d5zeVYd U/4a+ArWBFmQ0Yd0iCumMZj4qDeHBZhnVb5hSIRgMw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepvdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:45 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 3db41196 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:40 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:42 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 13/20] config: pass repo to `git_config_get_expiry()` Message-ID: <412cc514e8f4b40c45d1c80224bba72688c4c576.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor `git_config_get_expiry()` to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the function accordingly. Signed-off-by: Patrick Steinhardt --- builtin/gc.c | 6 +++--- config.c | 4 ++-- config.h | 2 +- read-cache.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/builtin/gc.c b/builtin/gc.c index 2ca6288c6b..dc87c65906 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -167,9 +167,9 @@ static void gc_config(void) git_config_get_bool("gc.autodetach", &detach_auto); git_config_get_bool("gc.cruftpacks", &cruft_packs); git_config_get_ulong("gc.maxcruftsize", &max_cruft_size); - git_config_get_expiry("gc.pruneexpire", &prune_expire); - git_config_get_expiry("gc.worktreepruneexpire", &prune_worktrees_expire); - git_config_get_expiry("gc.logexpiry", &gc_log_expire); + repo_config_get_expiry(the_repository, "gc.pruneexpire", &prune_expire); + repo_config_get_expiry(the_repository, "gc.worktreepruneexpire", &prune_worktrees_expire); + repo_config_get_expiry(the_repository, "gc.logexpiry", &gc_log_expire); git_config_get_ulong("gc.bigpackthreshold", &big_pack_threshold); git_config_get_ulong("pack.deltacachesize", &max_delta_cache_size); diff --git a/config.c b/config.c index f1d2fb6d4c..4138dc50ce 100644 --- a/config.c +++ b/config.c @@ -2766,9 +2766,9 @@ int git_config_get_pathname(const char *key, char **dest) return repo_config_get_pathname(the_repository, key, dest); } -int git_config_get_expiry(const char *key, const char **output) +int repo_config_get_expiry(struct repository *r, const char *key, const char **output) { - int ret = git_config_get_string(key, (char **)output); + int ret = repo_config_get_string(r, key, (char **)output); if (ret) return ret; if (strcmp(*output, "now")) { diff --git a/config.h b/config.h index dd7127b8e9..7674617a1d 100644 --- a/config.h +++ b/config.h @@ -715,7 +715,7 @@ int repo_config_get_split_index(struct repository *r); int repo_config_get_max_percent_split_change(struct repository *r); /* This dies if the configured or default date is in the future */ -int git_config_get_expiry(const char *key, const char **output); +int repo_config_get_expiry(struct repository *r, const char *key, const char **output); /* parse either "this many days" integer, or "5.days.ago" approxidate */ int git_config_get_expiry_in_days(const char *key, timestamp_t *, timestamp_t now); diff --git a/read-cache.c b/read-cache.c index 1e52db7f36..18394d7180 100644 --- a/read-cache.c +++ b/read-cache.c @@ -3184,8 +3184,8 @@ static unsigned long get_shared_index_expire_date(void) static int shared_index_expire_date_prepared; if (!shared_index_expire_date_prepared) { - git_config_get_expiry("splitindex.sharedindexexpire", - &shared_index_expire); + repo_config_get_expiry(the_repository, "splitindex.sharedindexexpire", + &shared_index_expire); shared_index_expire_date = approxidate(shared_index_expire); shared_index_expire_date_prepared = 1; } From patchwork Wed Aug 7 06:57:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755887 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 CFF9C1B86D5 for ; Wed, 7 Aug 2024 06:57:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013872; cv=none; b=kWpYnYblyBJVuvm0fUG4s8wRF04xGwqRmWZQHQrfigTR+WxK5sK8e0lVjVz3olc139NeGN5hXChwrTVS+hyLmv8OiWS8Ykvbf4fj6qf2tSBVYk5Ss3h2xhVa0U53kSdpdCPd5Zw7I1HMu58SU/qa93T2hL8zsp02JxGZbeadE3U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013872; c=relaxed/simple; bh=d2SSJ0CCy1e6sXNMbn4jR8lSoVMZOaq5ytG7dyACQJg=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=mITjF1dOBTLhHcRL3Zg8sDLrFNy8zpv5LPp6KBKLTBo/sI3NhLRn+Qi4qRzmijVd/eSybQXF6yv2IbFJQfuhhrYbZRKbIFUKebAQVr1ePapCdxTP1s8k0JnffgSXnaNQ0uVk42fX7KuczLieLYVlfCTDtKITEU8jHmTLaQIECfY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=Sj3eE66i; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=q+wsXjXz; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="Sj3eE66i"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="q+wsXjXz" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfhigh.nyi.internal (Postfix) with ESMTP id 12CBF1151AEE for ; Wed, 7 Aug 2024 02:57:50 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Aug 2024 02:57:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013870; x=1723100270; bh=rmUGikcNLo urq2e44V/TalVizwbgSEJ7ds5psnme3VU=; b=Sj3eE66iGgVbR7Taepe6Nfm/Ej RWwFAQK45TDV997y+WmvnpMk9Z3y/H75+wbW20GH3ROMp0dmHjzS+tOf+CICBbN/ lk5kJb8Ci/jbiTRIsksNT4yiPuYd0cnrdVYV6xLy3ttnnA7AUNcK/EDvLcYihXhM 4m9DZ++w9YKLFL9FgEOdyIRg5Ne/KdpZxf3ZGBRQuBmgiTeCTpoYU2ldyltweDwJ UFFiL+h55dnSqZAvuJZVom/Ob4PT/faAbFJvItaSuEA4lXvtxa4f8wPA7mIY2Hpl rkRZWaLUeF75lmSXKBmeNz03ja3kCI4B5s1zjzAJDJYX1dySg7miRUwaxDdg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013870; x=1723100270; bh=rmUGikcNLourq2e44V/TalVizwbg SEJ7ds5psnme3VU=; b=q+wsXjXzdDtrVx2ocMSVOce3e06Y4u6DL2rA+bLYyBQ1 0WIdH5BQ2VvkoHfscExIfm+STfC8bvdiqwwik6OmYW9SuJ43iIJ5zfL3abtA4nhS ITP4MxiKbFppW4BvOUgQxmgwx9/ivuCZP9v1ICUXEUWxJhu2mJZ56nTzT0fdeB6U HaK5NzNhDE8kAYft27dULTwCkL7G3XedZQ4fVK2XjBUCEnhtyPSxN3v0/VrT5qaY kfkzqXHfLeAFQVyuhIoyzZlueOw6tuCJgvjIBoV28Dnwc8ymotofQg8EL9iYO+wy MUXpFfBtFO6jqNn54IiMCX1+gQGI0we574cVgZSlbg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepfeenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:49 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id ea38f439 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:45 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:47 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 14/20] config: pass repo to `git_config_get_expiry_in_days()` Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor `git_config_get_expiry_in_days()` to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the function accordingly. Signed-off-by: Patrick Steinhardt --- config.c | 5 +++-- config.h | 3 ++- rerere.c | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/config.c b/config.c index 4138dc50ce..33d9af29c8 100644 --- a/config.c +++ b/config.c @@ -2779,13 +2779,14 @@ int repo_config_get_expiry(struct repository *r, const char *key, const char **o return ret; } -int git_config_get_expiry_in_days(const char *key, timestamp_t *expiry, timestamp_t now) +int repo_config_get_expiry_in_days(struct repository *r, const char *key, + timestamp_t *expiry, timestamp_t now) { const char *expiry_string; intmax_t days; timestamp_t when; - if (git_config_get_string_tmp(key, &expiry_string)) + if (repo_config_get_string_tmp(r, key, &expiry_string)) return 1; /* no such thing */ if (git_parse_signed(expiry_string, &days, maximum_signed_value_of_type(int))) { diff --git a/config.h b/config.h index 7674617a1d..3a5016afea 100644 --- a/config.h +++ b/config.h @@ -718,7 +718,8 @@ int repo_config_get_max_percent_split_change(struct repository *r); int repo_config_get_expiry(struct repository *r, const char *key, const char **output); /* parse either "this many days" integer, or "5.days.ago" approxidate */ -int git_config_get_expiry_in_days(const char *key, timestamp_t *, timestamp_t now); +int repo_config_get_expiry_in_days(struct repository *r, const char *key, + timestamp_t *, timestamp_t now); /** * First prints the error message specified by the caller in `err` and then diff --git a/rerere.c b/rerere.c index 3a3888cce2..bdd9fb2ff8 100644 --- a/rerere.c +++ b/rerere.c @@ -1203,8 +1203,8 @@ void rerere_gc(struct repository *r, struct string_list *rr) if (setup_rerere(r, rr, 0) < 0) return; - git_config_get_expiry_in_days("gc.rerereresolved", &cutoff_resolve, now); - git_config_get_expiry_in_days("gc.rerereunresolved", &cutoff_noresolve, now); + repo_config_get_expiry_in_days(the_repository, "gc.rerereresolved", &cutoff_resolve, now); + repo_config_get_expiry_in_days(the_repository, "gc.rerereunresolved", &cutoff_noresolve, now); git_config(git_default_config, NULL); dir = opendir(git_path("rr-cache")); if (!dir) From patchwork Wed Aug 7 06:57:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755888 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 E4A6D1B86D5 for ; Wed, 7 Aug 2024 06:57:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013877; cv=none; b=SMC9Yp5unV+qUoIeri9p6l8YkbORJAb8wyvZOMvRqRfOPN19M8Zy9k5BVpKwQlfWGSqHL2TGAFBP0Uslsni/8WAGF35gxlE9Uoi6d4f6TsjKh/SABg93CPOfe2X/CU079pfwaNJPI2B13xjyqX1Dj+1iU1WchO0ATVO+XYyVJwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013877; c=relaxed/simple; bh=u6acBVlT9Y+Mj9j+926PrsRvtC7tXnLgLHm7DOnYtxo=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=ETyuIgw4SSOHbFh3s6X0Q18ewst+hsi50k5dAIz7i2e2+CH7hfYDKxeum06WxQeX3Pe3rdH6+qtrN+szFAOkWPYMlViJD2Mb9NXIAnGwokQ1L1Qv+WB1tx/+fKMOlk2N7zVLXNCJFkXqCGyZf/GJ8yDCdO6mKm1NJYn2DFKvYxc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=X/zI2j0d; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=t3luCrxk; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="X/zI2j0d"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="t3luCrxk" Received: from compute8.internal (compute8.nyi.internal [10.202.2.227]) by mailfhigh.nyi.internal (Postfix) with ESMTP id D72F51151AED for ; Wed, 7 Aug 2024 02:57:54 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute8.internal (MEProxy); Wed, 07 Aug 2024 02:57:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013874; x=1723100274; bh=v/elHaq+sW a3hX3puCxB3mQ88HCQOyyeMLirkaejxQQ=; b=X/zI2j0dJ+4NCRY4GHs08VvaTr h/b4eeNWMlsCLVWKIP33uFBb0JIIjvw9QhAoEFqHYuhKi0PjAIO66rv6RiVQZ3Jh mV1Na7RAkS2y+hD5d0DviYt/rA2eyo2TYiS9eLpf+7tf+AG+hpQ3ZHRuR00QQlyM uxYTSkUwM0xOcO0jjGSlJOzAs5UMv80kdvd54Kcjd4/Sdd1ly21Q+zBvVIMVZ8jD UCmZ1cDxcdFgctB+X2to2NJmvOSz8FcENAYHR7eIIYVx0IM+HpLqliUQWFx6kDcI gWUqHpbJhdSg9QswEm5l2GhJkyARpzxot6QYH0ceyFvM30W5kQUS/maT4Arw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013874; x=1723100274; bh=v/elHaq+sWa3hX3puCxB3mQ88HCQ OyyeMLirkaejxQQ=; b=t3luCrxkOKkN68n4xXgitqBezYKZNN93msRvM03HZIvd //FMnWUpBo63QuWGXa7h5cIzHDStFGAHrGVtUB/wuYy8//4JmfHdtNWLu5iLggmg Mkxm+0h4iDNR/By85wJjjvK1h+k8hDiOg0LYBT+A/Lh3U/h/EYpcktvgWWMffes1 C/cJNwbGnGg8eIpKY2v7YF0sD5KsfhryUtZCnvCejCq3dqvoEqRA+fL1O9DJi+lL +qFoVDqF5fb56MvpaWzQf63pebAgzJnxfVwam2LS0SKeWQEWklI5A5UqWg0pbJTU KVdifYhzpoma/BN53eeW7CPWdlpCzBX+KSee+B7LUA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepfeenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:54 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id ff5a1457 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:49 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:51 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 15/20] config: pass repo to `git_die_config()` Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor `git_die_config()` to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the function accordingly. Signed-off-by: Patrick Steinhardt --- builtin/fast-import.c | 4 ++-- builtin/notes.c | 2 +- config.c | 12 ++++++------ config.h | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/builtin/fast-import.c b/builtin/fast-import.c index d21c4053a7..0249503c70 100644 --- a/builtin/fast-import.c +++ b/builtin/fast-import.c @@ -3481,8 +3481,8 @@ static void git_pack_config(void) if (!git_config_get_int("pack.indexversion", &indexversion_value)) { pack_idx_opts.version = indexversion_value; if (pack_idx_opts.version > 2) - git_die_config("pack.indexversion", - "bad pack.indexVersion=%"PRIu32, pack_idx_opts.version); + git_die_config(the_repository, "pack.indexversion", + "bad pack.indexVersion=%"PRIu32, pack_idx_opts.version); } if (!git_config_get_ulong("pack.packsizelimit", &packsizelimit_value)) max_packsize = packsizelimit_value; diff --git a/builtin/notes.c b/builtin/notes.c index d9c356e354..c0fa86d847 100644 --- a/builtin/notes.c +++ b/builtin/notes.c @@ -868,7 +868,7 @@ static int git_config_get_notes_strategy(const char *key, if (git_config_get_string(key, &value)) return 1; if (parse_notes_merge_strategy(value, strategy)) - git_die_config(key, _("unknown notes merge strategy %s"), value); + git_die_config(the_repository, key, _("unknown notes merge strategy %s"), value); free(value); return 0; diff --git a/config.c b/config.c index 33d9af29c8..e35fc90238 100644 --- a/config.c +++ b/config.c @@ -2611,7 +2611,7 @@ int repo_config_get_string(struct repository *repo, git_config_check_init(repo); ret = git_configset_get_string(repo->config, key, dest); if (ret < 0) - git_die_config(key, NULL); + git_die_config(repo, key, NULL); return ret; } @@ -2622,7 +2622,7 @@ int repo_config_get_string_tmp(struct repository *repo, git_config_check_init(repo); ret = git_configset_get_string_tmp(repo->config, key, dest); if (ret < 0) - git_die_config(key, NULL); + git_die_config(repo, key, NULL); return ret; } @@ -2668,7 +2668,7 @@ int repo_config_get_pathname(struct repository *repo, git_config_check_init(repo); ret = git_configset_get_pathname(repo->config, key, dest); if (ret < 0) - git_die_config(key, NULL); + git_die_config(repo, key, NULL); return ret; } @@ -2774,7 +2774,7 @@ int repo_config_get_expiry(struct repository *r, const char *key, const char **o if (strcmp(*output, "now")) { timestamp_t now = approxidate("now"); if (approxidate(*output) >= now) - git_die_config(key, _("Invalid %s: '%s'"), key, *output); + git_die_config(r, key, _("Invalid %s: '%s'"), key, *output); } return ret; } @@ -2858,7 +2858,7 @@ void git_die_config_linenr(const char *key, const char *filename, int linenr) key, filename, linenr); } -void git_die_config(const char *key, const char *err, ...) +void git_die_config(struct repository *r, const char *key, const char *err, ...) { const struct string_list *values; struct key_value_info *kv_info; @@ -2870,7 +2870,7 @@ void git_die_config(const char *key, const char *err, ...) error_fn(err, params); va_end(params); } - if (git_config_get_value_multi(key, &values)) + if (repo_config_get_value_multi(r, key, &values)) BUG("for key '%s' we must have a value to report on", key); kv_info = values->items[values->nr - 1].util; git_die_config_linenr(key, kv_info->filename, kv_info->linenr); diff --git a/config.h b/config.h index 3a5016afea..947307c591 100644 --- a/config.h +++ b/config.h @@ -726,7 +726,8 @@ int repo_config_get_expiry_in_days(struct repository *r, const char *key, * dies printing the line number and the file name of the highest priority * value for the configuration variable `key`. */ -NORETURN void git_die_config(const char *key, const char *err, ...) __attribute__((format(printf, 2, 3))); +NORETURN void git_die_config(struct repository *r, const char *key, const char *err, ...) + __attribute__((format(printf, 3, 4))); /** * Helper function which formats the die error message according to the From patchwork Wed Aug 7 06:57:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755889 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 54BB61B86DE for ; Wed, 7 Aug 2024 06:58:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013884; cv=none; b=IT3BZ4QPS2EQOKuI65lbgk2krDUYBU+rEnHVlTOHrJK4gChE/mHWD0UzaYP6qNklUcWbu2TOiZclIdjCtl0cw7DKFbbe8EDSGs+bA5m2+mKsQVgGz54eD6qiSBX3CQ7dBaL5F/TvyYBTSSmvncsVP17NskFKcppXhoy/iG1RA0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013884; c=relaxed/simple; bh=A4ySnJYc4Rm5cawAlpk1Zi3Zj0JoVuonAG45xR7KzN4=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=QvWjlUU5j3foCJsOKLtmvNv8V4XZ+e8+cJZbxe7wg4l9tSFNPjv4shyGGQoTBi/IaXMx/k+IN/dGQGgxrsMZV7bozgLRzjzjai70X6KuQjQRvA6SycV2G554EYp/HF1GD26RZn/Yh+fK593CFNjDf0sgVS0APDJgkQKQN5d1DKY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=S5NNMrOy; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=XKuyAd6J; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="S5NNMrOy"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="XKuyAd6J" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfhigh.nyi.internal (Postfix) with ESMTP id AA7201151AEE for ; Wed, 7 Aug 2024 02:57:59 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Aug 2024 02:57:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013879; x=1723100279; bh=FO1xFe5RMI xTPmFaz2Fb9C25+1uqAnglfJIkWYKiPVQ=; b=S5NNMrOykVaccArdOjL9Cbhs20 cNnDykna/EruzsQ52BhQ9MhlN4J/vJnFdjniRQ7iAli35e6xX7RhLDKU+2keATmH w57DOTQo4wTaa/etmKavpV9fIjp67fYtcguve6Ae1waVSMdElx2QhZPRkcJvv95O EhcHHnwDAucxcD2egPcrrUBzZmDVTl4EMFVWTl18WI0XMhWTxtGQOFL6XmnqBAK1 0HXe+6xl7LONS838B8XLRtCGGpkYVuScaVQpZfpODMEHy5UnHK4SCUbp4rUsmyaZ mEXMgqCCBfn2che9G9NizZfYrYydJ7QBbEw6NCjkBucoTOhzIRXDwaTlkfOw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013879; x=1723100279; bh=FO1xFe5RMIxTPmFaz2Fb9C25+1uq AnglfJIkWYKiPVQ=; b=XKuyAd6JbOewn8Yo+kTYoPzFWuOykfDsdim/QpvqG9w0 ytefSj9YZ4GisBpKRoUmPQnjUhsj+NMG00G9QUNEDmosbEc9rELmdp/mg+auK+D/ 7hepWxheidtStkFiHAQmAMNw+0pz53J1V2kM2qZghP5Gopm5bqbrJhpL2yfurDP5 bIeTNvbRSVwu8nsONeguGfvlLK9vAGhDSgQMjT71Sto5JLJdLvC9LadTeVvTZXZK ig6Xj0Xg1p5Z+JUtreYq3v+ABP3Zxn6K818LWHsZi3FQ69Sx9KRhjWlGjl50p6KP m/sUUtT6Z4yc5ypXr80lfzJEun0xYDx4KMfOAnz0WA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepgeenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:57:59 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 7ce80e96 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:54 +0000 (UTC) Date: Wed, 7 Aug 2024 08:57:56 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 16/20] config: pass repo to functions that rename or copy sections Message-ID: <980533972ce73c0d7a4450c2ebb514231c3ca649.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Refactor functions that rename or copy config sections to accept a `struct repository` such that we can get rid of the implicit dependency on `the_repository`. Rename the functions accordingly. Signed-off-by: Patrick Steinhardt --- builtin/branch.c | 7 ++++--- builtin/config.c | 16 ++++++++-------- builtin/remote.c | 4 ++-- builtin/submodule--helper.c | 2 +- config.c | 30 ++++++++++++++++-------------- config.h | 8 ++++---- submodule.c | 2 +- 7 files changed, 36 insertions(+), 33 deletions(-) diff --git a/builtin/branch.c b/builtin/branch.c index 48cac74f97..3f870741bf 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -210,7 +210,7 @@ static void delete_branch_config(const char *branchname) { struct strbuf buf = STRBUF_INIT; strbuf_addf(&buf, "branch.%s", branchname); - if (git_config_rename_section(buf.buf, NULL) < 0) + if (repo_config_rename_section(the_repository, buf.buf, NULL) < 0) warning(_("update of config-file failed")); strbuf_release(&buf); } @@ -659,9 +659,10 @@ static void copy_or_rename_branch(const char *oldname, const char *newname, int strbuf_addf(&oldsection, "branch.%s", interpreted_oldname); strbuf_addf(&newsection, "branch.%s", interpreted_newname); - if (!copy && git_config_rename_section(oldsection.buf, newsection.buf) < 0) + if (!copy && repo_config_rename_section(the_repository, oldsection.buf, newsection.buf) < 0) die(_("branch is renamed, but update of config-file failed")); - if (copy && strcmp(interpreted_oldname, interpreted_newname) && git_config_copy_section(oldsection.buf, newsection.buf) < 0) + if (copy && strcmp(interpreted_oldname, interpreted_newname) && + repo_config_copy_section(the_repository, oldsection.buf, newsection.buf) < 0) die(_("branch is copied, but update of config-file failed")); strbuf_release(&oldref); strbuf_release(&newref); diff --git a/builtin/config.c b/builtin/config.c index 20a0b64090..e00d983596 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -1026,8 +1026,8 @@ static int cmd_config_rename_section(int argc, const char **argv, const char *pr location_options_init(&location_opts, prefix); check_write(&location_opts.source); - ret = git_config_rename_section_in_file(location_opts.source.file, - argv[0], argv[1]); + ret = repo_config_rename_section_in_file(the_repository, location_opts.source.file, + argv[0], argv[1]); if (ret < 0) goto out; else if (!ret) @@ -1055,8 +1055,8 @@ static int cmd_config_remove_section(int argc, const char **argv, const char *pr location_options_init(&location_opts, prefix); check_write(&location_opts.source); - ret = git_config_rename_section_in_file(location_opts.source.file, - argv[0], NULL); + ret = repo_config_rename_section_in_file(the_repository, location_opts.source.file, + argv[0], NULL); if (ret < 0) goto out; else if (!ret) @@ -1353,8 +1353,8 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix) else if (actions == ACTION_RENAME_SECTION) { check_write(&location_opts.source); check_argc(argc, 2, 2); - ret = git_config_rename_section_in_file(location_opts.source.file, - argv[0], argv[1]); + ret = repo_config_rename_section_in_file(the_repository, location_opts.source.file, + argv[0], argv[1]); if (ret < 0) goto out; else if (!ret) @@ -1365,8 +1365,8 @@ static int cmd_config_actions(int argc, const char **argv, const char *prefix) else if (actions == ACTION_REMOVE_SECTION) { check_write(&location_opts.source); check_argc(argc, 1, 1); - ret = git_config_rename_section_in_file(location_opts.source.file, - argv[0], NULL); + ret = repo_config_rename_section_in_file(the_repository, location_opts.source.file, + argv[0], NULL); if (ret < 0) goto out; else if (!ret) diff --git a/builtin/remote.c b/builtin/remote.c index 08292498bd..fef3026ef4 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -736,7 +736,7 @@ static int mv(int argc, const char **argv, const char *prefix) strbuf_addf(&buf, "remote.%s", rename.old_name); strbuf_addf(&buf2, "remote.%s", rename.new_name); - if (git_config_rename_section(buf.buf, buf2.buf) < 1) + if (repo_config_rename_section(the_repository, buf.buf, buf2.buf) < 1) return error(_("Could not rename config section '%s' to '%s'"), buf.buf, buf2.buf); @@ -944,7 +944,7 @@ static int rm(int argc, const char **argv, const char *prefix) if (!result) { strbuf_addf(&buf, "remote.%s", remote->name); - if (git_config_rename_section(buf.buf, NULL) < 1) + if (repo_config_rename_section(the_repository, buf.buf, NULL) < 1) return error(_("Could not remove config section '%s'"), buf.buf); handle_push_default(remote->name, NULL); diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index f1218a1995..662c87c06c 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -1455,7 +1455,7 @@ static void deinit_submodule(const char *path, const char *prefix, * remove the whole section so we have a clean state when * the user later decides to init this submodule again */ - git_config_rename_section_in_file(NULL, sub_key, NULL); + repo_config_rename_section_in_file(the_repository, NULL, sub_key, NULL); if (!(flags & OPT_QUIET)) printf(_("Submodule '%s' (%s) unregistered for path '%s'\n"), sub->name, sub->url, displaypath); diff --git a/config.c b/config.c index e35fc90238..ed39922dbb 100644 --- a/config.c +++ b/config.c @@ -3697,9 +3697,11 @@ static int section_name_is_ok(const char *name) #define GIT_CONFIG_MAX_LINE_LEN (512 * 1024) /* if new_name == NULL, the section is removed instead */ -static int git_config_copy_or_rename_section_in_file(const char *config_filename, - const char *old_name, - const char *new_name, int copy) +static int repo_config_copy_or_rename_section_in_file( + struct repository *r, + const char *config_filename, + const char *old_name, + const char *new_name, int copy) { int ret = 0, remove = 0; char *filename_buf = NULL; @@ -3720,7 +3722,7 @@ static int git_config_copy_or_rename_section_in_file(const char *config_filename } if (!config_filename) - config_filename = filename_buf = git_pathdup("config"); + config_filename = filename_buf = repo_git_path(r, "config"); out_fd = hold_lock_file_for_update(&lock, config_filename, 0); if (out_fd < 0) { @@ -3863,28 +3865,28 @@ static int git_config_copy_or_rename_section_in_file(const char *config_filename return ret; } -int git_config_rename_section_in_file(const char *config_filename, - const char *old_name, const char *new_name) +int repo_config_rename_section_in_file(struct repository *r, const char *config_filename, + const char *old_name, const char *new_name) { - return git_config_copy_or_rename_section_in_file(config_filename, + return repo_config_copy_or_rename_section_in_file(r, config_filename, old_name, new_name, 0); } -int git_config_rename_section(const char *old_name, const char *new_name) +int repo_config_rename_section(struct repository *r, const char *old_name, const char *new_name) { - return git_config_rename_section_in_file(NULL, old_name, new_name); + return repo_config_rename_section_in_file(r, NULL, old_name, new_name); } -int git_config_copy_section_in_file(const char *config_filename, - const char *old_name, const char *new_name) +int repo_config_copy_section_in_file(struct repository *r, const char *config_filename, + const char *old_name, const char *new_name) { - return git_config_copy_or_rename_section_in_file(config_filename, + return repo_config_copy_or_rename_section_in_file(r, config_filename, old_name, new_name, 1); } -int git_config_copy_section(const char *old_name, const char *new_name) +int repo_config_copy_section(struct repository *r, const char *old_name, const char *new_name) { - return git_config_copy_section_in_file(NULL, old_name, new_name); + return repo_config_copy_section_in_file(r, NULL, old_name, new_name); } /* diff --git a/config.h b/config.h index 947307c591..589d6dae26 100644 --- a/config.h +++ b/config.h @@ -392,11 +392,11 @@ void repo_config_set_multivar_in_file(struct repository *r, * If NULL is passed through `new_name` parameter, * the section will be removed from the config file. */ -int git_config_rename_section(const char *, const char *); +int repo_config_rename_section(struct repository *, const char *, const char *); -int git_config_rename_section_in_file(const char *, const char *, const char *); -int git_config_copy_section(const char *, const char *); -int git_config_copy_section_in_file(const char *, const char *, const char *); +int repo_config_rename_section_in_file(struct repository *, const char *, const char *, const char *); +int repo_config_copy_section(struct repository *, const char *, const char *); +int repo_config_copy_section_in_file(struct repository *, const char *, const char *, const char *); int git_config_system(void); int config_error_nonbool(const char *); #if defined(__GNUC__) diff --git a/submodule.c b/submodule.c index ab99a30253..bc04fc8284 100644 --- a/submodule.c +++ b/submodule.c @@ -159,7 +159,7 @@ int remove_path_from_gitmodules(const char *path) } strbuf_addstr(§, "submodule."); strbuf_addstr(§, submodule->name); - if (git_config_rename_section_in_file(GITMODULES_FILE, sect.buf, NULL) < 0) { + if (repo_config_rename_section_in_file(the_repository, GITMODULES_FILE, sect.buf, NULL) < 0) { /* Maybe the user already did that, don't error out here */ warning(_("Could not remove .gitmodules entry for %s"), path); strbuf_release(§); From patchwork Wed Aug 7 06:58:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755890 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 D90461B86DE for ; Wed, 7 Aug 2024 06:58:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013887; cv=none; b=c5U5WhuWuuzei04YIVaYMPDxsqwUJnlSRTs/NxVqq+oMmeArTs0vMBq2uQ9voo9zVrcR/iQ8E/JDjAdsJbIVIgtMtvze3atqEgeoOpBNxWwqyAF1FXPFxNFFtCblHWFoMEkw+LmjNYsyxVyEcHWUweCyXD7OrroKCXPQEALd390= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013887; c=relaxed/simple; bh=9IznPviJDDuH7eVFm4FqpYsGiIigLWu2RVpGvTgioEc=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=VVnxSS4iddop4iOn5Ns5o+hbpwTmbQMEhIFx+6QLMi+wBNODHp0Tw9rgHXPPpW+t4kE1tido57kIADEdQkfrqnr0fp1TDr9J7duo0lZqWREOMRipi2nq1n9n0JBLrzQtNaiNvV0hB1Zs3M/QDXvXOFp7tGaPi+cHrQtYxyneHNw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=f5JC9rnk; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=m1420FfF; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="f5JC9rnk"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="m1420FfF" Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailfout.nyi.internal (Postfix) with ESMTP id 7997C138FCC4 for ; Wed, 7 Aug 2024 02:58:04 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Wed, 07 Aug 2024 02:58:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013884; x=1723100284; bh=47eKXzqJmO hq7Ow0NwHHIvo6DkNc46yaNGuW3ycZgJE=; b=f5JC9rnk+eeN/wtSwsXVKsU+uQ fdZ8vi3MizJsb7dktyVw+ORFjcTpSHCCZLsPjey7KTBSOyITRtb9F9VkDwifD7Qg tPYrHBmH6rkcOHx1Q01AH8dddgp8xRWhO1rLVCCUATXdJ2OSt+LXB2OBNMmcdXvP DPZ8EsjzT2bJuqgXNuD3XjY8m5HdbkZSMKk1jc9PJJiVjkNCBW82xFyDciUGQ8sQ XjuQak5zP72fnLqxojtKYjJ4jPUAs3uLfjKzhaRmOMLGWOZ1MImSOi1Pwmphtkqe P+Tz2d9flHRPIK0okIyBXgtN2G7/ZnNwZXjfb5AKkCkJjj/yAcZ36NUinntg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013884; x=1723100284; bh=47eKXzqJmOhq7Ow0NwHHIvo6DkNc 46yaNGuW3ycZgJE=; b=m1420FfFOU18ZtfTJv6Y844+6gmosEksgxVBIDYbGAJI LCS47DARjj961mhDnfZFHGJqUg0kGyfI3kqfa9/nMmea1c+2hRMibtLT57silsf7 OuBS0zwvS4QzCeHp+6Bi5cYtVfECANG4mPrftXNdEabGmRgfMXixUCBrcdJBm4tS K6X0dN09Fc4K5hQ96gwQld4SZUheSFj4rNm2xfBqRANHZ3urXyl6CTaOsQH02h9Y joqnOvsRCqXappXSo1Q83YQ5VI4d8o9YL4PCo7MqSTT+75ATJZWRQRn2jZOsBjfY B1ooqPdSRQva6/xDqU0Xe2XaMDMIdQhXrekcas56sQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepudenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:58:03 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id a70621f4 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:57:59 +0000 (UTC) Date: Wed, 7 Aug 2024 08:58:01 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 17/20] config: don't have setters depend on `the_repository` Message-ID: <1c1b27cbacc5c5d858363b8ed6ad8fe27f863574.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Some of the setters that accept a `struct repository` still implicitly rely on `the_repository` via `git_config_set_multivar_in_file()`. While this function would typically use the caller-provided path, it knows to fall back to using the configuration path indicated by `the_repository`. Adapt those functions to instead use the caller-provided repository. Signed-off-by: Patrick Steinhardt --- config.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config.c b/config.c index ed39922dbb..831c9eacb0 100644 --- a/config.c +++ b/config.c @@ -3220,8 +3220,8 @@ int repo_config_set_worktree_gently(struct repository *r, /* Only use worktree-specific config if it is already enabled. */ if (r->repository_format_worktree_config) { char *file = repo_git_path(r, "config.worktree"); - int ret = git_config_set_multivar_in_file_gently( - file, key, value, NULL, NULL, 0); + int ret = repo_config_set_multivar_in_file_gently( + r, file, key, value, NULL, NULL, 0); free(file); return ret; } @@ -3613,10 +3613,10 @@ int repo_config_set_multivar_gently(struct repository *r, const char *key, const char *value_pattern, unsigned flags) { char *file = repo_git_path(r, "config"); - int res = git_config_set_multivar_in_file_gently(file, - key, value, - value_pattern, - NULL, flags); + int res = repo_config_set_multivar_in_file_gently(r, file, + key, value, + value_pattern, + NULL, flags); free(file); return res; } @@ -3626,8 +3626,8 @@ void repo_config_set_multivar(struct repository *r, const char *value_pattern, unsigned flags) { char *file = repo_git_path(r, "config"); - git_config_set_multivar_in_file(file, key, value, - value_pattern, flags); + repo_config_set_multivar_in_file(r, file, key, value, + value_pattern, flags); free(file); } From patchwork Wed Aug 7 06:58:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755891 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 A44841B86DE for ; Wed, 7 Aug 2024 06:58:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013893; cv=none; b=NHZNMjLQNFRpyOvhot2StXEPSN1rWSAvMYc172nwsRuHFYmE/4JDbDiWci9wNjmc5joyZrGFl1y992dY8ceCCYx5A9vGbhCKOk+rh705Q71YsBKy7Ha9rTCHUkyqo6c+05lwMN0E1s5jsn9IS5aJaDTA0ZmNXP0hdEFoqlFJP9Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013893; c=relaxed/simple; bh=CjiRi6lsWyFyEDMEqF8EsttcqnMNG+EmQIHHeue7XOs=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=hkTJXyNXFbwmxz/+SawyEMm/wNUkPDR3qJQxXlO6mYgLRgRBi5DEMrUeB1nUv3lRVIcgswG8369/nQ6EKjejMRGH/dyyag1HT/sMc+KSFhh4pj3avS1IazhI9pML4aWU/SkrkyFv1icXsiNo8fNqWH8O2CkIiwJRYa0NB+KjDHM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=aDaFmZY9; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Xl/B+eMG; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="aDaFmZY9"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Xl/B+eMG" Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailfout.nyi.internal (Postfix) with ESMTP id 4D4EC138FCA2 for ; Wed, 7 Aug 2024 02:58:09 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Wed, 07 Aug 2024 02:58:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013889; x=1723100289; bh=kdV5Ru+0k9 k0AbW4itgak8IApjsz5n4FCvVOWA+irV4=; b=aDaFmZY9n+Ow+PZZ5ktZANHmOc Ck+jOAr/5bIvOnSMBdPAR2WXkKWOaN2qmygmU4p8Vs/Wt8S32WORTOnL388Sxzgd I+GHr+h9vFrJAEIteeAa032PXX6ykmta8dYVgkY/WFrpZaoHoFAug2XNwcb/ABql u0ZS7l7ZTLS4dhTIUGqTbFzKUnTDCrssoMF4+2NQ0+CDNgeZ6ohof4crbNECIsbo oUckpEkNlWs/bwgYBDeJvSy5wyGiSb5CmKgU9wp7pmB6w1NvzRKEXI7sv7JZ3Tpp ZCnKsGSOpM05wVPc0wA9dGfdDaFKGEKSjSqVvj3aHf0ACaF5rVyZCxvYhsUA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013889; x=1723100289; bh=kdV5Ru+0k9k0AbW4itgak8IApjsz 5n4FCvVOWA+irV4=; b=Xl/B+eMG/9XvxsY6knQmsiWc2jEmH2lTisAYHyyj2b/y znTHC6BwsKxUOJ5XuMGPcFl9ovx5Bu+AmMDiTf74ozwokbjcrk2DHI7aMb8kvtB1 gcXKrpsInaVnF0elK5REqHzanMQCqYrwRvA0fuXt2iidUJmOaEb/eOb6oXLkKbVw zCXiCC4tObPpMpr0juJXuXli7+1g6GMBFcDPzNuRzxEncvbLAynNfgyW6HiCnAAK lfxl4sw4GTMYvWuqzZKCqM5OxAV8631QGBhet/l/hxpdnuplONcJE8ST9p9+bq5K cuJE/VDNCbV3YSSKSouDiArwIi+tLR42bVLvUrjd4Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgeptdenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:58:08 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 2e86fde4 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:58:03 +0000 (UTC) Date: Wed, 7 Aug 2024 08:58:05 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 18/20] config: don't depend on `the_repository` with branch conditions Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: When computing branch "includeIf" conditions we use `the_repository` to obtain the main ref store. We really shouldn't depend on this global repository though, but should instead use the repository that is being passed to us via `struct config_include_data`. Otherwise, when parsing configuration of e.g. submodules, we may end up evaluating the condition the via the wrong refdb. Fix this. Signed-off-by: Patrick Steinhardt --- config.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/config.c b/config.c index 831c9eacb0..08437f75e5 100644 --- a/config.c +++ b/config.c @@ -300,13 +300,14 @@ static int include_by_gitdir(const struct key_value_info *kvi, return ret; } -static int include_by_branch(const char *cond, size_t cond_len) +static int include_by_branch(struct config_include_data *data, + const char *cond, size_t cond_len) { int flags; int ret; struct strbuf pattern = STRBUF_INIT; - const char *refname = !the_repository->gitdir ? - NULL : refs_resolve_ref_unsafe(get_main_ref_store(the_repository), + const char *refname = (!data->repo || !data->repo->gitdir) ? + NULL : refs_resolve_ref_unsafe(get_main_ref_store(data->repo), "HEAD", 0, NULL, &flags); const char *shortname; @@ -406,7 +407,7 @@ static int include_condition_is_true(const struct key_value_info *kvi, else if (skip_prefix_mem(cond, cond_len, "gitdir/i:", &cond, &cond_len)) return include_by_gitdir(kvi, opts, cond, cond_len, 1); else if (skip_prefix_mem(cond, cond_len, "onbranch:", &cond, &cond_len)) - return include_by_branch(cond, cond_len); + return include_by_branch(inc, cond, cond_len); else if (skip_prefix_mem(cond, cond_len, "hasconfig:remote.*.url:", &cond, &cond_len)) return include_by_remote_url(inc, cond, cond_len); From patchwork Wed Aug 7 06:58:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755892 Received: from fout4-smtp.messagingengine.com (fout4-smtp.messagingengine.com [103.168.172.147]) (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 E15131B8EA8 for ; Wed, 7 Aug 2024 06:58:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013895; cv=none; b=HzbrWY1dSszYxTdHOzRCNCaQwIacQ7JXos5uoiBs/obaVs/VPl1wymGKH9XirnY6gJuWB0nfQXzNZeu78R1FKr/xScjdHiZUP1XONkNZN8co4F2K4ulQmivIE5UXUtPLbsou9Ce43CPIQJK7PkXpmUKtYuTaGUrD6XSe2SWVJlU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013895; c=relaxed/simple; bh=usVR09YxLGnLISA9fjoksYJLlqPJ84STdnpyFf9j6es=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=XVoXT7N0jqTE2pKEyExqn8CZYKyFMnxX+j6PJB0Mti0/tSKWGq0UMgo4XzO0qVMFMKUdoyDPZJLqmgT+eMgRm7PKzW+UAPBD03BlrUAxJfQ/GaM4HfIUV3RigrVpt7HnfoVH8ClA1C6omtUKddabNOkTJ9eQq2sk28ZOAGP+e3E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=OI+co2Wf; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=QzrbGyr9; arc=none smtp.client-ip=103.168.172.147 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="OI+co2Wf"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="QzrbGyr9" Received: from compute2.internal (compute2.nyi.internal [10.202.2.46]) by mailfout.nyi.internal (Postfix) with ESMTP id 1E8BB138FCDC for ; Wed, 7 Aug 2024 02:58:13 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Wed, 07 Aug 2024 02:58:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013893; x=1723100293; bh=vBmjEpYAiU zlG2d5/GAYT3dd0t44d8LzKQoAcKYqC54=; b=OI+co2WfBCZjnRlprV41wYXdDr UB89eabXi3dwLEbCnJzCCVp7NGbMUyi1nw3iSj8W/Lao5HQuP9ZKpeAtwVUc9Bx4 t2sTQeSil7oPVzovAXujrYGBtOHzDuEKMhnRtiCR7VZvOUfp9pkbWfcb7Xldn4fC 5ZYi5bhJdWsDSQYvO3nJITlc5A9mVCCbp1m+vUpv1X9rfGvKVvbNikY4wwMPBziK EQR1vdGPdqbPw4z1vno9RrP8OLyb3tsKjjCgz+gCFbT+LDaob9XdwZbk98BgCmx/ C2LTj1rgx2IT/XAxUhtUhJX8PQXnzph93RK1fkkdhI+wW1rdLRmz9qTXb4aA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013893; x=1723100293; bh=vBmjEpYAiUzlG2d5/GAYT3dd0t44 d8LzKQoAcKYqC54=; b=QzrbGyr9BD/pukvac/qpOS0J6JtXDFB6l+psGs31Ut3k fDHCBOb+WDQmbA5JQRy0lIcoZFRrpwHahygLxgxf8m3h8TWl5GjlhmgF/2N+mXyH xQK7Us5s3ugNkOttuKIYBHX9ewmnfoKhVvbHi7se9xnPS3iclD4w9FCZhq4ykape NAR4UnP3kvpvXDO01UyWleXcaw9EvLyIPgXr4YYfkgjNjdtzCfuib7tw+xeBzH70 XdfjFzZBJr0v7AHKjOxhNMK7YLGhpGNQfCI4p+q4OXO+vcyhwu5K5YGsGWeBGOjY WEBmgZHODZbCxT24obSA0sLqd44k6qnIGNge58G58g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepudegieeuffefgfegudeiueduhfdvffelvd fhkedvleetfeffudegveekieejieeinecuffhomhgrihhnpehgnhhurdhorhhgnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphhssehpkhhsrd himhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:58:12 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id f912ab02 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:58:08 +0000 (UTC) Date: Wed, 7 Aug 2024 08:58:10 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 19/20] global: prepare for hiding away repo-less config functions Message-ID: References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: We're about to hide config functions that implicitly depend on `the_repository` behind the `USE_THE_REPOSITORY_VARIABLE` macro. This will uncover a bunch of dependents that transitively relied on the global variable, but didn'd define the macro yet. Adapt them such that we define the macro to prepare for this change. Signed-off-by: Patrick Steinhardt --- compat/fsmonitor/fsm-ipc-darwin.c | 2 ++ compat/precompose_utf8.c | 1 + connect.c | 2 ++ credential.c | 2 ++ daemon.c | 2 ++ editor.c | 2 ++ fsmonitor.c | 2 ++ gpg-interface.c | 2 ++ graph.c | 2 ++ imap-send.c | 2 ++ mailinfo.c | 2 ++ merge-ll.c | 2 ++ parallel-checkout.c | 2 ++ protocol.c | 2 ++ refs.c | 2 ++ refs/packed-backend.c | 2 ++ refs/reftable-backend.c | 2 ++ sideband.c | 2 ++ t/helper/test-advise.c | 2 ++ t/helper/test-config.c | 2 ++ t/helper/test-userdiff.c | 2 ++ trailer.c | 2 ++ versioncmp.c | 2 ++ 23 files changed, 45 insertions(+) diff --git a/compat/fsmonitor/fsm-ipc-darwin.c b/compat/fsmonitor/fsm-ipc-darwin.c index 52f4f29720..fe149a1b37 100644 --- a/compat/fsmonitor/fsm-ipc-darwin.c +++ b/compat/fsmonitor/fsm-ipc-darwin.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "gettext.h" diff --git a/compat/precompose_utf8.c b/compat/precompose_utf8.c index 0bd5c24250..f7cc7b3be5 100644 --- a/compat/precompose_utf8.c +++ b/compat/precompose_utf8.c @@ -4,6 +4,7 @@ */ #define PRECOMPOSE_UNICODE_C +#define USE_THE_REPOSITORY_VARIABLE #include "git-compat-util.h" #include "config.h" diff --git a/connect.c b/connect.c index cf84e631e9..6829ab3974 100644 --- a/connect.c +++ b/connect.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "environment.h" diff --git a/credential.c b/credential.c index 4b1a2b94fe..ee46351ce0 100644 --- a/credential.c +++ b/credential.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "abspath.h" #include "config.h" diff --git a/daemon.c b/daemon.c index 17d331b2f3..c65b068b76 100644 --- a/daemon.c +++ b/daemon.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "abspath.h" #include "config.h" diff --git a/editor.c b/editor.c index 6c461dd253..323d7d91e2 100644 --- a/editor.c +++ b/editor.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "abspath.h" #include "advice.h" diff --git a/fsmonitor.c b/fsmonitor.c index 2b17d60bbb..28130f748f 100644 --- a/fsmonitor.c +++ b/fsmonitor.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "dir.h" diff --git a/gpg-interface.c b/gpg-interface.c index 5c824aeb25..6587085cd1 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "commit.h" #include "config.h" diff --git a/graph.c b/graph.c index 1ca34770ee..091c14cf4f 100644 --- a/graph.c +++ b/graph.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "gettext.h" #include "config.h" diff --git a/imap-send.c b/imap-send.c index 01404e5047..b2eb3d2dd0 100644 --- a/imap-send.c +++ b/imap-send.c @@ -21,6 +21,8 @@ * along with this program; if not, see . */ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "credential.h" diff --git a/mailinfo.c b/mailinfo.c index 94b9b0abf2..95228531a6 100644 --- a/mailinfo.c +++ b/mailinfo.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "gettext.h" diff --git a/merge-ll.c b/merge-ll.c index 180c19df67..badb6dea57 100644 --- a/merge-ll.c +++ b/merge-ll.c @@ -4,6 +4,8 @@ * Copyright (c) 2007 Junio C Hamano */ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "convert.h" diff --git a/parallel-checkout.c b/parallel-checkout.c index 08b960aac8..01736f1352 100644 --- a/parallel-checkout.c +++ b/parallel-checkout.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "entry.h" diff --git a/protocol.c b/protocol.c index 079ba75acf..bae7226ff4 100644 --- a/protocol.c +++ b/protocol.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "environment.h" diff --git a/refs.c b/refs.c index 0afc70b51b..284c64dfc5 100644 --- a/refs.c +++ b/refs.c @@ -2,6 +2,8 @@ * The backend-independent part of the reference module. */ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "advice.h" #include "config.h" diff --git a/refs/packed-backend.c b/refs/packed-backend.c index 89976aa359..ba2ad90d10 100644 --- a/refs/packed-backend.c +++ b/refs/packed-backend.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "../git-compat-util.h" #include "../config.h" #include "../dir.h" diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c index bf4446afd3..df67923d21 100644 --- a/refs/reftable-backend.c +++ b/refs/reftable-backend.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "../git-compat-util.h" #include "../abspath.h" #include "../chdir-notify.h" diff --git a/sideband.c b/sideband.c index 5d8907151f..5b6b872a1c 100644 --- a/sideband.c +++ b/sideband.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "color.h" #include "config.h" diff --git a/t/helper/test-advise.c b/t/helper/test-advise.c index 8a3fd0009a..6967c8e25c 100644 --- a/t/helper/test-advise.c +++ b/t/helper/test-advise.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "test-tool.h" #include "advice.h" #include "config.h" diff --git a/t/helper/test-config.c b/t/helper/test-config.c index ed444ca4c2..e193079ed5 100644 --- a/t/helper/test-config.c +++ b/t/helper/test-config.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "test-tool.h" #include "config.h" #include "setup.h" diff --git a/t/helper/test-userdiff.c b/t/helper/test-userdiff.c index 0ce31ce59f..94c48ababb 100644 --- a/t/helper/test-userdiff.c +++ b/t/helper/test-userdiff.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "test-tool.h" #include "setup.h" #include "userdiff.h" diff --git a/trailer.c b/trailer.c index 72e5136c73..682d74505b 100644 --- a/trailer.c +++ b/trailer.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "environment.h" diff --git a/versioncmp.c b/versioncmp.c index 45e676cbca..e3b2a6e330 100644 --- a/versioncmp.c +++ b/versioncmp.c @@ -1,3 +1,5 @@ +#define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" #include "config.h" #include "strbuf.h" From patchwork Wed Aug 7 06:58:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13755893 Received: from fhigh1-smtp.messagingengine.com (fhigh1-smtp.messagingengine.com [103.168.172.152]) (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 38B4E198E7A for ; Wed, 7 Aug 2024 06:58:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013901; cv=none; b=o1JIlyup2zoRWtX0vGw6kJtWD4eGPitIn/M3/rGMLN0emQuAfCtmzhwS9X+qEdwhrnm89b5VOBqN5wJ6h7oiw3aAXpWXmatTv/4aYYqeR8TyJKGP+kUsgoF2VXreMMuVAsNxjQ14Jx7MKLz3Y3HCjIHybv/XKBOQmcWWvIuzsNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1723013901; c=relaxed/simple; bh=7h4gmmjHx2KoilC4FJNpHHABvBC11tYLK1zgazKRtKM=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=AQ46fS5mA45tkUgKh3eSKGi5OcAL5G1q2iT6Kvr1iIQBW/Wz6zD3zlA24Iuecx0AnJn7dyCKQJI3uSdwBUNz/Nf+Mj6az+qeiTkOclMtUmzo+4B6GnGa8CbleorShSQ6zrUo4D/H92O8vooFJu4ER+7vOseN3DdnI2ntR1l/hkk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=P4k0uo8A; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=CfxEluqR; arc=none smtp.client-ip=103.168.172.152 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="P4k0uo8A"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="CfxEluqR" Received: from compute8.internal (compute8.nyi.internal [10.202.2.227]) by mailfhigh.nyi.internal (Postfix) with ESMTP id E3FCA1151AED for ; Wed, 7 Aug 2024 02:58:17 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute8.internal (MEProxy); Wed, 07 Aug 2024 02:58:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc :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=fm3; t=1723013897; x=1723100297; bh=0ARFJDgHj+ NvZQandwmdIZK9E1Gt04hhyz2cE3wrkOc=; b=P4k0uo8AVO3GvlfB8vQy/qMsIe 8hEd79lUOfUgi+1Nfj7HZbx0UJyDhC0l1avSWkaaVOMc57rcV87pjyX0hqut4BHZ noVV9CuumHLL56o+WjO6mmjsBDn+mCM43BWxICMyhqcuWPqj+hMBTTbjt+PKeY2O WyDdIab9mDQ68CDDDWr2lhQdcffGtLtfY19zgomwL1+kZ2RcMUYjOLsODZ4EpQMY M+IbEU088GDX+BoPx8WyVDYwsvjU4zBX9Ns7u10+ulPmGMH21VTGEXYCRXr1BOCl zClXTVB2TehnIRD2JCROo75uC8NHErehWx5gYylGsa+AS4nP+TvIREybMO0g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm3; t=1723013897; x=1723100297; bh=0ARFJDgHj+NvZQandwmdIZK9E1Gt 04hhyz2cE3wrkOc=; b=CfxEluqRn2h2aiM260CT5CPoGV4BtLfuQU8UFPq8W9RM QLkYDDYWqEgvgGtrelT/s0iUO3p95aruMhT2Lbsbsu67u3yWRdq/TC5LGYIPt+lC N6UqNwaEsGInTlIO2z4AkMkWTuHqrazdv3gU/v77rTLh08yIRFoPJP+hVsIYIuaP OJkDegk7Fbwm2EMV1r1Tv4DdNMYCqqhbpkrLcPrLRS+pJBDjfBUODYN27gEZfphQ 4PxTT9jHHS5hHQQwDYDwFdUb88WFe7grHLRjA/n8A6owXGYaJveKf57YrpGmE4y6 4lq+kXdAgfpEdTWQi3Wig8xyIMOXriur50i4jf18tA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrkeelgdduudejucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkfhggtggujgesghdtre ertddtvdenucfhrhhomheprfgrthhrihgtkhcuufhtvghinhhhrghrughtuceophhssehp khhsrdhimheqnecuggftrfgrthhtvghrnhepheeghfdtfeeuffehkefgffduleffjedthf dvjeektdfhhedvlefgtefgvdettdfhnecuvehluhhsthgvrhfuihiivgepgeenucfrrghr rghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimhdpnhgspghrtghpthhtoheptd X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 7 Aug 2024 02:58:17 -0400 (EDT) Received: by vm-mail (OpenSMTPD) with ESMTPSA id 9f541fe9 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Wed, 7 Aug 2024 06:58:13 +0000 (UTC) Date: Wed, 7 Aug 2024 08:58:15 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Subject: [PATCH 20/20] config: hide functions using `the_repository` by default Message-ID: <43757f30770bf5a27fd8d7ac55a343185dbe62b3.1723013714.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: The config subsytem provides a bunch of legacy functions that read or set configuration for `the_repository`. The use of those functions is discouraged, and it is easy to miss the implicit dependency on `the_repository` that calls to those functions may cause. Move all config-related functions that use `the_repository` into a block that gets only conditionally compiled depending on whether or not the macro has been defined. This also removes all dependencies on that variable in "config.c", allowing us to remove the definition of said preprocessor macro. Signed-off-by: Patrick Steinhardt --- config.c | 130 ----------------------------- config.h | 249 ++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 171 insertions(+), 208 deletions(-) diff --git a/config.c b/config.c index 08437f75e5..c4fdbf6e1b 100644 --- a/config.c +++ b/config.c @@ -6,8 +6,6 @@ * */ -#define USE_THE_REPOSITORY_VARIABLE - #include "git-compat-util.h" #include "abspath.h" #include "advice.h" @@ -2695,78 +2693,6 @@ void git_protected_config(config_fn_t fn, void *data) configset_iter(&protected_config, fn, data); } -/* Functions used historically to read configuration from 'the_repository' */ -void git_config(config_fn_t fn, void *data) -{ - repo_config(the_repository, fn, data); -} - -void git_config_clear(void) -{ - repo_config_clear(the_repository); -} - -int git_config_get(const char *key) -{ - return repo_config_get(the_repository, key); -} - -int git_config_get_value(const char *key, const char **value) -{ - return repo_config_get_value(the_repository, key, value); -} - -int git_config_get_value_multi(const char *key, const struct string_list **dest) -{ - return repo_config_get_value_multi(the_repository, key, dest); -} - -int git_config_get_string_multi(const char *key, - const struct string_list **dest) -{ - return repo_config_get_string_multi(the_repository, key, dest); -} - -int git_config_get_string(const char *key, char **dest) -{ - return repo_config_get_string(the_repository, key, dest); -} - -int git_config_get_string_tmp(const char *key, const char **dest) -{ - return repo_config_get_string_tmp(the_repository, key, dest); -} - -int git_config_get_int(const char *key, int *dest) -{ - return repo_config_get_int(the_repository, key, dest); -} - -int git_config_get_ulong(const char *key, unsigned long *dest) -{ - return repo_config_get_ulong(the_repository, key, dest); -} - -int git_config_get_bool(const char *key, int *dest) -{ - return repo_config_get_bool(the_repository, key, dest); -} - -int git_config_get_bool_or_int(const char *key, int *is_bool, int *dest) -{ - return repo_config_get_bool_or_int(the_repository, key, is_bool, dest); -} - -int git_config_get_maybe_bool(const char *key, int *dest) -{ - return repo_config_get_maybe_bool(the_repository, key, dest); -} - -int git_config_get_pathname(const char *key, char **dest) -{ - return repo_config_get_pathname(the_repository, key, dest); -} - int repo_config_get_expiry(struct repository *r, const char *key, const char **output) { int ret = repo_config_get_string(r, key, (char **)output); @@ -3186,35 +3112,17 @@ int repo_config_set_in_file_gently(struct repository *r, const char *config_file return repo_config_set_multivar_in_file_gently(r, config_filename, key, value, NULL, comment, 0); } -int git_config_set_in_file_gently(const char *config_filename, - const char *key, const char *comment, const char *value) -{ - return repo_config_set_in_file_gently(the_repository, config_filename, - key, comment, value); -} - void repo_config_set_in_file(struct repository *r, const char *config_filename, const char *key, const char *value) { repo_config_set_multivar_in_file(r, config_filename, key, value, NULL, 0); } -void git_config_set_in_file(const char *config_filename, - const char *key, const char *value) -{ - repo_config_set_in_file(the_repository, config_filename, key, value); -} - int repo_config_set_gently(struct repository *r, const char *key, const char *value) { return repo_config_set_multivar_gently(r, key, value, NULL, 0); } -int git_config_set_gently(const char *key, const char *value) -{ - return repo_config_set_gently(the_repository, key, value); -} - int repo_config_set_worktree_gently(struct repository *r, const char *key, const char *value) { @@ -3236,11 +3144,6 @@ void repo_config_set(struct repository *r, const char *key, const char *value) trace2_cmd_set_config(key, value); } -void git_config_set(const char *key, const char *value) -{ - repo_config_set(the_repository, key, value); -} - char *git_config_prepare_comment_string(const char *comment) { size_t leading_blanks; @@ -3569,17 +3472,6 @@ int repo_config_set_multivar_in_file_gently(struct repository *r, goto out_free; } -int git_config_set_multivar_in_file_gently(const char *config_filename, - const char *key, const char *value, - const char *value_pattern, - const char *comment, - unsigned flags) -{ - return repo_config_set_multivar_in_file_gently(the_repository, config_filename, - key, value, value_pattern, - comment, flags); -} - void repo_config_set_multivar_in_file(struct repository *r, const char *config_filename, const char *key, const char *value, @@ -3594,21 +3486,6 @@ void repo_config_set_multivar_in_file(struct repository *r, die(_("could not unset '%s'"), key); } -void git_config_set_multivar_in_file(const char *config_filename, - const char *key, const char *value, - const char *value_pattern, unsigned flags) -{ - repo_config_set_multivar_in_file(the_repository, config_filename, - key, value, value_pattern, flags); -} - -int git_config_set_multivar_gently(const char *key, const char *value, - const char *value_pattern, unsigned flags) -{ - return repo_config_set_multivar_gently(the_repository, key, value, - value_pattern, flags); -} - int repo_config_set_multivar_gently(struct repository *r, const char *key, const char *value, const char *value_pattern, unsigned flags) @@ -3632,13 +3509,6 @@ void repo_config_set_multivar(struct repository *r, free(file); } -void git_config_set_multivar(const char *key, const char *value, - const char *value_pattern, unsigned flags) -{ - repo_config_set_multivar(the_repository, key, value, - value_pattern, flags); -} - static size_t section_name_match (const char *buf, const char *name) { size_t i = 0, j = 0; diff --git a/config.h b/config.h index 589d6dae26..4d319a4193 100644 --- a/config.h +++ b/config.h @@ -26,7 +26,7 @@ struct object_id; /* git_config_parse_key() returns these negated: */ #define CONFIG_INVALID_KEY 1 #define CONFIG_NO_SECTION_OR_NAME 2 -/* git_config_set_gently(), git_config_set_multivar_gently() return the above or these: */ +/* repo_config_set_gently(), repo_config_set_multivar_gently() return the above or these: */ #define CONFIG_NO_LOCK -1 #define CONFIG_INVALID_FILE 3 #define CONFIG_NO_WRITE 4 @@ -170,9 +170,9 @@ int git_default_config(const char *, const char *, /** * Read a specific file in git-config format. - * This function takes the same callback and data parameters as `git_config`. + * This function takes the same callback and data parameters as `repo_config`. * - * Unlike git_config(), this function does not respect includes. + * Unlike repo_config(), this function does not respect includes. */ int git_config_from_file(config_fn_t fn, const char *, void *); @@ -198,9 +198,9 @@ void read_very_early_config(config_fn_t cb, void *data); /** * Most programs will simply want to look up variables in all config files * that Git knows about, using the normal precedence rules. To do this, - * call `git_config` with a callback function and void data pointer. + * call `repo_config` with a callback function and void data pointer. * - * `git_config` will read all config sources in order of increasing + * `repo_config` will read all config sources in order of increasing * priority. Thus a callback should typically overwrite previously-seen * entries with new ones (e.g., if both the user-wide `~/.gitconfig` and * repo-specific `.git/config` contain `color.ui`, the config machinery @@ -210,11 +210,11 @@ void read_very_early_config(config_fn_t cb, void *data); * * Unlike git_config_from_file(), this function respects includes. */ -void git_config(config_fn_t fn, void *); +void repo_config(struct repository *r, config_fn_t fn, void *); /** * Lets the caller examine config while adjusting some of the default - * behavior of `git_config`. It should almost never be used by "regular" + * behavior of `repo_config`. It should almost never be used by "regular" * Git code that is looking up configuration variables. * It is intended for advanced callers like `git-config`, which are * intentionally tweaking the normal config-lookup process. @@ -223,12 +223,12 @@ void git_config(config_fn_t fn, void *); * - `config_source` * If this parameter is non-NULL, it specifies the source to parse for * configuration, rather than looking in the usual files. See `struct - * git_config_source` in `config.h` for details. Regular `git_config` defaults + * git_config_source` in `config.h` for details. Regular `repo_config` defaults * to `NULL`. * * - `opts` * Specify options to adjust the behavior of parsing config files. See `struct - * config_options` in `config.h` for details. As an example: regular `git_config` + * config_options` in `config.h` for details. As an example: regular `repo_config` * sets `opts.respect_includes` to `1` by default. */ int config_with_options(config_fn_t fn, void *, @@ -297,7 +297,6 @@ int git_config_pathname(char **, const char *, const char *); int git_config_expiry_date(timestamp_t *, const char *, const char *); int git_config_color(char *, const char *, const char *); -int git_config_set_in_file_gently(const char *, const char *, const char *, const char *); int repo_config_set_in_file_gently(struct repository *r, const char *config_filename, const char *key, const char *comment, const char *value); @@ -305,10 +304,8 @@ int repo_config_set_in_file_gently(struct repository *r, const char *config_file * write config values to a specific config file, takes a key/value pair as * parameter. */ -void git_config_set_in_file(const char *, const char *, const char *); void repo_config_set_in_file(struct repository *, const char *, const char *, const char *); -int git_config_set_gently(const char *, const char *); int repo_config_set_gently(struct repository *r, const char *, const char *); /** @@ -321,14 +318,13 @@ int repo_config_set_worktree_gently(struct repository *, const char *, const cha /** * write config values to `.git/config`, takes a key/value pair as parameter. */ -void git_config_set(const char *, const char *); void repo_config_set(struct repository *, const char *, const char *); int git_config_parse_key(const char *, char **, size_t *); /* * The following macros specify flag bits that alter the behavior - * of the git_config_set_multivar*() methods. + * of the repo_config_set_multivar*() methods. */ /* @@ -345,11 +341,8 @@ int git_config_parse_key(const char *, char **, size_t *); */ #define CONFIG_FLAGS_FIXED_VALUE (1 << 1) -int git_config_set_multivar_gently(const char *, const char *, const char *, unsigned); int repo_config_set_multivar_gently(struct repository *, const char *, const char *, const char *, unsigned); -void git_config_set_multivar(const char *, const char *, const char *, unsigned); void repo_config_set_multivar(struct repository *r, const char *, const char *, const char *, unsigned); -int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, const char *, unsigned); int repo_config_set_multivar_in_file_gently(struct repository *, const char *, const char *, const char *, const char *, const char *, unsigned); char *git_config_prepare_comment_string(const char *); @@ -374,11 +367,6 @@ char *git_config_prepare_comment_string(const char *); * * It returns 0 on success. */ -void git_config_set_multivar_in_file(const char *config_filename, - const char *key, - const char *value, - const char *value_pattern, - unsigned flags); void repo_config_set_multivar_in_file(struct repository *r, const char *config_filename, const char *key, @@ -563,39 +551,11 @@ int git_configset_get_bool_or_int(struct config_set *cs, const char *key, int *i int git_configset_get_maybe_bool(struct config_set *cs, const char *key, int *dest); int git_configset_get_pathname(struct config_set *cs, const char *key, char **dest); -/* Functions for reading a repository's config */ -struct repository; -void repo_config(struct repository *repo, config_fn_t fn, void *data); - /** * Run only the discover part of the repo_config_get_*() functions * below, in addition to 1 if not found, returns negative values on * error (e.g. if the key itself is invalid). */ -RESULT_MUST_BE_USED -int repo_config_get(struct repository *repo, const char *key); -int repo_config_get_value(struct repository *repo, - const char *key, const char **value); -RESULT_MUST_BE_USED -int repo_config_get_value_multi(struct repository *repo, const char *key, - const struct string_list **dest); -RESULT_MUST_BE_USED -int repo_config_get_string_multi(struct repository *repo, const char *key, - const struct string_list **dest); -int repo_config_get_string(struct repository *repo, - const char *key, char **dest); -int repo_config_get_string_tmp(struct repository *repo, - const char *key, const char **dest); -int repo_config_get_int(struct repository *repo, - const char *key, int *dest); -int repo_config_get_ulong(struct repository *repo, - const char *key, unsigned long *dest); -int repo_config_get_bool(struct repository *repo, - const char *key, int *dest); -int repo_config_get_bool_or_int(struct repository *repo, - const char *key, int *is_bool, int *dest); -int repo_config_get_maybe_bool(struct repository *repo, - const char *key, int *dest); int repo_config_get_pathname(struct repository *repo, const char *key, char **dest); @@ -611,17 +571,17 @@ void git_protected_config(config_fn_t fn, void *data); * ------------------------------- * * For programs wanting to query for specific variables in a non-callback - * manner, the config API provides two functions `git_config_get_value` - * and `git_config_get_value_multi`. They both read values from an internal + * manner, the config API provides two functions `repo_config_get_value` + * and `repo_config_get_value_multi`. They both read values from an internal * cache generated previously from reading the config files. * - * For those git_config_get*() functions that aren't documented, + * For those repo_config_get*() functions that aren't documented, * consult the corresponding repo_config_get*() function's * documentation. */ RESULT_MUST_BE_USED -int git_config_get(const char *key); +int repo_config_get(struct repository *r, const char *key); /** * Finds the highest-priority value for the configuration variable `key`, @@ -630,7 +590,7 @@ int git_config_get(const char *key); * `value`. The caller should not free or modify `value`, as it is owned * by the cache. */ -int git_config_get_value(const char *key, const char **value); +int repo_config_get_value(struct repository *r, const char *key, const char **value); /** * Finds and returns the value list, sorted in order of increasing priority @@ -641,16 +601,15 @@ int git_config_get_value(const char *key, const char **value); * owned by the cache. */ RESULT_MUST_BE_USED -int git_config_get_value_multi(const char *key, - const struct string_list **dest); -RESULT_MUST_BE_USED -int git_config_get_string_multi(const char *key, +int repo_config_get_value_multi(struct repository *r, const char *key, const struct string_list **dest); +RESULT_MUST_BE_USED +int repo_config_get_string_multi(struct repository *r, const char *key, + const struct string_list **dest); /** * Resets and invalidates the config cache. */ -void git_config_clear(void); void repo_config_clear(struct repository *repo); /** @@ -659,14 +618,15 @@ void repo_config_clear(struct repository *repo); * error message and returns -1. When the configuration variable `key` is * not found, returns 1 without touching `dest`. */ -int git_config_get_string(const char *key, char **dest); +int repo_config_get_string(struct repository *r, const char *key, char **dest); /** - * Similar to `git_config_get_string`, but does not allocate any new + * Similar to `repo_config_get_string`, but does not allocate any new * memory; on success `dest` will point to memory owned by the config * machinery, which could be invalidated if it is discarded and reloaded. */ -int git_config_get_string_tmp(const char *key, const char **dest); +int repo_config_get_string_tmp(struct repository *r, + const char *key, const char **dest); /** * Finds and parses the value to an integer for the configuration variable @@ -674,12 +634,13 @@ int git_config_get_string_tmp(const char *key, const char **dest); * `dest` and returns 0. When the configuration variable `key` is not found, * returns 1 without touching `dest`. */ -int git_config_get_int(const char *key, int *dest); +int repo_config_get_int(struct repository *r, const char *key, int *dest); /** - * Similar to `git_config_get_int` but for unsigned longs. + * Similar to `repo_config_get_int` but for unsigned longs. */ -int git_config_get_ulong(const char *key, unsigned long *dest); +int repo_config_get_ulong(struct repository *r, + const char *key, unsigned long *dest); /** * Finds and parses the value into a boolean value, for the configuration @@ -690,25 +651,21 @@ int git_config_get_ulong(const char *key, unsigned long *dest); * configuration variable `key` is not found, returns 1 without touching * `dest`. */ -int git_config_get_bool(const char *key, int *dest); +int repo_config_get_bool(struct repository *r, const char *key, int *dest); /** - * Similar to `git_config_get_bool`, except that integers are copied as-is, + * Similar to `repo_config_get_bool`, except that integers are copied as-is, * and `is_bool` flag is unset. */ -int git_config_get_bool_or_int(const char *key, int *is_bool, int *dest); +int repo_config_get_bool_or_int(struct repository *r, const char *key, + int *is_bool, int *dest); /** - * Similar to `git_config_get_bool`, except that it returns -1 on error + * Similar to `repo_config_get_bool`, except that it returns -1 on error * rather than dying. */ -int git_config_get_maybe_bool(const char *key, int *dest); - -/** - * Similar to `git_config_get_string`, but expands `~` or `~user` into - * the user's home directory when found at the beginning of the path. - */ -int git_config_get_pathname(const char *key, char **dest); +int repo_config_get_maybe_bool(struct repository *r, + const char *key, int *dest); int repo_config_get_index_threads(struct repository *r, int *dest); int repo_config_get_split_index(struct repository *r); @@ -732,7 +689,7 @@ NORETURN void git_die_config(struct repository *r, const char *key, const char * /** * Helper function which formats the die error message according to the * parameters entered. Used by `git_die_config()`. It can be used by callers - * handling `git_config_get_value_multi()` to print the correct error message + * handling `repo_config_get_value_multi()` to print the correct error message * for the desired value. */ NORETURN void git_die_config_linenr(const char *key, const char *filename, int linenr); @@ -741,4 +698,140 @@ NORETURN void git_die_config_linenr(const char *key, const char *filename, int l lookup_config(mapping, ARRAY_SIZE(mapping), var) int lookup_config(const char **mapping, int nr_mapping, const char *var); +# ifdef USE_THE_REPOSITORY_VARIABLE +static inline void git_config(config_fn_t fn, void *data) +{ + repo_config(the_repository, fn, data); +} + +static inline void git_config_clear(void) +{ + repo_config_clear(the_repository); +} + +static inline int git_config_get(const char *key) +{ + return repo_config_get(the_repository, key); +} + +static inline int git_config_get_value(const char *key, const char **value) +{ + return repo_config_get_value(the_repository, key, value); +} + +static inline int git_config_get_value_multi(const char *key, const struct string_list **dest) +{ + return repo_config_get_value_multi(the_repository, key, dest); +} + +static inline int git_config_get_string_multi(const char *key, + const struct string_list **dest) +{ + return repo_config_get_string_multi(the_repository, key, dest); +} + +static inline int git_config_get_string(const char *key, char **dest) +{ + return repo_config_get_string(the_repository, key, dest); +} + +static inline int git_config_get_string_tmp(const char *key, const char **dest) +{ + return repo_config_get_string_tmp(the_repository, key, dest); +} + +static inline int git_config_get_int(const char *key, int *dest) +{ + return repo_config_get_int(the_repository, key, dest); +} + +static inline int git_config_get_ulong(const char *key, unsigned long *dest) +{ + return repo_config_get_ulong(the_repository, key, dest); +} + +static inline int git_config_get_bool(const char *key, int *dest) +{ + return repo_config_get_bool(the_repository, key, dest); +} + +static inline int git_config_get_bool_or_int(const char *key, int *is_bool, int *dest) +{ + return repo_config_get_bool_or_int(the_repository, key, is_bool, dest); +} + +static inline int git_config_get_maybe_bool(const char *key, int *dest) +{ + return repo_config_get_maybe_bool(the_repository, key, dest); +} + +static inline int git_config_get_pathname(const char *key, char **dest) +{ + return repo_config_get_pathname(the_repository, key, dest); +} + +static inline void git_config_set_in_file(const char *config_filename, + const char *key, const char *value) +{ + repo_config_set_in_file(the_repository, config_filename, key, value); +} + +static inline int git_config_set_gently(const char *key, const char *value) +{ + return repo_config_set_gently(the_repository, key, value); +} + +static inline void git_config_set(const char *key, const char *value) +{ + repo_config_set(the_repository, key, value); +} + +static inline int git_config_set_in_file_gently( + const char *config_filename, + const char *key, + const char *comment, + const char *value) +{ + return repo_config_set_in_file_gently(the_repository, config_filename, + key, comment, value); +} + +static inline int git_config_set_multivar_in_file_gently( + const char *config_filename, + const char *key, const char *value, + const char *value_pattern, + const char *comment, + unsigned flags) +{ + return repo_config_set_multivar_in_file_gently(the_repository, config_filename, + key, value, value_pattern, + comment, flags); +} + +static inline void git_config_set_multivar_in_file( + const char *config_filename, + const char *key, + const char *value, + const char *value_pattern, + unsigned flags) +{ + repo_config_set_multivar_in_file(the_repository, config_filename, + key, value, value_pattern, flags); +} + +static inline int git_config_set_multivar_gently(const char *key, const char *value, + const char *value_pattern, unsigned flags) +{ + return repo_config_set_multivar_gently(the_repository, key, value, + value_pattern, flags); +} + +static inline void git_config_set_multivar(const char *key, const char *value, + const char *value_pattern, unsigned flags) +{ + repo_config_set_multivar(the_repository, key, value, + value_pattern, flags); +} +# endif /* USE_THE_REPOSITORY_VARIABLE */ + #endif /* CONFIG_H */