You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
854 B
32 lines
854 B
/// A diff between two commits
|
|
///
|
|
/// At the moment this type doesn't properly express a Diff, and is
|
|
/// only used to compute the change set between commits to generate a
|
|
/// file history.
|
|
pub struct Diff {
|
|
paths: Vec<String>,
|
|
}
|
|
|
|
impl Diff {
|
|
/// Generate a new Diff from a git2::Diff
|
|
pub(crate) fn from(d: git2::Diff) -> Self {
|
|
Self {
|
|
paths: d.deltas().fold(vec![], |mut vec, delta| {
|
|
append(&mut vec, delta.old_file());
|
|
append(&mut vec, delta.new_file());
|
|
vec
|
|
}),
|
|
}
|
|
}
|
|
|
|
/// Get all paths touched by a diff
|
|
pub fn get_paths(&self) -> Vec<String> {
|
|
self.paths.clone()
|
|
}
|
|
}
|
|
|
|
fn append(vec: &mut Vec<String>, f: git2::DiffFile) {
|
|
if let Some(path) = f.path().map(|p| p.to_str().unwrap().into()) {
|
|
vec.push(path);
|
|
}
|
|
}
|
|
|