* [PATCH] Only use core 'git diff' if both paths are within the repo.
@ 2011-05-23 4:44 Anthony Foiani
0 siblings, 0 replies; only message in thread
From: Anthony Foiani @ 2011-05-23 4:44 UTC (permalink / raw)
To: git
The core 'git diff' engine can only handle pathspecs that are within a
given repo. Make sure that we don't invoke it unless both pathspec
values are in the repo.
Signed-off-by: Anthony Foiani <anthony.foiani@gmail.com>
---
diff-no-index.c | 39 ++++++++++++---------------------------
1 files changed, 12 insertions(+), 27 deletions(-)
diff --git a/diff-no-index.c b/diff-no-index.c
index 3172788..b651f6d 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -227,43 +227,28 @@ void diff_no_index(struct rev_info *revs,
/* If --no-index wasn't specified explicitly, check to see if
* we need to force it. */
if (!no_index) {
-
- /* The first pathspec is the "left hand side" */
- const char *lhs = (n_paths >= 1) ? argv[i] : NULL;
- const int lhs_in_repo = lhs && path_in_repo(lhs);
-
- /* And the second is the "right hand side" */
- const char *rhs = (n_paths >= 2) ? argv[i+1] : NULL;
- const int rhs_in_repo = rhs && path_in_repo(rhs);
-
- int force_no_index = 0;
-
if (nongit) {
warning("'git diff' outside a repo, forcing --no-index");
- force_no_index = 1;
}
else {
- if (lhs_in_repo || rhs_in_repo)
- return; /* Normal git diff, let core handle it. */
-
- const int lhs_untracked = (lhs && !lhs_in_repo);
- const int rhs_untracked = (rhs && !rhs_in_repo);
+ /* lhs = "left hand side", rhs = "right hand side" */
+ const char *lhs = (n_paths >= 1) ? argv[i] : NULL;
+ const char *rhs = (n_paths >= 2) ? argv[i+1] : NULL;
+ const int lhs_tracked = lhs && path_in_repo(lhs);
+ const int rhs_tracked = rhs && path_in_repo(rhs);
- if (lhs_untracked && rhs_untracked)
- warning("neither '%s' nor '%s' are tracked,"
- " forcing --no-index", lhs, rhs );
- else if (lhs_untracked)
+ if (lhs_tracked && rhs_tracked)
+ return; /* Normal git diff, let core handle it. */
+ else if (!lhs_tracked)
warning("'%s' is not tracked,"
" forcing --no-index", lhs );
- else if (rhs_untracked)
+ else if (!rhs_tracked)
warning("'%s' is not tracked,"
" forcing --no-index", rhs );
-
- force_no_index = lhs_untracked || rhs_untracked;
+ else
+ warning("neither '%s' nor '%s' are tracked,"
+ " forcing --no-index", lhs, rhs );
}
-
- if (!force_no_index) /* Impossible? */
- die("--no-index not set and not forced");
}
if (n_paths != 2) {
--
1.7.4.4
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2011-05-23 4:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-23 4:44 [PATCH] Only use core 'git diff' if both paths are within the repo Anthony Foiani
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).