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>maint
parent
71b9979bc7
commit
a57114c818
|
@ -14,20 +14,10 @@ static int diff_tree_commit_sha1(const unsigned char *sha1)
|
||||||
return log_tree_commit(&log_tree_opt, commit);
|
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];
|
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)) {
|
if (isspace(line[40]) && !get_sha1_hex(line+41, sha1)) {
|
||||||
/* Graft the fake parents locally to the commit */
|
/* Graft the fake parents locally to the commit */
|
||||||
int pos = 41;
|
int pos = 41;
|
||||||
|
@ -52,6 +42,23 @@ static int diff_tree_stdin(char *line)
|
||||||
return log_tree_commit(&log_tree_opt, commit);
|
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[] =
|
static const char diff_tree_usage[] =
|
||||||
"git diff-tree [--stdin] [-m] [-c] [--cc] [-s] [-v] [--pretty] [-t] [-r] [--root] "
|
"git diff-tree [--stdin] [-m] [-c] [--cc] [-s] [-v] [--pretty] [-t] [-r] [--root] "
|
||||||
"[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]\n"
|
"[<common diff options>] <tree-ish> [<tree-ish>] [<path>...]\n"
|
||||||
|
|
Loading…
Reference in New Issue