mirror of
https://github.com/git/git
synced 2024-10-30 04:01:21 +00:00
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>
This commit is contained in:
parent
71b9979bc7
commit
a57114c818
1 changed files with 19 additions and 12 deletions
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue