static int pickaxe_opts = 0;
static int diff_break_opt = -1;
static const char *orderfile = NULL;
+static const char *diff_filter = NULL;
/* A file entry went away or appeared */
static void show_file(const char *prefix, struct cache_entry *ce, unsigned char *sha1, unsigned int mode)
void *tree;
unsigned long size;
int ret;
+ int allow_options = 1;
int i;
read_cache();
for (i = 1; i < argc; i++) {
const char *arg = argv[i];
- if (*arg != '-') {
+ if (!allow_options || *arg != '-') {
if (tree_name) {
pathspec = argv + i;
break;
continue;
}
+ if (!strcmp(arg, "--")) {
+ allow_options = 0;
+ continue;
+ }
if (!strcmp(arg, "-r")) {
/* We accept the -r flag just to look like git-diff-tree */
continue;
pickaxe = arg + 2;
continue;
}
+ if (!strncmp(arg, "--diff-filter=", 14)) {
+ diff_filter = arg + 14;
+ continue;
+ }
if (!strncmp(arg, "-O", 2)) {
orderfile = arg + 2;
continue;
detect_rename, diff_score_opt,
pickaxe, pickaxe_opts,
diff_break_opt,
- orderfile);
- diff_flush(diff_output_format, 1);
+ orderfile, diff_filter);
+ diff_flush(diff_output_format);
return ret;
}