Code

cherry is built-in, do not ship git-cherry.sh
authorJunio C Hamano <junkio@cox.net>
Sun, 5 Nov 2006 19:26:21 +0000 (11:26 -0800)
committerJunio C Hamano <junkio@cox.net>
Sun, 5 Nov 2006 19:26:21 +0000 (11:26 -0800)
Noticed by Rene; Makefile now has another maintainer's check
target to catch this kind of mistakes.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile
check-builtins.sh [new file with mode: 0755]
git-cherry.sh [deleted file]

index 7c3860a52e09210242b66c9f98999384da713be2..2af4eb31ce0c97722265b7925434ad9d8805b5ee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -932,3 +932,8 @@ check-docs::
                *) echo "no link: $$v";; \
                esac ; \
        done | sort
+
+### Make sure built-ins do not have dups and listed in git.c
+#
+check-builtins::
+       ./check-builtins.sh
diff --git a/check-builtins.sh b/check-builtins.sh
new file mode 100755 (executable)
index 0000000..d6fe6cf
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+{
+       cat <<\EOF
+sayIt:
+       $(foreach b,$(BUILT_INS),echo XXX $b YYY;)
+EOF
+       cat Makefile
+} |
+make -f - sayIt 2>/dev/null |
+sed -n -e 's/.*XXX \(.*\) YYY.*/\1/p' |
+sort |
+{
+    bad=0
+    while read builtin
+    do
+       base=`expr "$builtin" : 'git-\(.*\)'`
+       x=`sed -ne 's/.*{ "'$base'", \(cmd_[^, ]*\).*/'$base'   \1/p' git.c`
+       if test -z "$x"
+       then
+               echo "$base is builtin but not listed in git.c command list"
+               bad=1
+       fi
+       for sfx in sh perl py
+       do
+               if test -f "$builtin.$sfx"
+               then
+                       echo "$base is builtin but $builtin.$sfx still exists"
+                       bad=1
+               fi
+       done
+    done
+    exit $bad
+}
diff --git a/git-cherry.sh b/git-cherry.sh
deleted file mode 100755 (executable)
index cf7af55..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2005 Junio C Hamano.
-#
-
-USAGE='[-v] <upstream> [<head>] [<limit>]'
-LONG_USAGE='             __*__*__*__*__> <upstream>
-            /
-  fork-point
-            \__+__+__+__+__+__+__+__> <head>
-
-Each commit between the fork-point (or <limit> if given) and <head> is
-examined, and compared against the change each commit between the
-fork-point and <upstream> introduces.  If the change seems to be in
-the upstream, it is shown on the standard output with prefix "-".
-Otherwise it is shown with prefix "+".'
-. git-sh-setup
-
-case "$1" in -v) verbose=t; shift ;; esac 
-
-case "$#,$1" in
-1,*..*)
-    upstream=$(expr "z$1" : 'z\(.*\)\.\.') ours=$(expr "z$1" : '.*\.\.\(.*\)$')
-    set x "$upstream" "$ours"
-    shift ;;
-esac
-
-case "$#" in
-1) upstream=`git-rev-parse --verify "$1"` &&
-   ours=`git-rev-parse --verify HEAD` || exit
-   limit="$upstream"
-   ;;
-2) upstream=`git-rev-parse --verify "$1"` &&
-   ours=`git-rev-parse --verify "$2"` || exit
-   limit="$upstream"
-   ;;
-3) upstream=`git-rev-parse --verify "$1"` &&
-   ours=`git-rev-parse --verify "$2"` &&
-   limit=`git-rev-parse --verify "$3"` || exit
-   ;;
-*) usage ;;
-esac
-
-# Note that these list commits in reverse order;
-# not that the order in inup matters...
-inup=`git-rev-list ^$ours $upstream` &&
-ours=`git-rev-list $ours ^$limit` || exit
-
-tmp=.cherry-tmp$$
-patch=$tmp-patch
-mkdir $patch
-trap "rm -rf $tmp-*" 0 1 2 3 15
-
-for c in $inup
-do
-       git-diff-tree -p $c
-done | git-patch-id |
-while read id name
-do
-       echo $name >>$patch/$id
-done
-
-LF='
-'
-
-O=
-for c in $ours
-do
-       set x `git-diff-tree -p $c | git-patch-id`
-       if test "$2" != ""
-       then
-               if test -f "$patch/$2"
-               then
-                       sign=-
-               else
-                       sign=+
-               fi
-               case "$verbose" in
-               t)
-                       c=$(git-rev-list --pretty=oneline --max-count=1 $c)
-               esac
-               case "$O" in
-               '')     O="$sign $c" ;;
-               *)      O="$sign $c$LF$O" ;;
-               esac
-       fi
-done
-case "$O" in
-'') ;;
-*)  echo "$O" ;;
-esac