Skip to content

Commit a5c7adb

Browse files
committed
reproduce the overlay-iterator issue causing double-refs (#1850).
1 parent 18861bb commit a5c7adb

File tree

5 files changed

+94
-3
lines changed

5 files changed

+94
-3
lines changed

Cargo.lock

+25-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gix-ref/tests/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@ gix-hash = { path = "../../gix-hash" }
3232
gix-validate = { path = "../../gix-validate" }
3333
gix-lock = { path = "../../gix-lock" }
3434
gix-object = { path = "../../gix-object" }
35+
insta = "1.42.1"
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
set -eu -o pipefail
3+
4+
git init -q
5+
6+
cat <<EOF >.git/packed-refs
7+
# pack-refs with: peeled fully-peeled sorted
8+
17dad46c0ce3be4d4b6d45def031437ab2e40666 refs/heads/ig-branch-remote
9+
83a70366fcc1255d35a00102138293bac673b331 refs/heads/ig-inttest
10+
21b57230833a1733f6685e14eabe936a09689a1b refs/heads/ig-pr4021
11+
d773228d0ee0012fcca53fffe581b0fce0b1dc56 refs/heads/ig/aliases
12+
ba37abe04f91fec76a6b9a817d40ee2daec47207 refs/heads/ig/cifail
13+
EOF
14+
15+
mkdir -p .git/refs/heads/ig/pr
16+
echo d22f46f3d7d2504d56c573b5fe54919bd16be48a >.git/refs/heads/ig/push-name
17+
echo 4dec145966c546402c5a9e28b932e7c8c939e01e >.git/refs/heads/ig-pr4021

gix-ref/tests/refs/file/store/iter.rs

+51
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,57 @@ fn overlay_iter() -> crate::Result {
413413
Ok(())
414414
}
415415

416+
#[test]
417+
fn overlay_iter_reproduce_1850() -> crate::Result {
418+
let store = store_at("make_repo_for_1850_repro.sh")?;
419+
let ref_names = store
420+
.iter()?
421+
.all()?
422+
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
423+
.collect::<Result<Vec<_>, _>>()?;
424+
insta::assert_debug_snapshot!(ref_names, @r#"
425+
[
426+
(
427+
"refs/heads/ig-branch-remote",
428+
Object(
429+
Sha1(17dad46c0ce3be4d4b6d45def031437ab2e40666),
430+
),
431+
),
432+
(
433+
"refs/heads/ig-inttest",
434+
Object(
435+
Sha1(83a70366fcc1255d35a00102138293bac673b331),
436+
),
437+
),
438+
(
439+
"refs/heads/ig/aliases",
440+
Object(
441+
Sha1(d773228d0ee0012fcca53fffe581b0fce0b1dc56),
442+
),
443+
),
444+
(
445+
"refs/heads/ig/cifail",
446+
Object(
447+
Sha1(ba37abe04f91fec76a6b9a817d40ee2daec47207),
448+
),
449+
),
450+
(
451+
"refs/heads/ig/push-name",
452+
Object(
453+
Sha1(d22f46f3d7d2504d56c573b5fe54919bd16be48a),
454+
),
455+
),
456+
(
457+
"refs/heads/ig-pr4021",
458+
Object(
459+
Sha1(4dec145966c546402c5a9e28b932e7c8c939e01e),
460+
),
461+
),
462+
]
463+
"#);
464+
Ok(())
465+
}
466+
416467
#[test]
417468
fn overlay_iter_with_prefix_wont_allow_absolute_paths() -> crate::Result {
418469
let store = store_with_packed_refs()?;

0 commit comments

Comments
 (0)