apply upstream patch to resolve git log segfault (#1791810)
A change in git-2.24.0¹ resulted in a segfault when combining the incompatible (and nonsensical) --follow and -L git log options. (These options were used by the GitLens plugin for VS Code until recently².) The upstream fix returns an error when these options are combined rather than a segfault. ¹ a2bb801f6a (line-log: avoid unnecessary full tree diffs, 2019-08-21) https://github.com/git/git/commit/a2bb801f6a ² Fixed in GitLens >= 10.2.3 https://github.com/eamodio/vscode-gitlens/issues/1139
This commit is contained in:
parent
8fc9bc0302
commit
6b303b4795
78
0001-log-diagnose-L-used-with-pathspec-as-an-error.patch
Normal file
78
0001-log-diagnose-L-used-with-pathspec-as-an-error.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
From 39664cb0aca42f240468ddf84fe75df4172ab63f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Junio C Hamano <gitster@pobox.com>
|
||||||
|
Date: Wed, 4 Nov 2020 09:54:01 -0800
|
||||||
|
Subject: [PATCH] log: diagnose -L used with pathspec as an error
|
||||||
|
|
||||||
|
The -L option is documented to accept no pathspec, but the
|
||||||
|
command line option parser has allowed the combination without
|
||||||
|
checking so far. Ensure that there is no pathspec when the -L
|
||||||
|
option is in effect to fix this.
|
||||||
|
|
||||||
|
Incidentally, this change fixes another bug in the command line
|
||||||
|
option parser, which has allowed the -L option used together
|
||||||
|
with the --follow option. Because the latter requires exactly
|
||||||
|
one path given, but the former takes no pathspec, they become
|
||||||
|
mutually incompatible automatically. Because the -L option
|
||||||
|
follows renames on its own, there is no reason to give --follow
|
||||||
|
at the same time.
|
||||||
|
|
||||||
|
The new tests say they may fail with "-L and --follow being
|
||||||
|
incompatible" instead of "-L and pathspec being incompatible".
|
||||||
|
Currently the expected failure can come only from the latter, but
|
||||||
|
this is to futureproof them, in case we decide to add code to
|
||||||
|
explicititly die on -L and --follow used together.
|
||||||
|
|
||||||
|
Heled-by: Jeff King <peff@peff.net>
|
||||||
|
Signed-off-by: Junio C Hamano <gitster@pobox.com>
|
||||||
|
---
|
||||||
|
builtin/log.c | 3 +++
|
||||||
|
t/t4211-line-log.sh | 22 ++++++++++++++++++++++
|
||||||
|
2 files changed, 25 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/builtin/log.c b/builtin/log.c
|
||||||
|
index 0a7ed4bef92b9..9d70f3e60b9c0 100644
|
||||||
|
--- a/builtin/log.c
|
||||||
|
+++ b/builtin/log.c
|
||||||
|
@@ -206,6 +206,9 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
|
||||||
|
if (argc > 1)
|
||||||
|
die(_("unrecognized argument: %s"), argv[1]);
|
||||||
|
|
||||||
|
+ if (rev->line_level_traverse && rev->prune_data.nr)
|
||||||
|
+ die(_("-L<range>:<file> cannot be used with pathspec"));
|
||||||
|
+
|
||||||
|
memset(&w, 0, sizeof(w));
|
||||||
|
userformat_find_requirements(NULL, &w);
|
||||||
|
|
||||||
|
diff --git a/t/t4211-line-log.sh b/t/t4211-line-log.sh
|
||||||
|
index 2d1d7b5d1938a..85d151423dedc 100755
|
||||||
|
--- a/t/t4211-line-log.sh
|
||||||
|
+++ b/t/t4211-line-log.sh
|
||||||
|
@@ -8,6 +8,28 @@ test_expect_success 'setup (import history)' '
|
||||||
|
git reset --hard
|
||||||
|
'
|
||||||
|
|
||||||
|
+test_expect_success 'basic command line parsing' '
|
||||||
|
+ # This may fail due to "no such path a.c in commit", or
|
||||||
|
+ # "-L is incompatible with pathspec", depending on the
|
||||||
|
+ # order the error is checked. Either is acceptable.
|
||||||
|
+ test_must_fail git log -L1,1:a.c -- a.c &&
|
||||||
|
+
|
||||||
|
+ # -L requires there is no pathspec
|
||||||
|
+ test_must_fail git log -L1,1:b.c -- b.c 2>error &&
|
||||||
|
+ test_i18ngrep "cannot be used with pathspec" error &&
|
||||||
|
+
|
||||||
|
+ # This would fail because --follow wants a single path, but
|
||||||
|
+ # we may fail due to incompatibility between -L/--follow in
|
||||||
|
+ # the future. Either is acceptable.
|
||||||
|
+ test_must_fail git log -L1,1:b.c --follow &&
|
||||||
|
+ test_must_fail git log --follow -L1,1:b.c &&
|
||||||
|
+
|
||||||
|
+ # This would fail because -L wants no pathspec, but
|
||||||
|
+ # we may fail due to incompatibility between -L/--follow in
|
||||||
|
+ # the future. Either is acceptable.
|
||||||
|
+ test_must_fail git log --follow -L1,1:b.c -- b.c
|
||||||
|
+'
|
||||||
|
+
|
||||||
|
canned_test_1 () {
|
||||||
|
test_expect_$1 "$2" "
|
||||||
|
git log $2 >actual &&
|
9
git.spec
9
git.spec
@ -97,7 +97,7 @@
|
|||||||
|
|
||||||
Name: git
|
Name: git
|
||||||
Version: 2.29.2
|
Version: 2.29.2
|
||||||
Release: 1%{?rcrev}%{?dist}
|
Release: 2%{?rcrev}%{?dist}
|
||||||
Summary: Fast Version Control System
|
Summary: Fast Version Control System
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
URL: https://git-scm.com/
|
URL: https://git-scm.com/
|
||||||
@ -129,6 +129,10 @@ Source99: print-failed-test-output
|
|||||||
# https://bugzilla.redhat.com/490602
|
# https://bugzilla.redhat.com/490602
|
||||||
Patch0: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch
|
Patch0: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch
|
||||||
|
|
||||||
|
# https://bugzilla.redhat.com/1791810
|
||||||
|
# https://lore.kernel.org/git/xmqqy2jglv29.fsf_-_@gitster.c.googlers.com/
|
||||||
|
Patch1: https://github.com/git/git/commit/39664cb0ac.patch#/0001-log-diagnose-L-used-with-pathspec-as-an-error.patch
|
||||||
|
|
||||||
%if %{with docs}
|
%if %{with docs}
|
||||||
# pod2man is needed to build Git.3pm
|
# pod2man is needed to build Git.3pm
|
||||||
BuildRequires: %{_bindir}/pod2man
|
BuildRequires: %{_bindir}/pod2man
|
||||||
@ -1076,6 +1080,9 @@ rmdir --ignore-fail-on-non-empty "$testdir"
|
|||||||
%{?with_docs:%{_pkgdocdir}/git-svn.html}
|
%{?with_docs:%{_pkgdocdir}/git-svn.html}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Nov 07 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-2
|
||||||
|
- apply upstream patch to resolve git log segfault (#1791810)
|
||||||
|
|
||||||
* Thu Oct 29 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-1
|
* Thu Oct 29 2020 Todd Zullinger <tmz@pobox.com> - 2.29.2-1
|
||||||
- update to 2.29.2
|
- update to 2.29.2
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user