From 5247de552ac847b451f0450fa06658326e14ed8c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 25 May 2017 17:03:48 +0200 Subject: [PATCH 1/2] Remove regular status printing for non terminals --- src/restic/progress.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/restic/progress.go b/src/restic/progress.go index 49d9420d3..e5d608f0f 100644 --- a/src/restic/progress.go +++ b/src/restic/progress.go @@ -14,6 +14,7 @@ const minTickerTime = time.Second / 60 var isTerminal = terminal.IsTerminal(int(os.Stdout.Fd())) var forceUpdateProgress = make(chan bool) +// Progress reports progress on an operation. type Progress struct { OnStart func() OnUpdate ProgressFunc @@ -32,6 +33,7 @@ type Progress struct { running bool } +// Stat captures newly done parts of the operation. type Stat struct { Files uint64 Dirs uint64 @@ -41,6 +43,7 @@ type Stat struct { Errors uint64 } +// ProgressFunc is used to report progress back to the user. type ProgressFunc func(s Stat, runtime time.Duration, ticker bool) // NewProgress returns a new progress reporter. When Start() is called, the @@ -50,10 +53,7 @@ type ProgressFunc func(s Stat, runtime time.Duration, ticker bool) // synchronously and can use shared state. func NewProgress() *Progress { var d time.Duration - if !isTerminal { - // TODO: make the duration for non-terminal progress (user) configurable - d = time.Duration(10) * time.Second - } else { + if isTerminal { d = time.Second } return &Progress{d: d} @@ -70,7 +70,10 @@ func (p *Progress) Start() { p.running = true p.Reset() p.start = time.Now() - p.c = time.NewTicker(p.d) + p.c = nil + if p.d != 0 { + p.c = time.NewTicker(p.d) + } if p.OnStart != nil { p.OnStart() @@ -143,14 +146,21 @@ func (p *Progress) reporter() { p.updateProgress(cur, true) } + var ticker <-chan time.Time + if p.c != nil { + ticker = p.c.C + } + for { select { - case <-p.c.C: + case <-ticker: updateProgress() case <-forceUpdateProgress: updateProgress() case <-p.cancel: - p.c.Stop() + if p.c != nil { + p.c.Stop() + } return } } From 317d9c4559eaaca11e21cb99959c4a5ac769926a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 25 May 2017 17:06:06 +0200 Subject: [PATCH 2/2] Add entry to the changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd41fa516..32aa08892 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ This file describes changes relevant to all users that are made in each released version of restic from the perspective of the user. +Important Changes in 0.X.Y +========================== + +Small changes: +-------------- + + * Regular status report: We've removed the status report that was printed + every 10 seconds when restic is run non-interactively. You can still force + reporting the current status by sending a `USR1` signal to the process. + https://github.com/restic/restic/pull/974 + Important Changes in 0.6.0 ==========================