git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v5 00/15] Git filter protocol

From
larsxschneider@gmail.com <larsxschneider@gmail.com>
Date
Aug 10, 2016, 13:03 UTC
Message-ID
<20160810130411.12419-1-larsxschneider@gmail.com>
In-Reply-To
<20160803164225.46355-1-larsxschneider@gmail.com/>
From: Lars Schneider <larsxschneider@gmail.com>
Hi all,
## Notable changes since v4
* drop the shutdown capability
* add error-all response to signal that the filter does not want to filter anymore
* extend init sequence to negotiate version number and capabilities
  (plus detect wrongly configured version 1 filters)
* improve status response format according to Peff's suggestions
* fix Git for Window support
## Patches
* 01-09: Make pktline ready to be used for filters.
* 01 - @Junio: I know you told me twice that you don't like this patch but
               please look closely: the patch does not add a new interface to
               pktline. It is a private functions used 03.
* 08 - This patch changes the pktline interface as it renames packet_write() to
       packet_write_fmt() as suggested by Junio.
       (This patch is not required for the the series and could be dropped)
* 10-13: Prepare convert code.
*    14: Main contribution.
*    15: Proposed fix to make the long running filters work on Windows. See
         the discussion here:
         https://github.com/git-for-windows/git/issues/770#issuecomment-238361829
         (This patch is not required in Git core and could be dropped)
## Jakub
* http://public-inbox.org/git/607c07fe-5b6f-fd67-13e1-705020c267ee%40gmail.com/
  * make Git start the handshake with the filter to detect one-shot filter
    mis configured as process-filter
  * filter driver refusing to filter further
* http://public-inbox.org/git/e8b550ed-1765-764f-49e5-72e5a609d936%40gmail.com/
  * improve commit messages
* http://public-inbox.org/git/0b7d7d96-dfdc-54a4-2c24-2aead6743ae1%40gmail.com/
  * handle sigpipe correctly
  * use cp instead of cat where appropriate
  * explicitly name the test with a binary file (containing \0)
## Junio
* http://public-inbox.org/git/xmqq8twd8uld.fsf%40gitster.mtv.corp.google.com/
  * shorten variable names
  * do not initialize statics explicitly to 0
  * no // comments
  * replace "ret" with "!error"
* http://public-inbox.org/git/CAPc5daV3Tke4qHjtpri%3D6QCRaOax_K3uYhpFzRcd271%3DGHj1%2BQ%40mail.gmail.com/
  * rename packet_write() to packet_write_fmt()
## Peff
* http://public-inbox.org/git/20160803224619.bwtbvmslhuicx2qi%40sigill.intra.peff.net/
  * change capabilities format
* http://public-inbox.org/git/20160808150255.2otm3z5fluimpiqw%40sigill.intra.peff.net/
  * change status response format
## Eric
* http://public-inbox.org/git/20160805185559.GB463%40starla/
  * die if larger-than-4GB files are processed on 32-bit
Thanks a lot for the valuable reviews!

Best, Lars

You can find a branch with the source on GitHub here: https://github.com/larsxschneider/git/tree/protocol-filter/v5

I also rebased the series on top of the latest Git for Windows master: https://github.com/larsxschneider/git/tree/protocol-filter/v5-win

Lars Schneider (15):
  pkt-line: extract set_packet_header()
  pkt-line: call packet_trace() only if a packet is actually send
  pkt-line: add `gentle` parameter to format_packet()
  pkt-line: add packet_write_gently()
  pkt-line: add packet_write_gently_fmt()
  pkt-line: add packet_flush_gently()
  pkt-line: add functions to read/write flush terminated packet streams
  pkt-line: rename packet_write() to packet_write_fmt()
  pack-protocol: fix maximum pkt-line size
  convert: quote filter names in error messages
  convert: modernize tests
  convert: generate large test files only once
  convert: make apply_filter() adhere to standard Git error handling
  convert: add filter.<driver>.process option
  read-cache: make sure file handles are not inherited by child
    processes
 Documentation/gitattributes.txt             | 139 +++++++-
 Documentation/technical/protocol-common.txt |   6 +-
 builtin/archive.c                           |   4 +-
 builtin/receive-pack.c                      |   4 +-
 builtin/remote-ext.c                        |   4 +-
 builtin/upload-archive.c                    |   4 +-
 connect.c                                   |   2 +-
 convert.c                                   | 367 ++++++++++++++++++---
 daemon.c                                    |   2 +-
 http-backend.c                              |   2 +-
 pkt-line.c                                  | 155 ++++++++-
 pkt-line.h                                  |  12 +-
 read-cache.c                                |   2 +-
 shallow.c                                   |   2 +-
 t/t0021-conversion.sh                       | 482 +++++++++++++++++++++++++---
 t/t0021/rot13-filter.pl                     | 176 ++++++++++
 unpack-trees.c                              |   1 +
 upload-pack.c                               |  30 +-
 18 files changed, 1267 insertions(+), 127 deletions(-)
 create mode 100755 t/t0021/rot13-filter.pl

-- 2.9.2

Next: larsxschneider@gmail.com
Message 1 of 50 in “Git filter protocol”
  1. 00/15 Git filter protocollarsxschneider@gmail.com, Aug 10, 2016
  2. 14/15 convert: add filter.<driver>.process optionlarsxschneider@gmail.com, Aug 10, 2016
  3. Stefan BellerAug 12, 2016
  4. Jeff KingAug 12, 2016
  5. Stefan BellerAug 12, 2016
  6. Lars SchneiderAug 12, 2016
  7. Junio C HamanoAug 12, 2016
  8. Lars SchneiderAug 12, 2016
  9. Junio C HamanoAug 12, 2016
  10. Lars SchneiderAug 12, 2016
  11. Stefan BellerAug 12, 2016
  12. Lars SchneiderAug 12, 2016
  13. 08/15 pkt-line: rename packet_write() to packet_write_fmt()larsxschneider@gmail.com, Aug 10, 2016
  14. 05/15 pkt-line: add packet_write_gently_fmt()larsxschneider@gmail.com, Aug 10, 2016
  15. Jeff KingAug 10, 2016
  16. Junio C HamanoAug 10, 2016
  17. Lars SchneiderAug 10, 2016
  18. Junio C HamanoAug 10, 2016
  19. Lars SchneiderAug 10, 2016
  20. Jeff KingAug 10, 2016
  21. 15/15 read-cache: make sure file handles are not inherited by child processeslarsxschneider@gmail.com, Aug 10, 2016
  22. Johannes SchindelinAug 18, 2016
  23. 01/15 pkt-line: extract set_packet_header()larsxschneider@gmail.com, Aug 10, 2016
  24. 09/15 pack-protocol: fix maximum pkt-line sizelarsxschneider@gmail.com, Aug 10, 2016
  25. 06/15 pkt-line: add packet_flush_gently()larsxschneider@gmail.com, Aug 10, 2016
  26. 10/15 convert: quote filter names in error messageslarsxschneider@gmail.com, Aug 10, 2016
  27. 07/15 pkt-line: add functions to read/write flush terminated packet streamslarsxschneider@gmail.com, Aug 10, 2016
  28. 12/15 convert: generate large test files only oncelarsxschneider@gmail.com, Aug 10, 2016
  29. 11/15 convert: modernize testslarsxschneider@gmail.com, Aug 10, 2016
  30. 04/15 pkt-line: add packet_write_gently()larsxschneider@gmail.com, Aug 10, 2016
  31. Jeff KingAug 10, 2016
  32. Lars SchneiderAug 10, 2016
  33. Jeff KingAug 10, 2016
  34. Junio C HamanoAug 10, 2016
  35. Lars SchneiderAug 10, 2016
  36. Junio C HamanoAug 10, 2016
  37. Lars SchneiderAug 10, 2016
  38. 02/15 pkt-line: call packet_trace() only if a packet is actually sendlarsxschneider@gmail.com, Aug 10, 2016
  39. Jeff KingAug 10, 2016
  40. Lars SchneiderAug 10, 2016
  41. Jeff KingAug 10, 2016
  42. Lars SchneiderAug 10, 2016
  43. Jeff KingAug 10, 2016
  44. 13/15 convert: make apply_filter() adhere to standard Git error handlinglarsxschneider@gmail.com, Aug 10, 2016
  45. 03/15 pkt-line: add `gentle` parameter to format_packet()larsxschneider@gmail.com, Aug 10, 2016
  46. Jeff KingAug 10, 2016
  47. Lars SchneiderAug 10, 2016
  48. Jeff KingAug 10, 2016
  49. Lars SchneiderAug 10, 2016
  50. Jeff KingAug 10, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.