mirror of https://github.com/rclone/rclone.git
Fix --delete-before deleting files on copy - fixes #1166
This commit is contained in:
parent
12aa03f5b8
commit
6b0f2ef4bd
|
@ -1052,7 +1052,7 @@ func runSyncCopyMove(fdst, fsrc Fs, deleteMode DeleteMode, DoMove bool) error {
|
||||||
return errors.New("can't delete and move at the same time")
|
return errors.New("can't delete and move at the same time")
|
||||||
}
|
}
|
||||||
// Run an extra pass to delete only
|
// Run an extra pass to delete only
|
||||||
if !*oldSyncMethod && Config.DeleteMode == DeleteModeBefore {
|
if !*oldSyncMethod && deleteMode == DeleteModeBefore {
|
||||||
if Config.TrackRenames {
|
if Config.TrackRenames {
|
||||||
return errors.New("can't use --delete-before with --track-renames")
|
return errors.New("can't use --delete-before with --track-renames")
|
||||||
}
|
}
|
||||||
|
|
|
@ -531,6 +531,29 @@ func TestSyncDeleteBefore(t *testing.T) {
|
||||||
TestSyncAfterRemovingAFileAndAddingAFile(t)
|
TestSyncAfterRemovingAFileAndAddingAFile(t)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy test delete before - shouldn't delete anything
|
||||||
|
func TestCopyDeleteBefore(t *testing.T) {
|
||||||
|
r := NewRun(t)
|
||||||
|
defer r.Finalise()
|
||||||
|
|
||||||
|
fs.Config.DeleteMode = fs.DeleteModeBefore
|
||||||
|
defer func() {
|
||||||
|
fs.Config.DeleteMode = fs.DeleteModeDefault
|
||||||
|
}()
|
||||||
|
|
||||||
|
file1 := r.WriteObject("potato", "hopefully not deleted", t1)
|
||||||
|
file2 := r.WriteFile("potato2", "hopefully copied in", t1)
|
||||||
|
fstest.CheckItems(t, r.fremote, file1)
|
||||||
|
fstest.CheckItems(t, r.flocal, file2)
|
||||||
|
|
||||||
|
fs.Stats.ResetCounters()
|
||||||
|
err := fs.CopyDir(r.fremote, r.flocal)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
fstest.CheckItems(t, r.fremote, file1, file2)
|
||||||
|
fstest.CheckItems(t, r.flocal, file2)
|
||||||
|
}
|
||||||
|
|
||||||
// Test with exclude
|
// Test with exclude
|
||||||
func TestSyncWithExclude(t *testing.T) {
|
func TestSyncWithExclude(t *testing.T) {
|
||||||
r := NewRun(t)
|
r := NewRun(t)
|
||||||
|
|
Loading…
Reference in New Issue