bug-gnulib
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]