aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/svn_downloader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/downloader/svn_downloader.rs')
-rw-r--r--crates/shirabe/src/downloader/svn_downloader.rs21
1 files changed, 20 insertions, 1 deletions
diff --git a/crates/shirabe/src/downloader/svn_downloader.rs b/crates/shirabe/src/downloader/svn_downloader.rs
index ef0fd16..95f25f8 100644
--- a/crates/shirabe/src/downloader/svn_downloader.rs
+++ b/crates/shirabe/src/downloader/svn_downloader.rs
@@ -84,6 +84,24 @@ impl SvnDownloader {
Ok(None)
}
+
+ /// The default `VcsDownloader::clean_changes()` behavior: fail if the working copy has
+ /// local changes.
+ fn fail_on_local_changes(
+ &mut self,
+ package: PackageInterfaceHandle,
+ path: &str,
+ ) -> anyhow::Result<()> {
+ if self.get_local_changes(package, path)?.is_some() {
+ return Err(RuntimeException {
+ message: format!("Source directory {} has uncommitted changes.", path),
+ code: 0,
+ }
+ .into());
+ }
+
+ Ok(())
+ }
}
impl VcsDownloader for SvnDownloader {
@@ -257,7 +275,8 @@ impl VcsDownloader for SvnDownloader {
return self.discard_changes(path).await;
}
- return self.inner.clean_changes(package, path, update).await;
+ self.fail_on_local_changes(package, path)?;
+ return Ok(None);
}
let changes_str = changes.unwrap();