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

[PATCH v2 06/12] refs: add refs_head_ref()

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Mar 18, 2017, 10:11 UTC
Message-ID
<20170318101153.6901-7-pclouds@gmail.com>
In-Reply-To
<20170318101153.6901-1-pclouds@gmail.com>
---
 refs.c | 19 +++++++++----------
 refs.h |  2 ++
 2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/refs.c b/refs.c
index a38149d84a..5fc47ff5f0 100644
--- a/refs.c
+++ b/refs.c
@@ -1208,27 +1208,26 @@ int refs_rename_ref_available(struct ref_store *refs,
 	return ok;
 }
 
-int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+int refs_head_ref(struct ref_store *refs, each_ref_fn fn, void *cb_data)
 {
 	struct object_id oid;
 	int flag;
 
-	if (submodule) {
-		if (resolve_gitlink_ref(submodule, "HEAD", oid.hash) == 0)
-			return fn("HEAD", &oid, 0, cb_data);
-
-		return 0;
-	}
-
-	if (!read_ref_full("HEAD", RESOLVE_REF_READING, oid.hash, &flag))
+	if (!refs_read_ref_full(refs, "HEAD", RESOLVE_REF_READING,
+				oid.hash, &flag))
 		return fn("HEAD", &oid, flag, cb_data);
 
 	return 0;
 }
 
+int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
+{
+	return refs_head_ref(get_submodule_ref_store(submodule), fn, cb_data);
+}
+
 int head_ref(each_ref_fn fn, void *cb_data)
 {
-	return head_ref_submodule(NULL, fn, cb_data);
+	return refs_head_ref(get_main_ref_store(), fn, cb_data);
 }
 
 /*
diff --git a/refs.h b/refs.h
index 447381d378..0572473ef7 100644
--- a/refs.h
+++ b/refs.h
@@ -233,6 +233,8 @@ typedef int each_ref_fn(const char *refname,
  * modifies the reference also returns a nonzero value to immediately
  * stop the iteration. Returned references are sorted.
  */
+int refs_head_ref(struct ref_store *refs,
+		  each_ref_fn fn, void *cb_data);
 int refs_for_each_ref(struct ref_store *refs,
 		      each_ref_fn fn, void *cb_data);
 int refs_for_each_ref_in(struct ref_store *refs, const char *prefix,
-- 
2.11.0.157.gd943d85
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 22 of 33 in “Fix git-gc losing objects in multi worktree”
  1. 00/15 Fix git-gc losing objects in multi worktreeNguyễn Thái Ngọc Duy, Feb 17, 2017
  2. 01/15 revision.h: new flag in struct rev_info wrt. worktree-related refsNguyễn Thái Ngọc Duy, Feb 17, 2017
  3. 02/15 revision.c: refactor add_index_objects_to_pending()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  4. 03/15 revision.c: --indexed-objects add objects from all worktreesNguyễn Thái Ngọc Duy, Feb 17, 2017
  5. 04/15 refs: move submodule slash stripping code to get_submodule_ref_storeNguyễn Thái Ngọc Duy, Feb 17, 2017
  6. 06/15 refs: add refs_head_ref()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  7. 05/15 refs: add refs_read_ref[_full]()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  8. 07/15 refs: add refs_for_each_ref()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  9. 08/15 refs: add a refs_for_each_in() and friendsNguyễn Thái Ngọc Duy, Feb 17, 2017
  10. 09/15 revision.c: use refs_for_each*() instead of for_each_*_submodule()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  11. 10/15 refs: remove dead for_each_*_submodule()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  12. 12/15 refs: add refs_for_each_reflog[_ent]()Nguyễn Thái Ngọc Duy, Feb 17, 2017
  13. 11/15 revision.c: --all adds HEAD from all worktreesNguyễn Thái Ngọc Duy, Feb 17, 2017
  14. 13/15 files-backend: make reflog iterator go through per-worktree reflogNguyễn Thái Ngọc Duy, Feb 17, 2017
  15. 14/15 revision.c: --reflog add HEAD reflog from all worktreesNguyễn Thái Ngọc Duy, Feb 17, 2017
  16. 15/15 rev-list: expose and document --single-worktreeNguyễn Thái Ngọc Duy, Feb 17, 2017
  17. Johannes SchindelinFeb 17, 2017
  18. 00/12 Fix git-gc losing objects in multi worktreeNguyễn Thái Ngọc Duy, Mar 18, 2017
  19. 03/12 revision.c: --indexed-objects add objects from all worktreesNguyễn Thái Ngọc Duy, Mar 18, 2017
  20. 04/12 refs.c: refactor get_submodule_ref_store(), share common free blockNguyễn Thái Ngọc Duy, Mar 18, 2017
  21. 01/12 revision.h: new flag in struct rev_info wrt. worktree-related refsNguyễn Thái Ngọc Duy, Mar 18, 2017
  22. 06/12 refs: add refs_head_ref()Nguyễn Thái Ngọc Duy, Mar 18, 2017
  23. 02/12 revision.c: refactor add_index_objects_to_pending()Nguyễn Thái Ngọc Duy, Mar 18, 2017
  24. 05/12 refs: move submodule slash stripping code to get_submodule_ref_storeNguyễn Thái Ngọc Duy, Mar 18, 2017
  25. 12/12 rev-list: expose and document --single-worktreeNguyễn Thái Ngọc Duy, Mar 18, 2017
  26. Junio C HamanoMar 18, 2017
  27. Duy NguyenApr 19, 2017
  28. Junio C HamanoApr 20, 2017
  29. 10/12 files-backend: make reflog iterator go through per-worktree reflogNguyễn Thái Ngọc Duy, Mar 18, 2017
  30. 09/12 revision.c: --all adds HEAD from all worktreesNguyễn Thái Ngọc Duy, Mar 18, 2017
  31. 11/12 revision.c: --reflog add HEAD reflog from all worktreesNguyễn Thái Ngọc Duy, Mar 18, 2017
  32. 08/12 refs: remove dead for_each_*_submodule()Nguyễn Thái Ngọc Duy, Mar 18, 2017
  33. 07/12 revision.c: use refs_for_each*() instead of for_each_*_submodule()Nguyễn Thái Ngọc Duy, Mar 18, 2017

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.