All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Karl Hasselström" <kha@treskal.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: [PATCH 1/3] Refactoring: Split up diff_tree_stdin
Date: Fri, 08 Aug 2008 22:48:23 +0200	[thread overview]
Message-ID: <20080808204823.7744.57203.stgit@yoghurt> (raw)
In-Reply-To: <20080808204348.7744.46006.stgit@yoghurt>

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>

---

 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 415cb16..ebbd631 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"

  reply	other threads:[~2008-08-08 20:49 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-05 16:48 [BUG] git diff-tree --stdin doesn't accept two trees Karl Hasselström
2008-08-05 20:07 ` Junio C Hamano
2008-08-06  5:32   ` [PATCH] fix diff-tree --stdin documentation Junio C Hamano
2008-08-06 10:04     ` Karl Hasselström
2008-08-06 11:53   ` [BUG] git diff-tree --stdin doesn't accept two trees Karl Hasselström
2008-08-06 15:31     ` Junio C Hamano
2008-08-08 20:48       ` [PATCH 0/3] Teach git diff-tree --stdin to diff trees Karl Hasselström
2008-08-08 20:48         ` Karl Hasselström [this message]
2008-08-08 20:48         ` [PATCH 2/3] " Karl Hasselström
2008-08-08 21:22           ` Junio C Hamano
2008-08-09  9:56             ` Karl Hasselström
2008-08-09 12:11               ` [PATCH 2/3 v2] " Karl Hasselström
2008-08-09 20:41                 ` Junio C Hamano
2008-08-10 15:38                   ` Karl Hasselström
2008-08-10 16:12                     ` [PATCH v3 0/4] " Karl Hasselström
2008-08-10 16:12                       ` [PATCH v3 1/4] Refactoring: Split up diff_tree_stdin Karl Hasselström
2008-08-10 16:12                       ` [PATCH v3 2/4] diff-tree: Note that the commit ID is printed with --stdin Karl Hasselström
2008-08-10 16:12                       ` [PATCH v3 3/4] Teach git diff-tree --stdin to diff trees Karl Hasselström
2008-08-10 16:13                       ` [PATCH v3 4/4] Add test for diff-tree --stdin with two trees Karl Hasselström
2008-08-10 17:04                       ` [PATCH v3 0/4] Teach git diff-tree --stdin to diff trees Karl Hasselström
2008-08-09 20:07               ` [PATCH 2/3] " Junio C Hamano
2008-08-09 20:36                 ` Karl Hasselström
2008-08-08 21:45           ` Jeff King
2008-08-09 10:00             ` Karl Hasselström
2008-08-11 22:28               ` Jeff King
2008-08-08 20:48         ` [PATCH 3/3] Add test for diff-tree --stdin with two trees Karl Hasselström

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080808204823.7744.57203.stgit@yoghurt \
    --to=kha@treskal.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.