[issue 3464] skip lock creation in case of dry-run

This commit is contained in:
Pavel Frolov 2022-01-08 14:58:06 +03:00
parent 2ff3b7d69c
commit 792523b28b
2 changed files with 20 additions and 4 deletions

View File

@ -0,0 +1,9 @@
Enhancement: Skip lock creation on forget if --no-lock and --dry-run
Restic used to silently ignore --no-lock option of forget. It now skips
creation of lock file in case of both --dry-run and --no-lock are specified. If
--no-lock option is specified without --dry-run then restic prints a warning
message to stderr.
https://github.com/restic/restic/issues/3464
https://github.com/restic/restic/pull/3623

View File

@ -5,6 +5,7 @@ import (
"encoding/json"
"io"
"github.com/restic/restic/internal/errors"
"github.com/restic/restic/internal/restic"
"github.com/spf13/cobra"
)
@ -108,10 +109,16 @@ func runForget(opts ForgetOptions, gopts GlobalOptions, args []string) error {
return err
}
lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock)
if err != nil {
return err
if gopts.NoLock && !opts.DryRun {
return errors.Fatal("--no-lock is only applicable in combination with --dry-run for forget command")
}
if !opts.DryRun || !gopts.NoLock {
lock, err := lockRepoExclusive(gopts.ctx, repo)
defer unlockRepo(lock)
if err != nil {
return err
}
}
ctx, cancel := context.WithCancel(gopts.ctx)