Merge branch 'pb/bisect'
authorJunio C Hamano <junkio@cox.net>
Sun, 12 Feb 2006 21:09:08 +0000 (13:09 -0800)
committerJunio C Hamano <junkio@cox.net>
Sun, 12 Feb 2006 21:09:08 +0000 (13:09 -0800)
* pb/bisect:
  Properly git-bisect reset after bisecting from non-master head
  git-commit: show dirtiness including index.
  Make pack-objects chattier.

git-bisect.sh
git-checkout.sh
pack-objects.c

index 51e1e44..3c024aa 100755 (executable)
@@ -49,9 +49,16 @@ bisect_start() {
        die "Bad HEAD - I need a symbolic ref"
        case "$head" in
        refs/heads/bisect*)
-               git checkout master || exit
+               if [ -s "$GIT_DIR/head-name" ]; then
+                   branch=`cat "$GIT_DIR/head-name"`
+               else
+                   branch=master
+               fi
+               git checkout $branch || exit
                ;;
        refs/heads/*)
+               [ -s "$GIT_DIR/head-name" ] && die "won't bisect on seeked tree"
+               echo "$head" | sed 's#^refs/heads/##' >"$GIT_DIR/head-name"
                ;;
        *)
                die "Bad HEAD - strange symbolic ref"
@@ -159,7 +166,11 @@ bisect_visualize() {
 
 bisect_reset() {
        case "$#" in
-       0) branch=master ;;
+       0) if [ -s "$GIT_DIR/head-name" ]; then
+              branch=`cat "$GIT_DIR/head-name"`
+          else
+              branch=master
+          fi ;;
        1) test -f "$GIT_DIR/refs/heads/$1" || {
               echo >&2 "$1 does not seem to be a valid branch"
               exit 1
@@ -170,7 +181,7 @@ bisect_reset() {
        esac
        git checkout "$branch" &&
        rm -fr "$GIT_DIR/refs/bisect"
-       rm -f "$GIT_DIR/refs/heads/bisect"
+       rm -f "$GIT_DIR/refs/heads/bisect" "$GIT_DIR/head-name"
        rm -f "$GIT_DIR/BISECT_LOG"
 }
 
index d99688f..6a87c71 100755 (executable)
@@ -165,7 +165,8 @@ else
        exit 0
     )
     saved_err=$?
-    git diff-files --name-status
+    test "$new" = "$old" ||
+       git diff-index --name-status "$new"
     (exit $saved_err)
 fi
 
index 2135e9a..c5a5e61 100644 (file)
@@ -5,7 +5,7 @@
 #include "csum-file.h"
 #include <sys/time.h>
 
-static const char pack_usage[] = "git-pack-objects [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list";
+static const char pack_usage[] = "git-pack-objects [-q] [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list";
 
 struct object_entry {
        unsigned char sha1[20];
@@ -27,7 +27,7 @@ static struct object_entry *objects = NULL;
 static int nr_objects = 0, nr_alloc = 0;
 static const char *base_name;
 static unsigned char pack_file_sha1[20];
-static int progress = 0;
+static int progress = 1;
 
 static void *delta_against(void *buf, unsigned long size, struct object_entry *entry)
 {
@@ -520,6 +520,10 @@ int main(int argc, char **argv)
                                        usage(pack_usage);
                                continue;
                        }
+                       if (!strcmp("-q", arg)) {
+                               progress = 0;
+                               continue;
+                       }
                        if (!strcmp("--stdout", arg)) {
                                pack_to_stdout = 1;
                                continue;
@@ -534,8 +538,6 @@ int main(int argc, char **argv)
        if (pack_to_stdout != !base_name)
                usage(pack_usage);
 
-       progress = isatty(2);
-
        prepare_packed_git();
        if (progress) {
                fprintf(stderr, "Generating pack...\n");