Johannes Schindelin <johannes.schindelin@xxxxxx> writes: > -static int has_unstaged_changes(const char *prefix) > +static int has_unstaged_changes(void) > { > struct rev_info rev_info; > int result; > > - init_revisions(&rev_info, prefix); > + init_revisions(&rev_info, NULL); > DIFF_OPT_SET(&rev_info.diffopt, IGNORE_SUBMODULES); > DIFF_OPT_SET(&rev_info.diffopt, QUICK); > diff_setup_done(&rev_info.diffopt); > @@ -344,7 +344,7 @@ static int has_unstaged_changes(const char *prefix) > /** > * Returns 1 if there are uncommitted changes, 0 otherwise. > */ > -static int has_uncommitted_changes(const char *prefix) > +static int has_uncommitted_changes(void) > { > struct rev_info rev_info; > int result; > @@ -352,7 +352,7 @@ static int has_uncommitted_changes(const char *prefix) > if (is_cache_unborn()) > return 0; > > - init_revisions(&rev_info, prefix); > + init_revisions(&rev_info, NULL); I agree these are good changes. The prefix being ignored is a mere accident and a time-bomb waiting to go off. As you mentioned in the log message, we do not even want to pass a pathspec to limit the "is there anything modified" check, which may be affected with prefix, but we want a full-tree diff no matter where we started in these two functions. Good.