Skip to content

Commit 679895c

Browse files
committed
[ref #175] follow (try_)find(_what) naming convention
Note that the find::existing::Error remains as used in 'find()' as it is it is more descriptive.
1 parent dd1edc3 commit 679895c

File tree

17 files changed

+116
-109
lines changed

17 files changed

+116
-109
lines changed

experiments/diffing/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fn main() -> anyhow::Result<()> {
3232
let packed = repo.refs.packed_buffer()?;
3333
let commit_id = repo
3434
.refs
35-
.find_existing(&name, packed.as_ref())?
35+
.find(&name, packed.as_ref())?
3636
.peel_to_id_in_place(&repo.refs, packed.as_ref(), peel::none)?
3737
.to_owned();
3838
let db = &repo.odb;

experiments/traversal/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ fn main() -> anyhow::Result<()> {
2828
let packed = repo.refs.packed_buffer()?;
2929
let commit_id = repo
3030
.refs
31-
.find_existing(&name, packed.as_ref())?
31+
.find(&name, packed.as_ref())?
3232
.peel_to_id_in_place(&repo.refs, packed.as_ref(), peel::none)?
3333
.to_owned();
3434
(repo, commit_id)

git-ref/src/store/file/find.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ impl file::Store {
3434
/// The lookup algorithm follows the one in [the git documentation][git-lookup-docs].
3535
///
3636
/// [git-lookup-docs]: https://github.com/git/git/blob/5d5b1473453400224ebb126bf3947e0a3276bdf5/Documentation/revisions.txt#L34-L46
37-
pub fn find<'a, 'p, 's, Name, E>(
37+
pub fn try_find<'a, 'p, 's, Name, E>(
3838
&'s self,
3939
partial: Name,
4040
packed: Option<&'p packed::Buffer>,
@@ -48,12 +48,16 @@ impl file::Store {
4848
}
4949

5050
/// Similar to [`file::Store::find()`] but a non-existing ref is treated as error.
51-
pub fn loose_find<'a, Name, E>(&self, partial: Name) -> Result<Option<loose::Reference>, Error>
51+
///
52+
/// Find only loose references, that is references that aren't in the packed-refs buffer.
53+
/// All symbolic references are loose references.
54+
/// `HEAD` is always a loose reference.
55+
pub fn try_find_loose<'a, Name, E>(&self, partial: Name) -> Result<Option<loose::Reference>, Error>
5256
where
5357
Name: TryInto<PartialNameRef<'a>, Error = E>,
5458
Error: From<E>,
5559
{
56-
self.find(partial, None)
60+
self.try_find(partial, None)
5761
.map(|r| r.map(|r| r.try_into().expect("only loose refs are found without pack")))
5862
}
5963

@@ -116,7 +120,7 @@ impl file::Store {
116120
if let Some(packed) = packed {
117121
let full_name = path_to_name(relative_path);
118122
let full_name = PartialNameRef((*full_name).as_bstr());
119-
if let Some(packed_ref) = packed.find(full_name)? {
123+
if let Some(packed_ref) = packed.try_find(full_name)? {
120124
return Ok(Some(file::Reference::Packed(packed_ref)));
121125
};
122126
}
@@ -176,8 +180,8 @@ pub mod existing {
176180
};
177181

178182
impl file::Store {
179-
/// Similar to [`file::Store::find_existing()`] but a non-existing ref is treated as error.
180-
pub fn find_existing<'a, 'p, 's, Name, E>(
183+
/// Similar to [`file::Store::find()`] but a non-existing ref is treated as error.
184+
pub fn find<'a, 'p, 's, Name, E>(
181185
&'s self,
182186
partial: Name,
183187
packed: Option<&'p packed::Buffer>,
@@ -197,12 +201,12 @@ pub mod existing {
197201
}
198202

199203
/// Similar to [`file::Store::find()`] won't handle packed-refs.
200-
pub fn loose_find_existing<'a, Name, E>(&self, partial: Name) -> Result<loose::Reference, Error>
204+
pub fn find_loose<'a, Name, E>(&self, partial: Name) -> Result<loose::Reference, Error>
201205
where
202206
Name: TryInto<PartialNameRef<'a>, Error = E>,
203207
crate::name::Error: From<E>,
204208
{
205-
self.find_existing(partial, None)
209+
self.find(partial, None)
206210
.map(|r| r.try_into().expect("always loose without packed"))
207211
}
208212
}

git-ref/src/store/file/reference.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl<'p> Reference<'p> {
8181
match self {
8282
Reference::Loose(r) => r.follow_symbolic(store, packed),
8383
Reference::Packed(p) => packed
84-
.and_then(|packed| packed.find(p.name).ok().flatten()) // needed to get data with 'p2 lifetime
84+
.and_then(|packed| packed.try_find(p.name).ok().flatten()) // needed to get data with 'p2 lifetime
8585
.and_then(|np| {
8686
p.object.and(np.object).map(|peeled| {
8787
Ok(Reference::Packed(packed::Reference {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ impl<'s> Transaction<'s> {
4444
})
4545
.and_then(|maybe_loose| match (maybe_loose, packed) {
4646
(None, Some(packed)) => packed
47-
.find(change.update.name.to_ref())
47+
.try_find(change.update.name.to_ref())
4848
.map(|opt| opt.map(file::Reference::Packed))
4949
.map_err(Error::from),
5050
(None, None) => Ok(None),
@@ -191,7 +191,7 @@ impl<'s> Transaction<'s> {
191191
|name| {
192192
let symbolic_refs_are_never_packed = None;
193193
store
194-
.find_existing(name, symbolic_refs_are_never_packed)
194+
.find(name, symbolic_refs_are_never_packed)
195195
.map(|r| r.into_target())
196196
.ok()
197197
},

git-ref/src/store/packed/find.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::{store::packed, PartialNameRef};
77
/// packed-refs specific functionality
88
impl packed::Buffer {
99
/// Find a reference with the given `name` and return it.
10-
pub fn find<'a, Name, E>(&self, name: Name) -> Result<Option<packed::Reference<'_>>, Error>
10+
pub fn try_find<'a, Name, E>(&self, name: Name) -> Result<Option<packed::Reference<'_>>, Error>
1111
where
1212
Name: TryInto<PartialNameRef<'a>, Error = E>,
1313
Error: From<E>,
@@ -52,12 +52,12 @@ impl packed::Buffer {
5252
}
5353

5454
/// Find a reference with the given `name` and return it.
55-
pub fn find_existing<'a, Name, E>(&self, name: Name) -> Result<packed::Reference<'_>, existing::Error>
55+
pub fn find<'a, Name, E>(&self, name: Name) -> Result<packed::Reference<'_>, existing::Error>
5656
where
5757
Name: TryInto<PartialNameRef<'a>, Error = E>,
5858
Error: From<E>,
5959
{
60-
match self.find(name) {
60+
match self.try_find(name) {
6161
Ok(Some(r)) => Ok(r),
6262
Ok(None) => Err(existing::Error::NotFound),
6363
Err(err) => Err(existing::Error::Find(err)),

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ impl packed::Transaction {
5454
.into_iter()
5555
.filter(|edit| {
5656
if let Change::Delete { .. } = edit.change {
57-
buffer
58-
.as_ref()
59-
.map_or(true, |b| b.find_existing(edit.name.to_ref()).is_ok())
57+
buffer.as_ref().map_or(true, |b| b.find(edit.name.to_ref()).is_ok())
6058
} else {
6159
true
6260
}

git-ref/tests/file/reference.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ mod reflog {
66
fn iter() -> crate::Result {
77
let store = file::store_with_packed_refs()?;
88
let packed = store.packed_buffer()?;
9-
let r = store.find_existing("main", packed.as_ref())?;
9+
let r = store.find("main", packed.as_ref())?;
1010
let mut buf = Vec::new();
1111
assert_eq!(r.log_iter(&store, &mut buf)?.expect("log exists").count(), 1);
1212
assert!(r.log_exists(&store), "it exists if its readable");
@@ -17,7 +17,7 @@ mod reflog {
1717
fn iter_rev() -> crate::Result {
1818
let store = file::store_with_packed_refs()?;
1919
let packed = store.packed_buffer()?;
20-
let r = store.find_existing("main", packed.as_ref())?;
20+
let r = store.find("main", packed.as_ref())?;
2121
let mut buf = [0u8; 256];
2222
assert_eq!(r.log_iter_rev(&store, &mut buf)?.expect("log exists").count(), 1);
2323
Ok(())
@@ -30,7 +30,7 @@ mod reflog {
3030
#[test]
3131
fn iter() -> crate::Result {
3232
let store = file::store()?;
33-
let r = store.loose_find_existing("HEAD")?;
33+
let r = store.find_loose("HEAD")?;
3434
let mut buf = Vec::new();
3535
assert_eq!(r.log_iter(&store, &mut buf)?.expect("log exists").count(), 1);
3636
assert!(r.log_exists(&store), "it exists if its readable");
@@ -40,7 +40,7 @@ mod reflog {
4040
#[test]
4141
fn iter_rev() -> crate::Result {
4242
let store = file::store()?;
43-
let r = store.loose_find_existing("HEAD")?;
43+
let r = store.find_loose("HEAD")?;
4444
let mut buf = [0u8; 256];
4545
assert_eq!(r.log_iter_rev(&store, &mut buf)?.expect("log exists").count(), 1);
4646
Ok(())
@@ -60,7 +60,7 @@ mod peel {
6060
#[test]
6161
fn one_level() -> crate::Result {
6262
let store = file::store()?;
63-
let r = store.loose_find_existing("HEAD")?;
63+
let r = store.find_loose("HEAD")?;
6464
assert_eq!(r.kind(), git_ref::Kind::Symbolic, "there is something to peel");
6565

6666
let nr = git_ref::file::loose::Reference::try_from(
@@ -83,13 +83,13 @@ mod peel {
8383
#[test]
8484
fn peel_with_packed_involvement() -> crate::Result {
8585
let store = store_with_packed_refs()?;
86-
let mut head = store.loose_find_existing("HEAD")?;
86+
let mut head = store.find_loose("HEAD")?;
8787
let packed = store.packed_buffer()?;
8888
let expected = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
8989
assert_eq!(head.peel_to_id_in_place(&store, packed.as_ref(), peel::none)?, expected);
9090
assert_eq!(head.target.as_id().map(ToOwned::to_owned), Some(expected));
9191

92-
let mut head = store.find_existing("dt1", packed.as_ref())?;
92+
let mut head = store.find("dt1", packed.as_ref())?;
9393
assert_eq!(head.peel_to_id_in_place(&store, packed.as_ref(), peel::none)?, expected);
9494
assert_eq!(head.target().as_id().map(ToOwned::to_owned), Some(expected));
9595
Ok(())
@@ -100,7 +100,7 @@ mod peel {
100100
let store = store_with_packed_refs()?;
101101
let packed = store.packed_buffer()?;
102102

103-
let head = store.find_existing("dt1", packed.as_ref())?;
103+
let head = store.find("dt1", packed.as_ref())?;
104104
assert!(head.is_packed());
105105
assert_eq!(
106106
head.target().as_id().map(ToOwned::to_owned),
@@ -128,14 +128,14 @@ mod peel {
128128
#[test]
129129
fn to_id_multi_hop() -> crate::Result {
130130
let store = file::store()?;
131-
let mut r = store.loose_find_existing("multi-link")?;
131+
let mut r = store.find_loose("multi-link")?;
132132
assert_eq!(r.kind(), git_ref::Kind::Symbolic, "there is something to peel");
133133

134134
let commit = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
135135
assert_eq!(r.peel_to_id_in_place(&store, None, peel::none)?, commit);
136136
assert_eq!(r.name.as_bstr(), "refs/remotes/origin/multi-link-target3");
137137

138-
let mut r = store.loose_find_existing("dt1")?;
138+
let mut r = store.find_loose("dt1")?;
139139
assert_eq!(
140140
r.peel_to_id_in_place(&store, None, peel::none)?,
141141
hex_to_id("4c3f4cce493d7beb45012e478021b5f65295e5a3"),
@@ -158,7 +158,7 @@ mod peel {
158158
#[test]
159159
fn to_id_cycle() -> crate::Result {
160160
let store = file::store()?;
161-
let mut r = store.loose_find_existing("loop-a")?;
161+
let mut r = store.find_loose("loop-a")?;
162162
assert_eq!(r.kind(), git_ref::Kind::Symbolic, "there is something to peel");
163163
assert_eq!(r.name.as_bstr(), "refs/loop-a");
164164

git-ref/tests/file/store/find.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ mod existing {
88
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
99
let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
1010
let packed = store.packed_buffer()?;
11-
let r = store.find_existing("main", packed.as_ref())?;
11+
let r = store.find("main", packed.as_ref())?;
1212
assert_eq!(r.target().to_ref().as_id().expect("peeled"), c1);
1313
assert_eq!(r.name().as_bstr(), "refs/heads/main");
1414
Ok(())
@@ -27,7 +27,7 @@ mod loose {
2727
fn success_and_failure() -> crate::Result {
2828
let store = store()?;
2929
for (partial_name, expected_path) in &[("main", Some("refs/heads/main")), ("does-not-exist", None)] {
30-
let reference = store.loose_find_existing(*partial_name);
30+
let reference = store.find_loose(*partial_name);
3131
match expected_path {
3232
Some(expected_path) => assert_eq!(reference?.name.as_bstr(), expected_path),
3333
None => match reference {
@@ -60,7 +60,7 @@ mod loose {
6060
("heads/main", "refs/heads/main", git_ref::Kind::Peeled),
6161
("refs/heads/main", "refs/heads/main", git_ref::Kind::Peeled),
6262
] {
63-
let reference = store.loose_find(*partial_name)?.expect("exists");
63+
let reference = store.try_find_loose(*partial_name)?.expect("exists");
6464
assert_eq!(reference.name.as_bstr(), expected_path);
6565
assert_eq!(reference.target.to_ref().kind(), *expected_ref_kind);
6666
}
@@ -75,7 +75,7 @@ mod loose {
7575
("broken", "does not parse", true),
7676
("../escaping", "an invalid ref name", true),
7777
] {
78-
let reference = store.loose_find(*partial_name);
78+
let reference = store.try_find_loose(*partial_name);
7979
if *is_err {
8080
assert!(reference.is_err(), "{}", reason);
8181
} else {

0 commit comments

Comments
 (0)