Skip manifest write when nothing changed in freshen

This commit is contained in:
Jeffrey Paul 2025-12-17 15:31:33 -08:00
parent b3fe38092b
commit a07209fef5

View File

@ -284,7 +284,17 @@ func (mfa *CLIApp) freshenManifestOperation(ctx *cli.Context) error {
log.ProgressDone() log.ProgressDone()
} }
// Write updated manifest // Print summary
log.Infof("freshen complete: %d unchanged, %d changed, %d added, %d removed",
unchanged, changed, added, removed)
// Skip writing if nothing changed
if changed == 0 && added == 0 && removed == 0 {
log.Infof("manifest unchanged, skipping write")
return nil
}
// Write updated manifest atomically (write to temp, then rename)
tmpPath := manifestPath + ".tmp" tmpPath := manifestPath + ".tmp"
outFile, err := mfa.Fs.Create(tmpPath) outFile, err := mfa.Fs.Create(tmpPath)
if err != nil { if err != nil {
@ -304,16 +314,11 @@ func (mfa *CLIApp) freshenManifestOperation(ctx *cli.Context) error {
return fmt.Errorf("failed to rename manifest: %w", err) return fmt.Errorf("failed to rename manifest: %w", err)
} }
// Print summary
totalDuration := time.Since(mfa.startupTime) totalDuration := time.Since(mfa.startupTime)
var hashRate float64 var hashRate float64
if hashedBytes > 0 { if hashedBytes > 0 {
hashDuration := time.Since(startHash) hashDuration := time.Since(startHash)
hashRate = float64(hashedBytes) / hashDuration.Seconds() / 1e6 hashRate = float64(hashedBytes) / hashDuration.Seconds() / 1e6
}
log.Infof("freshen complete: %d unchanged, %d changed, %d added, %d removed",
unchanged, changed, added, removed)
if filesToHash > 0 {
log.Infof("hashed %.1f MB in %.1fs (%.1f MB/s)", log.Infof("hashed %.1f MB in %.1fs (%.1f MB/s)",
float64(hashedBytes)/1e6, totalDuration.Seconds(), hashRate) float64(hashedBytes)/1e6, totalDuration.Seconds(), hashRate)
} }