Revert "Check for pull changes using ORIG_HEAD"

ORIG_HEAD isn't very reliable
This commit is contained in:
Roey Darwish Dror
2019-07-31 11:17:28 +03:00
parent 5e51f9453e
commit 50b020acb3

View File

@@ -23,22 +23,18 @@ pub struct Repositories<'a> {
repositories: HashSet<String>,
}
/// Checks whether the latest pull command actually pulled something
fn did_pull_change(git: &Path, repo: &str) -> bool {
fn get_head_revision(git: &Path, repo: &str) -> Option<String> {
Command::new(git)
.args(&["rev-parse", "HEAD", "ORIG_HEAD"])
.args(&["rev-parse", "HEAD"])
.current_dir(repo)
.check_output()
.map(|output| {
let mut lines = output.trim().split('\n');
lines.next().unwrap() != lines.next().unwrap()
})
.map(|output| output.trim().to_string())
.map_err(|e| {
error!("Error getting revision for {}: {}", repo, e);
e
})
.unwrap_or(false)
.ok()
}
impl Git {
@@ -101,6 +97,7 @@ impl Git {
.map(|repo| {
let repo = repo.clone();
let path = format!("{}", HumanizedPath::from(std::path::Path::new(&repo)));
let before_revision = get_head_revision(git, &repo);
let cloned_git = git.to_owned();
println!("{} {}", style("Pulling").cyan().bold(), path);
@@ -112,11 +109,21 @@ impl Git {
.then(move |result| match result {
Ok(output) => {
if output.status.success() {
if did_pull_change(&cloned_git, &repo) {
let after_revision = get_head_revision(&cloned_git, &repo);
if before_revision != after_revision
&& after_revision.is_some()
&& before_revision.is_some()
{
println!("{} {}:", style("Changed").yellow().bold(), path);
Command::new(&cloned_git)
.current_dir(&repo)
.args(&["log", "--no-decorate", "--oneline", "ORIG_HEAD.."])
.args(&[
"log",
"--no-decorate",
"--oneline",
&format!("{}..{}", before_revision.unwrap(), after_revision.unwrap()),
])
.spawn()
.unwrap()
.wait()