mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
builtin: introduce diff-pairs command
Through git-diff(1), a single diff can be generated from a pair of blob revisions directly. Unfortunately, there is not a mechanism to compute batches of specific file pair diffs in a single process. Such a feature is particularly useful on the server-side where diffing between a large set of changes is not feasible all at once due to timeout concerns. To facilitate this, introduce git-diff-pairs(1) which acts as a backend passing its NUL-terminated raw diff format input from stdin through diff machinery to produce various forms of output such as patch or raw. The raw format was originally designed as an interchange format and represents the contents of the diff_queued_diff list making it possible to break the diff pipeline into separate stages. For example, git-diff-tree(1) can be used as a frontend to compute file pairs to queue and feed its raw output to git-diff-pairs(1) to compute patches. With this, batches of diffs can be progressively generated without having to recompute renames or retrieve object context. Something like the following: git diff-tree -r -z -M $old $new | git diff-pairs -p -z should generate the same output as `git diff-tree -p -M`. Furthermore, each line of raw diff formatted input can also be individually fed to a separate git-diff-pairs(1) process and still produce the same output. Based-on-patch-by: Jeff King <peff@peff.net> Signed-off-by: Justin Tobler <jltobler@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
c8a8e04099
commit
5bd10b2adc
@@ -153,6 +153,7 @@ int cmd_diagnose(int argc, const char **argv, const char *prefix, struct reposit
|
||||
int cmd_diff_files(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_diff_index(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_diff(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_diff_pairs(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_diff_tree(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_difftool(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
int cmd_env__helper(int argc, const char **argv, const char *prefix, struct repository *repo);
|
||||
|
||||
Reference in New Issue
Block a user