Unified · Split
| @@ -57,7 +57,7 @@ mod find { · 56 unmodified lines | ||
| 57 | 57 | Err(err) => return Err(err), |
| 58 | 58 | } |
| 59 | 59 | } |
| 60 | − todo!("check remotes HEAD") | |
| 60 | + self.find_inner("remotes", &relative_path.join("HEAD"), Transform::EnforceRefsPrefix) | |
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | fn find_inner( |
| @@ -78,7 +78,12 @@ mod find { · 14 unmodified lines | ||
| 78 | 78 | } |
| 79 | 79 | .join(inbetween) |
| 80 | 80 | .join(relative_path); |
| 81 | + | |
| 81 | 82 | let ref_path = self.base.join(&relative_path); |
| 83 | + if ref_path.is_dir() { | |
| 84 | + return Ok(None); | |
| 85 | + } | |
| 86 | + | |
| 82 | 87 | let mut contents = Vec::new(); |
| 83 | 88 | match std::fs::File::open(ref_path) { |
| 84 | 89 | Err(err) if err.kind() == io::ErrorKind::NotFound => return Ok(None), |
| @@ -6,8 +6,15 @@ git config commit.gpgsign false · 5 unmodified lines | ||
| 6 | 6 | |
| 7 | 7 | git checkout -q -b main |
| 8 | 8 | git commit -q --allow-empty -m c1 |
| 9 | +git branch dt1 | |
| 10 | +git branch d1 | |
| 9 | 11 | |
| 10 | 12 | mkdir -p .git/refs/remotes/origin |
| 13 | + | |
| 11 | 14 | cp .git/refs/heads/main .git/refs/remotes/origin/ |
| 15 | +cp .git/refs/heads/main .git/refs/d1 | |
| 16 | + | |
| 17 | +echo "ref: refs/remotes/origin/main" > .git/refs/remotes/origin/HEAD | |
| 12 | 18 | |
| 13 | 19 | git tag t1 |
| 20 | +git tag dt1 | |
| @@ -12,6 +12,11 @@ mod store { · 11 unmodified lines | ||
| 12 | 12 | fn success() -> crate::Result { |
| 13 | 13 | let store = store()?; |
| 14 | 14 | for (partial_name, expected_path, expected_ref_kind) in &[ |
| 15 | + ("dt1", "refs/tags/dt1", git_ref::Kind::Peeled), // tags before heads | |
| 16 | + ("heads/dt1", "refs/heads/dt1", git_ref::Kind::Peeled), | |
| 17 | + ("d1", "refs/d1", git_ref::Kind::Peeled), // direct refs before heads | |
| 18 | + ("heads/d1", "refs/heads/d1", git_ref::Kind::Peeled), | |
| 19 | + ("origin", "refs/remotes/origin/HEAD", git_ref::Kind::Symbolic), | |
| 15 | 20 | ("origin/main", "refs/remotes/origin/main", git_ref::Kind::Peeled), |
| 16 | 21 | ("HEAD", "HEAD", git_ref::Kind::Symbolic), |
| 17 | 22 | ("t1", "refs/tags/t1", git_ref::Kind::Peeled), |