3 Commits

2 changed files with 35 additions and 40 deletions

View File

@@ -74,47 +74,39 @@ fn sync_trees(config: Config) {
process::exit(1); process::exit(1);
})); }));
} else { } else {
match &repo.remotes { if matches!(&repo.remotes, None) || repo.remotes.as_ref().unwrap().len().clone() == 0 {
None => { print_repo_action(
print_repo_action( &repo.name,
&repo.name, "Repository does not have remotes configured, initializing new",
"Repository does not have remotes configured, initializing new", );
); repo_handle = match init_repo(&repo_path) {
repo_handle = match init_repo(&repo_path) { Ok(r) => {
Ok(r) => { print_repo_success(&repo.name, "Repository created");
print_repo_success(&repo.name, "Repository created"); Some(r)
Some(r) }
} Err(e) => {
Err(e) => { print_repo_error(
print_repo_error( &repo.name,
&repo.name, &format!("Repository failed during init: {}", e),
&format!("Repository failed during init: {}", e), );
); None
None
}
} }
} }
Some(r) => { } else {
let first = match r.first() { let first = repo.remotes.as_ref().unwrap().first().unwrap();
Some(e) => e,
None => {
panic!("Repos is an empty array. This is a bug");
}
};
match clone_repo(first, &repo_path) { match clone_repo(first, &repo_path) {
Ok(_) => { Ok(_) => {
print_repo_success(&repo.name, "Repository successfully cloned"); print_repo_success(&repo.name, "Repository successfully cloned");
} }
Err(e) => { Err(e) => {
print_repo_error( print_repo_error(
&repo.name, &repo.name,
&format!("Repository failed during clone: {}", e), &format!("Repository failed during clone: {}", e),
); );
continue; continue;
} }
}; };
}
} }
} }
if let Some(remotes) = &repo.remotes { if let Some(remotes) = &repo.remotes {
@@ -395,7 +387,7 @@ fn add_repo_status(table: &mut Table, repo_name: &str, repo_handle: &git2::Repos
} }
out.into_iter().collect::<String>().trim().to_string() out.into_iter().collect::<String>().trim().to_string()
}, },
None => String::from("No changes"), None => String::from("\u{2714}"),
}, },
&repo_status.branches.iter().map(|(branch_name, remote_branch)| { &repo_status.branches.iter().map(|(branch_name, remote_branch)| {
format!("branch: {}{}\n", format!("branch: {}{}\n",

View File

@@ -237,7 +237,7 @@ pub fn get_repo_status(repo: &git2::Repository) -> RepoStatus {
false => Some(repo.head().unwrap().shorthand().unwrap().to_string()), false => Some(repo.head().unwrap().shorthand().unwrap().to_string()),
}; };
let statuses = repo.statuses(None).unwrap(); let statuses = repo.statuses(Some(git2::StatusOptions::new().include_ignored(false))).unwrap();
let changes = match statuses.is_empty() { let changes = match statuses.is_empty() {
true => None, true => None,
@@ -264,6 +264,9 @@ pub fn get_repo_status(repo: &git2::Repository) -> RepoStatus {
files_deleted += 1; files_deleted += 1;
} }
} }
if (files_new, files_modified, files_deleted) == (0, 0, 0) {
panic!("is_empty() returned true, but no file changes were detected. This is a bug!");
}
Some(RepoChanges { Some(RepoChanges {
files_new, files_new,
files_modified, files_modified,