MCPcopy Create free account
hub / github.com/brocode/fw / update_project_remotes

Function update_project_remotes

src/git/mod.rs:69–99  ·  view source on GitHub ↗
(project: &Project, path: &Path, ff_merge: bool)

Source from the content-addressed store, hash-verified

67}
68
69pub fn update_project_remotes(project: &Project, path: &Path, ff_merge: bool) -> Result<(), AppError> {
70 let local: Repository = Repository::open(path).map_err(AppError::GitError)?;
71 for desired_remote in project.additional_remotes.clone().unwrap_or_default().into_iter().chain(
72 vec![crate::config::project::Remote {
73 name: "origin".to_string(),
74 git: project.git.to_owned(),
75 }]
76 .into_iter(),
77 ) {
78 let remote = local
79 .find_remote(&desired_remote.name)
80 .or_else(|_| local.remote(&desired_remote.name, &desired_remote.git))?;
81
82 let mut remote = match remote.url() {
83 Some(url) if url == desired_remote.git => remote,
84 _ => {
85 local.remote_set_url(&desired_remote.name, &desired_remote.git)?;
86 local.find_remote(&desired_remote.name)?
87 }
88 };
89
90 update_remote(&mut remote)?;
91 }
92
93 if ff_merge {
94 // error does not matter. fast forward not possible
95 let _ = fast_forward_merge(&local);
96 }
97
98 Ok(())
99}
100
101fn fast_forward_merge(local: &Repository) -> Result<(), AppError> {
102 let head_ref = local.head()?;

Callers 1

sync_projectFunction · 0.85

Calls 2

update_remoteFunction · 0.85
fast_forward_mergeFunction · 0.85

Tested by

no test coverage detected