mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
Merge branch 'lm/squelch-bg-progress'
Many long-running operations show progress eye-candy, even when they are later backgrounded. Hide the eye-candy when the process is sent to the background instead. * lm/squelch-bg-progress: compat/mingw: stubs for getpgid() and tcgetpgrp() progress: no progress in background
This commit is contained in:
commit
66ff763ebb
|
@ -98,8 +98,6 @@ static inline unsigned int alarm(unsigned int seconds)
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
static inline int fsync(int fd)
|
static inline int fsync(int fd)
|
||||||
{ return _commit(fd); }
|
{ return _commit(fd); }
|
||||||
static inline pid_t getppid(void)
|
|
||||||
{ return 1; }
|
|
||||||
static inline void sync(void)
|
static inline void sync(void)
|
||||||
{}
|
{}
|
||||||
static inline uid_t getuid(void)
|
static inline uid_t getuid(void)
|
||||||
|
@ -121,6 +119,12 @@ static inline int sigaddset(sigset_t *set, int signum)
|
||||||
#define SIG_UNBLOCK 0
|
#define SIG_UNBLOCK 0
|
||||||
static inline int sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
|
static inline int sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
|
static inline pid_t getppid(void)
|
||||||
|
{ return 1; }
|
||||||
|
static inline pid_t getpgid(pid_t pid)
|
||||||
|
{ return pid == 0 ? getpid() : pid; }
|
||||||
|
static inline pid_t tcgetpgrp(int fd)
|
||||||
|
{ return getpid(); }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* simple adaptors
|
* simple adaptors
|
||||||
|
|
22
progress.c
22
progress.c
|
@ -72,6 +72,11 @@ static void clear_progress_signal(void)
|
||||||
progress_update = 0;
|
progress_update = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int is_foreground_fd(int fd)
|
||||||
|
{
|
||||||
|
return getpgid(0) == tcgetpgrp(fd);
|
||||||
|
}
|
||||||
|
|
||||||
static int display(struct progress *progress, unsigned n, const char *done)
|
static int display(struct progress *progress, unsigned n, const char *done)
|
||||||
{
|
{
|
||||||
const char *eol, *tp;
|
const char *eol, *tp;
|
||||||
|
@ -98,16 +103,21 @@ static int display(struct progress *progress, unsigned n, const char *done)
|
||||||
unsigned percent = n * 100 / progress->total;
|
unsigned percent = n * 100 / progress->total;
|
||||||
if (percent != progress->last_percent || progress_update) {
|
if (percent != progress->last_percent || progress_update) {
|
||||||
progress->last_percent = percent;
|
progress->last_percent = percent;
|
||||||
fprintf(stderr, "%s: %3u%% (%u/%u)%s%s",
|
if (is_foreground_fd(fileno(stderr)) || done) {
|
||||||
progress->title, percent, n,
|
fprintf(stderr, "%s: %3u%% (%u/%u)%s%s",
|
||||||
progress->total, tp, eol);
|
progress->title, percent, n,
|
||||||
fflush(stderr);
|
progress->total, tp, eol);
|
||||||
|
fflush(stderr);
|
||||||
|
}
|
||||||
progress_update = 0;
|
progress_update = 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else if (progress_update) {
|
} else if (progress_update) {
|
||||||
fprintf(stderr, "%s: %u%s%s", progress->title, n, tp, eol);
|
if (is_foreground_fd(fileno(stderr)) || done) {
|
||||||
fflush(stderr);
|
fprintf(stderr, "%s: %u%s%s",
|
||||||
|
progress->title, n, tp, eol);
|
||||||
|
fflush(stderr);
|
||||||
|
}
|
||||||
progress_update = 0;
|
progress_update = 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue