mirror of
				https://github.com/restic/restic.git
				synced 2025-11-04 06:35:43 +00:00 
			
		
		
		
	Treat changed files as a warning, not an error
This commit is contained in:
		@@ -431,10 +431,9 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error {
 | 
				
			|||||||
	arch.Excludes = opts.Excludes
 | 
						arch.Excludes = opts.Excludes
 | 
				
			||||||
	arch.SelectFilter = selectFilter
 | 
						arch.SelectFilter = selectFilter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	arch.Error = func(dir string, fi os.FileInfo, err error) error {
 | 
						arch.Warn = func(dir string, fi os.FileInfo, err error) {
 | 
				
			||||||
		// TODO: make ignoring errors configurable
 | 
							// TODO: make ignoring errors configurable
 | 
				
			||||||
		Warnf("%s\rerror for %s: %v\n", ClearLine(), dir, err)
 | 
							Warnf("%s\rwarning for %s: %v\n", ClearLine(), dir, err)
 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, id, err := arch.Snapshot(newArchiveProgress(gopts, stat), target, opts.Tags, parentSnapshotID)
 | 
						_, id, err := arch.Snapshot(newArchiveProgress(gopts, stat), target, opts.Tags, parentSnapshotID)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,9 @@ const (
 | 
				
			|||||||
	maxConcurrency     = 10
 | 
						maxConcurrency     = 10
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var archiverAbortOnAllErrors = func(str string, fi os.FileInfo, err error) error { return err }
 | 
					var archiverPrintWarnings = func(path string, fi os.FileInfo, err error) {
 | 
				
			||||||
 | 
						fmt.Fprintf(os.Stderr, "warning for %v: %v", path, err)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
var archiverAllowAllFiles = func(string, os.FileInfo) bool { return true }
 | 
					var archiverAllowAllFiles = func(string, os.FileInfo) bool { return true }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Archiver is used to backup a set of directories.
 | 
					// Archiver is used to backup a set of directories.
 | 
				
			||||||
@@ -39,7 +41,7 @@ type Archiver struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	blobToken chan struct{}
 | 
						blobToken chan struct{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Error        func(dir string, fi os.FileInfo, err error) error
 | 
						Warn         func(dir string, fi os.FileInfo, err error)
 | 
				
			||||||
	SelectFilter pipe.SelectFunc
 | 
						SelectFilter pipe.SelectFunc
 | 
				
			||||||
	Excludes     []string
 | 
						Excludes     []string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -61,7 +63,7 @@ func New(repo restic.Repository) *Archiver {
 | 
				
			|||||||
		arch.blobToken <- struct{}{}
 | 
							arch.blobToken <- struct{}{}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	arch.Error = archiverAbortOnAllErrors
 | 
						arch.Warn = archiverPrintWarnings
 | 
				
			||||||
	arch.SelectFilter = archiverAllowAllFiles
 | 
						arch.SelectFilter = archiverAllowAllFiles
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return arch
 | 
						return arch
 | 
				
			||||||
@@ -135,10 +137,7 @@ func (arch *Archiver) reloadFileIfChanged(node *restic.Node, file fs.File) (*res
 | 
				
			|||||||
		return node, nil
 | 
							return node, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = arch.Error(node.Path, fi, errors.New("file has changed"))
 | 
						arch.Warn(node.Path, fi, errors.New("file has changed"))
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	node, err = restic.NodeFromFileInfo(node.Path, fi)
 | 
						node, err = restic.NodeFromFileInfo(node.Path, fi)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user