]> git.ipfire.org Git - thirdparty/git.git/commit
diff: --{rotate,skip}-to=<path>
authorJunio C Hamano <gitster@pobox.com>
Thu, 11 Feb 2021 19:57:50 +0000 (11:57 -0800)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Feb 2021 17:30:42 +0000 (09:30 -0800)
commit1eb4136ac2a24764257567b930535fcece01719f
tree7a8abfa8d2beabee2f3260c001eff7a7335c5166
parentc6102b758572c7515f606b2423dfe38934fe6764
diff: --{rotate,skip}-to=<path>

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 <gitster@pobox.com>
12 files changed:
Documentation/diff-options.txt
Documentation/gitdiffcore.txt
Makefile
builtin/diff-files.c
builtin/diff-index.c
builtin/diff-tree.c
builtin/diff.c
diff.c
diff.h
diffcore-rotate.c [new file with mode: 0644]
diffcore.h
t/t4056-diff-order.sh