diff --git a/Cargo.lock b/Cargo.lock index 42702ab..66afe05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -255,7 +255,7 @@ dependencies = [ [[package]] name = "repoutil" -version = "0.25.0" +version = "0.26.0" dependencies = [ "anyhow", "rayon", diff --git a/Cargo.toml b/Cargo.toml index 7ac8b34..fea4f3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "repoutil" -version = "0.25.0" +version = "0.26.0" authors = ["Chris Davison "] edition = "2018" license = "MIT" diff --git a/src/git.rs b/src/git.rs index bdcb4fc..187f2e1 100644 --- a/src/git.rs +++ b/src/git.rs @@ -71,16 +71,14 @@ pub fn stat(p: &Path, as_json: bool) -> Result> { fn ahead_behind(p: &Path) -> Result> { let response: String = command_output( p, - "for-each-ref --format='%(refname:short) %(upstream:track)' refs/heads", - )? - .iter() - .map(|x| x.trim_matches('\'').trim()) - .filter(|x| x.split(' ').nth(1).is_some()) - .collect(); + "status --porcelain --ahead-behind -b", + )?.into_iter().next().filter(|x| x.contains("[")).unwrap_or(String::new()); Ok(if response.is_empty() { None } else { - Some(response) + let start = response.find('[').unwrap(); + let end = response.find(']').unwrap(); + Some(response[start + 1..end].to_string()) }) }