History

change!: `fetch::Ref::unpack()` returns `Option<oid>`. (#450)

That way the caller has to be aware of the possibility of an unborn branch (probably the only unborn branch) on the remote.

Sebastian Thiel committed 4 years ago

Commit cd867ad1 parent 70861012 files · +7 −8Browse files

Showing the changes to git-protocol/src (1 of 2 files). Show all

Unified · Split

git-protocol/src/fetch/refs/mod.rs+4−7
@@ -89,21 +89,18 @@ impl Ref { · 88 unmodified lines
89 /// In case of peeled refs, the tag object itself is returned as it is what the ref directly refers to, and target of the tag is returned89 /// In case of peeled refs, the tag object itself is returned as it is what the ref directly refers to, and target of the tag is returned
90 /// as `peeled`.90 /// as `peeled`.
91 /// If `unborn`, the first object id will be the null oid.91 /// If `unborn`, the first object id will be the null oid.
92 pub fn unpack(&self) -> (&BStr, &git_hash::oid, Option<&git_hash::oid>) {92 pub fn unpack(&self) -> (&BStr, Option<&git_hash::oid>, Option<&git_hash::oid>) {
93 match self {93 match self {
94 Ref::Direct { full_ref_name, object }94 Ref::Direct { full_ref_name, object }
95 | Ref::Symbolic {95 | Ref::Symbolic {
96 full_ref_name, object, ..96 full_ref_name, object, ..
97 } => (full_ref_name.as_ref(), object, None),97 } => (full_ref_name.as_ref(), Some(object), None),
98 Ref::Peeled {98 Ref::Peeled {
99 full_ref_name,99 full_ref_name,
100 tag: object,100 tag: object,
101 object: peeled,101 object: peeled,
102 } => (full_ref_name.as_ref(), object, Some(peeled)),102 } => (full_ref_name.as_ref(), Some(object), Some(peeled)),
103 Ref::Unborn { target: _ } => {103 Ref::Unborn { target: _ } => ("HEAD".into(), None, None),
104 static NULL: git_hash::ObjectId = git_hash::ObjectId::null(git_hash::Kind::Sha1);
105 ("HEAD".into(), &NULL, None)
106 }
107 }104 }
108 }105 }
109}106}