Skip to content

Commit 43d8096

Browse files
committed
fix!: improve naming and change Target::Peeled to Target::Object.
This also renames `TargetRef::Peeled` to `TargetRef::Object` to make clear that it's not necessarily the peeled object that is contained. Previously these terms were confusing due to the incorrect usage of the word `peeled`.
1 parent 98bcb14 commit 43d8096

File tree

20 files changed

+138
-105
lines changed

20 files changed

+138
-105
lines changed

gix-ref/src/lib.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ pub struct Namespace(BString);
150150
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
151151
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
152152
pub enum Kind {
153-
/// A ref that points to an object id
154-
Peeled,
153+
/// A ref that points to an object id directly.
154+
Object,
155155
/// A ref that points to another reference, adding a level of indirection.
156156
///
157157
/// It can be resolved to an id using the [`peel_in_place_to_id()`][`crate::file::ReferenceExt::peel_to_id_in_place()`] method.
@@ -203,8 +203,8 @@ pub enum Category<'a> {
203203
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
204204
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
205205
pub enum Target {
206-
/// A ref that points to an object id
207-
Peeled(ObjectId),
206+
/// A ref that points directly to an object id.
207+
Object(ObjectId),
208208
/// A ref that points to another reference by its validated name, adding a level of indirection.
209209
///
210210
/// Note that this is an extension of gitoxide which will be helpful in logging all reference changes.
@@ -214,8 +214,8 @@ pub enum Target {
214214
/// Denotes a ref target, equivalent to [`Kind`], but with immutable data.
215215
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
216216
pub enum TargetRef<'a> {
217-
/// A ref that points to an object id
218-
Peeled(&'a oid),
217+
/// A ref that points directly to an object id.
218+
Object(&'a oid),
219219
/// A ref that points to another reference by its validated name, adding a level of indirection.
220220
Symbolic(&'a FullNameRef),
221221
}

gix-ref/src/raw.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ pub struct Reference {
1010
pub name: FullName,
1111
/// The target of the reference, either a symbolic reference by full name or a possibly intermediate object by its id.
1212
pub target: Target,
13-
/// The fully peeled object to which this reference ultimately points to. Only guaranteed to be set after
13+
/// The fully peeled object to which this reference ultimately points to after following all symbolic refs and all annotated
14+
/// tags. Only guaranteed to be set after
1415
/// [`Reference::peel_to_id_in_place()`](crate::file::ReferenceExt) was called or if this reference originated
1516
/// from a packed ref.
1617
pub peeled: Option<ObjectId>,
@@ -48,7 +49,7 @@ mod convert {
4849
fn from(value: packed::Reference<'p>) -> Self {
4950
Reference {
5051
name: value.name.into(),
51-
target: Target::Peeled(value.target()),
52+
target: Target::Object(value.target()),
5253
peeled: value
5354
.object
5455
.map(|hex| ObjectId::from_hex(hex).expect("parser validation")),

gix-ref/src/store/file/loose/reference/decode.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ impl TryFrom<MaybeUnsafeState> for Target {
3535

3636
fn try_from(v: MaybeUnsafeState) -> Result<Self, Self::Error> {
3737
Ok(match v {
38-
MaybeUnsafeState::Id(id) => Target::Peeled(id),
38+
MaybeUnsafeState::Id(id) => Target::Object(id),
3939
MaybeUnsafeState::UnvalidatedPath(name) => {
4040
Target::Symbolic(match gix_validate::reference::name(name.as_ref()) {
4141
Ok(_) => FullName(name),

gix-ref/src/store/file/raw_ext.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ pub trait ReferenceExt: Sealed {
2121
fn log_exists(&self, store: &file::Store) -> bool;
2222

2323
/// Follow all symbolic targets this reference might point to and peel the underlying object
24-
/// to the end of the chain, and return it, using `objects` to access them.
24+
/// to the end of the tag-chain, returning the first non-tag object the annotated tag points to,
25+
/// using `objects` to access them.
2526
///
2627
/// This is useful to learn where this reference is ultimately pointing to.
2728
fn peel_to_id_in_place(
@@ -89,7 +90,7 @@ impl ReferenceExt for Reference {
8990
) -> Result<ObjectId, peel::to_id::Error> {
9091
match self.peeled {
9192
Some(peeled) => {
92-
self.target = Target::Peeled(peeled.to_owned());
93+
self.target = Target::Object(peeled.to_owned());
9394
Ok(peeled)
9495
}
9596
None => {
@@ -136,7 +137,7 @@ impl ReferenceExt for Reference {
136137
};
137138
};
138139
self.peeled = Some(peeled_id);
139-
self.target = Target::Peeled(peeled_id);
140+
self.target = Target::Object(peeled_id);
140141
Ok(peeled_id)
141142
}
142143
}
@@ -161,11 +162,11 @@ impl ReferenceExt for Reference {
161162
match self.peeled {
162163
Some(peeled) => Some(Ok(Reference {
163164
name: self.name.clone(),
164-
target: Target::Peeled(peeled),
165+
target: Target::Object(peeled),
165166
peeled: None,
166167
})),
167168
None => match &self.target {
168-
Target::Peeled(_) => None,
169+
Target::Object(_) => None,
169170
Target::Symbolic(full_name) => match store.try_find_packed(full_name.as_ref(), packed) {
170171
Ok(Some(next)) => Some(Ok(next)),
171172
Ok(None) => Some(Err(file::find::existing::Error::NotFound {

gix-ref/src/store/file/transaction/commit.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ impl<'s, 'p> Transaction<'s, 'p> {
5454
// Unless, the ref is new and we can obtain a peeled id
5555
// identified by the expectation of what could be there, as is the case when cloning.
5656
match expected {
57-
PreviousValue::ExistingMustMatch(Target::Peeled(oid)) => {
57+
PreviousValue::ExistingMustMatch(Target::Object(oid)) => {
5858
Some((Some(gix_hash::ObjectId::null(oid.kind())), oid))
5959
}
6060
_ => None,
6161
}
6262
}
63-
Target::Peeled(new_oid) => {
63+
Target::Object(new_oid) => {
6464
let previous = match expected {
6565
// Here, this means that the ref already existed, and that it will receive (even transitively)
6666
// the given value
67-
PreviousValue::MustExistAndMatch(Target::Peeled(oid)) => Some(oid.to_owned()),
67+
PreviousValue::MustExistAndMatch(Target::Object(oid)) => Some(oid.to_owned()),
6868
_ => None,
6969
}
7070
.or(change.leaf_referent_previous_oid);
@@ -88,7 +88,7 @@ impl<'s, 'p> Transaction<'s, 'p> {
8888
// Don't do anything else while keeping the lock after potentially updating the reflog.
8989
// We delay deletion of the reference and dropping the lock to after the packed-refs were
9090
// safely written.
91-
if delete_loose_refs && matches!(new, Target::Peeled(_)) {
91+
if delete_loose_refs && matches!(new, Target::Object(_)) {
9292
change.lock = lock;
9393
continue;
9494
}
@@ -156,7 +156,7 @@ impl<'s, 'p> Transaction<'s, 'p> {
156156
log: LogChange { mode, .. },
157157
new,
158158
..
159-
} => delete_loose_refs && *mode == RefLog::AndReference && matches!(new, Target::Peeled(_)),
159+
} => delete_loose_refs && *mode == RefLog::AndReference && matches!(new, Target::Object(_)),
160160
Change::Delete { log: mode, .. } => *mode == RefLog::AndReference,
161161
};
162162
if take_lock_and_delete {

gix-ref/src/store/file/transaction/prepare.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ impl<'s, 'p> Transaction<'s, 'p> {
124124
| (PreviousValue::MustExist, Some(_))
125125
| (PreviousValue::MustNotExist | PreviousValue::ExistingMustMatch(_), None) => {}
126126
(PreviousValue::MustExist, None) => {
127-
let expected = Target::Peeled(store.object_hash.null());
127+
let expected = Target::Object(store.object_hash.null());
128128
let full_name = change.name();
129129
return Err(Error::MustExist { full_name, expected });
130130
}
@@ -163,9 +163,9 @@ impl<'s, 'p> Transaction<'s, 'p> {
163163

164164
fn new_would_change_existing(new: &Target, existing: &Target) -> (bool, bool) {
165165
match (new, existing) {
166-
(Target::Peeled(new), Target::Peeled(old)) => (old != new, false),
166+
(Target::Object(new), Target::Object(old)) => (old != new, false),
167167
(Target::Symbolic(new), Target::Symbolic(old)) => (old != new, true),
168-
(Target::Peeled(_), _) => (true, false),
168+
(Target::Object(_), _) => (true, false),
169169
(Target::Symbolic(_), _) => (true, true),
170170
}
171171
}
@@ -182,7 +182,7 @@ impl<'s, 'p> Transaction<'s, 'p> {
182182
let mut lock = lock.take().map_or_else(obtain_lock, Ok)?;
183183

184184
lock.with_mut(|file| match new {
185-
Target::Peeled(oid) => write!(file, "{oid}"),
185+
Target::Object(oid) => write!(file, "{oid}"),
186186
Target::Symbolic(name) => writeln!(file, "ref: {}", name.0),
187187
})?;
188188
Some(lock.close()?)
@@ -277,7 +277,7 @@ impl<'s, 'p> Transaction<'s, 'p> {
277277
};
278278
if let Some(ref mut num_updates) = maybe_updates_for_packed_refs {
279279
if let Change::Update {
280-
new: Target::Peeled(_), ..
280+
new: Target::Object(_), ..
281281
} = edit.update.change
282282
{
283283
edits_for_packed_transaction.push(RefEdit {
@@ -390,7 +390,7 @@ impl<'s, 'p> Transaction<'s, 'p> {
390390

391391
// traverse parent chain from leaf/peeled ref and set the leaf previous oid accordingly
392392
// to help with their reflog entries
393-
if let (Some(crate::TargetRef::Peeled(oid)), Some(parent_idx)) =
393+
if let (Some(crate::TargetRef::Object(oid)), Some(parent_idx)) =
394394
(change.update.change.previous_value(), change.parent_index)
395395
{
396396
let oid = oid.to_owned();

gix-ref/src/store/packed/transaction.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ impl packed::Transaction {
102102
let mut buf = Vec::new();
103103
for edit in &mut edits {
104104
if let Change::Update {
105-
new: Target::Peeled(new),
105+
new: Target::Object(new),
106106
..
107107
} = edit.inner.change
108108
{
@@ -235,7 +235,7 @@ fn write_edit(out: &mut dyn std::io::Write, edit: &Edit, lines_written: &mut i32
235235
match edit.inner.change {
236236
Change::Delete { .. } => {}
237237
Change::Update {
238-
new: Target::Peeled(target_oid),
238+
new: Target::Object(target_oid),
239239
..
240240
} => {
241241
write!(out, "{target_oid} ")?;

gix-ref/src/target.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,28 @@ impl<'a> TargetRef<'a> {
99
pub fn kind(&self) -> Kind {
1010
match self {
1111
TargetRef::Symbolic(_) => Kind::Symbolic,
12-
TargetRef::Peeled(_) => Kind::Peeled,
12+
TargetRef::Object(_) => Kind::Object,
1313
}
1414
}
1515
/// Interpret this target as object id which maybe `None` if it is symbolic.
1616
pub fn try_id(&self) -> Option<&oid> {
1717
match self {
1818
TargetRef::Symbolic(_) => None,
19-
TargetRef::Peeled(oid) => Some(oid),
19+
TargetRef::Object(oid) => Some(oid),
2020
}
2121
}
2222
/// Interpret this target as object id or **panic** if it is symbolic.
2323
pub fn id(&self) -> &oid {
2424
match self {
2525
TargetRef::Symbolic(_) => panic!("BUG: tries to obtain object id from symbolic target"),
26-
TargetRef::Peeled(oid) => oid,
26+
TargetRef::Object(oid) => oid,
2727
}
2828
}
2929
/// Interpret this target as name of the reference it points to which maybe `None` if it an object id.
3030
pub fn try_name(&self) -> Option<&FullNameRef> {
3131
match self {
3232
TargetRef::Symbolic(name) => Some(name),
33-
TargetRef::Peeled(_) => None,
33+
TargetRef::Object(_) => None,
3434
}
3535
}
3636
/// Convert this instance into an owned version, without consuming it.
@@ -44,22 +44,22 @@ impl Target {
4444
pub fn kind(&self) -> Kind {
4545
match self {
4646
Target::Symbolic(_) => Kind::Symbolic,
47-
Target::Peeled(_) => Kind::Peeled,
47+
Target::Object(_) => Kind::Object,
4848
}
4949
}
5050

5151
/// Return true if this is a peeled target with a null hash
5252
pub fn is_null(&self) -> bool {
5353
match self {
54-
Target::Peeled(oid) => oid.is_null(),
54+
Target::Object(oid) => oid.is_null(),
5555
Target::Symbolic(_) => false,
5656
}
5757
}
5858

5959
/// Interpret this owned Target as shared Target
6060
pub fn to_ref(&self) -> TargetRef<'_> {
6161
match self {
62-
Target::Peeled(oid) => TargetRef::Peeled(oid),
62+
Target::Object(oid) => TargetRef::Object(oid),
6363
Target::Symbolic(name) => TargetRef::Symbolic(name.as_ref()),
6464
}
6565
}
@@ -68,44 +68,44 @@ impl Target {
6868
pub fn try_id(&self) -> Option<&oid> {
6969
match self {
7070
Target::Symbolic(_) => None,
71-
Target::Peeled(oid) => Some(oid),
71+
Target::Object(oid) => Some(oid),
7272
}
7373
}
7474
/// Interpret this target as object id or panic if it is symbolic.
7575
pub fn id(&self) -> &oid {
7676
match self {
7777
Target::Symbolic(_) => panic!("BUG: tries to obtain object id from symbolic target"),
78-
Target::Peeled(oid) => oid,
78+
Target::Object(oid) => oid,
7979
}
8080
}
8181
/// Return the contained object id or panic
8282
pub fn into_id(self) -> ObjectId {
8383
match self {
8484
Target::Symbolic(_) => panic!("BUG: expected peeled reference target but found symbolic one"),
85-
Target::Peeled(oid) => oid,
85+
Target::Object(oid) => oid,
8686
}
8787
}
8888

8989
/// Return the contained object id if the target is peeled or itself if it is not.
9090
pub fn try_into_id(self) -> Result<ObjectId, Self> {
9191
match self {
9292
Target::Symbolic(_) => Err(self),
93-
Target::Peeled(oid) => Ok(oid),
93+
Target::Object(oid) => Ok(oid),
9494
}
9595
}
9696
/// Interpret this target as name of the reference it points to which maybe `None` if it an object id.
9797
pub fn try_name(&self) -> Option<&FullNameRef> {
9898
match self {
9999
Target::Symbolic(name) => Some(name.as_ref()),
100-
Target::Peeled(_) => None,
100+
Target::Object(_) => None,
101101
}
102102
}
103103
}
104104

105105
impl<'a> From<TargetRef<'a>> for Target {
106106
fn from(src: TargetRef<'a>) -> Self {
107107
match src {
108-
TargetRef::Peeled(oid) => Target::Peeled(oid.to_owned()),
108+
TargetRef::Object(oid) => Target::Object(oid.to_owned()),
109109
TargetRef::Symbolic(name) => Target::Symbolic(name.to_owned()),
110110
}
111111
}
@@ -114,7 +114,7 @@ impl<'a> From<TargetRef<'a>> for Target {
114114
impl<'a> PartialEq<TargetRef<'a>> for Target {
115115
fn eq(&self, other: &TargetRef<'a>) -> bool {
116116
match (self, other) {
117-
(Target::Peeled(lhs), TargetRef::Peeled(rhs)) => lhs == rhs,
117+
(Target::Object(lhs), TargetRef::Object(rhs)) => lhs == rhs,
118118
(Target::Symbolic(lhs), TargetRef::Symbolic(rhs)) => lhs.as_bstr() == rhs.as_bstr(),
119119
_ => false,
120120
}
@@ -123,7 +123,7 @@ impl<'a> PartialEq<TargetRef<'a>> for Target {
123123

124124
impl From<ObjectId> for Target {
125125
fn from(id: ObjectId) -> Self {
126-
Target::Peeled(id)
126+
Target::Object(id)
127127
}
128128
}
129129

@@ -132,7 +132,7 @@ impl TryFrom<Target> for ObjectId {
132132

133133
fn try_from(value: Target) -> Result<Self, Self::Error> {
134134
match value {
135-
Target::Peeled(id) => Ok(id),
135+
Target::Object(id) => Ok(id),
136136
Target::Symbolic(_) => Err(value),
137137
}
138138
}
@@ -147,7 +147,7 @@ impl From<FullName> for Target {
147147
impl fmt::Display for Target {
148148
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
149149
match self {
150-
Target::Peeled(oid) => oid.fmt(f),
150+
Target::Object(oid) => oid.fmt(f),
151151
Target::Symbolic(name) => write!(f, "ref: {}", name.as_bstr()),
152152
}
153153
}

0 commit comments

Comments
 (0)