<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/Documentation/gitattributes.txt, branch v2.14.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.14.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.14.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2017-07-26T19:56:19Z</updated>
<entry>
<title>Merge branch 'ls/filter-process-delayed' into jt/subprocess-handshake</title>
<updated>2017-07-26T19:56:19Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-07-26T19:56:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=487fe1ffcd3b3a38477b7e564f235bb7d1b89ecc'/>
<id>urn:sha1:487fe1ffcd3b3a38477b7e564f235bb7d1b89ecc</id>
<content type='text'>
* ls/filter-process-delayed:
  convert: add "status=delayed" to filter process protocol
  convert: refactor capabilities negotiation
  convert: move multiple file filter error handling to separate function
  convert: put the flags field before the flag itself for consistent style
  t0021: write "OUT &lt;size&gt;" only on success
  t0021: make debug log file name configurable
  t0021: keep filter log files on comparison
</content>
</entry>
<entry>
<title>convert: add "status=delayed" to filter process protocol</title>
<updated>2017-06-30T20:50:41Z</updated>
<author>
<name>Lars Schneider</name>
<email>larsxschneider@gmail.com</email>
</author>
<published>2017-06-30T20:41:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=2841e8f81cb2820024804b9341577be1d0ce1240'/>
<id>urn:sha1:2841e8f81cb2820024804b9341577be1d0ce1240</id>
<content type='text'>
Some `clean` / `smudge` filters may require a significant amount of
time to process a single blob (e.g. the Git LFS smudge filter might
perform network requests). During this process the Git checkout
operation is blocked and Git needs to wait until the filter is done to
continue with the checkout.

Teach the filter process protocol, introduced in edcc8581 ("convert: add
filter.&lt;driver&gt;.process option", 2016-10-16), to accept the status
"delayed" as response to a filter request. Upon this response Git
continues with the checkout operation. After the checkout operation Git
calls "finish_delayed_checkout" which queries the filter for remaining
blobs. If the filter is still working on the completion, then the filter
is expected to block. If the filter has completed all remaining blobs
then an empty response is expected.

Git has a multiple code paths that checkout a blob. Support delayed
checkouts only in `clone` (in unpack-trees.c) and `checkout` operations
for now. The optimization is most effective in these code paths as all
files of the tree are processed.

Signed-off-by: Lars Schneider &lt;larsxschneider@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>doc: do not use `rm .git/index` when normalizing line endings</title>
<updated>2017-06-15T17:55:47Z</updated>
<author>
<name>Andreas Heiduk</name>
<email>asheiduk@gmail.com</email>
</author>
<published>2017-06-14T06:51:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=773a88914f7b951cb33b27b12b4b715b66451a07'/>
<id>urn:sha1:773a88914f7b951cb33b27b12b4b715b66451a07</id>
<content type='text'>
When illustrating how to normalize the line endings, the
documentation in gitattributes tells the user to `rm .git/index`.

This is incorrect for two reasons:

 - Users shouldn't be instructed to mess around with the internal
   implementation of Git using raw file system tools like `rm`.

 - Within a submodule or an additional working tree `.git` is just a
   file containing a `gitdir: &lt;path&gt;` pointer into the real `.git`
   directory.  Therefore `rm .git/index` does not work.

The purpose of the `rm .git/index` instruction is to remove all entries
from the index without touching the working tree.  The way to do this
with Git is to use `read-tree --empty`.

Signed-off-by: Andreas Heiduk &lt;asheiduk@gmail.com&gt;
Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Helped-by: Torsten Bögershausen &lt;tboegi@web.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'tb/doc-eol-normalization'</title>
<updated>2017-04-24T05:07:45Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2017-04-24T05:07:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=848d9a9bb7407cd3a2d45941f732b2ddc32588a7'/>
<id>urn:sha1:848d9a9bb7407cd3a2d45941f732b2ddc32588a7</id>
<content type='text'>
Doc update.

* tb/doc-eol-normalization:
  gitattributes.txt: document how to normalize the line endings
</content>
</entry>
<entry>
<title>gitattributes.txt: document how to normalize the line endings</title>
<updated>2017-04-13T22:53:41Z</updated>
<author>
<name>Torsten Bögershausen</name>
<email>tboegi@web.de</email>
</author>
<published>2017-04-12T11:48:09Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=85999743e74e35b9100cbeb94112a8ac39ab5a0e'/>
<id>urn:sha1:85999743e74e35b9100cbeb94112a8ac39ab5a0e</id>
<content type='text'>
The instructions how to normalize the line endings should have been updated
as part of commit 6523728499e 'convert: unify the "auto" handling of CRLF',
(but that part never made it into the commit).

Update the documentation in Documentation/gitattributes.txt and add
a test case in t0025.

Reported by Kristian Adrup
https://github.com/git-for-windows/git/issues/954

Signed-off-by: Torsten Bögershausen &lt;tboegi@web.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Documentation: fix a typo</title>
<updated>2017-02-01T21:46:52Z</updated>
<author>
<name>Stefan Beller</name>
<email>sbeller@google.com</email>
</author>
<published>2017-01-28T02:01:52Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=faa4e8ceb5c37dd6ae8c89a02b5e2651276fe0f1'/>
<id>urn:sha1:faa4e8ceb5c37dd6ae8c89a02b5e2651276fe0f1</id>
<content type='text'>
Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Brandon Williams &lt;bmwill@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>attr: support quoting pathname patterns in C style</title>
<updated>2017-02-01T21:46:52Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2017-01-28T02:01:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=860a74d9d909002b16c50b58050908756065125d'/>
<id>urn:sha1:860a74d9d909002b16c50b58050908756065125d</id>
<content type='text'>
Full pattern must be quoted. So 'pat"t"ern attr' will give exactly
'pat"t"ern', not 'pattern'. Also clarify that leading whitespaces are
not part of the pattern and document comment syntax.

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: Stefan Beller &lt;sbeller@google.com&gt;
Signed-off-by: Brandon Williams &lt;bmwill@google.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>docs: warn about possible '=' in clean/smudge filter process values</title>
<updated>2016-12-06T19:29:52Z</updated>
<author>
<name>Lars Schneider</name>
<email>larsxschneider@gmail.com</email>
</author>
<published>2016-12-03T19:45:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=c6b0831c9c1718b552872953b4949cef7d4726fe'/>
<id>urn:sha1:c6b0831c9c1718b552872953b4949cef7d4726fe</id>
<content type='text'>
A pathname value in a clean/smudge filter process "key=value" pair can
contain the '=' character (introduced in edcc858). Make the user aware
of this issue in the docs, add a corresponding test case, and fix the
issue in filter process value parser of the example implementation in
contrib.

Signed-off-by: Lars Schneider &lt;larsxschneider@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>contrib/long-running-filter: add long running filter example</title>
<updated>2016-10-17T18:45:52Z</updated>
<author>
<name>Lars Schneider</name>
<email>larsxschneider@gmail.com</email>
</author>
<published>2016-10-16T23:20:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0f71fa273fc6c352a266894f1f757c5950230d9b'/>
<id>urn:sha1:0f71fa273fc6c352a266894f1f757c5950230d9b</id>
<content type='text'>
Add a simple pass-thru filter as example implementation for the Git
filter protocol version 2. See Documentation/gitattributes.txt, section
"Filter Protocol" for more info.

Signed-off-by: Lars Schneider &lt;larsxschneider@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>convert: add filter.&lt;driver&gt;.process option</title>
<updated>2016-10-17T18:45:52Z</updated>
<author>
<name>Lars Schneider</name>
<email>larsxschneider@gmail.com</email>
</author>
<published>2016-10-16T23:20:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=edcc85814c87ebd7f3b1b7d3979fac3dfb84d308'/>
<id>urn:sha1:edcc85814c87ebd7f3b1b7d3979fac3dfb84d308</id>
<content type='text'>
Git's clean/smudge mechanism invokes an external filter process for
every single blob that is affected by a filter. If Git filters a lot of
blobs then the startup time of the external filter processes can become
a significant part of the overall Git execution time.

In a preliminary performance test this developer used a clean/smudge
filter written in golang to filter 12,000 files. This process took 364s
with the existing filter mechanism and 5s with the new mechanism. See
details here: https://github.com/github/git-lfs/pull/1382

This patch adds the `filter.&lt;driver&gt;.process` string option which, if
used, keeps the external filter process running and processes all blobs
with the packet format (pkt-line) based protocol over standard input and
standard output. The full protocol is explained in detail in
`Documentation/gitattributes.txt`.

A few key decisions:

* The long running filter process is referred to as filter protocol
  version 2 because the existing single shot filter invocation is
  considered version 1.
* Git sends a welcome message and expects a response right after the
  external filter process has started. This ensures that Git will not
  hang if a version 1 filter is incorrectly used with the
  filter.&lt;driver&gt;.process option for version 2 filters. In addition,
  Git can detect this kind of error and warn the user.
* The status of a filter operation (e.g. "success" or "error) is set
  before the actual response and (if necessary!) re-set after the
  response. The advantage of this two step status response is that if
  the filter detects an error early, then the filter can communicate
  this and Git does not even need to create structures to read the
  response.
* All status responses are pkt-line lists terminated with a flush
  packet. This allows us to send other status fields with the same
  protocol in the future.

Helped-by: Martin-Louis Bright &lt;mlbright@gmail.com&gt;
Reviewed-by: Jakub Narebski &lt;jnareb@gmail.com&gt;
Signed-off-by: Lars Schneider &lt;larsxschneider@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
