Просмотр исходного кода

Handle conflict with local delete (fixes #1722)

Jakob Borg 10 лет назад
Родитель
Сommit
57ec2ff915
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      internal/model/rwfolder.go

+ 9 - 1
internal/model/rwfolder.go

@@ -1246,5 +1246,13 @@ func moveForConflict(name string) error {
 	ext := filepath.Ext(name)
 	ext := filepath.Ext(name)
 	withoutExt := name[:len(name)-len(ext)]
 	withoutExt := name[:len(name)-len(ext)]
 	newName := withoutExt + time.Now().Format(".sync-conflict-20060102-150405") + ext
 	newName := withoutExt + time.Now().Format(".sync-conflict-20060102-150405") + ext
-	return os.Rename(name, newName)
+	err := os.Rename(name, newName)
+	if os.IsNotExist(err) {
+		// We were supposed to move a file away but it does not exist. Either
+		// the user has already moved it away, or the conflict was between a
+		// remote modification and a local delete. In either way it does not
+		// matter, go ahead as if the move succeeded.
+		return nil
+	}
+	return err
 }
 }