mirror of
https://github.com/git/git
synced 2024-08-27 11:39:22 +00:00
difftool.c: learn a new way start at specified file
`git difftool` only allow us to select file to view in turn. If there is a commit with many files and we exit in the middle, we will have to traverse list again to get the file diff which we want to see. Therefore,teach the command an option `--skip-to=<path>` to allow the user to say that diffs for earlier paths are not interesting (because they were already seen in an earlier session) and start this session with the named path. Signed-off-by: ZheNing Hu <adlternative@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
1eb4136ac2
commit
1c881026a1
|
@ -34,6 +34,14 @@ OPTIONS
|
||||||
This is the default behaviour; the option is provided to
|
This is the default behaviour; the option is provided to
|
||||||
override any configuration settings.
|
override any configuration settings.
|
||||||
|
|
||||||
|
--rotate-to=<file>::
|
||||||
|
Start showing the diff for the given path,
|
||||||
|
the paths before it will move to end and output.
|
||||||
|
|
||||||
|
--skip-to=<file>::
|
||||||
|
Start showing the diff for the given path, skipping all
|
||||||
|
the paths before it.
|
||||||
|
|
||||||
-t <tool>::
|
-t <tool>::
|
||||||
--tool=<tool>::
|
--tool=<tool>::
|
||||||
Use the diff tool specified by <tool>. Valid values include
|
Use the diff tool specified by <tool>. Valid values include
|
||||||
|
|
|
@ -762,4 +762,36 @@ test_expect_success 'difftool --gui, --tool and --extcmd are mutually exclusive'
|
||||||
test_must_fail git difftool --gui --tool=test-tool --extcmd=cat
|
test_must_fail git difftool --gui --tool=test-tool --extcmd=cat
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'difftool --rotate-to' '
|
||||||
|
difftool_test_setup &&
|
||||||
|
test_when_finished git reset --hard &&
|
||||||
|
echo 1 >1 &&
|
||||||
|
echo 2 >2 &&
|
||||||
|
echo 4 >4 &&
|
||||||
|
git add 1 2 4 &&
|
||||||
|
git commit -a -m "124" &&
|
||||||
|
git difftool --no-prompt --extcmd=cat --rotate-to="2" HEAD^ >output&&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
2
|
||||||
|
4
|
||||||
|
1
|
||||||
|
EOF
|
||||||
|
test_cmp output expect
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'difftool --skip-to' '
|
||||||
|
difftool_test_setup &&
|
||||||
|
test_when_finished git reset --hard &&
|
||||||
|
git difftool --no-prompt --extcmd=cat --skip-to="2" HEAD^ >output &&
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
2
|
||||||
|
4
|
||||||
|
EOF
|
||||||
|
test_cmp output expect
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'difftool --rotate/skip-to error condition' '
|
||||||
|
test_must_fail git difftool --no-prompt --extcmd=cat --rotate-to="3" HEAD^ &&
|
||||||
|
test_must_fail git difftool --no-prompt --extcmd=cat --skip-to="3" HEAD^
|
||||||
|
'
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue