SHA256
1
0
forked from pool/git

Accepting request 810679 from devel:tools:scm

git 2.27.0

OBS-URL: https://build.opensuse.org/request/show/810679
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/git?expand=0&rev=251
This commit is contained in:
Dominique Leuenberger 2020-06-11 12:38:46 +00:00 committed by Git OBS Bridge
parent 7a98c83d79
commit 3b41c635c8
11 changed files with 27 additions and 426 deletions

View File

@ -1,43 +0,0 @@
From f901c954d1882ef24fcf3a1642d46eb785a1863f Mon Sep 17 00:00:00 2001
From: Dominique Leuenberger <dimstar@opensuse.org>
Date: Wed, 8 May 2019 19:00:47 +0200
Subject: [PATCH 1/2] DOC: Move to DocBook 5 when using asciidoctor
DocBook 5 has been released about a decade ago. Newer versions of
asciidoctor (since version 2.x) no longer support DocBook 4.5, it
is thus time for us to move to newer support as well.
---
contrib/subtree/Makefile | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 6906aae..09e53b9 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -25,12 +25,13 @@ ASCIIDOC_HTML = xhtml11
ASCIIDOC_DOCBOOK = docbook
ASCIIDOC_EXTRA =
XMLTO = xmlto
+XMLTO_EXTRA = --skip-validation
ifdef USE_ASCIIDOCTOR
ASCIIDOC = asciidoctor
ASCIIDOC_CONF =
ASCIIDOC_HTML = xhtml5
-ASCIIDOC_DOCBOOK = docbook45
+ASCIIDOC_DOCBOOK = docbook5
ASCIIDOC_EXTRA += -I../../Documentation -rasciidoctor-extensions
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
endif
@@ -78,7 +79,7 @@ install-html: $(GIT_SUBTREE_HTML)
$(INSTALL) -m 644 $^ $(DESTDIR)$(htmldir)
$(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
- $(XMLTO) -m $(MANPAGE_XSL) man $^
+ $(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $^
$(GIT_SUBTREE_XML): $(GIT_SUBTREE_TXT)
$(ASCIIDOC) -b $(ASCIIDOC_DOCBOOK) -d manpage $(ASCIIDOC_CONF) \
--
2.24.0

View File

@ -1,85 +0,0 @@
From 2531a904f87afcf813757bcaad303a463812f6cb Mon Sep 17 00:00:00 2001
From: Jonathan Tan <jonathantanmy@google.com>
Date: Mon, 27 Apr 2020 17:01:08 -0700
Subject: [PATCH] fetch-pack: return enum from process_acks()
References: bsc#1170741
Upstream: queued - expected 2.26.3
process_acks() returns 0, 1, or 2, depending on whether "ready" was
received and if not, whether at least one commit was found to be common.
Replace these magic numbers with a documented enum.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
fetch-pack.c | 35 ++++++++++++++++++++++++++++-------
1 file changed, 28 insertions(+), 7 deletions(-)
diff --git a/fetch-pack.c b/fetch-pack.c
index 1734a573b0..ffdec5e56b 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1268,9 +1268,29 @@ static int process_section_header(struct packet_reader *reader,
return ret;
}
-static int process_acks(struct fetch_negotiator *negotiator,
- struct packet_reader *reader,
- struct oidset *common)
+enum common_found {
+ /*
+ * No commit was found to be possessed by both the client and the
+ * server, and "ready" was not received.
+ */
+ NO_COMMON_FOUND,
+
+ /*
+ * At least one commit was found to be possessed by both the client and
+ * the server, and "ready" was not received.
+ */
+ COMMON_FOUND,
+
+ /*
+ * "ready" was received, indicating that the server is ready to send
+ * the packfile without any further negotiation.
+ */
+ READY
+};
+
+static enum common_found process_acks(struct fetch_negotiator *negotiator,
+ struct packet_reader *reader,
+ struct oidset *common)
{
/* received */
int received_ready = 0;
@@ -1320,7 +1340,8 @@ static int process_acks(struct fetch_negotiator *negotiator,
die(_("expected no other sections to be sent after no 'ready'"));
/* return 0 if no common, 1 if there are common, or 2 if ready */
- return received_ready ? 2 : (received_ack ? 1 : 0);
+ return received_ready ? READY :
+ (received_ack ? COMMON_FOUND : NO_COMMON_FOUND);
}
static void receive_shallow_info(struct fetch_pack_args *args,
@@ -1508,13 +1529,13 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
case FETCH_PROCESS_ACKS:
/* Process ACKs/NAKs */
switch (process_acks(negotiator, &reader, &common)) {
- case 2:
+ case READY:
state = FETCH_GET_PACK;
break;
- case 1:
+ case COMMON_FOUND:
in_vain = 0;
/* fallthrough */
- default:
+ case NO_COMMON_FOUND:
state = FETCH_SEND_REQUEST;
break;
}
--
2.26.1

View File

@ -1,76 +0,0 @@
From c83742bc6a8e0662aafa6a0fb3779fa3e333ee24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Fri, 29 Nov 2019 15:53:38 +0100
Subject: [PATCH 2/2] Also use DocBook 5 stylesheet when generating HTML output
xsl/current refers to DocBook 4, while DocBook 5 uses xsl-ns/current.
Make sure the stylesheet is also used for contrib/subtree, as xmlto
otherwise defaults to DocBook 4.
---
Documentation/Makefile | 4 +++-
Documentation/docbook5.xsl | 8 ++++++++
contrib/subtree/Makefile | 3 ++-
3 files changed, 13 insertions(+), 2 deletions(-)
create mode 100644 Documentation/docbook5.xsl
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 06d85ad..606b00f 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -205,6 +205,9 @@ ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
DBLATEX_COMMON =
XMLTO_EXTRA += --skip-validation
XMLTO_EXTRA += -x manpage.xsl
+XSLT = docbook5.xsl
+else
+XSLT = docbook.xsl
endif
SHELL_PATH ?= $(SHELL)
@@ -397,7 +400,6 @@ $(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.tx
SubmittingPatches.txt: SubmittingPatches
$(QUIET_GEN) cp $< $@
-XSLT = docbook.xsl
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
user-manual.html: user-manual.xml $(XSLT)
diff --git a/Documentation/docbook5.xsl b/Documentation/docbook5.xsl
new file mode 100644
index 0000000..ab95b94
--- /dev/null
+++ b/Documentation/docbook5.xsl
@@ -0,0 +1,8 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/html/docbook.xsl"/>
+ <xsl:output method="html"
+ encoding="UTF-8" indent="no"
+ doctype-public="-//W3C//DTD HTML 4.01//EN"
+ doctype-system="http://www.w3.org/TR/html4/strict.dtd" />
+</xsl:stylesheet>
diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 09e53b9..5905a31 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -25,7 +25,6 @@ ASCIIDOC_HTML = xhtml11
ASCIIDOC_DOCBOOK = docbook
ASCIIDOC_EXTRA =
XMLTO = xmlto
-XMLTO_EXTRA = --skip-validation
ifdef USE_ASCIIDOCTOR
ASCIIDOC = asciidoctor
@@ -34,6 +33,8 @@ ASCIIDOC_HTML = xhtml5
ASCIIDOC_DOCBOOK = docbook5
ASCIIDOC_EXTRA += -I../../Documentation -rasciidoctor-extensions
ASCIIDOC_EXTRA += -alitdd='&\#x2d;&\#x2d;'
+XMLTO_EXTRA += --skip-validation
+XMLTO_EXTRA += -x ../../Documentation/manpage.xsl
endif
ifndef SHELL_PATH
--
2.24.0

View File

@ -1,128 +0,0 @@
From cbfc00c0a924a625f29a8f696d1592785d0ed953 Mon Sep 17 00:00:00 2001
From: Jonathan Tan <jonathantanmy@google.com>
Date: Mon, 27 Apr 2020 17:01:09 -0700
Subject: [PATCH] fetch-pack: in protocol v2, in_vain only after ACK
References: bsc#1170741
Upstream: queued - expected 2.26.3
When fetching, Git stops negotiation when it has sent at least
MAX_IN_VAIN (which is 256) "have" lines without having any of them
ACK-ed. But this is supposed to trigger only after the first ACK, as
pack-protocol.txt says:
However, the 256 limit *only* turns on in the canonical client
implementation if we have received at least one "ACK %s continue"
during a prior round. This helps to ensure that at least one common
ancestor is found before we give up entirely.
The code path for protocol v0 observes this, but not protocol v2,
resulting in shorter negotiation rounds but significantly larger
packfiles. Teach the code path for protocol v2 to check this criterion
only after at least one ACK was received.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
fetch-pack.c | 13 +++++++++----
t/t5500-fetch-pack.sh | 18 ++++++++++++++++++
2 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/fetch-pack.c b/fetch-pack.c
index ffdec5e56b..8f50f6a248 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1143,6 +1143,7 @@ static void add_common(struct strbuf *req_buf, struct oidset *common)
}
static int add_haves(struct fetch_negotiator *negotiator,
+ int seen_ack,
struct strbuf *req_buf,
int *haves_to_send, int *in_vain)
{
@@ -1157,7 +1158,7 @@ static int add_haves(struct fetch_negotiator *negotiator,
}
*in_vain += haves_added;
- if (!haves_added || *in_vain >= MAX_IN_VAIN) {
+ if (!haves_added || (seen_ack && *in_vain >= MAX_IN_VAIN)) {
/* Send Done */
packet_buf_write(req_buf, "done\n");
ret = 1;
@@ -1173,7 +1174,7 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
struct fetch_pack_args *args,
const struct ref *wants, struct oidset *common,
int *haves_to_send, int *in_vain,
- int sideband_all)
+ int sideband_all, int seen_ack)
{
int ret = 0;
struct strbuf req_buf = STRBUF_INIT;
@@ -1230,7 +1231,8 @@ static int send_fetch_request(struct fetch_negotiator *negotiator, int fd_out,
add_common(&req_buf, common);
/* Add initial haves */
- ret = add_haves(negotiator, &req_buf, haves_to_send, in_vain);
+ ret = add_haves(negotiator, seen_ack, &req_buf,
+ haves_to_send, in_vain);
}
/* Send request */
@@ -1465,6 +1467,7 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
int haves_to_send = INITIAL_FLUSH;
struct fetch_negotiator negotiator_alloc;
struct fetch_negotiator *negotiator;
+ int seen_ack = 0;
if (args->no_dependents) {
negotiator = NULL;
@@ -1521,7 +1524,8 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
if (send_fetch_request(negotiator, fd[1], args, ref,
&common,
&haves_to_send, &in_vain,
- reader.use_sideband))
+ reader.use_sideband,
+ seen_ack))
state = FETCH_GET_PACK;
else
state = FETCH_PROCESS_ACKS;
@@ -1534,6 +1538,7 @@ static struct ref *do_fetch_pack_v2(struct fetch_pack_args *args,
break;
case COMMON_FOUND:
in_vain = 0;
+ seen_ack = 1;
/* fallthrough */
case NO_COMMON_FOUND:
state = FETCH_SEND_REQUEST;
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index 6b97923964..95ed08db1b 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -385,6 +385,24 @@ test_expect_success 'clone shallow with packed refs' '
test_cmp count8.expected count8.actual
'
+test_expect_success 'in_vain not triggered before first ACK' '
+ rm -rf myserver myclient trace &&
+ git init myserver &&
+ test_commit -C myserver foo &&
+ git clone "file://$(pwd)/myserver" myclient &&
+
+ # MAX_IN_VAIN is 256. Because of batching, the client will send 496
+ # (16+32+64+128+256) commits, not 256, before giving up. So create 496
+ # irrelevant commits.
+ test_commit_bulk -C myclient 496 &&
+
+ # The new commit that the client wants to fetch.
+ test_commit -C myserver bar &&
+
+ GIT_TRACE_PACKET="$(pwd)/trace" git -C myclient fetch --progress origin &&
+ test_i18ngrep "Total 3 " trace
+'
+
test_expect_success 'fetch in shallow repo unreachable shallow objects' '
(
git clone --bare --branch B --single-branch "file://$(pwd)/." no-reflog &&
--
2.26.1

View File

@ -1,80 +0,0 @@
From 30eb7668fb1108c9d509bccf2bc5d53d71b3f435 Mon Sep 17 00:00:00 2001
From: Jonathan Tan <jonathantanmy@google.com>
Date: Mon, 27 Apr 2020 17:01:10 -0700
Subject: [PATCH] fetch-pack: in protocol v2, reset in_vain upon ACK
References: bsc#1170741
Upstream: queued - expected 2.26.3
In the function process_acks() in fetch-pack.c, the variable
received_ack is meant to track that an ACK was received, but it was
never set. This results in negotiation terminating prematurely through
the in_vain counter, when the counter should have been reset upon every
ACK.
Therefore, reset the in_vain counter upon every ACK.
Helped-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
fetch-pack.c | 1 +
t/t5500-fetch-pack.sh | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/fetch-pack.c b/fetch-pack.c
index 8f50f6a248..4b48090217 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -1307,6 +1307,7 @@ static enum common_found process_acks(struct fetch_negotiator *negotiator,
if (skip_prefix(reader->line, "ACK ", &arg)) {
struct object_id oid;
+ received_ack = 1;
if (!get_oid_hex(arg, &oid)) {
struct commit *commit;
oidset_insert(common, &oid);
diff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh
index 95ed08db1b..fd39aad93f 100755
--- a/t/t5500-fetch-pack.sh
+++ b/t/t5500-fetch-pack.sh
@@ -403,6 +403,36 @@ test_expect_success 'in_vain not triggered before first ACK' '
test_i18ngrep "Total 3 " trace
'
+test_expect_success 'in_vain resetted upon ACK' '
+ rm -rf myserver myclient trace &&
+ git init myserver &&
+
+ # Linked list of commits on master. The first is common; the rest are
+ # not.
+ test_commit -C myserver first_master_commit &&
+ git clone "file://$(pwd)/myserver" myclient &&
+ test_commit_bulk -C myclient 255 &&
+
+ # Another linked list of commits on anotherbranch with no connection to
+ # master. The first is common; the rest are not.
+ git -C myserver checkout --orphan anotherbranch &&
+ test_commit -C myserver first_anotherbranch_commit &&
+ git -C myclient fetch origin anotherbranch:refs/heads/anotherbranch &&
+ git -C myclient checkout anotherbranch &&
+ test_commit_bulk -C myclient 255 &&
+
+ # The new commit that the client wants to fetch.
+ git -C myserver checkout master &&
+ test_commit -C myserver to_fetch &&
+
+ # The client will send (as "have"s) all 256 commits in anotherbranch
+ # first. The 256th commit is common between the client and the server,
+ # and should reset in_vain. This allows negotiation to continue until
+ # the client reports that first_anotherbranch_commit is common.
+ GIT_TRACE_PACKET="$(pwd)/trace" git -C myclient fetch --progress origin master &&
+ test_i18ngrep "Total 3 " trace
+'
+
test_expect_success 'fetch in shallow repo unreachable shallow objects' '
(
git clone --bare --branch B --single-branch "file://$(pwd)/." no-reflog &&
--
2.26.1

Binary file not shown.

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6d65132471df9e531807cb2746f8be317e22a343b9385bbe11c9ce7f0d2fc848
size 6007864

BIN
git-2.27.0.tar.sign Normal file

Binary file not shown.

3
git-2.27.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:73ca9774d7fa226e1d87c1909401623f96dca6a044e583b9a762e84d7d1a73f9
size 6074636

View File

@ -1,3 +1,26 @@
-------------------------------------------------------------------
Mon Jun 1 20:32:59 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
- git 2.27.0:
* "git describe" will always use the "long" version when giving
its output based misplaced tags
* "git pull" issues a warning message until the pull.rebase
configuration variable is explicitly given
* The transport protocol version 2, which was promoted to the
default in Git 2.26 release, turned out to have some remaining
rough edges, so it has been demoted from the default
* A handful of options to configure SSL when talking to proxies
have been added
* Smudge/clean conversion filters are now given more information
* many bug fixes, improvements, and additional workflow options
- drop upstreamed patches:
* 0001-fetch-pack-return-enum-from-process_acks.patch
* 0002-fetch-pack-in-protocol-v2-in_vain-only-after-ACK.patch
* 0003-fetch-pack-in-protocol-v2-reset-in_vain-upon-ACK.patch
- drop unneeded patches:
* 0001-DOC-Move-to-DocBook-5-when-using-asciidoctor.patch
* 0002-Also-use-DocBook-5-stylesheet-when-generating-HTML-o.patch
-------------------------------------------------------------------
Tue Apr 28 17:42:18 UTC 2020 - Michal Suchanek <msuchanek@suse.com>

View File

@ -36,7 +36,7 @@
%endif
Name: git
Version: 2.26.2
Version: 2.27.0
Release: 0
Summary: Fast, scalable, distributed revision control system
License: GPL-2.0-only
@ -61,11 +61,6 @@ Patch6: git-tcsh-completion-fixes.diff
Patch7: git-zsh-completion-fixes.diff
Patch8: git-asciidoc.patch
Patch10: setup-don-t-fail-if-commondir-reference-is-deleted.patch
Patch11: 0001-DOC-Move-to-DocBook-5-when-using-asciidoctor.patch
Patch13: 0002-Also-use-DocBook-5-stylesheet-when-generating-HTML-o.patch
Patch14: 0001-fetch-pack-return-enum-from-process_acks.patch
Patch15: 0002-fetch-pack-in-protocol-v2-in_vain-only-after-ACK.patch
Patch16: 0003-fetch-pack-in-protocol-v2-reset-in_vain-upon-ACK.patch
BuildRequires: fdupes
BuildRequires: gpg2
@ -293,11 +288,6 @@ directory /git/ that calls the cgi script.
%patch7 -p1
%patch8 -p1
%patch10 -p1
%patch11 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%build
cat > .make <<'EOF'