From: Meet Soni <meetsoni3017@gmail.com>
To: git@vger.kernel.org
Cc: shubham.kanodia10@gmail.com, Meet Soni <meetsoni3017@gmail.com>
Subject: [GSoC][PATCH v4 0/5] refspec: centralize refspec-related logic
Date: Tue, 4 Feb 2025 09:35:53 +0530 [thread overview]
Message-ID: <20250204040558.34766-1-meetsoni3017@gmail.com> (raw)
In-Reply-To: <20250201064202.76116-1-meetsoni3017@gmail.com>
Changes since v3:
- updated commit message.
- renamed functions as per review.
- added GSoC mark , since the announcement has been made by google and
we've started the discussion regarding the same.
Additional context of the series:
Patrick pointed out in [1], the logic related to refspec is currently
split across multiple headers. This patch series addresses that by
renaming and relocating refspec-related logic from remote to refspec for
improved cohesion.
[1]: https://lore.kernel.org/git/ZysQvUyxgdRqjvj2@pks.im/
Specifically, the following changes have been made:
Refactoring and renaming functions: Functions such as
omit_name_by_refspec() have been renamed to better reflect their
functionality.
Relocation of functions: Functions that are primarily responsible
for refspec related functionality, have been relocated from remote.c
to refspec.c to maintain a clear separation of concerns.
Meet Soni (5):
remote: rename function omit_name_by_refspec
refspec: relocate refname_matches_negative_refspec_item
remote: rename query_refspecs functions
refspec: relocate matching related functions
refspec: relocate apply_refspecs and related funtions
builtin/push.c | 2 +-
builtin/remote.c | 2 +-
refspec.c | 203 ++++++++++++++++++++++++++++++++++++++++++++++
refspec.h | 37 +++++++++
remote.c | 205 +----------------------------------------------
remote.h | 15 ----
6 files changed, 244 insertions(+), 220 deletions(-)
Range-diff against v3:
1: 399e59ff67 ! 1: 1b8606ffcb refactor(remote): rename function omit_name_by_refspec
@@ Metadata
Author: Meet Soni <meetsoni3017@gmail.com>
## Commit message ##
- refactor(remote): rename function omit_name_by_refspec
+ remote: rename function omit_name_by_refspec
Rename the function `omit_name_by_refspec()` to
`refname_matches_negative_refspec_item()` to provide clearer intent.
2: 4109b2bd1c = 2: 3da817839c refspec: relocate refname_matches_negative_refspec_item
3: 559224864f ! 3: bad0c43c96 refactor(remote): rename query_refspecs functions
@@ Metadata
Author: Meet Soni <meetsoni3017@gmail.com>
## Commit message ##
- refactor(remote): rename query_refspecs functions
+ remote: rename query_refspecs functions
- Rename `query_refspecs()` to `find_refspec_match` for clarity, as it
- finds a single matching refspec.
+ Rename functions related to handling refspecs in preparation for their
+ move from `remote.c` to `refspec.c`. Update their names to better
+ reflect their intent:
- Rename `query_refspecs_multiple()` to `find_all_refspec_matches` to
- better reflect that it collects all matching refspecs instead of
- returning just the first match.
+ - `query_refspecs()` -> `refspec_find_match()` for clarity, as it
+ finds a single matching refspec.
- Rename `query_matches_negative_refspec()` to
- `find_negative_refspec_match` for consistency with the updated naming
- convention.
+ - `query_refspecs_multiple()` -> `refspec_find_all_matches()` to
+ better reflect that it collects all matching refspecs instead of
+ returning just the first match.
+
+ - `query_matches_negative_refspec()` ->
+ `refspec_find_negative_match()` for consistency with the
+ updated naming convention, even though this static function
+ didn't strictly require renaming.
Signed-off-by: Meet Soni <meetsoni3017@gmail.com>
@@ builtin/push.c: static void refspec_append_mapped(struct refspec *refspec, const
};
- if (!query_refspecs(&remote->push, &query) && query.dst) {
-+ if (!find_refspec_match(&remote->push, &query) && query.dst) {
++ if (!refspec_find_match(&remote->push, &query) && query.dst) {
refspec_appendf(refspec, "%s%s:%s",
query.force ? "+" : "",
query.src, query.dst);
@@ remote.c: struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspe
}
-static int query_matches_negative_refspec(struct refspec *rs, struct refspec_item *query)
-+static int find_negative_refspec_match(struct refspec *rs, struct refspec_item *query)
++static int refspec_find_negative_match(struct refspec *rs, struct refspec_item *query)
{
int i, matched_negative = 0;
int find_src = !query->src;
@@ remote.c: static int query_matches_negative_refspec(struct refspec *rs, struct r
}
-static void query_refspecs_multiple(struct refspec *rs,
-+static void find_all_refspec_matches(struct refspec *rs,
++static void refspec_find_all_matches(struct refspec *rs,
struct refspec_item *query,
struct string_list *results)
{
@@ remote.c: static void query_refspecs_multiple(struct refspec *rs,
if (find_src && !query->dst)
- BUG("query_refspecs_multiple: need either src or dst");
-+ BUG("find_all_refspec_matches: need either src or dst");
++ BUG("refspec_find_all_matches: need either src or dst");
- if (query_matches_negative_refspec(rs, query))
-+ if (find_negative_refspec_match(rs, query))
++ if (refspec_find_negative_match(rs, query))
return;
for (i = 0; i < rs->nr; i++) {
@@ remote.c: static void query_refspecs_multiple(struct refspec *rs,
}
-int query_refspecs(struct refspec *rs, struct refspec_item *query)
-+int find_refspec_match(struct refspec *rs, struct refspec_item *query)
++int refspec_find_match(struct refspec *rs, struct refspec_item *query)
{
int i;
int find_src = !query->src;
@@ remote.c: int query_refspecs(struct refspec *rs, struct refspec_item *query)
if (find_src && !query->dst)
- BUG("query_refspecs: need either src or dst");
-+ BUG("find_refspec_match: need either src or dst");
++ BUG("refspec_find_match: need either src or dst");
- if (query_matches_negative_refspec(rs, query))
-+ if (find_negative_refspec_match(rs, query))
++ if (refspec_find_negative_match(rs, query))
return -1;
for (i = 0; i < rs->nr; i++) {
@@ remote.c: char *apply_refspecs(struct refspec *rs, const char *name)
query.src = (char *)name;
- if (query_refspecs(rs, &query))
-+ if (find_refspec_match(rs, &query))
++ if (refspec_find_match(rs, &query))
return NULL;
return query.dst;
@@ remote.c: char *apply_refspecs(struct refspec *rs, const char *name)
int remote_find_tracking(struct remote *remote, struct refspec_item *refspec)
{
- return query_refspecs(&remote->fetch, refspec);
-+ return find_refspec_match(&remote->fetch, refspec);
++ return refspec_find_match(&remote->fetch, refspec);
}
static struct ref *alloc_ref_with_prefix(const char *prefix, size_t prefixlen,
@@ remote.c: static int get_stale_heads_cb(const char *refname, const char *referen
query.dst = (char *)refname;
- query_refspecs_multiple(info->rs, &query, &matches);
-+ find_all_refspec_matches(info->rs, &query, &matches);
++ refspec_find_all_matches(info->rs, &query, &matches);
if (matches.nr == 0)
goto clean_exit; /* No matches */
@@ remote.h: int refname_matches_negative_refspec_item(const char *refname, struct
struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspec *rs);
-int query_refspecs(struct refspec *rs, struct refspec_item *query);
-+int find_refspec_match(struct refspec *rs, struct refspec_item *query);
++int refspec_find_match(struct refspec *rs, struct refspec_item *query);
char *apply_refspecs(struct refspec *rs, const char *name);
int check_push_refs(struct ref *src, struct refspec *rs);
4: 13e49509fc ! 4: 9a5dc26731 refspec: relocate matching related functions
@@ Metadata
## Commit message ##
refspec: relocate matching related functions
- Move the functions `find_refspec_match()`, `find_all_refspec_matches()`
- and `find_negative_refspec_match()` from `remote.c` to `refspec.c`.
+ Move the functions `refspec_find_match()`, `refspec_find_all_matches()`
+ and `refspec_find_negative_match()` from `remote.c` to `refspec.c`.
These functions focus on matching refspecs, so centralizing them in
`refspec.c` improves code organization by keeping refspec-related logic
in one place.
@@ refspec.c: int refname_matches_negative_refspec_item(const char *refname, struct
return 0;
}
+
-+static int find_negative_refspec_match(struct refspec *rs, struct refspec_item *query)
++static int refspec_find_negative_match(struct refspec *rs, struct refspec_item *query)
+{
+ int i, matched_negative = 0;
+ int find_src = !query->src;
@@ refspec.c: int refname_matches_negative_refspec_item(const char *refname, struct
+ return matched_negative;
+}
+
-+void find_all_refspec_matches(struct refspec *rs,
++void refspec_find_all_matches(struct refspec *rs,
+ struct refspec_item *query,
+ struct string_list *results)
+{
@@ refspec.c: int refname_matches_negative_refspec_item(const char *refname, struct
+ int find_src = !query->src;
+
+ if (find_src && !query->dst)
-+ BUG("find_all_refspec_matches: need either src or dst");
++ BUG("refspec_find_all_matches: need either src or dst");
+
-+ if (find_negative_refspec_match(rs, query))
++ if (refspec_find_negative_match(rs, query))
+ return;
+
+ for (i = 0; i < rs->nr; i++) {
@@ refspec.c: int refname_matches_negative_refspec_item(const char *refname, struct
+ }
+}
+
-+int find_refspec_match(struct refspec *rs, struct refspec_item *query)
++int refspec_find_match(struct refspec *rs, struct refspec_item *query)
+{
+ int i;
+ int find_src = !query->src;
@@ refspec.c: int refname_matches_negative_refspec_item(const char *refname, struct
+ char **result = find_src ? &query->src : &query->dst;
+
+ if (find_src && !query->dst)
-+ BUG("find_refspec_match: need either src or dst");
++ BUG("refspec_find_match: need either src or dst");
+
-+ if (find_negative_refspec_match(rs, query))
++ if (refspec_find_negative_match(rs, query))
+ return -1;
+
+ for (i = 0; i < rs->nr; i++) {
@@ refspec.h: int refname_matches_negative_refspec_item(const char *refname, struct
+ * Queries a refspec for a match and updates the query item.
+ * Returns 0 on success, -1 if no match is found or negative refspec matches.
+ */
-+int find_refspec_match(struct refspec *rs, struct refspec_item *query);
++int refspec_find_match(struct refspec *rs, struct refspec_item *query);
+
+/*
+ * Queries a refspec for all matches and appends results to the provided string
+ * list.
+ */
-+void find_all_refspec_matches(struct refspec *rs,
++void refspec_find_all_matches(struct refspec *rs,
+ struct refspec_item *query,
+ struct string_list *results);
+
@@ remote.c: struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspe
return ref_map;
}
--static int find_negative_refspec_match(struct refspec *rs, struct refspec_item *query)
+-static int refspec_find_negative_match(struct refspec *rs, struct refspec_item *query)
-{
- int i, matched_negative = 0;
- int find_src = !query->src;
@@ remote.c: struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspe
- return matched_negative;
-}
-
--static void find_all_refspec_matches(struct refspec *rs,
+-static void refspec_find_all_matches(struct refspec *rs,
- struct refspec_item *query,
- struct string_list *results)
-{
@@ remote.c: struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspe
- int find_src = !query->src;
-
- if (find_src && !query->dst)
-- BUG("find_all_refspec_matches: need either src or dst");
+- BUG("refspec_find_all_matches: need either src or dst");
-
-- if (find_negative_refspec_match(rs, query))
+- if (refspec_find_negative_match(rs, query))
- return;
-
- for (i = 0; i < rs->nr; i++) {
@@ remote.c: struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspe
- }
-}
-
--int find_refspec_match(struct refspec *rs, struct refspec_item *query)
+-int refspec_find_match(struct refspec *rs, struct refspec_item *query)
-{
- int i;
- int find_src = !query->src;
@@ remote.c: struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspe
- char **result = find_src ? &query->src : &query->dst;
-
- if (find_src && !query->dst)
-- BUG("find_refspec_match: need either src or dst");
+- BUG("refspec_find_match: need either src or dst");
-
-- if (find_negative_refspec_match(rs, query))
+- if (refspec_find_negative_match(rs, query))
- return -1;
-
- for (i = 0; i < rs->nr; i++) {
5: 891e01be93 ! 5: f13ac6f11f refspec: relocate apply_refspecs and related funtions
@@ refspec.c
#include "strbuf.h"
/*
-@@ refspec.c: int find_refspec_match(struct refspec *rs, struct refspec_item *query)
+@@ refspec.c: int refspec_find_match(struct refspec *rs, struct refspec_item *query)
}
return -1;
}
@@ refspec.c: int find_refspec_match(struct refspec *rs, struct refspec_item *query
+ memset(&query, 0, sizeof(struct refspec_item));
+ query.src = (char *)name;
+
-+ if (find_refspec_match(rs, &query))
++ if (refspec_find_match(rs, &query))
+ return NULL;
+
+ return query.dst;
+}
## refspec.h ##
-@@ refspec.h: void find_all_refspec_matches(struct refspec *rs,
+@@ refspec.h: void refspec_find_all_matches(struct refspec *rs,
struct refspec_item *query,
struct string_list *results);
@@ remote.c: void ref_push_report_free(struct ref_push_report *report)
- memset(&query, 0, sizeof(struct refspec_item));
- query.src = (char *)name;
-
-- if (find_refspec_match(rs, &query))
+- if (refspec_find_match(rs, &query))
- return NULL;
-
- return query.dst;
@@ remote.c: void ref_push_report_free(struct ref_push_report *report)
-
int remote_find_tracking(struct remote *remote, struct refspec_item *refspec)
{
- return find_refspec_match(&remote->fetch, refspec);
+ return refspec_find_match(&remote->fetch, refspec);
## remote.h ##
@@ remote.h: int resolve_remote_symref(struct ref *ref, struct ref *list);
@@ remote.h: int resolve_remote_symref(struct ref *ref, struct ref *list);
- */
-struct ref *apply_negative_refspecs(struct ref *ref_map, struct refspec *rs);
-
--int find_refspec_match(struct refspec *rs, struct refspec_item *query);
+-int refspec_find_match(struct refspec *rs, struct refspec_item *query);
-char *apply_refspecs(struct refspec *rs, const char *name);
-
int check_push_refs(struct ref *src, struct refspec *rs);
--
2.34.1
next prev parent reply other threads:[~2025-02-04 4:06 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-27 10:36 [PATCH v2 0/3] refspec: centralize refspec-related logic Meet Soni
2025-01-27 10:36 ` [PATCH v2 1/3] refspec: relocate omit_name_by_refspec and related functions Meet Soni
2025-01-27 17:21 ` Junio C Hamano
2025-01-29 5:15 ` Meet Soni
2025-01-27 10:36 ` [PATCH v2 2/3] refspec: relocate query " Meet Soni
2025-01-27 19:25 ` Junio C Hamano
2025-01-29 6:32 ` Meet Soni
2025-01-27 10:36 ` [PATCH v2 3/3] refspec: relocate apply_refspecs and related funtions Meet Soni
2025-01-27 20:14 ` Junio C Hamano
2025-01-29 7:03 ` Meet Soni
2025-01-27 11:00 ` [PATCH v2 0/3] refspec: centralize refspec-related logic Meet Soni
2025-01-27 18:10 ` Junio C Hamano
2025-01-29 5:18 ` Meet Soni
2025-02-01 6:41 ` [PATCH v3 0/5] " Meet Soni
2025-02-01 6:41 ` [PATCH v3 1/5] refactor(remote): rename function omit_name_by_refspec Meet Soni
2025-02-03 6:45 ` Patrick Steinhardt
2025-02-01 6:41 ` [PATCH v3 2/5] refspec: relocate refname_matches_negative_refspec_item Meet Soni
2025-02-01 6:42 ` [PATCH v3 3/5] refactor(remote): rename query_refspecs functions Meet Soni
2025-02-03 6:46 ` Patrick Steinhardt
2025-02-04 3:39 ` Meet Soni
2025-02-04 13:58 ` Junio C Hamano
2025-02-01 6:42 ` [PATCH v3 4/5] refspec: relocate matching related functions Meet Soni
2025-02-01 6:42 ` [PATCH v3 5/5] refspec: relocate apply_refspecs and related funtions Meet Soni
2025-02-04 4:05 ` Meet Soni [this message]
2025-02-04 4:05 ` [GSoC][PATCH v4 1/5] remote: rename function omit_name_by_refspec Meet Soni
2025-02-04 9:00 ` Karthik Nayak
2025-02-04 13:58 ` Meet Soni
2025-02-06 10:13 ` Karthik Nayak
2025-02-04 4:05 ` [GSoC][PATCH v4 2/5] refspec: relocate refname_matches_negative_refspec_item Meet Soni
2025-02-04 4:05 ` [GSoC][PATCH v4 3/5] remote: rename query_refspecs functions Meet Soni
2025-02-04 4:05 ` [GSoC][PATCH v4 4/5] refspec: relocate matching related functions Meet Soni
2025-02-04 4:05 ` [GSoC][PATCH v4 5/5] refspec: relocate apply_refspecs and related funtions Meet Soni
2025-02-04 7:16 ` [GSoC][PATCH v4 0/5] refspec: centralize refspec-related logic Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250204040558.34766-1-meetsoni3017@gmail.com \
--to=meetsoni3017@gmail.com \
--cc=git@vger.kernel.org \
--cc=shubham.kanodia10@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).