Hi, I just wrote a couple of patches. I'm sorry for having to attach the files- I'm behind a HTTP proxy, and Gmail mangles patches. Thanks and regards, Ramkumar
From f5f76190a833bf105483a7da9b4b61ab03e373ba Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra <artagnon@xxxxxxxxx> Date: Thu, 7 Jan 2010 23:58:08 +0530 Subject: [PATCH 1/2] Add quiet option to git-ls-files --quiet option suppresses error output in --error-unmatch mode. Modify documentation to reflect changes. Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx> --- Documentation/git-ls-files.txt | 6 ++++++ builtin-ls-files.c | 12 +++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt index 625723e..0a1f94e 100644 --- a/Documentation/git-ls-files.txt +++ b/Documentation/git-ls-files.txt @@ -82,6 +82,12 @@ OPTIONS Skips files matching pattern. Note that pattern is a shell wildcard pattern. +--q:: +--quiet:: + Only meaningful in --error-unmatch mode. Do not output an + error message if <file> does not appear in the index. Instead + exit with non-zero status silently. + -X <file>:: --exclude-from=<file>:: exclude patterns are read from <file>; 1 per line. diff --git a/builtin-ls-files.c b/builtin-ls-files.c index c9a03e5..40560da 100644 --- a/builtin-ls-files.c +++ b/builtin-ls-files.c @@ -421,12 +421,13 @@ static int option_parse_exclude_standard(const struct option *opt, int cmd_ls_files(int argc, const char **argv, const char *prefix) { - int require_work_tree = 0, show_tag = 0; + int require_work_tree = 0, show_tag = 0, quiet = 0; struct dir_struct dir; struct option builtin_ls_files_options[] = { { OPTION_CALLBACK, 'z', NULL, NULL, NULL, "paths are separated with NUL character", PARSE_OPT_NOARG, option_parse_z }, + OPT__QUIET(&quiet), OPT_BOOLEAN('t', NULL, &show_tag, "identify the file status with tags"), OPT_BOOLEAN('v', NULL, &show_valid_bit, @@ -547,10 +548,11 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) if (ps_matched) { int bad; - bad = report_path_error(ps_matched, pathspec, prefix_offset); - if (bad) - fprintf(stderr, "Did you forget to 'git add'?\n"); - + if (!quiet) { + bad = report_path_error(ps_matched, pathspec, prefix_offset); + if (bad) + fprintf(stderr, "Did you forget to 'git add'?\n"); + } return bad ? 1 : 0; } -- 1.6.5
From b5c7a0fb8d092aafcedcbd653f00dee564a0d953 Mon Sep 17 00:00:00 2001 From: Ramkumar Ramachandra <artagnon@xxxxxxxxx> Date: Fri, 8 Jan 2010 00:00:58 +0530 Subject: [PATCH 2/2] Replace redirect to /dev/null in favor of quiet option Signed-off-by: Ramkumar Ramachandra <artagnon@xxxxxxxxx> --- git-mergetool.sh | 2 +- git-pull.sh | 2 +- git-rebase.sh | 2 +- git-stash.sh | 12 ++++++------ git-submodule.sh | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/git-mergetool.sh b/git-mergetool.sh index b52a741..1c902aa 100755 --- a/git-mergetool.sh +++ b/git-mergetool.sh @@ -101,7 +101,7 @@ resolve_deleted_merge () { return 0 ;; [dD]*) - git rm -- "$MERGED" > /dev/null + git rm --quiet -- "$MERGED" cleanup_temp_files return 0 ;; diff --git a/git-pull.sh b/git-pull.sh index 9e69ada..336e91a 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -170,7 +170,7 @@ test true = "$rebase" && { . git-parse-remote && remoteref="$(get_remote_merge_branch "$@" 2>/dev/null)" && oldremoteref="$(git rev-parse -q --verify "$remoteref")" && - for reflog in $(git rev-list -g $remoteref 2>/dev/null) + for reflog in $(git rev-list --quiet --walk-reflogs $remoteref) do if test "$reflog" = "$(git merge-base $reflog $curr_branch)" then diff --git a/git-rebase.sh b/git-rebase.sh index b121f45..bfe0475 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -100,7 +100,7 @@ call_merge () { cmt="$(cat "$dotest/cmt.$1")" echo "$cmt" > "$dotest/current" hd=$(git rev-parse --verify HEAD) - cmt_name=$(git symbolic-ref HEAD 2> /dev/null || echo HEAD) + cmt_name=$(git symbolic-ref --quiet HEAD || echo HEAD) msgnum=$(cat "$dotest/msgnum") end=$(cat "$dotest/end") eval GITHEAD_$cmt='"${cmt_name##refs/heads/}~$(($end - $msgnum))"' diff --git a/git-stash.sh b/git-stash.sh index 3a0685f..5605d19 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -39,7 +39,7 @@ clear_stash () { then die "git stash clear with parameters is unimplemented" fi - if current=$(git rev-parse --verify $ref_stash 2>/dev/null) + if current=$(git rev-parse --quiet --verify $ref_stash) then git update-ref -d $ref_stash $current fi @@ -200,7 +200,7 @@ save_stash () { } have_stash () { - git rev-parse --verify $ref_stash >/dev/null 2>&1 + git rev-parse --quiet --verify $ref_stash >/dev/null } list_stash () { @@ -337,16 +337,16 @@ drop_stash () { fi # Verify supplied argument looks like a stash entry s=$(git rev-parse --verify "$@") && - git rev-parse --verify "$s:" > /dev/null 2>&1 && - git rev-parse --verify "$s^1:" > /dev/null 2>&1 && - git rev-parse --verify "$s^2:" > /dev/null 2>&1 || + git rev-parse --quiet --verify "$s:" > /dev/null && + git rev-parse --quiet --verify "$s^1:" > /dev/null && + git rev-parse --quiet --verify "$s^2:" > /dev/null || die "$*: not a valid stashed state" git reflog delete --updateref --rewrite "$@" && say "Dropped $* ($s)" || die "$*: Could not drop stash entry" # clear_stash if we just dropped the last stash entry - git rev-parse --verify "$ref_stash@{0}" > /dev/null 2>&1 || clear_stash + git rev-parse --quiet --verify "$ref_stash@{0}" > /dev/null || clear_stash } apply_to_branch () { diff --git a/git-submodule.sh b/git-submodule.sh index 77d2232..2b6448f 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -196,7 +196,7 @@ cmd_add() tstart s|/*$|| ') - git ls-files --error-unmatch "$path" > /dev/null 2>&1 && + git ls-files --quiet --error-unmatch "$path" > /dev/null && die "'$path' already exists in the index" # perhaps the path exists and is already a git repo, else clone it -- 1.6.5