Fix two --diff-filter bugs
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v3 Latest3 patches 0 repliesNew
- v23 patches 2 repliesSuperseded
- v12 patches 8 repliesSuperseded
Changes in v3 from the cover letter
* Augmented the commit message to explain why we do not need to be careful about setting only the used bits of options->filter.
Patches in v3 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/3 | docs(diff): lose incorrect claim about `diff-files --diff-filter=A`Documentation/ | +2 | 0 replies | |
| 2/3 | diff.c: move the diff filter bits definitions up a bitdiff.c | +37 | 0 replies | |
| 3/3 | diff-filter: be more careful when looking for negative bitsdiff.c diff.h t/ | +21 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v3 yet.
Cover letter [PATCH v3 0/3] Fix two --diff-filter bugs
A colleague noticed that git diff --diff-filter=Dr behaved in an unexpected way. The expectation was that the command shows only deleted files, but not renamed ones.
Turns out that Git's code is incorrect and turns on all diff-filter flags because the argument contains a lower-case letter. But since it starts with an upper-case letter, we should actually not turn all those flags on.
While working on the fix, I realized that the documentation of the --diff-filter flag was not updated when intent-to-add files were no longer shown as modified by git diff, but as added.
Changes since v2:
* Augmented the commit message to explain why we do not need to be careful about setting only the used bits of options->filter.
Changes since v1:
* Now even the case of multiple --diff-filter options is handled.
Johannes Schindelin (3):
docs(diff): lose incorrect claim about diff-files --diff-filter=A diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
Documentation/diff-options.txt | 7 +-- diff.c | 97 +++++++++++++++------------------- diff.h | 2 +- t/t4202-log.sh | 13 +++++ 4 files changed, 60 insertions(+), 59 deletions(-)
base-commit: 89bece5c8c96f0b962cfc89e63f82d603fd60bed
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1127%2Fdscho%2Fdiff-filter-buglets-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1127/dscho/diff-filter-buglets-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1127
Range-diff vs v2:
1: 704bb2ba18e = 1: 704bb2ba18e docs(diff): lose incorrect claim about `diff-files --diff-filter=A` 2: 19c7223e265 = 2: 19c7223e265 diff.c: move the diff filter bits definitions up a bit 3: b041d2b7a3b ! 3: f1f027ad61b diff-filter: be more careful when looking for negative bits
@@ Commit message
special-case the "only exclude filters were specified" case after parsing the options altogether.
+ Note: The code replaced by this commit took pains to avoid setting any
+ unused bits of options->filter. That was unnecessary, though, as all
+ accesses happen via the filter_bit_tst() function using specific bits,
+ and setting the unused bits has no effect. Therefore, we can simplify
+ the code by using ~0 (or in this instance, ~<unwanted-bit>).
+
## diff.c ##
Signature · 1 line
gitgitgadget