mirror of
https://github.com/git/git.git
synced 2026-01-09 17:46:37 +00:00
tests: disable fsync everywhere
The "GIT_TEST_FSYNC" environment variable now exists for disabling fsync() even on packfiles and other "critical" data. Running "make test -j8 NO_SVN_TESTS=1" on a noisy 8-core system on an HDD, test runtime drops from ~4 minutes down to ~3 minutes. Using "GIT_TEST_FSYNC=1" re-enables fsync() for comparison purposes. SVN interopability tests are minimally affected since SVN will still use fsync in various places. This will also be useful for 3rd-party tools which create throwaway git repositories of temporary data, but remains undocumented for end users. Signed-off-by: Eric Wong <e@80x24.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
af6d1d602a
commit
412e4caee3
@@ -1,4 +1,5 @@
|
||||
#include "cache.h"
|
||||
#include "config.h"
|
||||
#include "run-command.h"
|
||||
|
||||
/*
|
||||
@@ -57,6 +58,10 @@ void fprintf_or_die(FILE *f, const char *fmt, ...)
|
||||
|
||||
void fsync_or_die(int fd, const char *msg)
|
||||
{
|
||||
if (use_fsync < 0)
|
||||
use_fsync = git_env_bool("GIT_TEST_FSYNC", 1);
|
||||
if (!use_fsync)
|
||||
return;
|
||||
while (fsync(fd) < 0) {
|
||||
if (errno != EINTR)
|
||||
die_errno("fsync error on '%s'", msg);
|
||||
|
||||
Reference in New Issue
Block a user