git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v16 01/14] Write pseudorefs through ref backends.

From
Han-Wen Nienhuys via GitGitGadget <gitgitgadget@gmail.com>
Date
Jun 5, 2020, 18:03 UTC
Message-ID
<4a1f600fb8520967778dd564279eabb8fd73a0e3.1591380199.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.539.v16.git.1591380199.gitgitgadget@gmail.com>
From: Han-Wen Nienhuys <hanwen@google.com>

Pseudorefs store transient data in in the repository. Examples are HEAD, CHERRY_PICK_HEAD, etc.

These refs have always been read through the ref backends, but they were written in a one-off routine that wrote an object ID or symref directly into .git/<pseudo_ref_name>.

This causes problems when introducing a new ref storage backend. To remedy this, extend the ref backend implementation with a write_pseudoref_fn and update_pseudoref_fn.

Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
---
 refs.c                | 119 ++++++++----------------------------------
 refs.h                |  11 ++++
 refs/files-backend.c  | 114 +++++++++++++++++++++++++++++++++++++++-
 refs/packed-backend.c |  21 +++++++-
 refs/refs-internal.h  |  18 +++++++
 5 files changed, 184 insertions(+), 99 deletions(-)
diff --git a/refs.c b/refs.c
index 224ff66c7bb..12908066b13 100644
--- a/refs.c
+++ b/refs.c
@@ -321,6 +321,12 @@ int ref_exists(const char *refname)
 	return refs_ref_exists(get_main_ref_store(the_repository), refname);
 }
 
+int delete_pseudoref(const char *pseudoref, const struct object_id *old_oid)
+{
+	return refs_delete_pseudoref(get_main_ref_store(the_repository),
+				     pseudoref, old_oid);
+}
+
 static int filter_refs(const char *refname, const struct object_id *oid,
 			   int flags, void *data)
 {
@@ -739,101 +745,6 @@ long get_files_ref_lock_timeout_ms(void)
 	return timeout_ms;
 }
 
-static int write_pseudoref(const char *pseudoref, const struct object_id *oid,
-			   const struct object_id *old_oid, struct strbuf *err)
-{
-	const char *filename;
-	int fd;
-	struct lock_file lock = LOCK_INIT;
-	struct strbuf buf = STRBUF_INIT;
-	int ret = -1;
-
-	if (!oid)
-		return 0;
-
-	strbuf_addf(&buf, "%s\n", oid_to_hex(oid));
-
-	filename = git_path("%s", pseudoref);
-	fd = hold_lock_file_for_update_timeout(&lock, filename, 0,
-					       get_files_ref_lock_timeout_ms());
-	if (fd < 0) {
-		strbuf_addf(err, _("could not open '%s' for writing: %s"),
-			    filename, strerror(errno));
-		goto done;
-	}
-
-	if (old_oid) {
-		struct object_id actual_old_oid;
-
-		if (read_ref(pseudoref, &actual_old_oid)) {
-			if (!is_null_oid(old_oid)) {
-				strbuf_addf(err, _("could not read ref '%s'"),
-					    pseudoref);
-				rollback_lock_file(&lock);
-				goto done;
-			}
-		} else if (is_null_oid(old_oid)) {
-			strbuf_addf(err, _("ref '%s' already exists"),
-				    pseudoref);
-			rollback_lock_file(&lock);
-			goto done;
-		} else if (!oideq(&actual_old_oid, old_oid)) {
-			strbuf_addf(err, _("unexpected object ID when writing '%s'"),
-				    pseudoref);
-			rollback_lock_file(&lock);
-			goto done;
-		}
-	}
-
-	if (write_in_full(fd, buf.buf, buf.len) < 0) {
-		strbuf_addf(err, _("could not write to '%s'"), filename);
-		rollback_lock_file(&lock);
-		goto done;
-	}
-
-	commit_lock_file(&lock);
-	ret = 0;
-done:
-	strbuf_release(&buf);
-	return ret;
-}
-
-static int delete_pseudoref(const char *pseudoref, const struct object_id *old_oid)
-{
-	const char *filename;
-
-	filename = git_path("%s", pseudoref);
-
-	if (old_oid && !is_null_oid(old_oid)) {
-		struct lock_file lock = LOCK_INIT;
-		int fd;
-		struct object_id actual_old_oid;
-
-		fd = hold_lock_file_for_update_timeout(
-				&lock, filename, 0,
-				get_files_ref_lock_timeout_ms());
-		if (fd < 0) {
-			error_errno(_("could not open '%s' for writing"),
-				    filename);
-			return -1;
-		}
-		if (read_ref(pseudoref, &actual_old_oid))
-			die(_("could not read ref '%s'"), pseudoref);
-		if (!oideq(&actual_old_oid, old_oid)) {
-			error(_("unexpected object ID when deleting '%s'"),
-			      pseudoref);
-			rollback_lock_file(&lock);
-			return -1;
-		}
-
-		unlink(filename);
-		rollback_lock_file(&lock);
-	} else {
-		unlink(filename);
-	}
-
-	return 0;
-}
 
 int refs_delete_ref(struct ref_store *refs, const char *msg,
 		    const char *refname,
@@ -845,7 +756,7 @@ int refs_delete_ref(struct ref_store *refs, const char *msg,
 
 	if (ref_type(refname) == REF_TYPE_PSEUDOREF) {
 		assert(refs == get_main_ref_store(the_repository));
-		return delete_pseudoref(refname, old_oid);
+		return refs_delete_pseudoref(refs, refname, old_oid);
 	}
 
 	transaction = ref_store_transaction_begin(refs, &err);
@@ -1172,7 +1083,8 @@ int refs_update_ref(struct ref_store *refs, const char *msg,
 
 	if (ref_type(refname) == REF_TYPE_PSEUDOREF) {
 		assert(refs == get_main_ref_store(the_repository));
-		ret = write_pseudoref(refname, new_oid, old_oid, &err);
+		ret = refs_write_pseudoref(refs, refname, new_oid, old_oid,
+					   &err);
 	} else {
 		t = ref_store_transaction_begin(refs, &err);
 		if (!t ||
@@ -1441,6 +1353,19 @@ int head_ref(each_ref_fn fn, void *cb_data)
 	return refs_head_ref(get_main_ref_store(the_repository), fn, cb_data);
 }
 
+int refs_write_pseudoref(struct ref_store *refs, const char *pseudoref,
+			 const struct object_id *oid,
+			 const struct object_id *old_oid, struct strbuf *err)
+{
+	return refs->be->write_pseudoref(refs, pseudoref, oid, old_oid, err);
+}
+
+int refs_delete_pseudoref(struct ref_store *refs, const char *pseudoref,
+			  const struct object_id *old_oid)
+{
+	return refs->be->delete_pseudoref(refs, pseudoref, old_oid);
+}
+
 struct ref_iterator *refs_ref_iterator_begin(
 		struct ref_store *refs,
 		const char *prefix, int trim, int flags)
diff --git a/refs.h b/refs.h
index e010f8aec28..4dad8f24914 100644
--- a/refs.h
+++ b/refs.h
@@ -732,6 +732,17 @@ int update_ref(const char *msg, const char *refname,
 	       const struct object_id *new_oid, const struct object_id *old_oid,
 	       unsigned int flags, enum action_on_err onerr);
 
+/* Pseudorefs (eg. HEAD, CHERRY_PICK_HEAD) have a separate routines for updating
+   and deletion as they cannot take part in normal transactional updates.
+   Pseudorefs should only be written for the main repository.
+*/
+int refs_write_pseudoref(struct ref_store *refs, const char *pseudoref,
+			 const struct object_id *oid,
+			 const struct object_id *old_oid, struct strbuf *err);
+int refs_delete_pseudoref(struct ref_store *refs, const char *pseudoref,
+			  const struct object_id *old_oid);
+int delete_pseudoref(const char *pseudoref, const struct object_id *old_oid);
+
 int parse_hide_refs_config(const char *var, const char *value, const char *);
 
 /*
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 6516c7bc8c8..df7553f4cc3 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -731,6 +731,115 @@ static int lock_raw_ref(struct files_ref_store *refs,
 	return ret;
 }
 
+static int files_write_pseudoref(struct ref_store *ref_store,
+				 const char *pseudoref,
+				 const struct object_id *oid,
+				 const struct object_id *old_oid,
+				 struct strbuf *err)
+{
+	struct files_ref_store *refs =
+		files_downcast(ref_store, REF_STORE_READ, "write_pseudoref");
+	int fd;
+	struct lock_file lock = LOCK_INIT;
+	struct strbuf filename = STRBUF_INIT;
+	struct strbuf buf = STRBUF_INIT;
+	int ret = -1;
+
+	if (!oid)
+		return 0;
+
+	strbuf_addf(&filename, "%s/%s", refs->gitdir, pseudoref);
+	fd = hold_lock_file_for_update_timeout(&lock, filename.buf, 0,
+					       get_files_ref_lock_timeout_ms());
+	if (fd < 0) {
+		strbuf_addf(err, _("could not open '%s' for writing: %s"),
+			    buf.buf, strerror(errno));
+		goto done;
+	}
+
+	if (old_oid) {
+		struct object_id actual_old_oid;
+
+		if (read_ref(pseudoref, &actual_old_oid)) {
+			if (!is_null_oid(old_oid)) {
+				strbuf_addf(err, _("could not read ref '%s'"),
+					    pseudoref);
+				rollback_lock_file(&lock);
+				goto done;
+			}
+		} else if (is_null_oid(old_oid)) {
+			strbuf_addf(err, _("ref '%s' already exists"),
+				    pseudoref);
+			rollback_lock_file(&lock);
+			goto done;
+		} else if (!oideq(&actual_old_oid, old_oid)) {
+			strbuf_addf(err,
+				    _("unexpected object ID when writing '%s'"),
+				    pseudoref);
+			rollback_lock_file(&lock);
+			goto done;
+		}
+	}
+
+	strbuf_addf(&buf, "%s\n", oid_to_hex(oid));
+	if (write_in_full(fd, buf.buf, buf.len) < 0) {
+		strbuf_addf(err, _("could not write to '%s'"), filename.buf);
+		rollback_lock_file(&lock);
+		goto done;
+	}
+
+	commit_lock_file(&lock);
+	ret = 0;
+done:
+	strbuf_release(&buf);
+	strbuf_release(&filename);
+	return ret;
+}
+
+static int files_delete_pseudoref(struct ref_store *ref_store,
+				  const char *pseudoref,
+				  const struct object_id *old_oid)
+{
+	struct files_ref_store *refs =
+		files_downcast(ref_store, REF_STORE_READ, "delete_pseudoref");
+	struct strbuf filename = STRBUF_INIT;
+	int ret = -1;
+
+	strbuf_addf(&filename, "%s/%s", refs->gitdir, pseudoref);
+
+	if (old_oid && !is_null_oid(old_oid)) {
+		struct lock_file lock = LOCK_INIT;
+		int fd;
+		struct object_id actual_old_oid;
+
+		fd = hold_lock_file_for_update_timeout(
+			&lock, filename.buf, 0,
+			get_files_ref_lock_timeout_ms());
+		if (fd < 0) {
+			error_errno(_("could not open '%s' for writing"),
+				    filename.buf);
+			goto done;
+		}
+		if (read_ref(pseudoref, &actual_old_oid))
+			die(_("could not read ref '%s'"), pseudoref);
+		if (!oideq(&actual_old_oid, old_oid)) {
+			error(_("unexpected object ID when deleting '%s'"),
+			      pseudoref);
+			rollback_lock_file(&lock);
+			goto done;
+		}
+
+		unlink(filename.buf);
+		rollback_lock_file(&lock);
+	} else {
+		unlink(filename.buf);
+	}
+	ret = 0;
+done:
+	strbuf_release(&filename);
+	return ret;
+}
+
 struct files_ref_iterator {
 	struct ref_iterator base;
 
@@ -3189,6 +3298,9 @@ struct ref_storage_be refs_be_files = {
 	files_rename_ref,
 	files_copy_ref,
 
+	files_write_pseudoref,
+	files_delete_pseudoref,
+
 	files_ref_iterator_begin,
 	files_read_raw_ref,
 
@@ -3198,5 +3310,5 @@ struct ref_storage_be refs_be_files = {
 	files_reflog_exists,
 	files_create_reflog,
 	files_delete_reflog,
-	files_reflog_expire
+	files_reflog_expire,
 };
diff --git a/refs/packed-backend.c b/refs/packed-backend.c
index 4458a0f69cc..08e8253a893 100644
--- a/refs/packed-backend.c
+++ b/refs/packed-backend.c
@@ -1590,6 +1590,22 @@ static int packed_copy_ref(struct ref_store *ref_store,
 	BUG("packed reference store does not support copying references");
 }
 
+static int packed_write_pseudoref(struct ref_store *ref_store,
+				  const char *pseudoref,
+				  const struct object_id *oid,
+				  const struct object_id *old_oid,
+				  struct strbuf *err)
+{
+	BUG("packed reference store does not support writing pseudo-references");
+}
+
+static int packed_delete_pseudoref(struct ref_store *ref_store,
+				   const char *pseudoref,
+				   const struct object_id *old_oid)
+{
+	BUG("packed reference store does not support deleting pseudo-references");
+}
+
 static struct ref_iterator *packed_reflog_iterator_begin(struct ref_store *ref_store)
 {
 	return empty_ref_iterator_begin();
@@ -1656,6 +1672,9 @@ struct ref_storage_be refs_be_packed = {
 	packed_rename_ref,
 	packed_copy_ref,
 
+	packed_write_pseudoref,
+	packed_delete_pseudoref,
+
 	packed_ref_iterator_begin,
 	packed_read_raw_ref,
 
@@ -1665,5 +1684,5 @@ struct ref_storage_be refs_be_packed = {
 	packed_reflog_exists,
 	packed_create_reflog,
 	packed_delete_reflog,
-	packed_reflog_expire
+	packed_reflog_expire,
 };
diff --git a/refs/refs-internal.h b/refs/refs-internal.h
index 4271362d264..59b053d53a2 100644
--- a/refs/refs-internal.h
+++ b/refs/refs-internal.h
@@ -556,6 +556,21 @@ typedef int copy_ref_fn(struct ref_store *ref_store,
 			  const char *oldref, const char *newref,
 			  const char *logmsg);
 
+typedef int write_pseudoref_fn(struct ref_store *ref_store,
+			       const char *pseudoref,
+			       const struct object_id *oid,
+			       const struct object_id *old_oid,
+			       struct strbuf *err);
+
+/*
+ * Deletes a pseudoref. Deletion always succeeds (even if the pseudoref doesn't
+ * exist.), except if old_oid is specified. If it is, it can fail due to lock
+ * failure, failure reading the old OID, or an OID mismatch
+ */
+typedef int delete_pseudoref_fn(struct ref_store *ref_store,
+				const char *pseudoref,
+				const struct object_id *old_oid);
+
 /*
  * Iterate over the references in `ref_store` whose names start with
  * `prefix`. `prefix` is matched as a literal string, without regard
@@ -655,6 +670,9 @@ struct ref_storage_be {
 	rename_ref_fn *rename_ref;
 	copy_ref_fn *copy_ref;
 
+	write_pseudoref_fn *write_pseudoref;
+	delete_pseudoref_fn *delete_pseudoref;
+
 	ref_iterator_begin_fn *iterator_begin;
 	read_raw_ref_fn *read_raw_ref;
 
-- 
gitgitgadget
Previous: Han-Wen NienhuysNext: Phillip Wood
Message 287 of 409 in “Reftable support git-core”
  1. 0/5 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jan 23, 2020
  2. 1/5 setup.c: enable repo detection for reftableHan-Wen Nienhuys via GitGitGadget, Jan 23, 2020
  3. 3/5 Document how ref iterators and symrefs interactHan-Wen Nienhuys via GitGitGadget, Jan 23, 2020
  4. 2/5 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Jan 23, 2020
  5. 5/5 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jan 23, 2020
  6. 4/5 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jan 23, 2020
  7. Junio C HamanoJan 23, 2020
  8. Han-Wen NienhuysJan 27, 2020
  9. Han-Wen NienhuysJan 27, 2020
  10. Stephan BeyerJan 23, 2020
  11. Han-Wen NienhuysJan 27, 2020
  12. 0/5 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jan 27, 2020
  13. 1/5 setup.c: enable repo detection for reftableHan-Wen Nienhuys via GitGitGadget, Jan 27, 2020
  14. 2/5 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Jan 27, 2020
  15. Junio C HamanoJan 27, 2020
  16. Han-Wen NienhuysJan 28, 2020
  17. Junio C HamanoJan 30, 2020
  18. 3/5 Document how ref iterators and symrefs interactHan-Wen Nienhuys via GitGitGadget, Jan 27, 2020
  19. Junio C HamanoJan 27, 2020
  20. Han-Wen NienhuysJan 28, 2020
  21. Junio C HamanoJan 28, 2020
  22. 5/5 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jan 27, 2020
  23. Jeff KingJan 28, 2020
  24. Martin FickJan 28, 2020
  25. Jeff KingJan 29, 2020
  26. Martin FickJan 29, 2020
  27. Han-Wen NienhuysJan 29, 2020
  28. Martin FickJan 29, 2020
  29. Han-Wen NienhuysJan 29, 2020
  30. Jeff KingJan 30, 2020
  31. Han-Wen NienhuysFeb 3, 2020
  32. Jeff KingFeb 3, 2020
  33. Han-Wen NienhuysFeb 3, 2020
  34. Han-Wen NienhuysFeb 4, 2020
  35. Jeff KingFeb 4, 2020
  36. Han-Wen NienhuysFeb 4, 2020
  37. Junio C HamanoJan 29, 2020
  38. Han-Wen NienhuysJan 28, 2020
  39. Jeff KingJan 29, 2020
  40. Junio C HamanoJan 29, 2020
  41. Han-Wen NienhuysJan 29, 2020
  42. Jeff KingJan 30, 2020
  43. Han-Wen NienhuysFeb 4, 2020
  44. Jeff KingFeb 4, 2020
  45. Han-Wen NienhuysFeb 4, 2020
  46. Jeff KingFeb 4, 2020
  47. 4/5 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jan 27, 2020
  48. 0/6 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  49. 2/6 setup.c: enable repo detection for reftableHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  50. Han-Wen NienhuysFeb 4, 2020
  51. 1/6 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  52. 3/6 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  53. Junio C HamanoFeb 4, 2020
  54. Han-Wen NienhuysFeb 5, 2020
  55. SZEDER GáborFeb 5, 2020
  56. Jeff KingFeb 5, 2020
  57. 4/6 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  58. 6/6 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  59. 5/6 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Feb 4, 2020
  60. 0/5 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Feb 6, 2020
  61. 2/5 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Feb 6, 2020
  62. 1/5 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Feb 6, 2020
  63. 3/5 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Feb 6, 2020
  64. 5/5 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Feb 6, 2020
  65. brian m. carlsonFeb 6, 2020
  66. Han-Wen NienhuysFeb 10, 2020
  67. 4/5 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Feb 6, 2020
  68. Junio C HamanoFeb 6, 2020
  69. brian m. carlsonFeb 7, 2020
  70. Han-Wen NienhuysFeb 10, 2020
  71. brian m. carlsonFeb 11, 2020
  72. Han-Wen NienhuysFeb 11, 2020
  73. Junio C HamanoFeb 11, 2020
  74. Han-Wen NienhuysFeb 11, 2020
  75. brian m. carlsonFeb 11, 2020
  76. Han-Wen NienhuysFeb 18, 2020
  77. Han-Wen NienhuysFeb 11, 2020
  78. Jonathan NiederFeb 20, 2020
  79. brian m. carlsonFeb 6, 2020
  80. 0/5 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Feb 10, 2020
  81. 1/5 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Feb 10, 2020
  82. 2/5 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Feb 10, 2020
  83. 3/5 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Feb 10, 2020
  84. 5/5 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Feb 10, 2020
  85. 4/5 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Feb 10, 2020
  86. 0/5 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Feb 18, 2020
  87. 2/5 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Feb 18, 2020
  88. 1/5 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Feb 18, 2020
  89. 3/5 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Feb 18, 2020
  90. 5/5 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Feb 18, 2020
  91. 4/5 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Feb 18, 2020
  92. Junio C HamanoFeb 18, 2020
  93. Jeff KingFeb 19, 2020
  94. Han-Wen NienhuysFeb 19, 2020
  95. Junio C HamanoFeb 18, 2020
  96. Han-Wen NienhuysFeb 19, 2020
  97. Junio C HamanoFeb 19, 2020
  98. Han-Wen NienhuysFeb 19, 2020
  99. Junio C HamanoFeb 19, 2020
  100. Han-Wen NienhuysFeb 19, 2020
  101. Junio C HamanoFeb 19, 2020
  102. Jeff KingFeb 20, 2020
  103. Jonathan NiederFeb 21, 2020
  104. Han-Wen NienhuysFeb 26, 2020
  105. Junio C HamanoFeb 26, 2020
  106. brian m. carlsonFeb 27, 2020
  107. 0/6 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Feb 26, 2020
  108. 3/6 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Feb 26, 2020
  109. 1/6 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Feb 26, 2020
  110. 2/6 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Feb 26, 2020
  111. 4/6 reftable: file format documentationJonathan Nieder via GitGitGadget, Feb 26, 2020
  112. 6/6 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Feb 26, 2020
  113. Junio C HamanoFeb 26, 2020
  114. Han-Wen NienhuysFeb 26, 2020
  115. Junio C HamanoFeb 26, 2020
  116. Han-Wen NienhuysFeb 27, 2020
  117. Junio C HamanoFeb 27, 2020
  118. Han-Wen NienhuysFeb 27, 2020
  119. Junio C HamanoFeb 26, 2020
  120. Han-Wen NienhuysFeb 27, 2020
  121. Junio C HamanoFeb 27, 2020
  122. 5/6 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Feb 26, 2020
  123. Junio C HamanoFeb 26, 2020
  124. Jonathan NiederMar 24, 2020
  125. 0/9 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  126. 1/9 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  127. 4/9 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  128. 3/9 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  129. 2/9 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  130. 6/9 reftable: define version 2 of the spec to accomodate SHA256Han-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  131. 7/9 reftable: clarify how empty tables should be writtenHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  132. 9/9 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  133. 5/9 reftable: file format documentationJonathan Nieder via GitGitGadget, Apr 1, 2020
  134. 8/9 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Apr 1, 2020
  135. Junio C HamanoApr 15, 2020
  136. Danh DoanApr 18, 2020
  137. 00/10 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  138. 02/10 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  139. 03/10 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  140. 01/10 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  141. 05/10 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  142. 04/10 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  143. 07/10 reftable: define version 2 of the spec to accomodate SHA256Han-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  144. 06/10 reftable: file format documentationJonathan Nieder via GitGitGadget, Apr 20, 2020
  145. 08/10 reftable: clarify how empty tables should be writtenHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  146. 10/10 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  147. 09/10 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Apr 20, 2020
  148. Junio C HamanoApr 20, 2020
  149. Han-Wen NienhuysApr 21, 2020
  150. Johannes SchindelinApr 22, 2020
  151. Junio C HamanoApr 21, 2020
  152. Han-Wen NienhuysApr 23, 2020
  153. Junio C HamanoApr 23, 2020
  154. Junio C HamanoApr 23, 2020
  155. Johannes SchindelinApr 25, 2020
  156. 00/12 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  157. 08/12 reftable: clarify how empty tables should be writtenHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  158. 07/12 reftable: define version 2 of the spec to accomodate SHA256Han-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  159. 10/12 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  160. 02/12 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  161. Emily ShafferApr 30, 2020
  162. Han-Wen NienhuysMay 4, 2020
  163. Pseudo ref handling (was Re: [PATCH v10 02/12] Iterate over the "refs/" namespace in for_each_[raw]ref)Han-Wen Nienhuys, May 5, 2020
  164. 05/12 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  165. 12/12 t: use update-ref and show-ref to reading/writing refsHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  166. 11/12 Add some reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  167. 03/12 create .git/refs in files-backend.cHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  168. Emily ShafferApr 30, 2020
  169. Junio C HamanoApr 30, 2020
  170. Han-Wen NienhuysMay 4, 2020
  171. 01/12 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  172. 06/12 reftable: file format documentationJonathan Nieder via GitGitGadget, Apr 27, 2020
  173. 04/12 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  174. 09/12 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Apr 27, 2020
  175. Danh DoanApr 28, 2020
  176. Junio C HamanoApr 28, 2020
  177. Junio C HamanoApr 28, 2020
  178. Han-Wen NienhuysApr 28, 2020
  179. Han-Wen NienhuysApr 28, 2020
  180. 00/12 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  181. 01/12 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  182. 02/12 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  183. 04/12 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  184. 06/12 reftable: define version 2 of the spec to accomodate SHA256Han-Wen Nienhuys via GitGitGadget, May 4, 2020
  185. 03/12 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  186. 07/12 reftable: clarify how empty tables should be writtenHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  187. 10/12 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, May 4, 2020
  188. 05/12 reftable: file format documentationJonathan Nieder via GitGitGadget, May 4, 2020
  189. 11/12 Add some reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  190. 09/12 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  191. 12/12 t: use update-ref and show-ref to reading/writing refsHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  192. 08/12 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, May 4, 2020
  193. Junio C HamanoMay 6, 2020
  194. 00/12 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  195. 01/12 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  196. Junio C HamanoMay 8, 2020
  197. 02/12 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  198. Junio C HamanoMay 8, 2020
  199. Han-Wen NienhuysMay 11, 2020
  200. 03/12 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  201. Junio C HamanoMay 8, 2020
  202. Han-Wen NienhuysMay 11, 2020
  203. Junio C HamanoMay 11, 2020
  204. Han-Wen NienhuysMay 11, 2020
  205. 06/12 reftable: define version 2 of the spec to accomodate SHA256Han-Wen Nienhuys via GitGitGadget, May 7, 2020
  206. Junio C HamanoMay 8, 2020
  207. 07/12 reftable: clarify how empty tables should be writtenHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  208. 05/12 reftable: file format documentationJonathan Nieder via GitGitGadget, May 7, 2020
  209. 04/12 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  210. 10/12 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, May 7, 2020
  211. 09/12 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  212. 08/12 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  213. 11/12 t: use update-ref and show-ref to reading/writing refsHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  214. 12/12 Add some reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, May 7, 2020
  215. 00/13 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  216. 01/13 refs.h: clarify reflog iteration orderHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  217. Junio C HamanoMay 18, 2020
  218. 03/13 refs: document how ref_iterator_advance_fn should handle symrefsHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  219. Junio C HamanoMay 18, 2020
  220. 02/13 t: use update-ref and show-ref to reading/writing refsHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  221. Junio C HamanoMay 18, 2020
  222. 05/13 reftable: clarify how empty tables should be writtenHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  223. Junio C HamanoMay 19, 2020
  224. 06/13 reftable: define version 2 of the spec to accomodate SHA256Han-Wen Nienhuys via GitGitGadget, May 11, 2020
  225. Junio C HamanoMay 19, 2020
  226. Han-Wen NienhuysMay 20, 2020
  227. Junio C HamanoMay 20, 2020
  228. 07/13 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, May 11, 2020
  229. Phillip WoodMay 12, 2020
  230. Han-Wen NienhuysMay 12, 2020
  231. Phillip WoodMay 13, 2020
  232. Phillip WoodMay 13, 2020
  233. 04/13 reftable: file format documentationJonathan Nieder via GitGitGadget, May 11, 2020
  234. Junio C HamanoMay 19, 2020
  235. Han-Wen NienhuysMay 20, 2020
  236. Han-Wen NienhuysMay 20, 2020
  237. Han-Wen NienhuysMay 20, 2020
  238. Junio C HamanoMay 20, 2020
  239. Jonathan NiederMay 20, 2020
  240. 08/13 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  241. 09/13 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  242. 10/13 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  243. 12/13 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, May 11, 2020
  244. 11/13 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  245. Junio C HamanoMay 13, 2020
  246. 13/13 Add some reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, May 11, 2020
  247. Junio C HamanoMay 13, 2020
  248. Han-Wen NienhuysMay 19, 2020
  249. Junio C HamanoMay 19, 2020
  250. Junio C HamanoMay 12, 2020
  251. Han-Wen NienhuysMay 12, 2020
  252. Junio C HamanoMay 13, 2020
  253. 0/9 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  254. 2/9 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  255. 1/9 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, May 18, 2020
  256. 3/9 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  257. 4/9 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  258. 7/9 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  259. 8/9 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, May 18, 2020
  260. 9/9 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  261. 6/9 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  262. 5/9 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, May 18, 2020
  263. 00/13 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  264. 13/13 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  265. 10/13 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  266. 09/13 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  267. 11/13 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  268. 08/13 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  269. 12/13 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, May 28, 2020
  270. 07/13 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  271. 06/13 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  272. 05/13 Treat REVERT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  273. 02/13 Make refs_ref_exists publicHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  274. 04/13 Treat CHERRY_PICK_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  275. 03/13 Treat BISECT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, May 28, 2020
  276. Junio C HamanoMay 28, 2020
  277. 01/13 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, May 28, 2020
  278. Junio C HamanoMay 28, 2020
  279. Junio C HamanoMay 28, 2020
  280. 00/14 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  281. 02/14 Make refs_ref_exists publicHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  282. Phillip WoodJun 9, 2020
  283. Han-Wen NienhuysJun 10, 2020
  284. Phillip WoodJun 11, 2020
  285. Phillip WoodJun 12, 2020
  286. Han-Wen NienhuysJun 15, 2020
  287. 01/14 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  288. Phillip WoodJun 9, 2020
  289. 03/14 Treat BISECT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  290. 05/14 Treat REVERT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  291. 04/14 Treat CHERRY_PICK_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  292. 06/14 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  293. 07/14 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  294. 08/14 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  295. 11/14 Hookup unittests for the reftable library.Han-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  296. Junio C HamanoJun 8, 2020
  297. Fixup! Add t/helper/test-reftable.chanwen@google.com, Jun 9, 2020
  298. Junio C HamanoJun 9, 2020
  299. 10/14 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  300. 13/14 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, Jun 5, 2020
  301. 09/14 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  302. 14/14 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  303. 12/14 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, Jun 5, 2020
  304. Junio C HamanoJun 9, 2020
  305. Han-Wen NienhuysJun 10, 2020
  306. Junio C HamanoJun 10, 2020
  307. Junio C HamanoJun 10, 2020
  308. Johannes SchindelinJun 10, 2020
  309. Han-Wen NienhuysJun 10, 2020
  310. Johannes SchindelinJun 10, 2020
  311. Han-Wen NienhuysJun 10, 2020
  312. 00/17 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  313. 01/17 lib-t6000.sh: write tag using git-update-refHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  314. 02/17 checkout: add '\n' to reflog messageHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  315. 04/17 Make refs_ref_exists publicHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  316. 03/17 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  317. 05/17 Treat BISECT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  318. 07/17 Treat REVERT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  319. 12/17 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  320. SZEDER GáborJun 19, 2020
  321. 14/17 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  322. 15/17 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, Jun 16, 2020
  323. 17/17 Add "test-tool dump-reftable" command.Han-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  324. 13/17 Hookup unittests for the reftable library.Han-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  325. 11/17 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  326. 16/17 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  327. SZEDER GáborJun 19, 2020
  328. 10/17 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  329. 09/17 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  330. 06/17 Treat CHERRY_PICK_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  331. 08/17 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, Jun 16, 2020
  332. 00/19 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  333. 02/19 checkout: add '\n' to reflog messageHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  334. 04/19 Make refs_ref_exists publicHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  335. 05/19 Treat BISECT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  336. 06/19 Treat CHERRY_PICK_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  337. 07/19 Treat REVERT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  338. 08/19 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  339. 03/19 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  340. 01/19 lib-t6000.sh: write tag using git-update-refHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  341. 12/19 Add standalone build infrastructure for reftableHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  342. 18/19 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  343. 11/19 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  344. 09/19 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  345. 19/19 Add "test-tool dump-reftable" command.Han-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  346. 17/19 git-prompt: prepare for reftable refs backendSZEDER Gábor via GitGitGadget, Jun 22, 2020
  347. 10/19 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  348. 15/19 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  349. 13/19 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  350. 14/19 Hookup unittests for the reftable library.Han-Wen Nienhuys via GitGitGadget, Jun 22, 2020
  351. 16/19 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, Jun 22, 2020
  352. 00/20 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  353. 05/20 Make refs_ref_exists publicHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  354. 09/20 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  355. 11/20 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  356. 03/20 checkout: add '\n' to reflog messageHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  357. Junio C HamanoJun 29, 2020
  358. Han-Wen NienhuysJun 30, 2020
  359. Junio C HamanoJun 30, 2020
  360. Han-Wen NienhuysJul 1, 2020
  361. Re* [PATCH v19 03/20] checkout: add '\n' to reflog messageJunio C Hamano, Jul 1, 2020
  362. Han-Wen NienhuysJul 6, 2020
  363. Junio C HamanoJul 6, 2020
  364. 17/20 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, Jun 29, 2020
  365. 08/20 Treat REVERT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  366. 10/20 Iterate over the "refs/" namespace in for_each_[raw]refHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  367. 20/20 Add "test-tool dump-reftable" command.Han-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  368. 19/20 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  369. 16/20 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  370. 18/20 git-prompt: prepare for reftable refs backendSZEDER Gábor via GitGitGadget, Jun 29, 2020
  371. 14/20 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  372. 12/20 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  373. 15/20 Hookup unittests for the reftable library.Han-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  374. 13/20 Add standalone build infrastructure for reftableHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  375. 07/20 Treat CHERRY_PICK_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  376. 06/20 Treat BISECT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  377. 04/20 Write pseudorefs through ref backends.Han-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  378. 01/20 lib-t6000.sh: write tag using git-update-refHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  379. 02/20 t3432: use git-reflog to inspect the reflog for HEADHan-Wen Nienhuys via GitGitGadget, Jun 29, 2020
  380. Denton LiuJun 30, 2020
  381. Junio C HamanoJun 29, 2020
  382. Han-Wen NienhuysJun 30, 2020
  383. Junio C HamanoJul 1, 2020
  384. Han-Wen NienhuysJul 1, 2020
  385. Junio C HamanoJul 1, 2020
  386. 00/21 Reftable support git-coreHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  387. 01/21 refs: add \t to reflog in the files backendHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  388. 03/21 t1400: use git rev-parse for testing PSEUDOREF existenceHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  389. 04/21 Modify pseudo refs through ref backend storageHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  390. 05/21 Make HEAD a PSEUDOREF rather than PER_WORKTREE.Han-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  391. 06/21 Make refs_ref_exists publicHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  392. 07/21 Treat CHERRY_PICK_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  393. 08/21 Treat REVERT_HEAD as a pseudo refHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  394. 10/21 Iteration over entire ref namespace is iterating over "refs/"Han-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  395. 02/21 Split off reading loose ref data in separate functionHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  396. 09/21 Move REF_LOG_ONLY to refs-internal.hHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  397. 13/21 Add standalone build infrastructure for reftableHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  398. 11/21 Add .gitattributes for the reftable/ directoryHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  399. 15/21 Read FETCH_HEAD as loose refHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  400. 16/21 Hookup unittests for the reftable library.Han-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  401. 18/21 vcxproj: adjust for the reftable changesJohannes Schindelin via GitGitGadget, Jul 31, 2020
  402. 14/21 Reftable support for git-coreHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  403. 19/21 git-prompt: prepare for reftable refs backendSZEDER Gábor via GitGitGadget, Jul 31, 2020
  404. 21/21 Add "test-tool dump-reftable" command.Han-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  405. 20/21 Add reftable testing infrastructureHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  406. 17/21 Add GIT_DEBUG_REFS debugging mechanismHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  407. 12/21 Add reftable libraryHan-Wen Nienhuys via GitGitGadget, Jul 31, 2020
  408. Jonathan NiederFeb 26, 2020
  409. Han-Wen NienhuysFeb 26, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.