History

Remove re-export of git_object::borrowed::Id (#63)

Sebastian Thiel committed 5 years ago

Commit a3f28161 parent fdbe70422 files · +64 −69Browse files

Showing the changes to git-commitgraph/src (4 of 22 files). Show all

Unified · Split

4 files
  1. git-commitgraph/src/file/access.rs +7 −7
  2. git-commitgraph/src/file/commit.rs +5 −5
  3. git-commitgraph/src/file/verify.rs +10 −6
  4. git-commitgraph/src/graph/access.rs +5 −6
git-commitgraph/src/file/access.rs+7−7
@@ -1,6 +1,6 @@
1use crate::file::{self, commit::Commit, File, COMMIT_DATA_ENTRY_SIZE};1use crate::file::{self, commit::Commit, File, COMMIT_DATA_ENTRY_SIZE};
2use git_hash::SIZE_OF_SHA1_DIGEST as SHA1_SIZE;2use git_hash::SIZE_OF_SHA1_DIGEST as SHA1_SIZE;
3use git_object::{borrowed, HashKind};3use git_object::HashKind;
4use std::{4use std::{
5 convert::{TryFrom, TryInto},5 convert::{TryFrom, TryInto},
6 fmt::{Debug, Formatter},6 fmt::{Debug, Formatter},
@@ -35,7 +35,7 @@ impl File { · 28 unmodified lines
35 /// Returns 20 bytes sha1 at the given index in our list of (sorted) sha1 hashes.35 /// Returns 20 bytes sha1 at the given index in our list of (sorted) sha1 hashes.
36 /// The position ranges from 0 to self.num_commits()36 /// The position ranges from 0 to self.num_commits()
37 // copied from git-odb/src/pack/index/access.rs37 // copied from git-odb/src/pack/index/access.rs
38 pub fn id_at(&self, pos: file::Position) -> borrowed::Id<'_> {38 pub fn id_at(&self, pos: file::Position) -> git_hash::borrowed::Id<'_> {
39 assert!(39 assert!(
40 pos.0 < self.num_commits(),40 pos.0 < self.num_commits(),
41 "expected lexigraphical position less than {}, got {}",41 "expected lexigraphical position less than {}, got {}",
@@ -47,16 +47,16 @@ impl File { · 5 unmodified lines
47 .try_into()47 .try_into()
48 .expect("an architecture able to hold 32 bits of integer");48 .expect("an architecture able to hold 32 bits of integer");
49 let start = self.oid_lookup_offset + (pos * SHA1_SIZE);49 let start = self.oid_lookup_offset + (pos * SHA1_SIZE);
50 borrowed::Id::try_from(&self.data[start..start + SHA1_SIZE]).expect("20 bytes SHA1 to be alright")50 git_hash::borrowed::Id::try_from(&self.data[start..start + SHA1_SIZE]).expect("20 bytes SHA1 to be alright")
51 }51 }
52 52
53 /// Return an iterator over all object hashes stored in the base graph.53 /// Return an iterator over all object hashes stored in the base graph.
54 pub fn iter_base_graph_ids(&self) -> impl Iterator<Item = borrowed::Id<'_>> {54 pub fn iter_base_graph_ids(&self) -> impl Iterator<Item = git_hash::borrowed::Id<'_>> {
55 let start = self.base_graphs_list_offset.unwrap_or(0);55 let start = self.base_graphs_list_offset.unwrap_or(0);
56 let base_graphs_list = &self.data[start..start + (SHA1_SIZE * usize::from(self.base_graph_count))];56 let base_graphs_list = &self.data[start..start + (SHA1_SIZE * usize::from(self.base_graph_count))];
57 base_graphs_list57 base_graphs_list
58 .chunks(SHA1_SIZE)58 .chunks(SHA1_SIZE)
59 .map(|bytes| borrowed::Id::try_from(bytes).expect("20 bytes SHA1 to be alright"))59 .map(|bytes| git_hash::borrowed::Id::try_from(bytes).expect("20 bytes SHA1 to be alright"))
60 }60 }
61 61
62 /// return an iterator over all commits in this file.62 /// return an iterator over all commits in this file.
@@ -65,13 +65,13 @@ impl File { · 2 unmodified lines
65 }65 }
66 66
67 /// Return an iterator over all object hashes stored in this file.67 /// Return an iterator over all object hashes stored in this file.
68 pub fn iter_ids(&self) -> impl Iterator<Item = borrowed::Id<'_>> {68 pub fn iter_ids(&self) -> impl Iterator<Item = git_hash::borrowed::Id<'_>> {
69 (0..self.num_commits()).map(move |i| self.id_at(file::Position(i)))69 (0..self.num_commits()).map(move |i| self.id_at(file::Position(i)))
70 }70 }
71 71
72 /// Translate the given object hash to its position within this file, if present.72 /// Translate the given object hash to its position within this file, if present.
73 // copied from git-odb/src/pack/index/access.rs73 // copied from git-odb/src/pack/index/access.rs
74 pub fn lookup(&self, id: borrowed::Id<'_>) -> Option<file::Position> {74 pub fn lookup(&self, id: git_hash::borrowed::Id<'_>) -> Option<file::Position> {
75 let first_byte = usize::from(id.first_byte());75 let first_byte = usize::from(id.first_byte());
76 let mut upper_bound = self.fan[first_byte];76 let mut upper_bound = self.fan[first_byte];
77 let mut lower_bound = if first_byte != 0 { self.fan[first_byte - 1] } else { 0 };77 let mut lower_bound = if first_byte != 0 { self.fan[first_byte - 1] } else { 0 };
git-commitgraph/src/file/commit.rs+5−5
@@ -5,7 +5,7 @@ use crate::{ · 4 unmodified lines
5};5};
6use byteorder::{BigEndian, ByteOrder};6use byteorder::{BigEndian, ByteOrder};
7use git_hash::SIZE_OF_SHA1_DIGEST as SHA1_SIZE;7use git_hash::SIZE_OF_SHA1_DIGEST as SHA1_SIZE;
8use git_object::{borrowed, owned};8use git_object::owned;
9use std::{9use std::{
10 convert::{TryFrom, TryInto},10 convert::{TryFrom, TryInto},
11 fmt::{Debug, Formatter},11 fmt::{Debug, Formatter},
@@ -40,7 +40,7 @@ pub struct Commit<'a> { · 28 unmodified lines
40 generation: u32,40 generation: u32,
41 parent1: ParentEdge,41 parent1: ParentEdge,
42 parent2: ParentEdge,42 parent2: ParentEdge,
43 root_tree_id: borrowed::Id<'a>,43 root_tree_id: git_hash::borrowed::Id<'a>,
44}44}
45 45
46impl<'a> Commit<'a> {46impl<'a> Commit<'a> {
@@ -49,7 +49,7 @@ impl<'a> Commit<'a> { · 2 unmodified lines
49 Commit {49 Commit {
50 file,50 file,
51 pos,51 pos,
52 root_tree_id: borrowed::Id::try_from(&bytes[..SHA1_SIZE]).expect("20 bytes SHA1 to be alright"),52 root_tree_id: git_hash::borrowed::Id::try_from(&bytes[..SHA1_SIZE]).expect("20 bytes SHA1 to be alright"),
53 parent1: ParentEdge::from_raw(BigEndian::read_u32(&bytes[SHA1_SIZE..SHA1_SIZE + 4])),53 parent1: ParentEdge::from_raw(BigEndian::read_u32(&bytes[SHA1_SIZE..SHA1_SIZE + 4])),
54 parent2: ParentEdge::from_raw(BigEndian::read_u32(&bytes[SHA1_SIZE + 4..SHA1_SIZE + 8])),54 parent2: ParentEdge::from_raw(BigEndian::read_u32(&bytes[SHA1_SIZE + 4..SHA1_SIZE + 8])),
55 generation: BigEndian::read_u32(&bytes[SHA1_SIZE + 8..SHA1_SIZE + 12]) >> 2,55 generation: BigEndian::read_u32(&bytes[SHA1_SIZE + 8..SHA1_SIZE + 12]) >> 2,
@@ -84,7 +84,7 @@ impl<'a> Commit<'a> { · 28 unmodified lines
84 }84 }
85 85
86 /// Returns the hash of this commit.86 /// Returns the hash of this commit.
87 pub fn id(&self) -> borrowed::Id<'a> {87 pub fn id(&self) -> git_hash::borrowed::Id<'a> {
88 self.file.id_at(self.pos)88 self.file.id_at(self.pos)
89 }89 }
90 90
@@ -99,7 +99,7 @@ impl<'a> Commit<'a> { · 8 unmodified lines
99 }99 }
100 100
101 /// Return the hash of the tree this commit points to.101 /// Return the hash of the tree this commit points to.
102 pub fn root_tree_id(&self) -> borrowed::Id<'a> {102 pub fn root_tree_id(&self) -> git_hash::borrowed::Id<'a> {
103 self.root_tree_id103 self.root_tree_id
104 }104 }
105}105}
git-commitgraph/src/file/verify.rs+10−6
@@ -5,7 +5,7 @@ use crate::{ · 4 unmodified lines
5};5};
6use bstr::ByteSlice;6use bstr::ByteSlice;
7use git_hash::SIZE_OF_SHA1_DIGEST as SHA1_SIZE;7use git_hash::SIZE_OF_SHA1_DIGEST as SHA1_SIZE;
8use git_object::{borrowed, owned};8use git_object::owned;
9use std::{9use std::{
10 cmp::{max, min},10 cmp::{max, min},
11 collections::HashMap,11 collections::HashMap,
@@ -58,8 +58,9 @@ pub struct Outcome { · 46 unmodified lines
58/// Verification58/// Verification
59impl File {59impl File {
60 /// Returns the trailing checksum over the entire content of this file.60 /// Returns the trailing checksum over the entire content of this file.
61 pub fn checksum(&self) -> borrowed::Id<'_> {61 pub fn checksum(&self) -> git_hash::borrowed::Id<'_> {
62 borrowed::Id::try_from(&self.data[self.data.len() - SHA1_SIZE..]).expect("file to be large enough for a hash")62 git_hash::borrowed::Id::try_from(&self.data[self.data.len() - SHA1_SIZE..])
63 .expect("file to be large enough for a hash")
63 }64 }
64 65
65 /// Traverse all [commits][file::Commit] stored in this file and call `processor(commit) -> Result<(), Error>` on it.66 /// Traverse all [commits][file::Commit] stored in this file and call `processor(commit) -> Result<(), Error>` on it.
@@ -74,7 +75,7 @@ impl File { · 8 unmodified lines
74 .map_err(|(actual, expected)| Error::Mismatch { actual, expected })?;75 .map_err(|(actual, expected)| Error::Mismatch { actual, expected })?;
75 verify_split_chain_filename_hash(&self.path, self.checksum()).map_err(Error::Filename)?;76 verify_split_chain_filename_hash(&self.path, self.checksum()).map_err(Error::Filename)?;
76 77
77 let null_id = borrowed::Id::null_sha1();78 let null_id = git_hash::borrowed::Id::null_sha1();
78 79
79 let mut stats = Outcome {80 let mut stats = Outcome {
80 max_generation: 0,81 max_generation: 0,
@@ -85,7 +86,7 @@ impl File { · 4 unmodified lines
85 };86 };
86 87
87 // TODO: Verify self.fan values as we go.88 // TODO: Verify self.fan values as we go.
88 let mut prev_id: borrowed::Id<'a> = null_id;89 let mut prev_id: git_hash::borrowed::Id<'a> = null_id;
89 for commit in self.iter_commits() {90 for commit in self.iter_commits() {
90 if commit.id() <= prev_id {91 if commit.id() <= prev_id {
91 if commit.id() == null_id {92 if commit.id() == null_id {
@@ -157,7 +158,10 @@ impl File { · 65 unmodified lines
157 158
158/// If the given path's filename matches "graph-{hash}.graph", check that `hash` matches the159/// If the given path's filename matches "graph-{hash}.graph", check that `hash` matches the
159/// expected hash.160/// expected hash.
160fn verify_split_chain_filename_hash(path: impl AsRef<Path>, expected: borrowed::Id<'_>) -> Result<(), String> {161fn verify_split_chain_filename_hash(
162 path: impl AsRef<Path>,
163 expected: git_hash::borrowed::Id<'_>,
164) -> Result<(), String> {
161 let path = path.as_ref();165 let path = path.as_ref();
162 path.file_name()166 path.file_name()
163 .and_then(|filename| filename.to_str())167 .and_then(|filename| filename.to_str())
git-commitgraph/src/graph/access.rs+5−6
@@ -2,7 +2,6 @@ use crate::{ · 1 unmodified line
2 file::{self, Commit, File},2 file::{self, Commit, File},
3 graph::{self, Graph},3 graph::{self, Graph},
4};4};
5use git_object::borrowed;
6 5
7/// Access6/// Access
8impl Graph {7impl Graph {
@@ -16,7 +15,7 @@ impl Graph { · 7 unmodified lines
16 }15 }
17 16
18 /// Returns the commit matching the given `id`.17 /// Returns the commit matching the given `id`.
19 pub fn commit_by_id(&self, id: borrowed::Id<'_>) -> Option<Commit<'_>> {18 pub fn commit_by_id(&self, id: git_hash::borrowed::Id<'_>) -> Option<Commit<'_>> {
20 let r = self.lookup_by_id(id)?;19 let r = self.lookup_by_id(id)?;
21 Some(r.file.commit_at(r.file_pos))20 Some(r.file.commit_at(r.file_pos))
22 }21 }
@@ -25,7 +24,7 @@ impl Graph { · 2 unmodified lines
25 ///24 ///
26 /// # Panics25 /// # Panics
27 /// If `pos` is greater or equal to [`num_commits()`][Graph::num_commits()].26 /// If `pos` is greater or equal to [`num_commits()`][Graph::num_commits()].
28 pub fn id_at(&self, pos: graph::Position) -> borrowed::Id<'_> {27 pub fn id_at(&self, pos: graph::Position) -> git_hash::borrowed::Id<'_> {
29 let r = self.lookup_by_pos(pos);28 let r = self.lookup_by_pos(pos);
30 r.file.id_at(r.pos)29 r.file.id_at(r.pos)
31 }30 }
@@ -36,12 +35,12 @@ impl Graph { · 4 unmodified lines
36 }35 }
37 36
38 /// Iterate over commit IDs in unsorted order.37 /// Iterate over commit IDs in unsorted order.
39 pub fn iter_ids(&self) -> impl Iterator<Item = borrowed::Id<'_>> {38 pub fn iter_ids(&self) -> impl Iterator<Item = git_hash::borrowed::Id<'_>> {
40 self.files.iter().flat_map(|file| file.iter_ids())39 self.files.iter().flat_map(|file| file.iter_ids())
41 }40 }
42 41
43 /// Translate the given `id` to its position in the file.42 /// Translate the given `id` to its position in the file.
44 pub fn lookup(&self, id: borrowed::Id<'_>) -> Option<graph::Position> {43 pub fn lookup(&self, id: git_hash::borrowed::Id<'_>) -> Option<graph::Position> {
45 Some(self.lookup_by_id(id)?.graph_pos)44 Some(self.lookup_by_id(id)?.graph_pos)
46 }45 }
47 46
@@ -53,7 +52,7 @@ impl Graph { · 5 unmodified lines
53 52
54/// Access fundamentals53/// Access fundamentals
55impl Graph {54impl Graph {
56 pub(crate) fn lookup_by_id(&self, id: borrowed::Id<'_>) -> Option<LookupByIdResult<'_>> {55 pub(crate) fn lookup_by_id(&self, id: git_hash::borrowed::Id<'_>) -> Option<LookupByIdResult<'_>> {
57 let mut current_file_start = 0;56 let mut current_file_start = 0;
58 for file in &self.files {57 for file in &self.files {
59 if let Some(lex_pos) = file.lookup(id) {58 if let Some(lex_pos) = file.lookup(id) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t