Re: [PATCH v3 0/3] batch blob diff generation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Justin

On 25/02/2025 23:39, Justin Tobler wrote:

Changes since V2:

     - Pathspecs are not supported and thus rejected when provided as
       arguments. It should be possible in a future series to add support
       though.

     - Tree objects present in `diff-pairs` input are rejected. Support
       for tree objects could be added in the future, but for now they
       are rejected to enable to future support in a backwards compatible
       manner.

     - The -z option is required by git-diff-pairs(1). The NUL-delimited
       raw diff format is the only accepted form of input. Consequently,
       NUL-delimited output is the only option in the `--raw` mode.

     - git-diff-pairs(1) defaults to patch output instead of raw output.
       This better fits the intended usecase of the command.

     - A NUL-byte is now always used as the delimiter between batches of
       file pair diffs when queued diffs are explicitly computed by
       writing a NUL-byte on stdin.

     - Several other small cleanups and fixes along with documentation
       changes.

This addresses all my comments on the previous version, thank you. I do wonder if tying the input line termination to the output line termination is a good idea for a program that aims to to transform one diff format into another. Having said that this series is aimed at machine consumption of the output so it probably isn't a big problem.

I also think we might want to massage the output in the tests so that we're not running test_cmp on files containing NUL bytes. Using

    git diff-tree -z ... | tr '\0' Q >actual

would get rid of the NULs but does not improve the readability of the raw diffs that much as everything is still on a single line. Using '\n' instead of 'Q' would give us mulit-line output but we would lose confidence that the original output was actually NUL terminated.

Best Wishes

Phillip


Changes since V1:

     - Changed from git-diff-blob(1) to git-diff-pairs(1) based on a
       previously submitted series.

     - Instead of each line containing a pair of blob revisions, the raw
       diff format is used as input which already has diff status and
       object context embedded.

-Justin

[1]: <20161201204042.6yslbyrg7l6ghhww@xxxxxxxxxxxxxxxxxxxxx>

Justin Tobler (3):
   diff: return diff_filepair from diff queue helpers
   builtin: introduce diff-pairs command
   builtin/diff-pairs: allow explicit diff queue flush

  .gitignore                        |   1 +
  Documentation/git-diff-pairs.adoc |  60 +++++++++
  Documentation/meson.build         |   1 +
  Makefile                          |   1 +
  builtin.h                         |   1 +
  builtin/diff-pairs.c              | 206 ++++++++++++++++++++++++++++++
  command-list.txt                  |   1 +
  diff.c                            |  70 +++++++---
  diff.h                            |  25 ++++
  git.c                             |   1 +
  meson.build                       |   1 +
  t/meson.build                     |   1 +
  t/t4070-diff-pairs.sh             |  83 ++++++++++++
  13 files changed, 432 insertions(+), 20 deletions(-)
  create mode 100644 Documentation/git-diff-pairs.adoc
  create mode 100644 builtin/diff-pairs.c
  create mode 100755 t/t4070-diff-pairs.sh






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux