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

Re: [PATCH 00/28] Create a reference backend for packed refs

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 19, 2017, 19:25 UTC
Message-ID
<xmqqvanrsru4.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<xmqqzid3stdw.fsf@gitster.mtv.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
> Is the iterator over packed-refs correctly skipping over what are
> covered by loose refs?  The entries in the packed-refs file that are
> superseded by loose refs should be allowed to point at an already
> expired object.
Here it is in a test form for easier diagnosis.
 t/t1408-packed-refs.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)
diff --git a/t/t1408-packed-refs.sh b/t/t1408-packed-refs.sh
new file mode 100755
index 0000000000..35533c8593
--- /dev/null
+++ b/t/t1408-packed-refs.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+test_description='packed-refs entries are covered by loose refs'
+
+. ./test-lib.sh
+
+test_expect_success setup '
+	test_tick &&
+	git commit --allow-empty -m one &&
+	one=$(git rev-parse HEAD) && 
+	git for-each-ref >actual &&
+	echo "$one commit	refs/heads/master" >expect &&
+	test_cmp expect actual &&
+
+	git pack-refs --all &&
+	git for-each-ref >actual &&
+	echo "$one commit	refs/heads/master" >expect &&
+	test_cmp expect actual &&
+
+	cat .git/packed-refs &&
+
+	git checkout --orphan another &&
+	test_tick &&
+	git commit --allow-empty -m two &&
+	two=$(git rev-parse HEAD) && 
+	git checkout -B master &&
+	git branch -D another &&
+
+	cat .git/packed-refs &&
+
+	git for-each-ref >actual &&
+	echo "$two commit	refs/heads/master" >expect &&
+	test_cmp expect actual &&
+
+	git reflog expire --expire=now --all &&
+	git prune &&
+	git tag -m v1.0 v1.0 master
+'
+
+test_expect_success 'no error from stale entry in packed-refs' '
+	git describe master >actual 2>&1 &&
+	echo "v1.0" >expect &&
+	test_cmp expect actual
+'
+
+test_done
Previous: Junio C HamanoNext: Jeff King
Message 48 of 52 in “Create a reference backend for packed refs”
  1. 00/28 Create a reference backend for packed refsMichael Haggerty, Jun 15, 2017
  2. 01/28 add_packed_ref(): teach function to overwrite existing refsMichael Haggerty, Jun 15, 2017
  3. 03/28 packed_ref_store: move `packed_refs_path` hereMichael Haggerty, Jun 15, 2017
  4. Stefan BellerJun 16, 2017
  5. 04/28 packed_ref_store: move `packed_refs_lock` member hereMichael Haggerty, Jun 15, 2017
  6. Stefan BellerJun 16, 2017
  7. Michael HaggertyJun 16, 2017
  8. Stefan BellerJun 16, 2017
  9. 07/28 get_packed_ref_cache(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  10. 08/28 get_packed_refs(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  11. 09/28 add_packed_ref(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  12. 10/28 lock_packed_refs(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  13. 11/28 commit_packed_refs(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  14. 13/28 get_packed_ref(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  15. 14/28 repack_without_refs(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  16. 15/28 packed_peel_ref(): new function, extracted from `files_peel_ref()`Michael Haggerty, Jun 15, 2017
  17. Stefan BellerJun 16, 2017
  18. Michael HaggertyJun 16, 2017
  19. Stefan BellerJun 16, 2017
  20. 16/28 packed_ref_store: support iterationMichael Haggerty, Jun 15, 2017
  21. 17/28 packed_read_raw_ref(): new function, replacing `resolve_packed_ref()`Michael Haggerty, Jun 15, 2017
  22. 19/28 packed_ref_store: make class into a subclass of `ref_store`Michael Haggerty, Jun 15, 2017
  23. 20/28 commit_packed_refs(): report errors rather than dyingMichael Haggerty, Jun 15, 2017
  24. 21/28 commit_packed_refs(): use a staging file separate from the lockfileMichael Haggerty, Jun 15, 2017
  25. Junio C HamanoJul 20, 2017
  26. Jonathan NiederJul 20, 2017
  27. Junio C HamanoJul 21, 2017
  28. Junio C HamanoJul 21, 2017
  29. Jeff KingJul 24, 2017
  30. Jonathan NiederJul 24, 2017
  31. Jeff KingJul 24, 2017
  32. Junio C HamanoJul 24, 2017
  33. Michael HaggertyJul 26, 2017
  34. 22/28 packed_refs_lock(): function renamed from lock_packed_refs()Michael Haggerty, Jun 15, 2017
  35. 18/28 packed-backend: new module for handling packed referencesMichael Haggerty, Jun 15, 2017
  36. Stefan BellerJun 16, 2017
  37. 24/28 packed_refs_unlock(), packed_refs_is_locked(): new functionsMichael Haggerty, Jun 15, 2017
  38. 26/28 commit_packed_refs(): remove call to `packed_refs_unlock()`Michael Haggerty, Jun 15, 2017
  39. 28/28 read_packed_refs(): die if `packed-refs` contains bogus dataMichael Haggerty, Jun 15, 2017
  40. 23/28 packed_refs_lock(): report errors via a `struct strbuf *err`Michael Haggerty, Jun 15, 2017
  41. 27/28 repack_without_refs(): don't lock or unlock the packed refsMichael Haggerty, Jun 15, 2017
  42. 25/28 clear_packed_ref_cache(): don't protest if the lock is heldMichael Haggerty, Jun 15, 2017
  43. 12/28 rollback_packed_refs(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  44. 02/28 packed_ref_store: new structMichael Haggerty, Jun 15, 2017
  45. 06/28 validate_packed_ref_cache(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  46. 05/28 clear_packed_ref_cache(): take a `packed_ref_store *` parameterMichael Haggerty, Jun 15, 2017
  47. Junio C HamanoJun 19, 2017
  48. Junio C HamanoJun 19, 2017
  49. Jeff KingJun 19, 2017
  50. Jeff KingJun 19, 2017
  51. Michael HaggertyJun 22, 2017
  52. Junio C HamanoJun 22, 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.