Skip to content

Commit

Permalink
Merge branch 'cp/git-flush-is-an-env-bool' into next
Browse files Browse the repository at this point in the history
Unlike other environment variables that took the usual
true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
which has been corrected.

* cp/git-flush-is-an-env-bool:
  write-or-die: make GIT_FLUSH a Boolean environment variable
  • Loading branch information
gitster committed Jan 4, 2024
2 parents d68f2be + 556e680 commit b435a96
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 14 deletions.
5 changes: 2 additions & 3 deletions Documentation/git.txt
Original file line number Diff line number Diff line change
Expand Up @@ -724,13 +724,12 @@ for further details.
waiting for someone with sufficient permissions to fix it.

`GIT_FLUSH`::
// NEEDSWORK: make it into a usual Boolean environment variable
If this environment variable is set to "1", then commands such
If this Boolean environment variable is set to true, then commands such
as 'git blame' (in incremental mode), 'git rev-list', 'git log',
'git check-attr' and 'git check-ignore' will
force a flush of the output stream after each record have been
flushed. If this
variable is set to "0", the output of these commands will be done
variable is set to false, the output of these commands will be done
using completely buffered I/O. If this environment variable is
not set, Git will choose buffered or record-oriented flushing
based on whether stdout appears to be redirected to a file or not.
Expand Down
19 changes: 8 additions & 11 deletions write-or-die.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,17 @@
void maybe_flush_or_die(FILE *f, const char *desc)
{
static int skip_stdout_flush = -1;
struct stat st;
char *cp;

if (f == stdout) {
if (skip_stdout_flush < 0) {
/* NEEDSWORK: make this a normal Boolean */
cp = getenv("GIT_FLUSH");
if (cp)
skip_stdout_flush = (atoi(cp) == 0);
else if ((fstat(fileno(stdout), &st) == 0) &&
S_ISREG(st.st_mode))
skip_stdout_flush = 1;
else
skip_stdout_flush = 0;
skip_stdout_flush = git_env_bool("GIT_FLUSH", -1);
if (skip_stdout_flush < 0) {
struct stat st;
if (fstat(fileno(stdout), &st))
skip_stdout_flush = 0;
else
skip_stdout_flush = S_ISREG(st.st_mode);
}
}
if (skip_stdout_flush && !ferror(f))
return;
Expand Down

0 comments on commit b435a96

Please sign in to comment.