summaryrefslogtreecommitdiffstats
path: root/vendor/gix/src/object
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gix/src/object')
-rw-r--r--vendor/gix/src/object/commit.rs4
-rw-r--r--vendor/gix/src/object/mod.rs10
-rw-r--r--vendor/gix/src/object/tag.rs11
-rw-r--r--vendor/gix/src/object/tree/diff/mod.rs9
-rw-r--r--vendor/gix/src/object/tree/mod.rs17
5 files changed, 41 insertions, 10 deletions
diff --git a/vendor/gix/src/object/commit.rs b/vendor/gix/src/object/commit.rs
index e28a12955..5a9dfd4f3 100644
--- a/vendor/gix/src/object/commit.rs
+++ b/vendor/gix/src/object/commit.rs
@@ -109,7 +109,7 @@ impl<'repo> Commit<'repo> {
.map(move |id| id.attach(repo))
}
- /// Parse the commit and return the the tree object it points to.
+ /// Parse the commit and return the tree object it points to.
pub fn tree(&self) -> Result<Tree<'repo>, Error> {
match self.tree_id()?.object()?.try_into_tree() {
Ok(tree) => Ok(tree),
@@ -117,7 +117,7 @@ impl<'repo> Commit<'repo> {
}
}
- /// Parse the commit and return the the tree id it points to.
+ /// Parse the commit and return the tree id it points to.
pub fn tree_id(&self) -> Result<crate::Id<'repo>, gix_object::decode::Error> {
gix_object::CommitRefIter::from_bytes(&self.data)
.tree_id()
diff --git a/vendor/gix/src/object/mod.rs b/vendor/gix/src/object/mod.rs
index 75d77d138..d0a37db6c 100644
--- a/vendor/gix/src/object/mod.rs
+++ b/vendor/gix/src/object/mod.rs
@@ -90,6 +90,14 @@ impl<'repo> Object<'repo> {
}
}
+ /// Transform this object into a tag, or panic if it is none.
+ pub fn into_tag(self) -> Tag<'repo> {
+ match self.try_into() {
+ Ok(tag) => tag,
+ Err(this) => panic!("Tried to use {} as commit, but was {}", this.id, this.kind),
+ }
+ }
+
/// Transform this object into a commit, or return it as part of the `Err` if it is no commit.
pub fn try_into_commit(self) -> Result<Commit<'repo>, try_into::Error> {
self.try_into().map_err(|this: Self| try_into::Error {
@@ -157,7 +165,7 @@ impl<'repo> Object<'repo> {
})
}
- /// Obtain a an iterator over commit tokens like in [`to_commit_iter()`][Object::try_to_commit_ref_iter()].
+ /// Obtain an iterator over commit tokens like in [`to_commit_iter()`][Object::try_to_commit_ref_iter()].
///
/// # Panic
///
diff --git a/vendor/gix/src/object/tag.rs b/vendor/gix/src/object/tag.rs
index ce9d7360a..77eaaa259 100644
--- a/vendor/gix/src/object/tag.rs
+++ b/vendor/gix/src/object/tag.rs
@@ -1,6 +1,17 @@
use crate::{ext::ObjectIdExt, Tag};
impl<'repo> Tag<'repo> {
+ /// Decode the entire tag object and return it for accessing all tag information.
+ ///
+ /// This never allocates.
+ ///
+ /// Note that the returned commit object does make lookup easy and should be
+ /// used for successive calls to string-ish information to avoid decoding the object
+ /// more than once.
+ pub fn decode(&self) -> Result<gix_object::TagRef<'_>, gix_object::decode::Error> {
+ gix_object::TagRef::from_bytes(&self.data)
+ }
+
/// Decode this tag partially and return the id of its target.
pub fn target_id(&self) -> Result<crate::Id<'repo>, gix_object::decode::Error> {
gix_object::TagRefIter::from_bytes(&self.data)
diff --git a/vendor/gix/src/object/tree/diff/mod.rs b/vendor/gix/src/object/tree/diff/mod.rs
index 5a3bf6ddf..447eeaa84 100644
--- a/vendor/gix/src/object/tree/diff/mod.rs
+++ b/vendor/gix/src/object/tree/diff/mod.rs
@@ -3,20 +3,15 @@ use gix_diff::tree::recorder::Location;
use crate::{bstr::BStr, Tree};
/// Returned by the `for_each` function to control flow.
-#[derive(Clone, Copy, PartialOrd, PartialEq, Ord, Eq, Hash)]
+#[derive(Default, Clone, Copy, PartialOrd, PartialEq, Ord, Eq, Hash)]
pub enum Action {
/// Continue the traversal of changes.
+ #[default]
Continue,
/// Stop the traversal of changes and stop calling this function.
Cancel,
}
-impl Default for Action {
- fn default() -> Self {
- Action::Continue
- }
-}
-
/// Represents any possible change in order to turn one tree into another.
#[derive(Debug, Clone, Copy)]
pub struct Change<'a, 'old, 'new> {
diff --git a/vendor/gix/src/object/tree/mod.rs b/vendor/gix/src/object/tree/mod.rs
index db094bcb9..bbd392289 100644
--- a/vendor/gix/src/object/tree/mod.rs
+++ b/vendor/gix/src/object/tree/mod.rs
@@ -22,6 +22,11 @@ impl<'repo> Tree<'repo> {
Id::from_id(self.id, self.repo)
}
+ /// Parse our tree data and return the parse tree for direct access to its entries.
+ pub fn decode(&self) -> Result<gix_object::TreeRef<'_>, gix_object::decode::Error> {
+ gix_object::TreeRef::from_bytes(&self.data)
+ }
+
// TODO: tests.
/// Follow a sequence of `path` components starting from this instance, and look them up one by one until the last component
/// is looked up and its tree entry is returned.
@@ -156,3 +161,15 @@ mod entry {
}
}
}
+
+mod _impls {
+ use crate::Tree;
+
+ impl TryFrom<Tree<'_>> for gix_object::Tree {
+ type Error = gix_object::decode::Error;
+
+ fn try_from(t: Tree<'_>) -> Result<Self, Self::Error> {
+ t.decode().map(Into::into)
+ }
+ }
+}