[PATCH] Add quiet option to git-ls-files
- From
Ramkumar Ramachandra <artagnon@gmail.com>
- Date
- Jan 7, 2010, 19:37 UTC
- Message-ID
- <f3271551001071137u6158fa4fm1bf7a51a83354574@mail.gmail.com>
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@gmail.com> 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@gmail.com> --- 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@gmail.com>
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@gmail.com>
---
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