-
Notifications
You must be signed in to change notification settings - Fork 165
ci(*-leaks): skip the git-svn tests to save time #2031
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
I noticed recently that the leak-checking jobs still take a lot of time, and upon analysis, the git-svn tests contribute significantly to this. Analyzing a recent CI run, I saw that the Git test suite contains 1,017 tests, running for approximately 5¼ hours total. Of these, 65 git-svn-related tests (~6% of test count) took 42.24 minutes combined, accounting for ~13.% of the total runtime. This implies that the git-svn tests are roughly twice as expernsive compared to the other tests. However, testing git-svn in the leak-checking jobs provides minimal value: git-svn is implemented as a Perl script, and leak checking only handles C code. While git-svn does call into Git's built-in commands that are implemented in C, these are standard Git operations that are already thoroughly exercised elsewhere in the test suite. Therefore, running the git-svn tests in the leak-checking jobs only adds to the overall run time with little value in return. Given that the leak-checking jobs are particularly time-intensive and these 42+ minutes of SVN tests per job provide no additional leak detection value, skip them in the *-leaks jobs to reduce CI runtime. Assisted-by: Claude Sonnet 4.5 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
|
/submit |
|
Submitted as pull.2031.git.1768584676520.gitgitgadget@gmail.com To fetch this version into To fetch this version to local tag |
|
Junio C Hamano wrote on the Git mailing list (how to reply to this email): "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:
> However, testing git-svn in the leak-checking jobs provides minimal
> value: git-svn is implemented as a Perl script, and leak checking only
> handles C code. While git-svn does call into Git's built-in commands
> that are implemented in C, these are standard Git operations that are
> already thoroughly exercised elsewhere in the test suite. Therefore,
> running the git-svn tests in the leak-checking jobs only adds to the
> overall run time with little value in return.
Very nicely reasoned. And the implementation of this idea is ...
> diff --git a/ci/lib.sh b/ci/lib.sh
> index f561884d40..a165c7f268 100755
> --- a/ci/lib.sh
> +++ b/ci/lib.sh
> @@ -356,6 +356,7 @@ linux-musl-meson)
> ;;
> linux-leaks|linux-reftable-leaks)
> export SANITIZE=leak
> + export NO_SVN_TESTS=LetsSaveSomeTime
> ;;
... surprisingly simple. I very much like it.
Thanks. Will queue. |
|
Phillip Wood wrote on the Git mailing list (how to reply to this email): Hi Johannes
On 16/01/2026 17:31, Johannes Schindelin via GitGitGadget wrote:
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
> > I noticed recently that the leak-checking jobs still take a lot of time,
> and upon analysis, the git-svn tests contribute significantly to this.
> > Analyzing a recent CI run, I saw that the Git test suite contains
> 1,017 tests, running for approximately 5¼ hours total. Of these, 65
> git-svn-related tests (~6% of test count) took 42.24 minutes combined,
> accounting for ~13.% of the total runtime. This implies that the git-svn
> tests are roughly twice as expernsive compared to the other tests.
Looking at the CI logs for this PR the p4 and cvs tests account for another 24 minutes of test time and I suspect they also offer little in the way of extra coverage. Unfortunately there is no equivalent of NO_SVN_TESTS to disable them - I wonder if building with NO_PYTHON and NO_PERL would make sense for the leak test job?
Either way I like the direction of this patch
Thanks
Phillip
> However, testing git-svn in the leak-checking jobs provides minimal
> value: git-svn is implemented as a Perl script, and leak checking only
> handles C code. While git-svn does call into Git's built-in commands
> that are implemented in C, these are standard Git operations that are
> already thoroughly exercised elsewhere in the test suite. Therefore,
> running the git-svn tests in the leak-checking jobs only adds to the
> overall run time with little value in return.
> > Given that the leak-checking jobs are particularly time-intensive and
> these 42+ minutes of SVN tests per job provide no additional leak
> detection value, skip them in the *-leaks jobs to reduce CI runtime.
> > Assisted-by: Claude Sonnet 4.5
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> ci(*-leaks): skip the git-svn tests to save time
> > I leaned heavily on AI to implement this patch, in particular when
> analyzing the logs. That's why I added that trailer talking about Claude
> Sonnet. If this is undesirable, please let me know.
> > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2031%2Fdscho%2Fskip-svn-and-leak-tests-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2031/dscho/skip-svn-and-leak-tests-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/2031
> > ci/lib.sh | 1 +
> 1 file changed, 1 insertion(+)
> > diff --git a/ci/lib.sh b/ci/lib.sh
> index f561884d40..a165c7f268 100755
> --- a/ci/lib.sh
> +++ b/ci/lib.sh
> @@ -356,6 +356,7 @@ linux-musl-meson)
> ;;
> linux-leaks|linux-reftable-leaks)
> export SANITIZE=leak
> + export NO_SVN_TESTS=LetsSaveSomeTime
> ;;
> linux-asan-ubsan)
> export SANITIZE=address,undefined
> > base-commit: 7264e61d87e58b9d0f5e6424c47c11e9657dfb75 |
|
User |
I leaned heavily on AI to implement this patch, in particular when analyzing the logs. That's why I added that trailer talking about Claude Sonnet. If this is undesirable, please let me know.
cc: Phillip Wood phillip.wood123@gmail.com