fix(sync): S-09 — pull overwrite protection and conflict safety
This commit is contained in:
+28
@@ -257,6 +257,14 @@ enum Commands {
|
||||
#[arg(short = 'f', long, default_value_t = false)]
|
||||
force: bool,
|
||||
|
||||
/// Erstellt Sicherungskopien (.bak) überschriebener lokaler Dateien beim Pull (S-09)
|
||||
#[arg(short = 'b', long, default_value_t = false)]
|
||||
backup: bool,
|
||||
|
||||
/// Verhindert das Überschreiben neuerer lokaler Zieldateien beim Pull (S-09)
|
||||
#[arg(short = 'u', long, default_value_t = false)]
|
||||
update: bool,
|
||||
|
||||
/// Optionaler 24-Wort Notfallschlüssel (umgeht Passwortabfrage)
|
||||
#[arg(long, num_args = 0..=1, default_missing_value = "")]
|
||||
recovery_key: Option<String>,
|
||||
@@ -1367,6 +1375,8 @@ fn handle_sync(
|
||||
exclude: Vec<String>,
|
||||
quiet: bool,
|
||||
force: bool,
|
||||
backup: bool,
|
||||
update: bool,
|
||||
recovery_key: Option<&str>,
|
||||
) -> Result<()> {
|
||||
if !container_path.exists() {
|
||||
@@ -1424,6 +1434,8 @@ fn handle_sync(
|
||||
exclude_patterns: exclude,
|
||||
quiet,
|
||||
force,
|
||||
backup,
|
||||
update,
|
||||
};
|
||||
|
||||
if !quiet {
|
||||
@@ -1499,6 +1511,12 @@ fn handle_sync(
|
||||
stats.files_skipped_invalid
|
||||
);
|
||||
}
|
||||
if stats.files_backed_up > 0 {
|
||||
println!(
|
||||
" • Backups: {} Sicherheitskopien (.bak)",
|
||||
stats.files_backed_up
|
||||
);
|
||||
}
|
||||
if delete {
|
||||
println!(
|
||||
" • Zu löschen: {} Dateien/Ordner",
|
||||
@@ -1538,6 +1556,12 @@ fn handle_sync(
|
||||
stats.files_skipped_invalid
|
||||
);
|
||||
}
|
||||
if stats.files_backed_up > 0 {
|
||||
println!(
|
||||
" • Backups: {} Sicherheitskopien (.bak)",
|
||||
stats.files_backed_up
|
||||
);
|
||||
}
|
||||
if delete {
|
||||
println!(
|
||||
" • Gelöscht: {} verwaiste Dateien/Ordner",
|
||||
@@ -1705,6 +1729,8 @@ async fn run() -> Result<()> {
|
||||
exclude,
|
||||
quiet,
|
||||
force,
|
||||
backup,
|
||||
update,
|
||||
recovery_key,
|
||||
} => {
|
||||
handle_sync(
|
||||
@@ -1719,6 +1745,8 @@ async fn run() -> Result<()> {
|
||||
exclude,
|
||||
quiet,
|
||||
force,
|
||||
backup,
|
||||
update,
|
||||
recovery_key.as_deref(),
|
||||
)?;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user