<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Documentation/gitdiffcore.txt, branch v2.31.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.31.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.31.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2021-03-01T22:02:56Z</updated>
<entry>
<title>Merge branch 'en/diffcore-rename'</title>
<updated>2021-03-01T22:02:56Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2021-03-01T22:02:56Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=12bd17521c732ea6de47ec5fd9621a2bca451fe6'/>
<id>urn:sha1:12bd17521c732ea6de47ec5fd9621a2bca451fe6</id>
<content type='text'>
Performance optimization work on the rename detection continues.

* en/diffcore-rename:
  merge-ort: call diffcore_rename() directly
  gitdiffcore doc: mention new preliminary step for rename detection
  diffcore-rename: guide inexact rename detection based on basenames
  diffcore-rename: complete find_basename_matches()
  diffcore-rename: compute basenames of source and dest candidates
  t4001: add a test comparing basename similarity and content similarity
  diffcore-rename: filter rename_src list when possible
  diffcore-rename: no point trying to find a match better than exact
</content>
</entry>
<entry>
<title>diff: --{rotate,skip}-to=&lt;path&gt;</title>
<updated>2021-02-16T17:30:42Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2021-02-11T19:57:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1eb4136ac2a24764257567b930535fcece01719f'/>
<id>urn:sha1:1eb4136ac2a24764257567b930535fcece01719f</id>
<content type='text'>
In the implementation of "git difftool", there is a case where the
user wants to start viewing the diffs at a specific path and
continue on to the rest, optionally wrapping around to the
beginning.  Since it is somewhat cumbersome to implement such a
feature as a post-processing step of "git diff" output, let's
support it internally with two new options.

 - "git diff --rotate-to=C", when the resulting patch would show
   paths A B C D E without the option, would "rotate" the paths to
   shows patch to C D E A B instead.  It is an error when there is
   no patch for C is shown.

 - "git diff --skip-to=C" would instead "skip" the paths before C,
   and shows patch to C D E.  Again, it is an error when there is no
   patch for C is shown.

 - "git log [-p]" also accepts these two options, but it is not an
   error if there is no change to the specified path.  Instead, the
   set of output paths are rotated or skipped to the specified path
   or the first path that sorts after the specified path.

Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>gitdiffcore doc: mention new preliminary step for rename detection</title>
<updated>2021-02-16T02:02:16Z</updated>
<author>
<name>Elijah Newren</name>
<email>newren@gmail.com</email>
</author>
<published>2021-02-14T07:51:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=07c9a7fcb50e7af9d350edc82d5f906a6eb6bd62'/>
<id>urn:sha1:07c9a7fcb50e7af9d350edc82d5f906a6eb6bd62</id>
<content type='text'>
The last few patches have introduced a new preliminary step when rename
detection is on but both break detection and copy detection are off.
Document this new step.  While we're at it, add a testcase that checks
the new behavior as well.

Signed-off-by: Elijah Newren &lt;newren@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>log -G: ignore binary files</title>
<updated>2018-12-26T22:59:37Z</updated>
<author>
<name>Thomas Braun</name>
<email>thomas.braun@virtuell-zuhause.de</email>
</author>
<published>2018-12-14T18:49:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e0e7cb8080cb4a0b3a24f288bf363fe517b49790'/>
<id>urn:sha1:e0e7cb8080cb4a0b3a24f288bf363fe517b49790</id>
<content type='text'>
The -G&lt;regex&gt; option of log looks for the differences whose patch text
contains added/removed lines that match regex.

Currently -G looks also into patches of binary files (which
according to [1]) is binary as well.

This has a couple of issues:

- It makes the pickaxe search slow. In a proprietary repository of the
  author with only ~5500 commits and a total .git size of ~300MB
  searching takes ~13 seconds

    $time git log -Gwave &gt; /dev/null

    real    0m13,241s
    user    0m12,596s
    sys     0m0,644s

  whereas when we ignore binary files with this patch it takes ~4s

    $time ~/devel/git/git log -Gwave &gt; /dev/null

    real    0m3,713s
    user    0m3,608s
    sys     0m0,105s

  which is a speedup of more than fourfold.

- The internally used algorithm for generating patch text is based on
  xdiff and its states in [1]

  &gt; The output format of the binary patch file is proprietary
  &gt; (and binary) and it is basically a collection of copy and insert
  &gt; commands [..]

  which means that the current format could change once the internal
  algorithm is changed as the format is not standardized. In addition
  the git binary patch format used for preparing patches for git apply
  is *different* from the xdiff format as can be seen by comparing

  git log -p -a

    commit 6e95bf4bafccf14650d02ab57f3affe669be10cf
    Author: A U Thor &lt;author@example.com&gt;
    Date:   Thu Apr 7 15:14:13 2005 -0700

        modify binary file

    diff --git a/data.bin b/data.bin
    index f414c84..edfeb6f 100644
    --- a/data.bin
    +++ b/data.bin
    @@ -1,2 +1,4 @@
     a
     a^@a
    +a
    +a^@a

  with git log --binary

    commit 6e95bf4bafccf14650d02ab57f3affe669be10cf
    Author: A U Thor &lt;author@example.com&gt;
    Date:   Thu Apr 7 15:14:13 2005 -0700

        modify binary file

    diff --git a/data.bin b/data.bin
    index f414c84bd3aa25fa07836bb1fb73db784635e24b..edfeb6f501[..]
    GIT binary patch
    literal 12
    QcmYe~N@Pgn0zx1O01)N^ZvX%Q

    literal 6
    NcmYe~N@Pgn0ssWg0XP5v

  which seems unexpected.

To resolve these issues this patch makes -G&lt;regex&gt; ignore binary files
by default. Textconv filters are supported and also -a/--text for
getting the old and broken behaviour back.

The -S&lt;block of text&gt; option of log looks for differences that changes
the number of occurrences of the specified block of text (i.e.
addition/deletion) in a file. As we want to keep the current behaviour,
add a test to ensure it stays that way.

[1]: http://www.xmailserver.org/xdiff.html

Signed-off-by: Thomas Braun &lt;thomas.braun@virtuell-zuhause.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>docs/diffcore: unquote "Complete Rewrites" in headers</title>
<updated>2017-02-28T19:34:38Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>patrick.steinhardt@elego.de</email>
</author>
<published>2017-02-28T08:59:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b803ae4427f3e21f01b8da6933ed719909cacd69'/>
<id>urn:sha1:b803ae4427f3e21f01b8da6933ed719909cacd69</id>
<content type='text'>
The gitdiffcore documentation quotes the term "Complete Rewrites" in
headers for no real gain. This would make sense if the term could be
easily confused if not properly grouped together. But actually, the term
is quite obvious and thus does not really need any quoting, especially
regarding that it is not used anywhere else.

But more importanly, this brings up a bug when rendering man pages: when
trying to render quotes inside of a section header, we end up with
quotes which have been misaligned to the end of line. E.g.

    diffcore-break: For Splitting Up Complete Rewrites
    --------------------------------------------------

renders as

    DIFFCORE-BREAK: FOR SPLITTING UP  COMPLETE REWRITES""

, which is obviously wrong. While this is fixable for the man pages by
using double-quotes (e.g. ""COMPLETE REWRITES""), this again breaks it
for our generated HTML pages.

So fix the issue by simply dropping quotes inside of section headers,
which is currently only done for the term "Complete Rewrites".

Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>docs/diffcore: fix grammar in diffcore-rename header</title>
<updated>2017-02-28T19:34:36Z</updated>
<author>
<name>Patrick Steinhardt</name>
<email>patrick.steinhardt@elego.de</email>
</author>
<published>2017-02-28T08:59:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1aa38199afd374ca06c22beadae5fe02402b38e4'/>
<id>urn:sha1:1aa38199afd374ca06c22beadae5fe02402b38e4</id>
<content type='text'>
Signed-off-by: Patrick Steinhardt &lt;ps@pks.im&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'sb/doc-unify-bottom'</title>
<updated>2017-02-15T20:54:20Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-02-15T20:54:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=153a33f98c1d68d48d7e030a4cff99ba07791dc2'/>
<id>urn:sha1:153a33f98c1d68d48d7e030a4cff99ba07791dc2</id>
<content type='text'>
Doc clean-up.

* sb/doc-unify-bottom:
  Documentation: unify bottom "part of git suite" lines
</content>
</entry>
<entry>
<title>Documentation: unify bottom "part of git suite" lines</title>
<updated>2017-02-09T23:14:01Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2017-02-09T01:29:30Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=941b9c527070c9c7b5883db1a7100559be571f71'/>
<id>urn:sha1:941b9c527070c9c7b5883db1a7100559be571f71</id>
<content type='text'>
We currently have 168 man pages that mention they are part of Git, you
can check yourself easily via:
  $ git grep "Part of the linkgit:git\[1\] suite" |wc -l
  168
However some have a trailing period, i.e.
  $ git grep "Part of the linkgit:git\[1\] suite." |wc -l
  8

Unify the bottom line in all man pages to not end with a period.

Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: typeset long command-line options as literal</title>
<updated>2016-06-28T15:36:45Z</updated>
<author>
<name>Matthieu Moy</name>
<email>Matthieu.Moy@imag.fr</email>
</author>
<published>2016-06-28T11:40:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=bcf9626a71a0d90be65acc265ad0ec488d95d6ed'/>
<id>urn:sha1:bcf9626a71a0d90be65acc265ad0ec488d95d6ed</id>
<content type='text'>
Similarly to the previous commit, use backquotes instead of
forward-quotes, for long options.

This was obtained with:

  perl -pi -e "s/'(--[a-z][a-z=&lt;&gt;-]*)'/\`\$1\`/g" *.txt

and manual tweak to remove false positive in ascii-art (o'--o'--o' to
describe rewritten history).

Signed-off-by: Matthieu Moy &lt;Matthieu.Moy@imag.fr&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: convert \--option to --option</title>
<updated>2015-05-13T05:14:46Z</updated>
<author>
<name>Jeff King</name>
<email>peff@peff.net</email>
</author>
<published>2015-05-13T05:01:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1c262bb7b2968a8eecca3fed366638e0779184bb'/>
<id>urn:sha1:1c262bb7b2968a8eecca3fed366638e0779184bb</id>
<content type='text'>
Older versions of AsciiDoc would convert the "--" in
"--option" into an emdash. According to 565e135
(Documentation: quote double-dash for AsciiDoc, 2011-06-29),
this is fixed in AsciiDoc 8.3.0. According to bf17126, we
don't support anything older than 8.4.1 anyway, so we no
longer need to worry about quoting.

Even though this does not change the output at all, there
are a few good reasons to drop the quoting:

  1. It makes the source prettier to read.

  2. We don't quote consistently, which may be confusing when
     reading the source.

  3. Asciidoctor does not like the quoting, and renders a
     literal backslash.

Signed-off-by: Jeff King &lt;peff@peff.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
