Support committing multiple files
This commit is contained in:
parent
19c51dc358
commit
dd333768b0
@ -1,7 +1,7 @@
|
|||||||
extern crate benchmark_repository;
|
extern crate benchmark_repository;
|
||||||
extern crate pretty_env_logger;
|
extern crate pretty_env_logger;
|
||||||
|
|
||||||
use benchmark_repository::BenchmarkRepository;
|
use benchmark_repository::{BenchmarkRepository, TargetPath};
|
||||||
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
@ -10,5 +10,12 @@ fn main()
|
|||||||
pretty_env_logger::init();
|
pretty_env_logger::init();
|
||||||
|
|
||||||
let benchmark_repository = BenchmarkRepository::new("git@git.luehne.de:patrick/tplp-planning-benchmark.git", Path::new("storage"), "git", "Potassco Bot", "bot@potassco.org");
|
let benchmark_repository = BenchmarkRepository::new("git@git.luehne.de:patrick/tplp-planning-benchmark.git", Path::new("storage"), "git", "Potassco Bot", "bot@potassco.org");
|
||||||
benchmark_repository.commit_file(Path::new("/tmp/test"), Path::new("test-new/fourth"), "test-results");
|
|
||||||
|
let files = vec!
|
||||||
|
[
|
||||||
|
TargetPath{source: &Path::new("/tmp/test"), destination: &Path::new("foobar/test")},
|
||||||
|
TargetPath{source: &Path::new("/tmp/test2"), destination: &Path::new("foobar/test-2")},
|
||||||
|
];
|
||||||
|
|
||||||
|
benchmark_repository.commit_files(&files[..], "test-results");
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,12 @@ pub struct BenchmarkRepository
|
|||||||
user_email: String,
|
user_email: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub struct TargetPath<'a>
|
||||||
|
{
|
||||||
|
pub source: &'a Path,
|
||||||
|
pub destination: &'a Path,
|
||||||
|
}
|
||||||
|
|
||||||
impl BenchmarkRepository
|
impl BenchmarkRepository
|
||||||
{
|
{
|
||||||
fn progress_bar_style() -> ProgressStyle
|
fn progress_bar_style() -> ProgressStyle
|
||||||
@ -230,7 +236,7 @@ impl BenchmarkRepository
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn commit_file(&self, file_path: &Path, result_file_path: &Path, branch_name: &str)
|
pub fn commit_files(&self, file_paths: &[TargetPath], branch_name: &str)
|
||||||
{
|
{
|
||||||
let tip_reference_name = format!("refs/remotes/origin/{}", branch_name);
|
let tip_reference_name = format!("refs/remotes/origin/{}", branch_name);
|
||||||
let tip_reference = match self.repository.find_reference(&tip_reference_name)
|
let tip_reference = match self.repository.find_reference(&tip_reference_name)
|
||||||
@ -257,11 +263,14 @@ impl BenchmarkRepository
|
|||||||
Err(error) => panic!("Could not read parent tree into index: {}", error),
|
Err(error) => panic!("Could not read parent tree into index: {}", error),
|
||||||
};
|
};
|
||||||
|
|
||||||
let index_entry = self.read_file_as_index_entry(file_path, result_file_path);
|
for target_path in file_paths
|
||||||
|
|
||||||
if let Err(error) = index.add(&index_entry)
|
|
||||||
{
|
{
|
||||||
panic!("Could not add index entry: {}", error);
|
let index_entry = self.read_file_as_index_entry(target_path.source, target_path.destination);
|
||||||
|
|
||||||
|
if let Err(error) = index.add(&index_entry)
|
||||||
|
{
|
||||||
|
panic!("Could not add index entry for “{}”: {}", target_path.destination.display(), error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let tree_object_id = match index.write_tree_to(&self.repository)
|
let tree_object_id = match index.write_tree_to(&self.repository)
|
||||||
@ -279,7 +288,7 @@ impl BenchmarkRepository
|
|||||||
info!("Created tree object “{}”", tree_object_id);
|
info!("Created tree object “{}”", tree_object_id);
|
||||||
|
|
||||||
let signature = Signature::now(&self.user_name, &self.user_email).expect("Could not create signature");
|
let signature = Signature::now(&self.user_name, &self.user_email).expect("Could not create signature");
|
||||||
let message = format!("Add file “{}”", result_file_path.display());
|
let message = format!("Add files");
|
||||||
|
|
||||||
let parent = match tip_reference.peel_to_commit()
|
let parent = match tip_reference.peel_to_commit()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user