Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
git-diff-cache: add "-m" flag to match all non-checked-out files with the index.
author
Linus Torvalds
<torvalds@ppc970.osdl.org>
Thu, 5 May 2005 16:31:09 +0000
(09:31 -0700)
committer
Linus Torvalds
<torvalds@ppc970.osdl.org>
Thu, 5 May 2005 16:31:09 +0000
(09:31 -0700)
This allows you to work with a directory tree that isn't fully populated,
without making diff-cache say that all the files are gone.
diff-cache.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
8ae0a8c
)
diff --git
a/diff-cache.c
b/diff-cache.c
index 94c5f6654bdee04cf56adeb77b22ae998fdce678..ef522cd23387aa0f4264f08e346ffdd1616c4f59 100644
(file)
--- a/
diff-cache.c
+++ b/
diff-cache.c
@@
-3,6
+3,7
@@
static int cached_only = 0;
static int generate_patch = 0;
static int cached_only = 0;
static int generate_patch = 0;
+static int match_nonexisting = 0;
static int line_termination = '\n';
/* A file entry went away or appeared */
static int line_termination = '\n';
/* A file entry went away or appeared */
@@
-24,8
+25,14
@@
static int get_stat_data(struct cache_entry *ce, unsigned char **sha1p, unsigned
static unsigned char no_sha1[20];
int changed;
struct stat st;
static unsigned char no_sha1[20];
int changed;
struct stat st;
- if (lstat(ce->name, &st) < 0)
+ if (lstat(ce->name, &st) < 0) {
+ if (errno == ENOENT && match_nonexisting) {
+ *sha1p = sha1;
+ *modep = mode;
+ return 0;
+ }
return -1;
return -1;
+ }
changed = cache_match_stat(ce, &st);
if (changed) {
mode = create_ce_mode(st.st_mode);
changed = cache_match_stat(ce, &st);
if (changed) {
mode = create_ce_mode(st.st_mode);
@@
-143,7
+150,7
@@
static void mark_merge_entries(void)
}
static char *diff_cache_usage =
}
static char *diff_cache_usage =
-"diff-cache [-r] [-z] [-p] [--cached] <tree sha1>";
+"diff-cache [-r] [-z] [-p] [-
i] [-
-cached] <tree sha1>";
int main(int argc, char **argv)
{
int main(int argc, char **argv)
{
@@
-168,6
+175,10
@@
int main(int argc, char **argv)
line_termination = '\0';
continue;
}
line_termination = '\0';
continue;
}
+ if (!strcmp(arg, "-m")) {
+ match_nonexisting = 1;
+ continue;
+ }
if (!strcmp(arg, "--cached")) {
cached_only = 1;
continue;
if (!strcmp(arg, "--cached")) {
cached_only = 1;
continue;