From 024701f1d88d79f3777bf45c82437f40a80b6eaa Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 12 Feb 2006 13:01:54 -0800 Subject: [PATCH 1/3] Make pack-objects chattier. You could give -q to squelch it, but currently no tool does it. This would make 'git clone host:repo here' over ssh not silent again. Signed-off-by: Junio C Hamano --- pack-objects.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pack-objects.c b/pack-objects.c index 2135e9a92e..c5a5e61605 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -5,7 +5,7 @@ #include "csum-file.h" #include -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"); From c5e09c1fbec5dc1c15bcfe21e1a600f9e4b4e419 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 12 Feb 2006 13:05:53 -0800 Subject: [PATCH 2/3] git-commit: show dirtiness including index. Earlier, when we switched a branch we used diff-files to show paths that are dirty in the working tree. But we allow switching branches with updated index ("read-tree -m -u $old $new" works that way), and only showing paths that have differences in the working tree but not paths that are different in index was confusing. This shows both as modified from the top commit of the branch we just have switched to. Signed-off-by: Junio C Hamano --- git-checkout.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/git-checkout.sh b/git-checkout.sh index d99688fbf2..6a87c717e9 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -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 From 810255fd12536d296597a0366f514bf65c2e10f6 Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sun, 12 Feb 2006 17:06:14 +0100 Subject: [PATCH 3/3] Properly git-bisect reset after bisecting from non-master head git-bisect reset without an argument would return to master even if the bisecting started at a non-master branch. This patch makes it save the original branch name to .git/head-name and restore it afterwards. This is also compatible with Cogito and cg-seek, so cg-status will show that we are seeked on the bisect branch and cg-reset will properly restore the original branch. git-bisect start will refuse to work if it is not on a bisect but .git/head-name exists; this is to protect against conflicts with other seeking tools. Signed-off-by: Petr Baudis Signed-off-by: Junio C Hamano --- git-bisect.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/git-bisect.sh b/git-bisect.sh index 51e1e4417d..3c024aae73 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -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" }