git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Turner <dturner@twopensource.com>
To: git@vger.kernel.org, mhagger@alum.mit.edu
Cc: Ronnie Sahlberg <sahlberg@google.com>
Subject: [PATCH v3 16/44] refs.c: move ref iterators to the common code
Date: Mon, 12 Oct 2015 17:51:36 -0400	[thread overview]
Message-ID: <1444686725-27660-17-git-send-email-dturner@twopensource.com> (raw)
In-Reply-To: <1444686725-27660-1-git-send-email-dturner@twopensource.com>

From: Ronnie Sahlberg <sahlberg@google.com>

Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
---
 refs-be-files.c | 82 ---------------------------------------------------------
 refs.c          | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+), 82 deletions(-)

diff --git a/refs-be-files.c b/refs-be-files.c
index ecf2b33..46fa43c 100644
--- a/refs-be-files.c
+++ b/refs-be-files.c
@@ -1668,23 +1668,6 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
 	return ret;
 }
 
-/* The argument to filter_refs */
-struct ref_filter {
-	const char *pattern;
-	each_ref_fn *fn;
-	void *cb_data;
-};
-
-static int filter_refs(const char *refname, const struct object_id *oid,
-			   int flags, void *data)
-{
-	struct ref_filter *filter = (struct ref_filter *)data;
-
-	if (wildmatch(filter->pattern, refname, 0, NULL))
-		return 0;
-	return filter->fn(refname, oid, flags, filter->cb_data);
-}
-
 enum peel_status {
 	/* object was peeled successfully: */
 	PEEL_PEELED = 0,
@@ -1950,37 +1933,6 @@ int for_each_ref_in_submodule(const char *submodule, const char *prefix,
 {
 	return do_for_each_ref(get_ref_cache(submodule), prefix, fn, strlen(prefix), 0, cb_data);
 }
-
-int for_each_tag_ref(each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in("refs/tags/", fn, cb_data);
-}
-
-int for_each_tag_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in_submodule(submodule, "refs/tags/", fn, cb_data);
-}
-
-int for_each_branch_ref(each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in("refs/heads/", fn, cb_data);
-}
-
-int for_each_branch_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in_submodule(submodule, "refs/heads/", fn, cb_data);
-}
-
-int for_each_remote_ref(each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in("refs/remotes/", fn, cb_data);
-}
-
-int for_each_remote_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
-{
-	return for_each_ref_in_submodule(submodule, "refs/remotes/", fn, cb_data);
-}
-
 int for_each_replace_ref(each_ref_fn fn, void *cb_data)
 {
 	return do_for_each_ref(&ref_cache, git_replace_ref_base, fn,
@@ -2012,40 +1964,6 @@ int for_each_namespaced_ref(each_ref_fn fn, void *cb_data)
 	return ret;
 }
 
-int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
-	const char *prefix, void *cb_data)
-{
-	struct strbuf real_pattern = STRBUF_INIT;
-	struct ref_filter filter;
-	int ret;
-
-	if (!prefix && !starts_with(pattern, "refs/"))
-		strbuf_addstr(&real_pattern, "refs/");
-	else if (prefix)
-		strbuf_addstr(&real_pattern, prefix);
-	strbuf_addstr(&real_pattern, pattern);
-
-	if (!has_glob_specials(pattern)) {
-		/* Append implied '/' '*' if not present. */
-		strbuf_complete(&real_pattern, '/');
-		/* No need to check for '*', there is none. */
-		strbuf_addch(&real_pattern, '*');
-	}
-
-	filter.pattern = real_pattern.buf;
-	filter.fn = fn;
-	filter.cb_data = cb_data;
-	ret = for_each_ref(filter_refs, &filter);
-
-	strbuf_release(&real_pattern);
-	return ret;
-}
-
-int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
-{
-	return for_each_glob_ref_in(fn, pattern, NULL, cb_data);
-}
-
 int for_each_rawref(each_ref_fn fn, void *cb_data)
 {
 	return do_for_each_ref(&ref_cache, "", fn, 0,
diff --git a/refs.c b/refs.c
index 44ee4f4..7714dad 100644
--- a/refs.c
+++ b/refs.c
@@ -781,3 +781,84 @@ const char *prettify_refname(const char *name)
 		starts_with(name, "refs/remotes/") ? 13 :
 		0);
 }
+
+/* The argument to filter_refs */
+struct ref_filter {
+	const char *pattern;
+	each_ref_fn *fn;
+	void *cb_data;
+};
+
+static int filter_refs(const char *refname, const struct object_id *oid, int flags,
+		       void *data)
+{
+	struct ref_filter *filter = (struct ref_filter *)data;
+	if (wildmatch(filter->pattern, refname, 0, NULL))
+		return 0;
+	return filter->fn(refname, oid, flags, filter->cb_data);
+}
+
+int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
+	const char *prefix, void *cb_data)
+{
+	struct strbuf real_pattern = STRBUF_INIT;
+	struct ref_filter filter;
+	int ret;
+
+	if (!prefix && !starts_with(pattern, "refs/"))
+		strbuf_addstr(&real_pattern, "refs/");
+	else if (prefix)
+		strbuf_addstr(&real_pattern, prefix);
+	strbuf_addstr(&real_pattern, pattern);
+
+	if (!has_glob_specials(pattern)) {
+		/* Append implied '/' '*' if not present. */
+		if (real_pattern.buf[real_pattern.len - 1] != '/')
+			strbuf_addch(&real_pattern, '/');
+		/* No need to check for '*', there is none. */
+		strbuf_addch(&real_pattern, '*');
+	}
+
+	filter.pattern = real_pattern.buf;
+	filter.fn = fn;
+	filter.cb_data = cb_data;
+	ret = for_each_ref(filter_refs, &filter);
+
+	strbuf_release(&real_pattern);
+	return ret;
+}
+
+int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data)
+{
+	return for_each_glob_ref_in(fn, pattern, NULL, cb_data);
+}
+
+int for_each_tag_ref(each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in("refs/tags/", fn, cb_data);
+}
+
+int for_each_tag_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in_submodule(submodule, "refs/tags/", fn, cb_data);
+}
+
+int for_each_branch_ref(each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in("refs/heads/", fn, cb_data);
+}
+
+int for_each_branch_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in_submodule(submodule, "refs/heads/", fn, cb_data);
+}
+
+int for_each_remote_ref(each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in("refs/remotes/", fn, cb_data);
+}
+
+int for_each_remote_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return for_each_ref_in_submodule(submodule, "refs/remotes/", fn, cb_data);
+}
-- 
2.4.2.644.g97b850b-twtrsrc

  parent reply	other threads:[~2015-10-12 21:52 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-12 21:51 [PATCH v3 00/44] alternate refs backends David Turner
2015-10-12 21:51 ` [PATCH v3 01/44] refs.c: create a public version of verify_refname_available David Turner
2015-10-13  2:28   ` Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 02/44] refs: make repack_without_refs and is_branch public David Turner
2015-10-13  2:39   ` Michael Haggerty
2015-10-13  7:23     ` Michael Haggerty
2015-10-13 21:18       ` David Turner
2015-10-12 21:51 ` [PATCH v3 03/44] refs-be-files.c: rename refs to refs-be-files David Turner
2015-10-12 21:51 ` [PATCH v3 04/44] refs.c: add a new refs.c file to hold all common refs code David Turner
2015-10-12 21:51 ` [PATCH v3 05/44] refs.c: move update_ref to refs.c David Turner
2015-10-13  3:41   ` Michael Haggerty
2015-10-13 20:40     ` David Turner
2015-10-14  1:01     ` David Turner
2015-10-12 21:51 ` [PATCH v3 06/44] refs.c: move delete_ref and delete_refs to the common code David Turner
2015-10-13  3:51   ` Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 07/44] refs.c: move read_ref_at to the common refs file David Turner
2015-10-12 21:51 ` [PATCH v3 08/44] refs.c: move the hidden refs functions to the common code David Turner
2015-10-12 21:51 ` [PATCH v3 09/44] refs.c: move dwim and friend functions to the common refs code David Turner
2015-10-12 21:51 ` [PATCH v3 10/44] refs.c: move warn_if_dangling_symref* to the common code David Turner
2015-10-12 21:51 ` [PATCH v3 11/44] refs.c: move read_ref, read_ref_full and ref_exists " David Turner
2015-10-12 21:51 ` [PATCH v3 12/44] refs.c: move resolve_refdup to common David Turner
2015-10-12 21:51 ` [PATCH v3 13/44] refs.c: move check_refname_format to the common code David Turner
2015-10-12 21:51 ` [PATCH v3 14/44] refs.c: move is_branch " David Turner
2015-10-12 21:51 ` [PATCH v3 15/44] refs.c: move prettify_refname " David Turner
2015-10-12 21:51 ` David Turner [this message]
2015-10-13  4:12   ` [PATCH v3 16/44] refs.c: move ref iterators " Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 17/44] refs.c: move head_ref_namespaced " David Turner
2015-10-12 21:51 ` [PATCH v3 18/44] refs: move transaction functions into " David Turner
2015-10-13  6:15   ` Michael Haggerty
2015-10-13 11:29   ` Michael Haggerty
2015-10-13 22:21     ` David Turner
2015-10-13 23:05       ` David Turner
2015-10-12 21:51 ` [PATCH v3 19/44] refs: add a backend method structure with transaction functions David Turner
2015-10-12 21:51 ` [PATCH v3 19/44] refs-be-files.c: " David Turner
2015-10-12 22:25   ` David Turner
2015-10-13  7:56   ` Michael Haggerty
2015-10-13 18:28     ` David Turner
2015-10-13 21:12       ` Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 20/44] refs-be-files.c: add methods for misc ref operations David Turner
2015-10-13  7:44   ` Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 21/44] refs-be-files.c: add methods for the ref iterators David Turner
2015-10-12 21:51 ` [PATCH v3 22/44] refs-be-files.c: add method for for_each_reftype_ David Turner
2015-10-12 21:51 ` [PATCH v3 23/44] refs-be-files.c: add do_for_each_per_worktree_ref David Turner
2015-10-12 21:51 ` [PATCH v3 24/44] refs.c: move refname_is_safe to the common code David Turner
2015-10-12 21:51 ` [PATCH v3 25/44] refs.h: document make refname_is_safe and add it to header David Turner
2015-10-13  7:33   ` Michael Haggerty
2015-10-13  9:18     ` Michael Haggerty
2015-10-13 18:32       ` David Turner
2015-10-12 21:51 ` [PATCH v3 26/44] refs.c: move copy_msg to the common code David Turner
2015-10-13  9:25   ` Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 27/44] refs.c: move peel_object " David Turner
2015-10-13  9:34   ` Michael Haggerty
2015-10-12 21:51 ` [PATCH v3 28/44] refs.c: move should_autocreate_reflog to " David Turner
2015-10-12 21:51 ` [PATCH v3 29/44] refs.c: add ref backend init function David Turner
2015-10-12 21:51 ` [PATCH v3 30/44] refs.c: add methods for reflog David Turner
2015-10-12 21:51 ` [PATCH v3 31/44] refs.c: add method for initial ref transaction commit David Turner
2015-10-12 21:51 ` [PATCH v3 32/44] initdb: move safe_create_dir into common code David Turner
2015-10-12 21:51 ` [PATCH v3 33/44] refs.c: add method for initializing refs db David Turner
2015-10-12 21:51 ` [PATCH v3 34/44] refs-be-files.c: add method to rename refs David Turner
2015-10-12 21:51 ` [PATCH v3 35/44] refs: make lock generic David Turner
2015-10-12 21:51 ` [PATCH v3 36/44] refs: make files_log_ref_write functions public David Turner
2015-10-12 21:51 ` [PATCH v3 37/44] refs: break out a ref conflict check David Turner
2015-10-13 10:25   ` Michael Haggerty
2015-10-13 18:46     ` David Turner
2015-10-12 21:51 ` [PATCH v3 38/44] refs: move duplicate check to common code David Turner
2015-10-12 21:52 ` [PATCH v3 39/44] refs: always handle non-normal refs in files backend David Turner
2015-10-12 21:52 ` [PATCH v3 40/44] refs: allow ref backend to be set for clone David Turner
2015-10-12 21:52 ` [PATCH v3 41/44] refs: add register_refs_backend David Turner
2015-10-12 21:52 ` [PATCH v3 42/44] introduce "extensions" form of core.repositoryformatversion David Turner
2015-10-12 21:52 ` [PATCH v3 43/44] refs: add LMDB refs backend David Turner
2015-10-12 21:52 ` [PATCH v3 44/44] refs: tests for db backend David Turner

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=1444686725-27660-17-git-send-email-dturner@twopensource.com \
    --to=dturner@twopensource.com \
    --cc=git@vger.kernel.org \
    --cc=mhagger@alum.mit.edu \
    --cc=sahlberg@google.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).