<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git, branch v2.28.0-rc1</title>
<subtitle>Fork of git SCM with my patches.</subtitle>
<id>http://git.kilabit.info/git/atom?h=v2.28.0-rc1</id>
<link rel='self' href='http://git.kilabit.info/git/atom?h=v2.28.0-rc1'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/'/>
<updated>2020-07-17T01:02:52Z</updated>
<entry>
<title>Git 2.28-rc1</title>
<updated>2020-07-17T01:02:52Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-17T01:02:52Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=3ddac3d691c3633cd4d9a74c07e3b2301f546f77'/>
<id>urn:sha1:3ddac3d691c3633cd4d9a74c07e3b2301f546f77</id>
<content type='text'>
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jn/v0-with-extensions-fix' into master</title>
<updated>2020-07-17T00:58:42Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-17T00:58:42Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=d13b7f21989335c0ac14e3a0c7eaaee0bc30ea70'/>
<id>urn:sha1:d13b7f21989335c0ac14e3a0c7eaaee0bc30ea70</id>
<content type='text'>
In 2.28-rc0, we corrected a bug that some repository extensions are
honored by mistake even in a version 0 repositories (these
configuration variables in extensions.* namespace were supposed to
have special meaning in repositories whose version numbers are 1 or
higher), but this was a bit too big a change.

* jn/v0-with-extensions-fix:
  repository: allow repository format upgrade with extensions
  Revert "check_repository_format_gently(): refuse extensions for old repositories"
</content>
</entry>
<entry>
<title>repository: allow repository format upgrade with extensions</title>
<updated>2020-07-16T16:36:39Z</updated>
<author>
<name>Jonathan Nieder</name>
<email>jrnieder@gmail.com</email>
</author>
<published>2020-07-16T06:28:18Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=62f2eca6065d0c27b0ea3b7806a590466ea04960'/>
<id>urn:sha1:62f2eca6065d0c27b0ea3b7806a590466ea04960</id>
<content type='text'>
Now that we officially permit repository extensions in repository
format v0, permit upgrading a repository with extensions from v0 to v1
as well.

For example, this means a repository where the user has set
"extensions.preciousObjects" can use "git fetch --filter=blob:none
origin" to upgrade the repository to use v1 and the partial clone
extension.

To avoid mistakes, continue to forbid repository format upgrades in v0
repositories with an unrecognized extension.  This way, a v0 user
using a misspelled extension field gets a chance to correct the
mistake before updating to the less forgiving v1 format.

While we're here, make the error message for failure to upgrade the
repository format a bit shorter, and present it as an error, not a
warning.

Reported-by: Huan Huan Chen &lt;huanhuanchen@google.com&gt;
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Revert "check_repository_format_gently(): refuse extensions for old repositories"</title>
<updated>2020-07-16T16:36:37Z</updated>
<author>
<name>Jonathan Nieder</name>
<email>jrnieder@gmail.com</email>
</author>
<published>2020-07-16T06:24:29Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=11664196ac15b0382793ec0923e56a103e973bc9'/>
<id>urn:sha1:11664196ac15b0382793ec0923e56a103e973bc9</id>
<content type='text'>
This reverts commit 14c7fa269e42df4133edd9ae7763b678ed6594cd.

The core.repositoryFormatVersion field was introduced in ab9cb76f661
(Repository format version check., 2005-11-25), providing a welcome
bit of forward compatibility, thanks to some welcome analysis by
Martin Atukunda.  The semantics are simple: a repository with
core.repositoryFormatVersion set to 0 should be comprehensible by all
Git implementations in active use; and Git implementations should
error out early instead of trying to act on Git repositories with
higher core.repositoryFormatVersion values representing new formats
that they do not understand.

A new repository format did not need to be defined until 00a09d57eb8
(introduce "extensions" form of core.repositoryformatversion,
2015-06-23).  This provided a finer-grained extension mechanism for
Git repositories.  In a repository with core.repositoryFormatVersion
set to 1, Git implementations can act on "extensions.*" settings that
modify how a repository is interpreted.  In repository format version
1, unrecognized extensions settings cause Git to error out.

What happens if a user sets an extension setting but forgets to
increase the repository format version to 1?  The extension settings
were still recognized in that case; worse, unrecognized extensions
settings do *not* cause Git to error out.  So combining repository
format version 0 with extensions settings produces in some sense the
worst of both worlds.

To improve that situation, since 14c7fa269e4
(check_repository_format_gently(): refuse extensions for old
repositories, 2020-06-05) Git instead ignores extensions in v0 mode.
This way, v0 repositories get the historical (pre-2015) behavior and
maintain compatibility with Git implementations that do not know about
the v1 format.  Unfortunately, users had been using this sort of
configuration and this behavior change came to many as a surprise:

- users of "git config --worktree" that had followed its advice
  to enable extensions.worktreeConfig (without also increasing the
  repository format version) would find their worktree configuration
  no longer taking effect

- tools such as copybara[*] that had set extensions.partialClone in
  existing repositories (without also increasing the repository format
  version) would find that setting no longer taking effect

The behavior introduced in 14c7fa269e4 might be a good behavior if we
were traveling back in time to 2015, but we're far too late.  For some
reason I thought that it was what had been originally implemented and
that it had regressed.  Apologies for not doing my research when
14c7fa269e4 was under development.

Let's return to the behavior we've had since 2015: always act on
extensions.* settings, regardless of repository format version.  While
we're here, include some tests to describe the effect on the "upgrade
repository version" code path.

[*] https://github.com/google/copybara/commit/ca76c0b1e13c4e36448d12c2aba4a5d9d98fb6e7

Reported-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Jonathan Nieder &lt;jrnieder@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Hopefully the last batch before -rc1</title>
<updated>2020-07-15T23:29:51Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-15T23:29:51Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=b6a658bd00c9c29e07f833cabfc0ef12224e277a'/>
<id>urn:sha1:b6a658bd00c9c29e07f833cabfc0ef12224e277a</id>
<content type='text'>
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'tb/commit-graph-no-check-oids' into master</title>
<updated>2020-07-15T23:29:45Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-15T23:29:45Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=d1ae8ba0963378f6613bfd683a969a94ca01b344'/>
<id>urn:sha1:d1ae8ba0963378f6613bfd683a969a94ca01b344</id>
<content type='text'>
Fix to the code to produce progress bar, which is new in the
upcoming release.

* tb/commit-graph-no-check-oids:
  commit-graph: fix "Collecting commits from input" progress line
</content>
</entry>
<entry>
<title>Merge branch 'ct/diff-with-merge-base-clarification' into master</title>
<updated>2020-07-15T23:29:44Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-15T23:29:44Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=1863dbdde9dfcea3c51940cc106b699dedbebff8'/>
<id>urn:sha1:1863dbdde9dfcea3c51940cc106b699dedbebff8</id>
<content type='text'>
Doc update.

* ct/diff-with-merge-base-clarification:
  git-diff.txt: reorder possible usages
  git-diff.txt: don't mark required argument as optional
</content>
</entry>
<entry>
<title>Merge branch 'sg/commit-graph-progress-fix' into master</title>
<updated>2020-07-15T23:29:43Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-15T23:29:43Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=12f5eb9f082d7f4cb083a11aa59ac8bbd5e1589a'/>
<id>urn:sha1:12f5eb9f082d7f4cb083a11aa59ac8bbd5e1589a</id>
<content type='text'>
The code to produce progress output from "git commit-graph --write"
had a few breakages, which have been fixed.

* sg/commit-graph-progress-fix:
  commit-graph: fix "Writing out commit graph" progress counter
  commit-graph: fix progress of reachable commits
</content>
</entry>
<entry>
<title>Merge branch 'ta/wait-on-aliased-commands-upon-signal' into master</title>
<updated>2020-07-15T23:29:43Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-07-15T23:29:43Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=05920f041a57ac9ee86a8615cfca414450e65365'/>
<id>urn:sha1:05920f041a57ac9ee86a8615cfca414450e65365</id>
<content type='text'>
When an aliased command, whose output is piped to a pager by git,
gets killed by a signal, the pager got into a funny state, which
has been corrected (again).

* ta/wait-on-aliased-commands-upon-signal:
  Wait for child on signal death for aliases to externals
  Wait for child on signal death for aliases to builtins
</content>
</entry>
<entry>
<title>commit-graph: fix "Collecting commits from input" progress line</title>
<updated>2020-07-15T18:57:19Z</updated>
<author>
<name>SZEDER Gábor</name>
<email>szeder.dev@gmail.com</email>
</author>
<published>2020-07-10T19:02:38Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=862aead24eaf797860fb503561a1f86adf557abb'/>
<id>urn:sha1:862aead24eaf797860fb503561a1f86adf557abb</id>
<content type='text'>
To display a progress line while reading commits from standard input
and looking them up, 5b6653e523 (builtin/commit-graph.c: dereference
tags in builtin, 2020-05-13) should have added a pair of
start_delayed_progress() and stop_progress() calls around the loop
reading stdin.  Alas, the stop_progress() call ended up at the wrong
place, after write_commit_graph(), which does all the commit-graph
computation and writing, and has several progress lines of its own.
Consequently, that new

  Collecting commits from input: 1234

progress line is overwritten by the first progress line shown by
write_commit_graph(), and its final "done" line is shown last, after
everything is finished:

  $ { sleep 3 ; git rev-list -3 HEAD ; sleep 1 ; } | ~/src/git/git commit-graph write --stdin-commits
  Expanding reachable commits in commit graph: 873402, done.
  Writing out commit graph in 4 passes: 100% (3493608/3493608), done.
  Collecting commits from input: 3, done.

Furthermore, that stop_progress() call was added after the 'cleanup'
label, where that loop reading stdin jumps in case of an error.  In
case of invalid input this then results in the "done" line shown after
the error message:

  $ { sleep 3 ; git rev-list -3 HEAD ; echo junk ; } | ~/src/git/git commit-graph write --stdin-commits
  error: unexpected non-hex object ID: junk
  Collecting commits from input: 3, done.

Move that stop_progress() call to the right place.

While at it, drop the unnecessary 'if (progress)' condition protecting
the stop_progress() call, because that function is prepared to handle
a NULL progress struct.

Signed-off-by: SZEDER Gábor &lt;szeder.dev@gmail.com&gt;
Reviewed-by: Derrick Stolee &lt;stolee@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
