Skip to content

Commit 03aa2ef

Browse files
steffengodskesenttaylorr
authored andcommitted
tasklog: don't log progress status when stdout is not a tty
But make it overridable by either - setting lfs.forceprogress 1 - setting GIT_LFS_FORCE_PROGRESS=1
1 parent 69e02ec commit 03aa2ef

File tree

17 files changed

+108
-22
lines changed

17 files changed

+108
-22
lines changed

commands/command_checkout.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ func checkoutCommand(cmd *cobra.Command, args []string) {
4747

4848
var totalBytes int64
4949
var pointers []*lfs.WrappedPointer
50-
logger := tasklog.NewLogger(os.Stdout)
50+
logger := tasklog.NewLogger(os.Stdout,
51+
tasklog.ForceProgress(cfg.ForceProgress()),
52+
)
5153
meter := tq.NewMeter()
5254
meter.Direction = tq.Checkout
5355
meter.Logger = meter.LoggerFromEnv(cfg.Os)

commands/command_fetch.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,9 @@ func scanAll() []*lfs.WrappedPointer {
230230
task := tasklog.NewSimpleTask()
231231
defer task.Complete()
232232

233-
logger := tasklog.NewLogger(OutputWriter)
233+
logger := tasklog.NewLogger(OutputWriter,
234+
tasklog.ForceProgress(cfg.ForceProgress()),
235+
)
234236
logger.Enqueue(task)
235237
var numObjs int64
236238

@@ -324,7 +326,9 @@ func fetchAndReportToChan(allpointers []*lfs.WrappedPointer, filter *filepathfil
324326
}
325327

326328
func readyAndMissingPointers(allpointers []*lfs.WrappedPointer, filter *filepathfilter.Filter) ([]*lfs.WrappedPointer, []*lfs.WrappedPointer, *tq.Meter) {
327-
logger := tasklog.NewLogger(os.Stdout)
329+
logger := tasklog.NewLogger(os.Stdout,
330+
tasklog.ForceProgress(cfg.ForceProgress()),
331+
)
328332
meter := buildProgressMeter(false, tq.Download)
329333
logger.Enqueue(meter)
330334

commands/command_migrate_export.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ import (
1919
func migrateExportCommand(cmd *cobra.Command, args []string) {
2020
ensureWorkingCopyClean(os.Stdin, os.Stderr)
2121

22-
l := tasklog.NewLogger(os.Stderr)
22+
l := tasklog.NewLogger(os.Stderr,
23+
tasklog.ForceProgress(cfg.ForceProgress()),
24+
)
2325
defer l.Close()
2426

2527
db, err := getObjectDatabase()

commands/command_migrate_import.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ import (
2424
func migrateImportCommand(cmd *cobra.Command, args []string) {
2525
ensureWorkingCopyClean(os.Stdin, os.Stderr)
2626

27-
l := tasklog.NewLogger(os.Stderr)
27+
l := tasklog.NewLogger(os.Stderr,
28+
tasklog.ForceProgress(cfg.ForceProgress()),
29+
)
2830
defer l.Close()
2931

3032
db, err := getObjectDatabase()

commands/command_migrate_info.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ var (
4040
)
4141

4242
func migrateInfoCommand(cmd *cobra.Command, args []string) {
43-
l := tasklog.NewLogger(os.Stderr)
43+
l := tasklog.NewLogger(os.Stderr,
44+
tasklog.ForceProgress(cfg.ForceProgress()),
45+
)
4446

4547
db, err := getObjectDatabase()
4648
if err != nil {

commands/command_prune.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ func prune(fetchPruneConfig lfs.FetchPruneConfig, verifyRemote, dryRun, verbose
5757
localObjects := make([]fs.Object, 0, 100)
5858
retainedObjects := tools.NewStringSetWithCapacity(100)
5959

60-
logger := tasklog.NewLogger(OutputWriter)
60+
logger := tasklog.NewLogger(OutputWriter,
61+
tasklog.ForceProgress(cfg.ForceProgress()),
62+
)
6163
defer logger.Close()
6264

6365
var reachableObjects tools.StringSet

commands/command_pull.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ func pull(filter *filepathfilter.Filter) {
3838
}
3939

4040
pointers := newPointerMap()
41-
logger := tasklog.NewLogger(os.Stdout)
41+
logger := tasklog.NewLogger(os.Stdout,
42+
tasklog.ForceProgress(cfg.ForceProgress()),
43+
)
4244
meter := tq.NewMeter()
4345
meter.Logger = meter.LoggerFromEnv(cfg.Os)
4446
logger.Enqueue(meter)

commands/uploader.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ func newUploadContext(dryRun bool) *uploadContext {
111111
sink = ioutil.Discard
112112
}
113113

114-
ctx.logger = tasklog.NewLogger(sink)
114+
ctx.logger = tasklog.NewLogger(sink,
115+
tasklog.ForceProgress(cfg.ForceProgress()),
116+
)
115117
ctx.meter = buildProgressMeter(ctx.DryRun, tq.Upload)
116118
ctx.logger.Enqueue(ctx.meter)
117119
ctx.committerName, ctx.committerEmail = cfg.CurrentCommitter()

config/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,10 @@ func (c *Configuration) SetLockableFilesReadOnly() bool {
308308
return c.Os.Bool("GIT_LFS_SET_LOCKABLE_READONLY", true) && c.Git.Bool("lfs.setlockablereadonly", true)
309309
}
310310

311+
func (c *Configuration) ForceProgress() bool {
312+
return c.Os.Bool("GIT_LFS_FORCE_PROGRESS", false) || c.Git.Bool("lfs.forceprogress", false)
313+
}
314+
311315
// HookDir returns the location of the hooks owned by this repository. If the
312316
// core.hooksPath configuration variable is supported, we prefer that and expand
313317
// paths appropriately.

docs/man/git-lfs-config.5.ronn

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,16 @@ be scoped inside the configuration for a remote.
306306
* `total` The entire size of the file, in bytes.
307307
* `name` The name of the file.
308308

309+
* `GIT_LFS_FORCE_PROGRESS`
310+
`lfs.forceprogress`
311+
312+
Controls whether Git LFS will suppress progress status when the standard
313+
output stream is not attached to a terminal. The default is `false` which
314+
makes Git LFS detect whether stdout is a terminal and suppress progress when
315+
it's not; you can disable this behaviour and force progress status even when
316+
standard output stream is not a terminal by setting either variable to 1,
317+
'yes' or 'true'.
318+
309319
* `GIT_LFS_SET_LOCKABLE_READONLY`
310320
`lfs.setlockablereadonly`
311321

0 commit comments

Comments
 (0)