diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 5 | ||||
-rwxr-xr-x | git-whatchanged.sh | 18 | ||||
-rw-r--r-- | rev-parse.c | 16 |
4 files changed, 28 insertions, 12 deletions
diff --git a/.gitignore b/.gitignore index 5382e74271..513f22eb1d 100644 --- a/.gitignore +++ b/.gitignore @@ -88,6 +88,7 @@ git-send-pack git-sh-setup git-shell git-shortlog +git-show git-show-branch git-show-index git-ssh-fetch @@ -125,7 +125,7 @@ SCRIPT_PYTHON = \ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ $(patsubst %.perl,%,$(SCRIPT_PERL)) \ $(patsubst %.py,%,$(SCRIPT_PYTHON)) \ - git-cherry-pick + git-cherry-pick git-show # The ones that do not have to link with lcrypto nor lz. SIMPLE_PROGRAMS = \ @@ -440,6 +440,9 @@ $(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py git-cherry-pick: git-revert cp $< $@ +git-show: git-whatchanged + cp $< $@ + # These can record GIT_VERSION git$X git.spec \ $(patsubst %.sh,%,$(SCRIPT_SH)) \ diff --git a/git-whatchanged.sh b/git-whatchanged.sh index d4f985b5eb..574fc3558e 100755 --- a/git-whatchanged.sh +++ b/git-whatchanged.sh @@ -5,14 +5,24 @@ SUBDIRECTORY_OK='Yes' . git-sh-setup diff_tree_flags=$(git-rev-parse --sq --no-revs --flags "$@") || exit +case "$0" in +*whatchanged) + count= + test -z "$diff_tree_flags" && + diff_tree_flags=$(git-repo-config --get whatchanged.difftree) + diff_tree_default_flags='-M --abbrev' ;; +*show) + count=-n1 + test -z "$diff_tree_flags" && + diff_tree_flags=$(git-repo-config --get show.difftree) + diff_tree_default_flags='--cc --always' ;; +esac test -z "$diff_tree_flags" && - diff_tree_flags=$(git-repo-config --get whatchanged.difftree) -test -z "$diff_tree_flags" && - diff_tree_flags='-M --abbrev' + diff_tree_flags="$diff_tree_default_flags" rev_list_args=$(git-rev-parse --sq --default HEAD --revs-only "$@") && diff_tree_args=$(git-rev-parse --sq --no-revs --no-flags "$@") && -eval "git-rev-list $rev_list_args" | +eval "git-rev-list $count $rev_list_args" | eval "git-diff-tree --stdin --pretty -r $diff_tree_flags $diff_tree_args" | LESS="$LESS -S" ${PAGER:-less} diff --git a/rev-parse.c b/rev-parse.c index 9cec33b8c0..b82f294a78 100644 --- a/rev-parse.c +++ b/rev-parse.c @@ -150,11 +150,14 @@ static void show_datestring(const char *flag, const char *datestr) show(buffer); } -static void show_file(const char *arg) +static int show_file(const char *arg) { show_default(); - if ((filter & (DO_NONFLAGS|DO_NOREV)) == (DO_NONFLAGS|DO_NOREV)) + if ((filter & (DO_NONFLAGS|DO_NOREV)) == (DO_NONFLAGS|DO_NOREV)) { show(arg); + return 1; + } + return 0; } int main(int argc, char **argv) @@ -329,14 +332,13 @@ int main(int argc, char **argv) show_rev(REVERSED, sha1, arg+1); continue; } + as_is = 1; + if (!show_file(arg)) + continue; if (verify) die("Needed a single revision"); - if ((filter & DO_REVS) && - (filter & DO_NONFLAGS) && /* !def && */ - lstat(arg, &st) < 0) + if (lstat(arg, &st) < 0) die("'%s': %s", arg, strerror(errno)); - as_is = 1; - show_file(arg); } show_default(); if (verify && revs_count != 1) |