diff options
author | Karl Hasselström <kha@treskal.com> | 2008-08-08 22:48:23 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-08-11 01:35:47 -0700 |
commit | a57114c81832a70efda4991131b9b99d1b112ea3 (patch) | |
tree | 1f536ad1dc8f3c228535b60630cb644cc5773d37 /builtin-diff-tree.c | |
parent | 71b9979bc74b66c1cf961d5c74de5c0b3cbf00a4 (diff) | |
download | git-a57114c81832a70efda4991131b9b99d1b112ea3.tar.gz git-a57114c81832a70efda4991131b9b99d1b112ea3.tar.xz |
Refactoring: Split up diff_tree_stdin
Into a first half that determines what operation to do, and a second
half that does it.
Currently the only operation is diffing one or more commits, but a
later patch will add diffing of trees, at which point this refactoring
will pay off.
Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-diff-tree.c')
-rw-r--r-- | builtin-diff-tree.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/builtin-diff-tree.c b/builtin-diff-tree.c index 415cb1612..ebbd6317c 100644 --- a/builtin-diff-tree.c +++ b/builtin-diff-tree.c @@ -14,20 +14,10 @@ static int diff_tree_commit_sha1(const unsigned char *sha1) return log_tree_commit(&log_tree_opt, commit); } -static int diff_tree_stdin(char *line) +/* Diff one or more commits. */ +static int stdin_diff_commit(struct commit *commit, char *line, int len) { - int len = strlen(line); unsigned char sha1[20]; - struct commit *commit; - - if (!len || line[len-1] != '\n') - return -1; - line[len-1] = 0; - if (get_sha1_hex(line, sha1)) - return -1; - commit = lookup_commit(sha1); - if (!commit || parse_commit(commit)) - return -1; if (isspace(line[40]) && !get_sha1_hex(line+41, sha1)) { /* Graft the fake parents locally to the commit */ int pos = 41; @@ -52,6 +42,23 @@ static int diff_tree_stdin(char *line) return log_tree_commit(&log_tree_opt, commit); } +static int diff_tree_stdin(char *line) +{ + int len = strlen(line); + unsigned char sha1[20]; + struct commit *commit; + + if (!len || line[len-1] != '\n') + return -1; + line[len-1] = 0; + if (get_sha1_hex(line, sha1)) + return -1; + commit = lookup_commit(sha1); + if (!commit || parse_commit(commit)) + return -1; + return stdin_diff_commit(commit, line, len); +} + static const char diff_tree_usage[] = "git diff-tree [--stdin] [-m] [-c] [--cc] [-s] [-v] [--pretty] [-t] [-r] [--root] " "[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]\n" |