git@vger.kernel.org mailing list mirror (one of many)
 help / Atom feed
From: Nguyễn Thái Ngọc Duy  <pclouds@gmail.com>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
	Michael Haggerty <mhagger@alum.mit.edu>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	Ramsay Jones <ramsay@ramsayjones.plus.com>,
	Stefan Beller <sbeller@google.com>,
	novalis@novalis.org, Nguyễn Thái Ngọc Duy  <pclouds@gmail.com>
Subject: [PATCH v5 20/24] files-backend: avoid ref api targetting main ref store
Date: Wed, 22 Feb 2017 21:04:46 +0700
Message-ID: <20170222140450.30886-21-pclouds@gmail.com> (raw)
In-Reply-To: <20170222140450.30886-1-pclouds@gmail.com>

A small step towards making files-backend works as a non-main ref store
using the newly added store-aware API.

For the record, `join` and `nm` on refs.o and files-backend.o tell me
that files-backend no longer uses functions that defaults to
get_main_ref_store().

I'm not yet comfortable at the idea of removing
files_assert_main_repository() (or converting REF_STORE_MAIN to
REF_STORE_WRITE). More staring and testing is required before that can
happen. Well, except peel_ref(). I'm pretty sure that function is safe.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 refs/files-backend.c | 85 ++++++++++++++++++++++++++++++----------------------
 1 file changed, 49 insertions(+), 36 deletions(-)

diff --git a/refs/files-backend.c b/refs/files-backend.c
index dafddefd3..09c280fd3 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -1836,8 +1836,6 @@ static int files_peel_ref(struct ref_store *ref_store,
 	int flag;
 	unsigned char base[20];
 
-	files_assert_main_repository(refs, "peel_ref");
-
 	if (current_ref_iter && current_ref_iter->refname == refname) {
 		struct object_id peeled;
 
@@ -1847,7 +1845,8 @@ static int files_peel_ref(struct ref_store *ref_store,
 		return 0;
 	}
 
-	if (read_ref_full(refname, RESOLVE_REF_READING, base, &flag))
+	if (refs_read_ref_full(ref_store, refname,
+			       RESOLVE_REF_READING, base, &flag))
 		return -1;
 
 	/*
@@ -2017,15 +2016,15 @@ static struct ref_iterator *files_ref_iterator_begin(
  * on success. On error, write an error message to err, set errno, and
  * return a negative value.
  */
-static int verify_lock(struct ref_lock *lock,
+static int verify_lock(struct ref_store *ref_store, struct ref_lock *lock,
 		       const unsigned char *old_sha1, int mustexist,
 		       struct strbuf *err)
 {
 	assert(err);
 
-	if (read_ref_full(lock->ref_name,
-			  mustexist ? RESOLVE_REF_READING : 0,
-			  lock->old_oid.hash, NULL)) {
+	if (refs_read_ref_full(ref_store, lock->ref_name,
+			       mustexist ? RESOLVE_REF_READING : 0,
+			       lock->old_oid.hash, NULL)) {
 		if (old_sha1) {
 			int save_errno = errno;
 			strbuf_addf(err, "can't verify ref '%s'", lock->ref_name);
@@ -2094,8 +2093,9 @@ static struct ref_lock *lock_ref_sha1_basic(struct files_ref_store *refs,
 		resolve_flags |= RESOLVE_REF_ALLOW_BAD_NAME;
 
 	files_refname_path(refs, &ref_file, refname);
-	resolved = !!resolve_ref_unsafe(refname, resolve_flags,
-					lock->old_oid.hash, type);
+	resolved = !!refs_resolve_ref_unsafe(&refs->base,
+					     refname, resolve_flags,
+					     lock->old_oid.hash, type);
 	if (!resolved && errno == EISDIR) {
 		/*
 		 * we are trying to lock foo but we used to
@@ -2112,8 +2112,9 @@ static struct ref_lock *lock_ref_sha1_basic(struct files_ref_store *refs,
 					    refname);
 			goto error_return;
 		}
-		resolved = !!resolve_ref_unsafe(refname, resolve_flags,
-						lock->old_oid.hash, type);
+		resolved = !!refs_resolve_ref_unsafe(&refs->base,
+						     refname, resolve_flags,
+						     lock->old_oid.hash, type);
 	}
 	if (!resolved) {
 		last_errno = errno;
@@ -2151,7 +2152,7 @@ static struct ref_lock *lock_ref_sha1_basic(struct files_ref_store *refs,
 		goto error_return;
 	}
 
-	if (verify_lock(lock, old_sha1, mustexist, err)) {
+	if (verify_lock(&refs->base, lock, old_sha1, mustexist, err)) {
 		last_errno = errno;
 		goto error_return;
 	}
@@ -2406,7 +2407,7 @@ static void try_remove_empty_parents(struct files_ref_store *refs,
 }
 
 /* make sure nobody touched the ref, and unlink */
-static void prune_ref(struct ref_to_prune *r)
+static void prune_ref(struct files_ref_store *refs, struct ref_to_prune *r)
 {
 	struct ref_transaction *transaction;
 	struct strbuf err = STRBUF_INIT;
@@ -2414,7 +2415,7 @@ static void prune_ref(struct ref_to_prune *r)
 	if (check_refname_format(r->name, 0))
 		return;
 
-	transaction = ref_transaction_begin(&err);
+	transaction = ref_store_transaction_begin(&refs->base, &err);
 	if (!transaction ||
 	    ref_transaction_delete(transaction, r->name, r->sha1,
 				   REF_ISPRUNING | REF_NODEREF, NULL, &err) ||
@@ -2428,10 +2429,10 @@ static void prune_ref(struct ref_to_prune *r)
 	strbuf_release(&err);
 }
 
-static void prune_refs(struct ref_to_prune *r)
+static void prune_refs(struct files_ref_store *refs, struct ref_to_prune *r)
 {
 	while (r) {
-		prune_ref(r);
+		prune_ref(refs, r);
 		r = r->next;
 	}
 }
@@ -2455,7 +2456,7 @@ static int files_pack_refs(struct ref_store *ref_store, unsigned int flags)
 	if (commit_packed_refs(refs))
 		die_errno("unable to overwrite old ref-pack file");
 
-	prune_refs(cbdata.ref_to_prune);
+	prune_refs(refs, cbdata.ref_to_prune);
 	return 0;
 }
 
@@ -2547,7 +2548,7 @@ static int files_delete_refs(struct ref_store *ref_store,
 	for (i = 0; i < refnames->nr; i++) {
 		const char *refname = refnames->items[i].string;
 
-		if (delete_ref(refname, NULL, flags))
+		if (refs_delete_ref(&refs->base, refname, NULL, flags))
 			result |= error(_("could not remove reference %s"), refname);
 	}
 
@@ -2665,8 +2666,9 @@ static int files_rename_ref(struct ref_store *ref_store,
 	if (log && S_ISLNK(loginfo.st_mode))
 		return error("reflog for %s is a symlink", oldrefname);
 
-	if (!resolve_ref_unsafe(oldrefname, RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,
-				orig_sha1, &flag))
+	if (!refs_resolve_ref_unsafe(&refs->base, oldrefname,
+				     RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,
+				     orig_sha1, &flag))
 		return error("refname %s not found", oldrefname);
 
 	if (flag & REF_ISSYMREF)
@@ -2684,7 +2686,7 @@ static int files_rename_ref(struct ref_store *ref_store,
 		return error("unable to move logfile logs/%s to logs/"TMP_RENAMED_LOG": %s",
 			oldrefname, strerror(errno));
 
-	if (delete_ref(oldrefname, orig_sha1, REF_NODEREF)) {
+	if (refs_delete_ref(&refs->base, oldrefname, orig_sha1, REF_NODEREF)) {
 		error("unable to delete old %s", oldrefname);
 		goto rollback;
 	}
@@ -2696,9 +2698,10 @@ static int files_rename_ref(struct ref_store *ref_store,
 	 * the safety anyway; we want to delete the reference whatever
 	 * its current value.
 	 */
-	if (!read_ref_full(newrefname, RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,
-			   sha1, NULL) &&
-	    delete_ref(newrefname, NULL, REF_NODEREF)) {
+	if (!refs_read_ref_full(&refs->base, newrefname,
+				RESOLVE_REF_READING | RESOLVE_REF_NO_RECURSE,
+				sha1, NULL) &&
+	    refs_delete_ref(&refs->base, newrefname, NULL, REF_NODEREF)) {
 		if (errno == EISDIR) {
 			struct strbuf path = STRBUF_INIT;
 			int result;
@@ -3054,8 +3057,9 @@ static int commit_ref_update(struct files_ref_store *refs,
 		int head_flag;
 		const char *head_ref;
 
-		head_ref = resolve_ref_unsafe("HEAD", RESOLVE_REF_READING,
-					      head_sha1, &head_flag);
+		head_ref = refs_resolve_ref_unsafe(&refs->base, "HEAD",
+						   RESOLVE_REF_READING,
+						   head_sha1, &head_flag);
 		if (head_ref && (head_flag & REF_ISSYMREF) &&
 		    !strcmp(head_ref, lock->ref_name)) {
 			struct strbuf log_err = STRBUF_INIT;
@@ -3099,7 +3103,9 @@ static void update_symref_reflog(struct files_ref_store *refs,
 {
 	struct strbuf err = STRBUF_INIT;
 	unsigned char new_sha1[20];
-	if (logmsg && !read_ref(target, new_sha1) &&
+	if (logmsg &&
+	    !refs_read_ref_full(&refs->base, target,
+				RESOLVE_REF_READING, new_sha1, NULL) &&
 	    files_log_ref_write(refs, refname, lock->old_oid.hash,
 				new_sha1, logmsg, 0, &err)) {
 		error("%s", err.buf);
@@ -3403,6 +3409,7 @@ static int files_for_each_reflog_ent(struct ref_store *ref_store,
 struct files_reflog_iterator {
 	struct ref_iterator base;
 
+	struct ref_store *ref_store;
 	struct dir_iterator *dir_iterator;
 	struct object_id oid;
 };
@@ -3424,8 +3431,9 @@ static int files_reflog_iterator_advance(struct ref_iterator *ref_iterator)
 		if (ends_with(diter->basename, ".lock"))
 			continue;
 
-		if (read_ref_full(diter->relative_path, 0,
-				  iter->oid.hash, &flags)) {
+		if (refs_read_ref_full(iter->ref_store,
+				       diter->relative_path, 0,
+				       iter->oid.hash, &flags)) {
 			error("bad ref for %s", diter->path.buf);
 			continue;
 		}
@@ -3479,6 +3487,7 @@ static struct ref_iterator *files_reflog_iterator_begin(struct ref_store *ref_st
 	base_ref_iterator_init(ref_iterator, &files_reflog_iterator_vtable);
 	files_reflog_path(refs, &sb, NULL);
 	iter->dir_iterator = dir_iterator_begin(sb.buf);
+	iter->ref_store = ref_store;
 	strbuf_release(&sb);
 	return ref_iterator;
 }
@@ -3718,8 +3727,9 @@ static int lock_ref_for_update(struct files_ref_store *refs,
 			 * the transaction, so we have to read it here
 			 * to record and possibly check old_sha1:
 			 */
-			if (read_ref_full(referent.buf, 0,
-					  lock->old_oid.hash, NULL)) {
+			if (refs_read_ref_full(&refs->base,
+					       referent.buf, 0,
+					       lock->old_oid.hash, NULL)) {
 				if (update->flags & REF_HAVE_OLD) {
 					strbuf_addf(err, "cannot lock ref '%s': "
 						    "error reading reference",
@@ -3873,8 +3883,10 @@ static int files_transaction_commit(struct ref_store *ref_store,
 	 * head_ref within the transaction, then split_head_update()
 	 * arranges for the reflog of HEAD to be updated, too.
 	 */
-	head_ref = resolve_refdup("HEAD", RESOLVE_REF_NO_RECURSE,
-				  head_oid.hash, &head_type);
+	head_ref = (char *)refs_resolve_ref_unsafe(ref_store, "HEAD",
+						   RESOLVE_REF_NO_RECURSE,
+						   head_oid.hash, &head_type);
+	head_ref = xstrdup_or_null(head_ref);
 
 	if (head_ref && !(head_type & REF_ISSYMREF)) {
 		free(head_ref);
@@ -4047,7 +4059,8 @@ static int files_initial_transaction_commit(struct ref_store *ref_store,
 	 * so here we really only check that none of the references
 	 * that we are creating already exists.
 	 */
-	if (for_each_rawref(ref_present, &affected_refnames))
+	if (refs_for_each_rawref(&refs->base, ref_present,
+				 &affected_refnames))
 		die("BUG: initial ref transaction called with existing refs");
 
 	for (i = 0; i < transaction->nr; i++) {
@@ -4166,7 +4179,7 @@ static int files_reflog_expire(struct ref_store *ref_store,
 		strbuf_release(&err);
 		return -1;
 	}
-	if (!reflog_exists(refname)) {
+	if (!refs_reflog_exists(ref_store, refname)) {
 		unlock_ref(lock);
 		return 0;
 	}
@@ -4197,7 +4210,7 @@ static int files_reflog_expire(struct ref_store *ref_store,
 	}
 
 	(*prepare_fn)(refname, sha1, cb.policy_cb);
-	for_each_reflog_ent(refname, expire_reflog_ent, &cb);
+	refs_for_each_reflog_ent(ref_store, refname, expire_reflog_ent, &cb);
 	(*cleanup_fn)(cb.policy_cb);
 
 	if (!(flags & EXPIRE_REFLOGS_DRY_RUN)) {
-- 
2.11.0.157.gd943d85


  parent reply index

Thread overview: 250+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-13 15:20 [PATCH/RFC 00/11] Remove submodule from files-backend.c Nguyễn Thái Ngọc Duy
2017-02-13 15:20 ` [PATCH 01/11] refs-internal.c: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-02-13 20:14   ` Ramsay Jones
2017-02-14  9:23     ` Duy Nguyen
2017-02-13 15:20 ` [PATCH 02/11] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-02-13 20:38   ` Ramsay Jones
2017-02-13 15:20 ` [PATCH 03/11] files-backend: add files_path() Nguyễn Thái Ngọc Duy
2017-02-13 20:43   ` Ramsay Jones
2017-02-13 15:20 ` [PATCH 04/11] files-backend: replace *git_path*() with files_path() Nguyễn Thái Ngọc Duy
2017-02-13 20:58   ` Ramsay Jones
2017-02-14  9:43     ` Duy Nguyen
2017-02-13 15:20 ` [PATCH 05/11] refs.c: share is_per_worktree_ref() to files-backend.c Nguyễn Thái Ngọc Duy
2017-02-13 15:20 ` [PATCH 06/11] refs-internal.h: correct is_per_worktree_ref() Nguyễn Thái Ngọc Duy
2017-02-13 22:37   ` Stefan Beller
2017-02-14  9:40     ` Duy Nguyen
2017-02-14 17:40       ` Stefan Beller
2017-02-13 15:20 ` [PATCH 07/11] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-02-13 23:09   ` Stefan Beller
2017-02-14  9:38     ` Duy Nguyen
2017-02-13 15:20 ` [PATCH 08/11] refs.c: factor submodule code out of get_ref_store() Nguyễn Thái Ngọc Duy
2017-02-13 23:13   ` Stefan Beller
2017-02-13 15:20 ` [PATCH 09/11] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-02-13 23:35   ` Stefan Beller
2017-02-14  9:32     ` Duy Nguyen
2017-02-13 15:20 ` [PATCH 10/11] files-backend: remove submodule_allowed from files_downcast() Nguyễn Thái Ngọc Duy
2017-02-13 23:44   ` Stefan Beller
2017-02-13 15:20 ` [PATCH 11/11] refs: split and make get_*_ref_store() public API Nguyễn Thái Ngọc Duy
2017-02-13 23:55   ` Stefan Beller
2017-02-14 10:04     ` Duy Nguyen
2017-02-14 18:24       ` Junio C Hamano
2017-02-15  0:44         ` Duy Nguyen
2017-02-15  1:16           ` Junio C Hamano
2017-02-14 18:43       ` Stefan Beller
2017-02-16 11:48 ` [PATCH v2 00/16] Remove submodule from files-backend.c Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 01/16] refs-internal.c: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 02/16] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 03/16] files-backend: add files_path() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 04/16] files-backend: replace *git_path*() with files_path() Nguyễn Thái Ngọc Duy
2017-02-20 11:23     ` Michael Haggerty
2017-02-20 12:25       ` Duy Nguyen
2017-02-16 11:48   ` [PATCH v2 05/16] refs.c: share is_per_worktree_ref() to files-backend.c Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 06/16] refs-internal.h: correct is_per_worktree_ref() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 07/16] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 08/16] refs.c: introduce get_main_ref_store() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 09/16] refs: rename lookup_ref_store() to lookup_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 10/16] refs.c: flatten get_ref_store() a bit Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 11/16] refs.c: kill register_ref_store(), add register_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 12/16] refs.c: make get_main_ref_store() public and use it Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 13/16] path.c: move some code out of strbuf_git_path_submodule() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 14/16] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 15/16] files-backend: remove submodule_allowed from files_downcast() Nguyễn Thái Ngọc Duy
2017-02-16 11:48   ` [PATCH v2 16/16] refs: rename get_ref_store() to get_submodule_ref_store() and make it public Nguyễn Thái Ngọc Duy
2017-02-16 22:55   ` [PATCH v2 00/16] Remove submodule from files-backend.c Stefan Beller
2017-02-17 14:04   ` [PATCH v3 " Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 01/16] refs-internal.c: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 02/16] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 03/16] files-backend: add files_path() Nguyễn Thái Ngọc Duy
2017-02-17 18:57       ` Junio C Hamano
2017-02-17 14:04     ` [PATCH v3 04/16] files-backend: replace *git_path*() with files_path() Nguyễn Thái Ngọc Duy
2017-02-17 19:27       ` Junio C Hamano
2017-02-17 14:04     ` [PATCH v3 05/16] refs.c: share is_per_worktree_ref() to files-backend.c Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 06/16] refs-internal.h: correct is_per_worktree_ref() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 07/16] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 08/16] refs.c: introduce get_main_ref_store() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 09/16] refs: rename lookup_ref_store() to lookup_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 10/16] refs.c: flatten get_ref_store() a bit Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 11/16] refs.c: kill register_ref_store(), add register_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-17 19:29       ` Junio C Hamano
2017-02-17 14:04     ` [PATCH v3 12/16] refs.c: make get_main_ref_store() public and use it Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 13/16] path.c: move some code out of strbuf_git_path_submodule() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 14/16] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 15/16] files-backend: remove submodule_allowed from files_downcast() Nguyễn Thái Ngọc Duy
2017-02-17 14:04     ` [PATCH v3 16/16] refs: rename get_ref_store() to get_submodule_ref_store() and make it public Nguyễn Thái Ngọc Duy
2017-02-18 13:32     ` [PATCH v4 00/15] Remove submodule from files-backend.c Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 01/15] refs-internal.c: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 02/15] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 03/15] files-backend: add files_path() Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 04/15] files-backend: replace *git_path*() with files_path() Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 05/15] refs.c: share is_per_worktree_ref() to files-backend.c Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 06/15] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-02-20 11:34         ` Michael Haggerty
2017-02-20 12:31           ` Duy Nguyen
2017-02-18 13:32       ` [PATCH v4 07/15] refs.c: introduce get_main_ref_store() Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 08/15] refs: rename lookup_ref_store() to lookup_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 09/15] refs.c: flatten get_ref_store() a bit Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 10/15] refs.c: kill register_ref_store(), add register_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-18 13:32       ` [PATCH v4 11/15] refs.c: make get_main_ref_store() public and use it Nguyễn Thái Ngọc Duy
2017-02-20 12:37         ` Michael Haggerty
2017-02-18 13:33       ` [PATCH v4 12/15] path.c: move some code out of strbuf_git_path_submodule() Nguyễn Thái Ngọc Duy
2017-02-18 13:33       ` [PATCH v4 13/15] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-02-18 13:33       ` [PATCH v4 14/15] files-backend: remove submodule_allowed from files_downcast() Nguyễn Thái Ngọc Duy
2017-02-20 12:11         ` Michael Haggerty
2017-02-20 12:21           ` Duy Nguyen
2017-02-20 12:30             ` Michael Haggerty
2017-02-20 12:33               ` Duy Nguyen
2017-02-20 12:38                 ` Michael Haggerty
2017-02-21 13:25           ` Duy Nguyen
2017-02-18 13:33       ` [PATCH v4 15/15] refs: rename get_ref_store() to get_submodule_ref_store() and make it public Nguyễn Thái Ngọc Duy
2017-02-20 12:42       ` [PATCH v4 00/15] Remove submodule from files-backend.c Michael Haggerty
2017-02-20 12:47         ` Duy Nguyen
2017-02-22 14:04       ` [PATCH v5 00/24] " Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 01/24] refs.h: add forward declaration for structs used in this file Nguyễn Thái Ngọc Duy
2017-02-22 18:18           ` Stefan Beller
2017-02-23  9:26             ` Duy Nguyen
2017-02-22 14:04         ` [PATCH v5 02/24] files-backend: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 03/24] files-backend: add and use files_packed_refs_path() Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 04/24] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-02-28 17:06           ` Michael Haggerty
2017-03-02 12:52             ` Duy Nguyen
2017-02-22 14:04         ` [PATCH v5 05/24] files-backend: move "logs/" out of TMP_RENAMED_LOG Nguyễn Thái Ngọc Duy
2017-02-28 17:19           ` Michael Haggerty
2017-03-02 13:07             ` Duy Nguyen
2017-02-22 14:04         ` [PATCH v5 06/24] files-backend: add and use files_reflog_path() Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 07/24] files-backend: add and use files_refname_path() Nguyễn Thái Ngọc Duy
2017-02-28 17:41           ` Michael Haggerty
2017-03-02 12:46             ` Duy Nguyen
2017-03-09 12:24           ` Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 08/24] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-02-28 17:50           ` Michael Haggerty
2017-03-02 12:43             ` Duy Nguyen
2017-02-22 14:04         ` [PATCH v5 09/24] refs.c: introduce get_main_ref_store() Nguyễn Thái Ngọc Duy
2017-02-28 17:51           ` Michael Haggerty
2017-03-01 12:06             ` Duy Nguyen
2017-02-22 14:04         ` [PATCH v5 10/24] refs: rename lookup_ref_store() to lookup_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 11/24] refs.c: flatten get_ref_store() a bit Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 12/24] refs.c: kill register_ref_store(), add register_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-02-28 18:03           ` Michael Haggerty
2017-03-01 12:00             ` Duy Nguyen
2017-03-01 12:31               ` Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 13/24] refs.c: make get_main_ref_store() public and use it Nguyễn Thái Ngọc Duy
2017-02-28 18:06           ` Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 14/24] path.c: move some code out of strbuf_git_path_submodule() Nguyễn Thái Ngọc Duy
2017-02-28 18:14           ` Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 15/24] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-03-03 14:32           ` Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 16/24] files-backend: replace submodule_allowed check in files_downcast() Nguyễn Thái Ngọc Duy
2017-03-03 14:49           ` Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 17/24] refs: rename get_ref_store() to get_submodule_ref_store() and make it public Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 18/24] refs: add new ref-store api Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 19/24] refs: new transaction related " Nguyễn Thái Ngọc Duy
2017-03-03 15:48           ` Michael Haggerty
2017-02-22 14:04         ` Nguyễn Thái Ngọc Duy [this message]
2017-03-03 16:03           ` [PATCH v5 20/24] files-backend: avoid ref api targetting main ref store Michael Haggerty
2017-02-22 14:04         ` [PATCH v5 21/24] refs: delete pack_refs() in favor of refs_pack_refs() Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 22/24] t/helper: add test-ref-store to test ref-store functions Nguyễn Thái Ngọc Duy
2017-02-22 14:04         ` [PATCH v5 23/24] t1405: some basic tests on main ref store Nguyễn Thái Ngọc Duy
2017-03-03 16:43           ` Michael Haggerty
2017-03-06 12:30             ` Duy Nguyen
2017-02-22 14:04         ` [PATCH v5 24/24] t1406: new tests for submodule " Nguyễn Thái Ngọc Duy
2017-02-28 17:34           ` Michael Haggerty
2017-03-01 12:34             ` Duy Nguyen
2017-03-01 15:11               ` Michael Haggerty
2017-03-02  6:13                 ` Duy Nguyen
2017-03-02  8:16                   ` Michael Haggerty
2017-03-02 12:38                     ` Duy Nguyen
2017-03-03 16:51           ` Michael Haggerty
2017-02-22 17:18         ` [PATCH v5 00/24] Remove submodule from files-backend.c Junio C Hamano
2017-02-22 21:04           ` Junio C Hamano
2017-02-28 18:20         ` Michael Haggerty
2017-02-28 20:52           ` Junio C Hamano
2017-03-03 16:54         ` Michael Haggerty
2017-03-18  2:03         ` [PATCH v6 00/27] " Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 01/27] refs.h: add forward declaration for structs used in this file Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 02/27] files-backend: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-03-19 19:10             ` Michael Haggerty
2017-03-19 20:35               ` Ramsay Jones
2017-03-18  2:03           ` [PATCH v6 03/27] files-backend: delete dead code in files_init_db() Nguyễn Thái Ngọc Duy
2017-03-19 19:11             ` Michael Haggerty
2017-03-18  2:03           ` [PATCH v6 04/27] files-backend: add and use files_packed_refs_path() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 05/27] files-backend: make sure files_rename_ref() always reach the end Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 06/27] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 07/27] files-backend: move "logs/" out of TMP_RENAMED_LOG Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 08/27] files-backend: add and use files_reflog_path() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 09/27] files-backend: add and use files_refname_path() Nguyễn Thái Ngọc Duy
2017-03-19 20:32             ` Michael Haggerty
2017-03-18  2:03           ` [PATCH v6 10/27] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 11/27] refs.c: introduce get_main_ref_store() Nguyễn Thái Ngọc Duy
2017-03-19 20:38             ` Michael Haggerty
2017-03-18  2:03           ` [PATCH v6 12/27] refs: rename lookup_ref_store() to lookup_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 13/27] refs.c: flatten get_ref_store() a bit Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 14/27] refs.c: kill register_ref_store(), add register_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 15/27] refs.c: make get_main_ref_store() public and use it Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 16/27] path.c: move some code out of strbuf_git_path_submodule() Nguyễn Thái Ngọc Duy
2017-03-19 20:47             ` Michael Haggerty
2017-03-20 12:11               ` Duy Nguyen
2017-03-18  2:03           ` [PATCH v6 17/27] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-03-19 21:05             ` Michael Haggerty
2017-03-20 12:09               ` Duy Nguyen
2017-03-20 14:29                 ` Michael Haggerty
2017-03-18  2:03           ` [PATCH v6 18/27] files-backend: replace submodule_allowed check in files_downcast() Nguyễn Thái Ngọc Duy
2017-03-19 21:18             ` Michael Haggerty
2017-03-26  2:16               ` Duy Nguyen
2017-03-29 10:55                 ` Michael Haggerty
2017-03-18  2:03           ` [PATCH v6 19/27] refs: rename get_ref_store() to get_submodule_ref_store() and make it public Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 20/27] refs: add new ref-store api Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 21/27] refs: new transaction related " Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 22/27] files-backend: avoid ref api targetting main ref store Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 23/27] refs: delete pack_refs() in favor of refs_pack_refs() Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 24/27] t/helper: add test-ref-store to test ref-store functions Nguyễn Thái Ngọc Duy
2017-03-22 13:34             ` Jeff King
2017-03-22 13:37               ` Jeff King
2017-03-25 11:54                 ` Duy Nguyen
2017-03-18  2:03           ` [PATCH v6 25/27] t1405: some basic tests on main ref store Nguyễn Thái Ngọc Duy
2017-03-18  2:03           ` [PATCH v6 26/27] t1406: new tests for submodule " Nguyễn Thái Ngọc Duy
2017-03-20  5:27             ` Michael Haggerty
2017-03-20 12:05               ` Duy Nguyen
2017-03-18  2:03           ` [PATCH v6 27/27] refs.h: add a note about sorting order of for_each_ref_* Nguyễn Thái Ngọc Duy
2017-03-20  5:37           ` [PATCH v6 00/27] Remove submodule from files-backend.c Michael Haggerty
2017-03-20 15:53             ` Junio C Hamano
2017-03-26  2:42           ` [PATCH v7 00/28] " Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 01/28] refs.h: add forward declaration for structs used in this file Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 02/28] files-backend: make files_log_ref_write() static Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 03/28] files-backend.c: delete dead code in files_ref_iterator_begin() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 04/28] files-backend: delete dead code in files_init_db() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 05/28] files-backend: add and use files_packed_refs_path() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 06/28] files-backend: make sure files_rename_ref() always reach the end Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 07/28] files-backend: convert git_path() to strbuf_git_path() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 08/28] files-backend: move "logs/" out of TMP_RENAMED_LOG Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 09/28] files-backend: add and use files_reflog_path() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 10/28] files-backend: add and use files_ref_path() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 11/28] files-backend: remove the use of git_path() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 12/28] refs.c: introduce get_main_ref_store() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 13/28] refs: rename lookup_ref_store() to lookup_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 14/28] refs.c: flatten get_ref_store() a bit Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 15/28] refs.c: kill register_ref_store(), add register_submodule_ref_store() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 16/28] refs.c: make get_main_ref_store() public and use it Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 17/28] path.c: move some code out of strbuf_git_path_submodule() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 18/28] refs: move submodule code out of files-backend.c Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 19/28] files-backend: replace submodule_allowed check in files_downcast() Nguyễn Thái Ngọc Duy
2017-04-01  4:02               ` Michael Haggerty
2017-04-07 12:41                 ` Duy Nguyen
2017-04-14 10:44                   ` Junio C Hamano
2017-04-14 13:02                     ` Duy Nguyen
2017-03-26  2:42             ` [PATCH v7 20/28] refs: rename get_ref_store() to get_submodule_ref_store() and make it public Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 21/28] refs: add new ref-store api Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 22/28] refs: new transaction related " Nguyễn Thái Ngọc Duy
2017-04-01  4:54               ` Michael Haggerty
2017-04-07 12:29                 ` Duy Nguyen
2017-03-26  2:42             ` [PATCH v7 23/28] files-backend: avoid ref api targetting main ref store Nguyễn Thái Ngọc Duy
2017-04-01  5:05               ` Michael Haggerty
2017-03-26  2:42             ` [PATCH v7 24/28] refs: delete pack_refs() in favor of refs_pack_refs() Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 25/28] t/helper: add test-ref-store to test ref-store functions Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 26/28] t1405: some basic tests on main ref store Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 27/28] t1406: new tests for submodule " Nguyễn Thái Ngọc Duy
2017-03-26  2:42             ` [PATCH v7 28/28] refs.h: add a note about sorting order of for_each_ref_* Nguyễn Thái Ngọc Duy
2017-04-01  5:09             ` [PATCH v7 00/28] Remove submodule from files-backend.c Michael Haggerty
2017-04-11  8:30               ` Junio C Hamano
2017-02-17 18:35   ` [PATCH v2 00/16] " Junio C Hamano
2017-02-17 20:49     ` Junio C Hamano
2017-02-18 13:15     ` Duy Nguyen

Reply instructions:

You may reply publically 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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170222140450.30886-21-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mhagger@alum.mit.edu \
    --cc=novalis@novalis.org \
    --cc=ramsay@ramsayjones.plus.com \
    --cc=sbeller@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

git@vger.kernel.org mailing list mirror (one of many)

Archives are clonable:
	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.org/gmane.comp.version-control.git

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox