From patchwork Mon Jun 3 09:39:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13683474 Received: from wfout4-smtp.messagingengine.com (wfout4-smtp.messagingengine.com [64.147.123.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 4138D7E77B for ; Mon, 3 Jun 2024 09:39:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=64.147.123.147 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717407566; cv=none; b=cpV/5kegLtIitZ6DzU4/WPSiheAatGHeCYX0C7vfqA+Ou2jPqTHFMIvkfGhwzLPheOBP8CvanusQHWeR025fXs1nnJ4SlEyNBAgcc7NDho+Fvw931jRnKyxVx3HvmBTL10HVGxOUcuAUI5+OhR8JZKWe4mL0Wxygz71nQk3SunA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717407566; c=relaxed/simple; bh=YO16aJufTm1qIXBzd91gYtPotVHa5+b1l1fKeLiLRnk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=QiTZBrG+HPZpsGQVusvDVMxvYcfbHAxkTG9AZCOgfBdNbBmF4otcEtiKyMzBht5QOWCUM1aN7c/IheOvRXUwPmtjWyLN5GCgIPrEBefwEBNFemdrEjNoW5MN50lAoW7DBt2HYDEauDgrPtBxYIKi0f0hR+OQMO206XxJTylVkjE= 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=d1tX69kf; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=OdKZOrK5; arc=none smtp.client-ip=64.147.123.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="d1tX69kf"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="OdKZOrK5" Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailfout.west.internal (Postfix) with ESMTP id 762731C000CF; Mon, 3 Jun 2024 05:39:24 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 03 Jun 2024 05:39:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc: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=fm1; t=1717407564; x=1717493964; bh=fNhifOCad8 IMg2BcO3DTh9dns5968pRL5gHMHzNVUok=; b=d1tX69kfpdjTeYjx8fNYoTN9Ha M3uoOmRiXriEl+mvzhh+lZ8ev86527HYx+tBEQd9K3YUfCXvWX+xzwqg2tnabdBD Nk03FxxkO4nKQZFQDUQY0j4fVHLaqoVvJRyVw0AQBRvJrNDbQNvCP25oysZQ/e21 lWCDJYTPDmYQmy251+2hhCZ/U8ifVFNfIEqzXkV1s6UOhZkAkgxesdFZyBK0Cpjb IJKrJw0xZ91OeJ7l0MW0G1anxBZv+ChptyjU/jDscWnFcc/Yk4aRNu5lcwcctDuK v3TJy454B70ebkYZti3jrTuILgHCKV0b1bniS3KJA+Fwgzvb2fhGwU73YnWw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc: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= fm1; t=1717407564; x=1717493964; bh=fNhifOCad8IMg2BcO3DTh9dns596 8pRL5gHMHzNVUok=; b=OdKZOrK5dfE9vNyGfrJ2pCkkvN+ZPd/NFjULXqlbC/1I 5ahA8txF/1WxJ1AQDYvRO9UwTzq6Ru5qVzOdhULmhda9qGzwGOtilKYun8VzhQ37 wEDBtF+U6fQMoPABoVWH1g6lvGOkCIt+N0/3pMdT8G34zDUUQW9XxdhTVAG2Yon0 KQ6BS8Ro7tGBQ9PLAxU56hJ0ZDp5vVMHfRUbMap+/sGk/1zBaowF7Cp8/bl4Nzxz yxlgNjk0XMMzvx2rO1hkFxDcshFINy9nVR7yNdF+/d7EAo97yAH19+MfFdMgCiji 6Q/LMRRk8voCV0wvNSChBnoWiHF4IxY0yT4y/Y+S/g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvdelvddgudelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvvefukfhfgggtuggjsehgtd erredttddvnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshes phhkshdrihhmqeenucggtffrrghtthgvrhhnpeeukedtvedtffevleejtefgheehieegke eluddvfeefgeehgfeltddtheejleffteenucevlhhushhtvghrufhiiigvpedtnecurfgr rhgrmhepmhgrihhlfhhrohhmpehpshesphhkshdrihhm X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 3 Jun 2024 05:39:23 -0400 (EDT) Received: by localhost (OpenSMTPD) with ESMTPSA id fce4731e (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Mon, 3 Jun 2024 09:38:58 +0000 (UTC) Date: Mon, 3 Jun 2024 11:39:20 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Cc: Jeff King , Junio C Hamano Subject: [PATCH v3 05/27] refspec: remove global tag refspec structure 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 have a global tag refspec structure that is used by both git-clone(1) and git-fetch(1). Initialization fo the structure will break once we enable `-Wwrite-strings`, even though the breakage is harmless. While we could just add casts, the structure isn't really required in the first place as we can simply initialize the structures at the respective callsites. Refactor the code accordingly. Signed-off-by: Patrick Steinhardt --- builtin/clone.c | 8 ++++++-- builtin/fetch.c | 11 ++++++++--- refspec.c | 13 ------------- refspec.h | 1 - 4 files changed, 14 insertions(+), 19 deletions(-) diff --git a/builtin/clone.c b/builtin/clone.c index 92ab7d7165..bde1d284a2 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -523,6 +523,9 @@ static struct ref *wanted_peer_refs(const struct ref *refs, struct ref *head = copy_ref(find_ref_by_name(refs, "HEAD")); struct ref *local_refs = head; struct ref **tail = head ? &head->next : &local_refs; + struct refspec_item tag_refspec; + + refspec_item_init(&tag_refspec, TAG_REFSPEC, 0); if (option_single_branch) { struct ref *remote_head = NULL; @@ -545,7 +548,7 @@ static struct ref *wanted_peer_refs(const struct ref *refs, &tail, 0); /* if --branch=tag, pull the requested tag explicitly */ - get_fetch_map(remote_head, tag_refspec, &tail, 0); + get_fetch_map(remote_head, &tag_refspec, &tail, 0); } free_refs(remote_head); } else { @@ -555,8 +558,9 @@ static struct ref *wanted_peer_refs(const struct ref *refs, } if (!option_mirror && !option_single_branch && !option_no_tags) - get_fetch_map(refs, tag_refspec, &tail, 0); + get_fetch_map(refs, &tag_refspec, &tail, 0); + refspec_item_clear(&tag_refspec); return local_refs; } diff --git a/builtin/fetch.c b/builtin/fetch.c index 75255dc600..06b60867f5 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -582,11 +582,16 @@ static struct ref *get_ref_map(struct remote *remote, } } - if (tags == TAGS_SET) + if (tags == TAGS_SET) { + struct refspec_item tag_refspec; + /* also fetch all tags */ - get_fetch_map(remote_refs, tag_refspec, &tail, 0); - else if (tags == TAGS_DEFAULT && *autotags) + refspec_item_init(&tag_refspec, TAG_REFSPEC, 0); + get_fetch_map(remote_refs, &tag_refspec, &tail, 0); + refspec_item_clear(&tag_refspec); + } else if (tags == TAGS_DEFAULT && *autotags) { find_non_local_tags(remote_refs, NULL, &ref_map, &tail); + } /* Now append any refs to be updated opportunistically: */ *tail = orefs; diff --git a/refspec.c b/refspec.c index d60932f4de..1df5de6c2f 100644 --- a/refspec.c +++ b/refspec.c @@ -7,19 +7,6 @@ #include "refspec.h" #include "strbuf.h" -static struct refspec_item s_tag_refspec = { - .force = 0, - .pattern = 1, - .matching = 0, - .exact_sha1 = 0, - .negative = 0, - .src = "refs/tags/*", - .dst = "refs/tags/*", -}; - -/* See TAG_REFSPEC for the string version */ -const struct refspec_item *tag_refspec = &s_tag_refspec; - /* * Parses the provided refspec 'refspec' and populates the refspec_item 'item'. * Returns 1 if successful and 0 if the refspec is invalid. diff --git a/refspec.h b/refspec.h index 8c0c446993..754be45cee 100644 --- a/refspec.h +++ b/refspec.h @@ -2,7 +2,6 @@ #define REFSPEC_H #define TAG_REFSPEC "refs/tags/*:refs/tags/*" -extern const struct refspec_item *tag_refspec; /** * A struct refspec_item holds the parsed interpretation of a refspec. If it