git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / 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 v6 00/27] Remove submodule from files-backend.c
Date: Sat, 18 Mar 2017 09:03:10 +0700	[thread overview]
Message-ID: <20170318020337.22767-1-pclouds@gmail.com> (raw)
In-Reply-To: <20170222140450.30886-1-pclouds@gmail.com>

v6 should address all Micheal's comments in v5, except a few that I
replied back. The interdiff looks a bit messy due to some new
refactoring (05/27) in files_rename_ref(), but it makes the final
output easier to read.

03/27 and 27/27 are also new patches that are not really necessary but
nice to have.

The series is rebased on latest master and does not depend on any
other topics, since they all have graduated to master.

diff --git a/path.c b/path.c
index 3451d2916f..03e7e33b6e 100644
--- a/path.c
+++ b/path.c
@@ -471,7 +471,6 @@ const char *worktree_git_path(const struct worktree *wt, const char *fmt, ...)
 }
 
 /* Returns 0 on success, negative on failure. */
-#define SUBMODULE_PATH_ERR_NOT_CONFIGURED -1
 static int do_submodule_path(struct strbuf *buf, const char *path,
 			     const char *fmt, va_list args)
 {
diff --git a/refs.c b/refs.c
index 4e4945bd1c..24c7113d36 100644
--- a/refs.c
+++ b/refs.c
@@ -171,11 +171,23 @@ int refname_is_safe(const char *refname)
 	return 1;
 }
 
+char *refs_resolve_refdup(struct ref_store *refs,
+			  const char *refname, int resolve_flags,
+			  unsigned char *sha1, int *flags)
+{
+	const char *result;
+
+	result = refs_resolve_ref_unsafe(refs, refname, resolve_flags,
+					 sha1, flags);
+	return xstrdup_or_null(result);
+}
+
 char *resolve_refdup(const char *refname, int resolve_flags,
 		     unsigned char *sha1, int *flags)
 {
-	return xstrdup_or_null(resolve_ref_unsafe(refname, resolve_flags,
-						  sha1, flags));
+	return refs_resolve_refdup(get_main_ref_store(),
+				   refname, resolve_flags,
+				   sha1, flags);
 }
 
 /* The argument to filter_refs */
@@ -1521,12 +1533,7 @@ struct ref_store *get_main_ref_store(void)
 			       REF_STORE_WRITE |
 			       REF_STORE_ODB |
 			       REF_STORE_MAIN));
-	if (refs) {
-		if (main_ref_store)
-			die("BUG: main_ref_store initialized twice");
-
-		main_ref_store = refs;
-	}
+	main_ref_store = refs;
 	return refs;
 }
 
@@ -1569,17 +1576,20 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
 	ret = is_nonbare_repository_dir(&submodule_sb);
 	strbuf_release(&submodule_sb);
 	if (!ret)
-		return refs;
+		return NULL;
 
 	ret = submodule_to_gitdir(&submodule_sb, submodule);
-	if (!ret)
-		/* pretend that add_submodule_odb() has been called */
-		refs = ref_store_init(submodule_sb.buf,
-				      REF_STORE_READ | REF_STORE_ODB);
-	strbuf_release(&submodule_sb);
+	if (ret) {
+		strbuf_release(&submodule_sb);
+		return NULL;
+	}
 
-	if (refs)
-		register_submodule_ref_store(refs, submodule);
+	/* pretend that add_submodule_odb() has been called */
+	refs = ref_store_init(submodule_sb.buf,
+			      REF_STORE_READ | REF_STORE_ODB);
+	register_submodule_ref_store(refs, submodule);
+
+	strbuf_release(&submodule_sb);
 	return refs;
 }
 
diff --git a/refs.h b/refs.h
index 3fc140c16f..4f9983816a 100644
--- a/refs.h
+++ b/refs.h
@@ -3,7 +3,6 @@
 
 struct object_id;
 struct ref_store;
-struct ref_transaction;
 struct strbuf;
 struct string_list;
 
@@ -66,6 +65,9 @@ const char *refs_resolve_ref_unsafe(struct ref_store *refs,
 const char *resolve_ref_unsafe(const char *refname, int resolve_flags,
 			       unsigned char *sha1, int *flags);
 
+char *refs_resolve_refdup(struct ref_store *refs,
+			  const char *refname, int resolve_flags,
+			  unsigned char *sha1, int *flags);
 char *resolve_refdup(const char *refname, int resolve_flags,
 		     unsigned char *sha1, int *flags);
 
@@ -183,6 +185,7 @@ int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);
  * `ref_transaction_commit` is called.  So `ref_transaction_verify`
  * won't report a verification failure until the commit is attempted.
  */
+struct ref_transaction;
 
 /*
  * Bit values set in the flags argument passed to each_ref_fn() and
@@ -227,7 +230,7 @@ typedef int each_ref_fn(const char *refname,
  * it is not safe to modify references while an iteration is in
  * progress, unless the same callback function invocation that
  * modifies the reference also returns a nonzero value to immediately
- * stop the iteration.
+ * stop the iteration. Returned references are sorted.
  */
 int refs_for_each_ref(struct ref_store *refs,
 		      each_ref_fn fn, void *cb_data);
@@ -367,7 +370,7 @@ int for_each_reflog_ent_reverse(const char *refname, each_reflog_ent_fn fn, void
 
 /*
  * Calls the specified function for each reflog file until it returns nonzero,
- * and returns the value
+ * and returns the value. Reflog file order is unspecified.
  */
 int refs_for_each_reflog(struct ref_store *refs, each_ref_fn fn, void *cb_data);
 int for_each_reflog(each_ref_fn fn, void *cb_data);
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 89acf38e36..04298ba9fa 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -1282,16 +1282,10 @@ static void read_loose_refs(const char *dirname, struct ref_dir *dir)
 	struct strbuf refname;
 	struct strbuf path = STRBUF_INIT;
 	size_t path_baselen;
-	int err = 0;
 
 	files_refname_path(refs, &path, dirname);
 	path_baselen = path.len;
 
-	if (err) {
-		strbuf_release(&path);
-		return;
-	}
-
 	d = opendir(path.buf);
 	if (!d) {
 		strbuf_release(&path);
@@ -2661,30 +2655,37 @@ static int files_rename_ref(struct ref_store *ref_store,
 	struct strbuf err = STRBUF_INIT;
 
 	files_reflog_path(refs, &sb_oldref, oldrefname);
+	files_reflog_path(refs, &sb_newref, newrefname);
+	files_reflog_path(refs, &tmp_renamed_log, TMP_RENAMED_LOG);
+
 	log = !lstat(sb_oldref.buf, &loginfo);
-	strbuf_release(&sb_oldref);
-	if (log && S_ISLNK(loginfo.st_mode))
-		return error("reflog for %s is a symlink", oldrefname);
+	if (log && S_ISLNK(loginfo.st_mode)) {
+		ret = error("reflog for %s is a symlink", oldrefname);
+		goto out;
+	}
 
 	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);
+				orig_sha1, &flag)) {
+		ret = error("refname %s not found", oldrefname);
+		goto out;
+	}
 
-	if (flag & REF_ISSYMREF)
-		return error("refname %s is a symbolic ref, renaming it is not supported",
-			oldrefname);
-	if (!refs_rename_ref_available(&refs->base, oldrefname, newrefname))
-		return 1;
+	if (flag & REF_ISSYMREF) {
+		ret = error("refname %s is a symbolic ref, renaming it is not supported",
+			    oldrefname);
+		goto out;
+	}
+	if (!refs_rename_ref_available(&refs->base, oldrefname, newrefname)) {
+		ret = 1;
+		goto out;
+	}
 
-	files_reflog_path(refs, &sb_oldref, oldrefname);
-	files_reflog_path(refs, &tmp_renamed_log, TMP_RENAMED_LOG);
-	ret = log && rename(sb_oldref.buf, tmp_renamed_log.buf);
-	strbuf_release(&sb_oldref);
-	strbuf_release(&tmp_renamed_log);
-	if (ret)
-		return error("unable to move logfile logs/%s to logs/"TMP_RENAMED_LOG": %s",
-			oldrefname, strerror(errno));
+	if (log && rename(sb_oldref.buf, tmp_renamed_log.buf)) {
+		ret = error("unable to move logfile logs/%s to logs/"TMP_RENAMED_LOG": %s",
+			    oldrefname, strerror(errno));
+		goto out;
+	}
 
 	if (refs_delete_ref(&refs->base, logmsg, oldrefname,
 			    orig_sha1, REF_NODEREF)) {
@@ -2743,7 +2744,8 @@ static int files_rename_ref(struct ref_store *ref_store,
 		goto rollback;
 	}
 
-	return 0;
+	ret = 0;
+	goto out;
 
  rollback:
 	lock = lock_ref_sha1_basic(refs, oldrefname, NULL, NULL, NULL,
@@ -2764,21 +2766,20 @@ static int files_rename_ref(struct ref_store *ref_store,
 	log_all_ref_updates = flag;
 
  rollbacklog:
-	files_reflog_path(refs, &sb_newref, newrefname);
-	files_reflog_path(refs, &sb_oldref, oldrefname);
 	if (logmoved && rename(sb_newref.buf, sb_oldref.buf))
 		error("unable to restore logfile %s from %s: %s",
 			oldrefname, newrefname, strerror(errno));
-	files_reflog_path(refs, &tmp_renamed_log, TMP_RENAMED_LOG);
 	if (!logmoved && log &&
 	    rename(tmp_renamed_log.buf, sb_oldref.buf))
 		error("unable to restore logfile %s from logs/"TMP_RENAMED_LOG": %s",
 			oldrefname, strerror(errno));
+	ret = 1;
+ out:
 	strbuf_release(&sb_newref);
 	strbuf_release(&sb_oldref);
 	strbuf_release(&tmp_renamed_log);
 
-	return 1;
+	return ret;
 }
 
 static int close_ref(struct ref_lock *lock)
@@ -3885,10 +3886,9 @@ 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 = (char *)refs_resolve_ref_unsafe(ref_store, "HEAD",
-						   RESOLVE_REF_NO_RECURSE,
-						   head_oid.hash, &head_type);
-	head_ref = xstrdup_or_null(head_ref);
+	head_ref = refs_resolve_refdup(ref_store, "HEAD",
+				       RESOLVE_REF_NO_RECURSE,
+				       head_oid.hash, &head_type);
 
 	if (head_ref && !(head_type & REF_ISSYMREF)) {
 		free(head_ref);
@@ -4267,17 +4267,11 @@ static int files_init_db(struct ref_store *ref_store, struct strbuf *err)
 	 */
 	files_refname_path(refs, &sb, "refs/heads");
 	safe_create_dir(sb.buf, 1);
+
 	strbuf_reset(&sb);
 	files_refname_path(refs, &sb, "refs/tags");
 	safe_create_dir(sb.buf, 1);
-	strbuf_reset(&sb);
-	if (get_shared_repository()) {
-		files_refname_path(refs, &sb, "refs/heads");
-		adjust_shared_perm(sb.buf);
-		strbuf_reset(&sb);
-		files_refname_path(refs, &sb, "refs/tags");
-		adjust_shared_perm(sb.buf);
-	}
+
 	strbuf_release(&sb);
 	return 0;
 }
diff --git a/submodule.c b/submodule.c
index 36b8d1d113..193243102d 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1515,6 +1515,11 @@ void absorb_git_dir_into_superproject(const char *prefix,
 	}
 }
 
+/*
+ * Given a submodule path (as in the index), return the repository
+ * path of that submodule in 'buf'. Return -1 on error or when the
+ * submodule is not initialized.
+ */
 int submodule_to_gitdir(struct strbuf *buf, const char *submodule)
 {
 	const struct submodule *sub;
diff --git a/t/helper/test-ref-store.c b/t/helper/test-ref-store.c
index c4c670acd3..4cecf6b42e 100644
--- a/t/helper/test-ref-store.c
+++ b/t/helper/test-ref-store.c
@@ -195,6 +195,7 @@ static int cmd_reflog_expire(struct ref_store *refs, const char **argv)
 
 static int cmd_delete_ref(struct ref_store *refs, const char **argv)
 {
+	const char *msg = notnull(*argv++, "msg");
 	const char *refname = notnull(*argv++, "refname");
 	const char *sha1_buf = notnull(*argv++, "old-sha1");
 	unsigned int flags = arg_flags(*argv++, "flags");
@@ -203,7 +204,7 @@ static int cmd_delete_ref(struct ref_store *refs, const char **argv)
 	if (get_sha1_hex(sha1_buf, old_sha1))
 		die("not sha-1");
 
-	return refs_delete_ref(refs, refname, old_sha1, flags);
+	return refs_delete_ref(refs, msg, refname, old_sha1, flags);
 }
 
 static int cmd_update_ref(struct ref_store *refs, const char **argv)
diff --git a/t/t1405-main-ref-store.sh b/t/t1405-main-ref-store.sh
index 0999829f1f..490521f8cb 100755
--- a/t/t1405-main-ref-store.sh
+++ b/t/t1405-main-ref-store.sh
@@ -53,6 +53,12 @@ test_expect_success 'for_each_ref(refs/heads/)' '
 	test_cmp expected actual
 '
 
+test_expect_success 'for_each_ref() is sorted' '
+	$RUN for-each-ref refs/heads/ | cut -c 42- >actual &&
+	sort actual > expected &&
+	test_cmp expected actual
+'
+
 test_expect_success 'resolve_ref(new-master)' '
 	SHA1=`git rev-parse new-master` &&
 	echo "$SHA1 refs/heads/new-master 0x0" >expected &&
@@ -65,11 +71,11 @@ test_expect_success 'verify_ref(new-master)' '
 '
 
 test_expect_success 'for_each_reflog()' '
-	$RUN for-each-reflog | cut -c 42- >actual &&
+	$RUN for-each-reflog | sort | cut -c 42- >actual &&
 	cat >expected <<-\EOF &&
+	HEAD 0x1
 	refs/heads/master 0x0
 	refs/heads/new-master 0x0
-	HEAD 0x1
 	EOF
 	test_cmp expected actual
 '
@@ -116,7 +122,7 @@ test_expect_success 'delete_ref(refs/heads/foo)' '
 test_expect_success 'delete_ref(refs/heads/foo)' '
 	SHA1=`git rev-parse foo` &&
 	git checkout --detach &&
-	$RUN delete-ref refs/heads/foo $SHA1 0 &&
+	$RUN delete-ref msg refs/heads/foo $SHA1 0 &&
 	test_must_fail git rev-parse refs/heads/foo --
 '
 
diff --git a/t/t1406-submodule-ref-store.sh b/t/t1406-submodule-ref-store.sh
index 3b30ba62f2..13b5454c56 100755
--- a/t/t1406-submodule-ref-store.sh
+++ b/t/t1406-submodule-ref-store.sh
@@ -47,6 +47,12 @@ test_expect_success 'for_each_ref(refs/heads/)' '
 	test_cmp expected actual
 '
 
+test_expect_success 'for_each_ref() is sorted' '
+	$RUN for-each-ref refs/heads/ | cut -c 42- >actual &&
+	sort actual > expected &&
+	test_cmp expected actual
+'
+
 test_expect_success 'resolve_ref(master)' '
 	SHA1=`git -C sub rev-parse master` &&
 	echo "$SHA1 refs/heads/master 0x0" >expected &&
@@ -59,11 +65,11 @@ test_expect_success 'verify_ref(new-master)' '
 '
 
 test_expect_success 'for_each_reflog()' '
-	$RUN for-each-reflog | cut -c 42- >actual &&
+	$RUN for-each-reflog | sort | cut -c 42- >actual &&
 	cat >expected <<-\EOF &&
+	HEAD 0x1
 	refs/heads/master 0x0
 	refs/heads/new-master 0x0
-	HEAD 0x1
 	EOF
 	test_cmp expected actual
 '
-- 
2.11.0.157.gd943d85


  parent reply	other threads:[~2017-03-18  2:37 UTC|newest]

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         ` [PATCH v5 20/24] files-backend: avoid ref api targetting main ref store Nguyễn Thái Ngọc Duy
2017-03-03 16:03           ` 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         ` Nguyễn Thái Ngọc Duy [this message]
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 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

  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=20170318020337.22767-1-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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).