[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] vc-list-files: accept multiple directory operands
From: |
Eric Blake |
Subject: |
[PATCH] vc-list-files: accept multiple directory operands |
Date: |
Mon, 16 May 2011 16:25:05 -0600 |
* build-aux/vc-list-files: Iterate over all remaining operands.
Signed-off-by: Eric Blake <address@hidden>
---
Here's what I'm pushing (including a white-space-ignored version,
to show how small the real changes are).
diff --git c/build-aux/vc-list-files w/build-aux/vc-list-files
index 2fced25..405e458 100755
--- c/build-aux/vc-list-files
+++ w/build-aux/vc-list-files
@@ -2,7 +2,7 @@
# List version-controlled file names.
# Print a version string.
-scriptversion=2011-04-29.20; # UTC
+scriptversion=2011-05-16.22; # UTC
# Copyright (C) 2006-2011 Free Software Foundation, Inc.
@@ -30,7 +30,7 @@ scriptversion=2011-04-29.20; # UTC
postprocess=
case $1 in
--help) cat <<EOF
-Usage: $0 [-C SRCDIR] [DIR]
+Usage: $0 [-C SRCDIR] [DIR...]
Output a list of version-controlled files in DIR (default .), relative to
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
@@ -61,17 +61,11 @@ EOF
shift; shift ;;
esac
-dir=
-case $# in
- 0) ;;
- 1) dir=$1 ;;
- *) echo "$0: too many arguments" 1>&2
- echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
-esac
-
-test "x$dir" = x && dir=.
+test $# = 0 && set .
-if test -d .git; then
+for dir
+do
+ if test -d .git; then
test "x$dir" = x. \
&& dir= sed_esc= \
|| { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
@@ -81,12 +75,12 @@ if test -d .git; then
# belong to this package.
eval exec git ls-tree -r 'HEAD:"$dir"' \
\| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
-elif test -d .hg; then
+ elif test -d .hg; then
eval exec hg locate '"$dir/*"' $postprocess
-elif test -d .bzr; then
+ elif test -d .bzr; then
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
eval exec bzr ls -R --versioned '"$dir"' $postprocess
-elif test -d CVS; then
+ elif test -d CVS; then
test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
if test -x build-aux/cvsu; then
eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
@@ -102,12 +96,13 @@ elif test -d CVS; then
}}'\'' \
`find "$dir" -name Entries -print` /dev/null' $postprocess
fi
-elif test -d .svn; then
+ elif test -d .svn; then
eval exec svn list -R '"$dir"' $postprocess
-else
+ else
echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
exit 1
-fi
+ fi
+done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
ChangeLog | 6 +++
build-aux/vc-list-files | 89 ++++++++++++++++++++++-------------------------
2 files changed, 48 insertions(+), 47 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2fb40f2..9bcc95a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-16 Sam Steingold <address@hidden>
+ and Eric Blake <address@hidden>
+
+ vc-list-files: accept multiple directory operands
+ * build-aux/vc-list-files: Iterate over all remaining operands.
+
2011-05-16 Paul Eggert <address@hidden>
* build-aux/bootstrap (gnulib_tool): Handle symlink timestamps better.
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
index 2fced25..405e458 100755
--- a/build-aux/vc-list-files
+++ b/build-aux/vc-list-files
@@ -2,7 +2,7 @@
# List version-controlled file names.
# Print a version string.
-scriptversion=2011-04-29.20; # UTC
+scriptversion=2011-05-16.22; # UTC
# Copyright (C) 2006-2011 Free Software Foundation, Inc.
@@ -30,7 +30,7 @@ scriptversion=2011-04-29.20; # UTC
postprocess=
case $1 in
--help) cat <<EOF
-Usage: $0 [-C SRCDIR] [DIR]
+Usage: $0 [-C SRCDIR] [DIR...]
Output a list of version-controlled files in DIR (default .), relative to
SRCDIR (default .). SRCDIR must be the top directory of a checkout.
@@ -61,53 +61,48 @@ EOF
shift; shift ;;
esac
-dir=
-case $# in
- 0) ;;
- 1) dir=$1 ;;
- *) echo "$0: too many arguments" 1>&2
- echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
-esac
-
-test "x$dir" = x && dir=.
-
-if test -d .git; then
- test "x$dir" = x. \
- && dir= sed_esc= \
- || { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
- # Ignore git symlinks - either they point into the tree, in which case
- # we don't need to visit the target twice, or they point somewhere
- # else (often into a submodule), in which case the content does not
- # belong to this package.
- eval exec git ls-tree -r 'HEAD:"$dir"' \
- \| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
-elif test -d .hg; then
- eval exec hg locate '"$dir/*"' $postprocess
-elif test -d .bzr; then
- test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
- eval exec bzr ls -R --versioned '"$dir"' $postprocess
-elif test -d CVS; then
- test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
- if test -x build-aux/cvsu; then
- eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
- elif (cvsu --help) >/dev/null 2>&1; then
- eval cvsu --find --types=AFGM '"$dir"' $postprocess
+test $# = 0 && set .
+
+for dir
+do
+ if test -d .git; then
+ test "x$dir" = x. \
+ && dir= sed_esc= \
+ || { dir="$dir/"; sed_esc=`echo "$dir"|env sed 's,\([\\/]\),\\\\\1,g'`; }
+ # Ignore git symlinks - either they point into the tree, in which case
+ # we don't need to visit the target twice, or they point somewhere
+ # else (often into a submodule), in which case the content does not
+ # belong to this package.
+ eval exec git ls-tree -r 'HEAD:"$dir"' \
+ \| sed -n '"s/^100[^ ]*./$sed_esc/p"' $postprocess
+ elif test -d .hg; then
+ eval exec hg locate '"$dir/*"' $postprocess
+ elif test -d .bzr; then
+ test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+ eval exec bzr ls -R --versioned '"$dir"' $postprocess
+ elif test -d CVS; then
+ test "$postprocess" = '' && postprocess="| sed 's|^\./||'"
+ if test -x build-aux/cvsu; then
+ eval build-aux/cvsu --find --types=AFGM '"$dir"' $postprocess
+ elif (cvsu --help) >/dev/null 2>&1; then
+ eval cvsu --find --types=AFGM '"$dir"' $postprocess
+ else
+ eval awk -F/ \''{ \
+ if (!$1 && $3 !~ /^-/) { \
+ f=FILENAME; \
+ if (f ~ /CVS\/Entries$/) \
+ f = substr(f, 1, length(f)-11); \
+ print f $2; \
+ }}'\'' \
+ `find "$dir" -name Entries -print` /dev/null' $postprocess
+ fi
+ elif test -d .svn; then
+ eval exec svn list -R '"$dir"' $postprocess
else
- eval awk -F/ \''{ \
- if (!$1 && $3 !~ /^-/) { \
- f=FILENAME; \
- if (f ~ /CVS\/Entries$/) \
- f = substr(f, 1, length(f)-11); \
- print f $2; \
- }}'\'' \
- `find "$dir" -name Entries -print` /dev/null' $postprocess
+ echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
+ exit 1
fi
-elif test -d .svn; then
- eval exec svn list -R '"$dir"' $postprocess
-else
- echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
- exit 1
-fi
+done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
--
1.7.4.4
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, (continued)
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Sam Steingold, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Eric Blake, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Karl Berry, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Eric Blake, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Sam Steingold, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Eric Blake, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Sam Steingold, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Eric Blake, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Sam Steingold, 2011/05/16
- Re: do I need "ifdef HAVE_UNISTD_H" if I import unistd?, Eric Blake, 2011/05/16
- [PATCH] vc-list-files: accept multiple directory operands,
Eric Blake <=