* [PATCH 2/2] Simplify "external diff from attributes" logic
@ 2007-07-07 17:21 Johannes Schindelin
0 siblings, 0 replies; only message in thread
From: Johannes Schindelin @ 2007-07-07 17:21 UTC (permalink / raw)
To: git, gitster
Since we already store the given diff attribute in the filespec,
we can just as well reuse that, instead of going through the whole
attributes checking process again, when checking for an external
diff program.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
diff.c | 39 +++++++++++++++++----------------------
1 files changed, 17 insertions(+), 22 deletions(-)
diff --git a/diff.c b/diff.c
index a5444df..121524e 100644
--- a/diff.c
+++ b/diff.c
@@ -1195,6 +1195,20 @@ int diff_filespec_is_binary(struct diff_filespec *one)
return one->is_binary;
}
+static const char *external_diff_attr(struct diff_filespec *one)
+{
+ diff_filespec_check_attr(one);
+ if (one->diff_attr) {
+ struct ll_diff_driver *drv;
+
+ read_config_if_needed();
+ for (drv = user_diff; drv; drv = drv->next)
+ if (!strcmp(drv->name, one->diff_attr))
+ return drv->cmd;
+ }
+ return NULL;
+}
+
static const char *funcname_pattern(const char *ident)
{
struct funcname_pattern *pp;
@@ -1860,27 +1874,6 @@ static void run_external_diff(const char *pgm,
}
}
-static const char *external_diff_attr(const char *name)
-{
- struct git_attr_check attr_diff_check;
-
- setup_diff_attr_check(&attr_diff_check);
- if (!git_checkattr(name, 1, &attr_diff_check)) {
- const char *value = attr_diff_check.value;
- if (!ATTR_TRUE(value) &&
- !ATTR_FALSE(value) &&
- !ATTR_UNSET(value)) {
- struct ll_diff_driver *drv;
-
- read_config_if_needed();
- for (drv = user_diff; drv; drv = drv->next)
- if (!strcmp(drv->name, value))
- return drv->cmd;
- }
- }
- return NULL;
-}
-
static void run_diff_cmd(const char *pgm,
const char *name,
const char *other,
@@ -1893,7 +1886,9 @@ static void run_diff_cmd(const char *pgm,
if (!o->allow_external)
pgm = NULL;
else {
- const char *cmd = external_diff_attr(name);
+ const char *cmd = external_diff_attr(one);
+ if (!cmd)
+ cmd = external_diff_attr(two);
if (cmd)
pgm = cmd;
}
--
1.5.3.rc0.2712.g125b7f
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2007-07-07 17:28 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-07 17:21 [PATCH 2/2] Simplify "external diff from attributes" logic Johannes Schindelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).