<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Makefile, branch v2.29.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.29.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.29.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2020-10-22T22:01:22Z</updated>
<entry>
<title>Merge branch 'js/no-builtins-on-disk-option' into maint</title>
<updated>2020-10-22T22:01:22Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-10-22T22:01:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=380ba9907737fea75c9e6bbce9df04c556fbf882'/>
<id>urn:sha1:380ba9907737fea75c9e6bbce9df04c556fbf882</id>
<content type='text'>
Brown-paper-bag fix.

* js/no-builtins-on-disk-option:
  SKIP_DASHED_BUILT_INS: do not skip the bin/ programs
</content>
</entry>
<entry>
<title>SKIP_DASHED_BUILT_INS: do not skip the bin/ programs</title>
<updated>2020-10-21T19:56:40Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2020-10-21T15:13:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=907e6379d0af4c5412b73dd2f3799ecc634cf059'/>
<id>urn:sha1:907e6379d0af4c5412b73dd2f3799ecc634cf059</id>
<content type='text'>
The idea of the `SKIP_DASHED_BUILT_INS` option is to stop hard-linking
the built-in commands as separate executables. The patches to do that
specifically excluded the three commands `receive-pack`,
`upload-archive` and `upload-pack`, though: these commands are expected
to be present in the `PATH` in their dashed form on the server side of
any fetch/push.

However, due to an oversight by myself, even if those commands were
still hard-linked, they were not installed into `bin/`.

Noticed-by: Michael Forney &lt;mforney@mforney.org&gt;
Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Reviewed-by: Taylor Blau &lt;me@ttaylorr.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Makefile: ASCII-sort += lists</title>
<updated>2020-10-08T17:38:51Z</updated>
<author>
<name>Denton Liu</name>
<email>liu.denton@gmail.com</email>
</author>
<published>2020-10-08T07:39:26Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8474f2658156157476e84e8b0ad2b8dcd6354f39'/>
<id>urn:sha1:8474f2658156157476e84e8b0ad2b8dcd6354f39</id>
<content type='text'>
In 805d9eaf5e (Makefile: ASCII-sort += lists, 2020-03-21), the += lists
in the Makefile were sorted into ASCII order. Since then, more out of
order elements have been introduced.  Sort these lists back into ASCII
order.

This patch is best viewed with `--color-moved`.

Signed-off-by: Denton Liu &lt;liu.denton@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'rs/archive-add-file'</title>
<updated>2020-10-05T21:01:53Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-10-05T21:01:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f6b06b459092520bd90e5a191589e2d4371ef7d1'/>
<id>urn:sha1:f6b06b459092520bd90e5a191589e2d4371ef7d1</id>
<content type='text'>
"git archive" learns the "--add-file" option to include untracked
files into a snapshot from a tree-ish.

* rs/archive-add-file:
  Makefile: use git-archive --add-file
  archive: add --add-file
  archive: read short blobs in archive.c::write_archive_entry()
</content>
</entry>
<entry>
<title>Merge branch 'jk/drop-unaligned-loads'</title>
<updated>2020-10-04T19:49:06Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-10-04T19:49:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=86cca370e1989e0cbcd412f8770883a20d86eee8'/>
<id>urn:sha1:86cca370e1989e0cbcd412f8770883a20d86eee8</id>
<content type='text'>
Compilation fix around type punning.

* jk/drop-unaligned-loads:
  Revert "fast-export: use local array to store anonymized oid"
  bswap.h: drop unaligned loads
</content>
</entry>
<entry>
<title>Merge branch 'js/no-builtins-on-disk-option'</title>
<updated>2020-10-04T19:49:05Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-10-04T19:49:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=94de88c986712e79c20813ba54e797c4ca83137b'/>
<id>urn:sha1:94de88c986712e79c20813ba54e797c4ca83137b</id>
<content type='text'>
The installation procedure learned to optionally omit "git-foo"
executable files for each 'foo' built-in subcommand, which are only
required by old timers that still rely on the age old promise that
prepending "git --exec-path" output to PATH early in their script
will keep the "git-foo" calls they wrote working.

The old attempt to remove these executables from the disk failed in
the 1.6 era; it may be worth attempting again, but I think it is
worth to keep this topic separate from such a policy change to help
it graduate early.

* js/no-builtins-on-disk-option:
  ci: stop linking built-ins to the dashed versions
  Optionally skip linking/copying the built-ins
  msvc: copy the correct `.pdb` files in the Makefile target `install`
</content>
</entry>
<entry>
<title>Merge branch 'jx/proc-receive-hook'</title>
<updated>2020-09-25T22:25:39Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-09-25T22:25:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6c430a647cb990fc856d328733fa59e1fafadb97'/>
<id>urn:sha1:6c430a647cb990fc856d328733fa59e1fafadb97</id>
<content type='text'>
"git receive-pack" that accepts requests by "git push" learned to
outsource most of the ref updates to the new "proc-receive" hook.

* jx/proc-receive-hook:
  doc: add documentation for the proc-receive hook
  transport: parse report options for tracking refs
  t5411: test updates of remote-tracking branches
  receive-pack: new config receive.procReceiveRefs
  doc: add document for capability report-status-v2
  New capability "report-status-v2" for git-push
  receive-pack: feed report options to post-receive
  receive-pack: add new proc-receive hook
  t5411: add basic test cases for proc-receive hook
  transport: not report a non-head push as a branch
</content>
</entry>
<entry>
<title>bswap.h: drop unaligned loads</title>
<updated>2020-09-24T19:30:09Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2020-09-24T19:21:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c578e29ba0791041ad7fabf1166dd6f7e7f26d1f'/>
<id>urn:sha1:c578e29ba0791041ad7fabf1166dd6f7e7f26d1f</id>
<content type='text'>
Our put_be32() routine and its variants (get_be32(), put_be64(), etc)
has two implementations: on some platforms we cast memory in place and
use nothl()/htonl(), which can cause unaligned memory access. And on
others, we pick out the individual bytes using bitshifts.

This introduces extra complexity, and sometimes causes compilers to
generate warnings about type-punning. And it's not clear there's any
performance advantage.

This split goes back to 660231aa97 (block-sha1: support for
architectures with memory alignment restrictions, 2009-08-12). The
unaligned versions were part of the original block-sha1 code in
d7c208a92e (Add new optimized C 'block-sha1' routines, 2009-08-05),
which says it is:

   Based on the mozilla SHA1 routine, but doing the input data accesses a
   word at a time and with 'htonl()' instead of loading bytes and shifting.

Back then, Linus provided timings versus the mozilla code which showed a
27% improvement:

  https://lore.kernel.org/git/alpine.LFD.2.01.0908051545000.3390@localhost.localdomain/

However, the unaligned loads were either not the useful part of that
speedup, or perhaps compilers and processors have changed since then.
Here are times for computing the sha1 of 4GB of random data, with and
without -DNO_UNALIGNED_LOADS (and BLK_SHA1=1, of course). This is with
gcc 10, -O2, and the processor is a Core i9-9880H.

  [stock]
  Benchmark #1: t/helper/test-tool sha1 &lt;foo.rand
    Time (mean ± σ):      6.638 s ±  0.081 s    [User: 6.269 s, System: 0.368 s]
    Range (min … max):    6.550 s …  6.841 s    10 runs

  [-DNO_UNALIGNED_LOADS]
  Benchmark #1: t/helper/test-tool sha1 &lt;foo.rand
    Time (mean ± σ):      6.418 s ±  0.015 s    [User: 6.058 s, System: 0.360 s]
    Range (min … max):    6.394 s …  6.447 s    10 runs

And here's the same test run on an AMD A8-7600, using gcc 8.

  [stock]
  Benchmark #1: t/helper/test-tool sha1 &lt;foo.rand
    Time (mean ± σ):     11.721 s ±  0.113 s    [User: 10.761 s, System: 0.951 s]
    Range (min … max):   11.509 s … 11.861 s    10 runs

  [-DNO_UNALIGNED_LOADS]
  Benchmark #1: t/helper/test-tool sha1 &lt;foo.rand
    Time (mean ± σ):     11.744 s ±  0.066 s    [User: 10.807 s, System: 0.928 s]
    Range (min … max):   11.637 s … 11.863 s    10 runs

So the unaligned loads don't seem to help much, and actually make things
worse. It's possible there are platforms where they provide more
benefit, but:

  - the non-x86 platforms for which we use this code are old and obscure
    (powerpc and s390).

  - the main caller that cares about performance is block-sha1. But
    these days it is rarely used anyway, in favor of sha1dc (which is
    already much slower, and nobody seems to have cared that much).

Let's just drop unaligned versions entirely in the name of simplicity.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'hn/refs-trace-backend'</title>
<updated>2020-09-22T19:36:28Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-09-22T19:36:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c9a04f036f6d52a2bca1c41bda6ecc1633c8e4cb'/>
<id>urn:sha1:c9a04f036f6d52a2bca1c41bda6ecc1633c8e4cb</id>
<content type='text'>
Developer support.

* hn/refs-trace-backend:
  refs: add GIT_TRACE_REFS debugging mechanism
</content>
</entry>
<entry>
<title>Merge branch 'es/format-patch-interdiff-cleanup'</title>
<updated>2020-09-22T19:36:28Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2020-09-22T19:36:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=634e0084fac75cf85449a813da14968c9663a094'/>
<id>urn:sha1:634e0084fac75cf85449a813da14968c9663a094</id>
<content type='text'>
"format-patch --range-diff=&lt;prev&gt; &lt;origin&gt;..HEAD" has been taught
not to ignore &lt;origin&gt; when &lt;prev&gt; is a single version.

* es/format-patch-interdiff-cleanup:
  format-patch: use 'origin' as start of current-series-range when known
  diff-lib: tighten show_interdiff()'s interface
  diff: move show_interdiff() from its own file to diff-lib
</content>
</entry>
</feed>
