bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

vc-list-files and VPATH


From: Eric Blake
Subject: vc-list-files and VPATH
Date: Thu, 3 Apr 2008 14:58:43 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

With this patch, and the following change in maint.mk:

-VC_LIST = build-aux/vc-list-files
+VC_LIST = $(srcdir)/build-aux/vc-list-files -C $(srcdir)

it is possible to use vc-list-files from a VPATH build.  This patch also adds --
help and --version support, as well as using an installed cvsu if one is not 
present in build-aux.  (And yes, it is intentionally not robust to misuse 
like 'vc-list-files -C', because it is assumed that it will be used by 
maintainers who are smart enough to call it correctly and who don't want the 
slowdown from extra error checking).

From: Eric Blake <address@hidden>
Date: Thu, 3 Apr 2008 08:45:00 -0600
Subject: [PATCH] Allow VPATH usage of vc-list-files.

* build-aux/vc-list-files (scriptversion): Add timestamp.
(options): Add --help, --version, -C.
(CVS): Support installed cvsu.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog               |    7 +++++
 build-aux/vc-list-files |   63 ++++++++++++++++++++++++++++++++++++++++------
 2 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 07470b1..90d0bb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-03  Eric Blake  <address@hidden>
+
+       Allow VPATH usage of vc-list-files.
+       * build-aux/vc-list-files (scriptversion): Add timestamp.
+       (options): Add --help, --version, -C.
+       (CVS): Support installed cvsu.
+
 2008-04-02  Bruno Haible  <address@hidden>
 
        Avoid some "statement with no effect" warnings from gcc.
diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files
index 1e158bb..35046d5 100755
--- a/build-aux/vc-list-files
+++ b/build-aux/vc-list-files
@@ -1,6 +1,9 @@
 #!/bin/sh
 # List version-controlled file names.
 
+# Print a version string.
+scriptversion=2008-04-03.14
+
 # Copyright (C) 2006-2008 Free Software Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -20,38 +23,80 @@
 # List the specified version-controlled files.
 # With no argument, list them all.  With a single DIRECTORY argument,
 # list the version-controlled files in that directory.
-# This script must be run solely from the top of a $srcdir build directory.
 
 # If there's an argument, it must be a single, "."-relative directory name.
 # cvsu is part of the cvsutils package: http://www.red-bean.com/cvsutils/
 
+postprocess=
+case $1 in
+  --help) cat <<EOF
+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.
+
+Options:
+  --help     print this help, then exit
+  --version  print version number, then exit
+  -C SRCDIR  change directory to SRCDIR before generating list
+
+Report bugs and patches to <address@hidden>.
+EOF
+    exit ;;
+
+  --version)
+    year=`echo "$scriptversion" | sed 's/[^0-9].*//'`
+    cat <<EOF
+vc-list-files $scriptversion
+Copyright (C) $year Free Software Foundation, Inc,
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+EOF
+    exit ;;
+
+  -C)
+    postprocess="| sed 's|^|$2/|'"
+    cd "$2" || exit 1
+    shift; shift ;;
+esac
+
 dir=
 case $# in
   0) ;;
   1) dir=$1 ;;
   *) echo "$0: too many arguments" 1>&2
-     echo "Usage: $0 [DIR]" 1>&2; exit 1;;
+     echo "Usage: $0 [-C srcdir] [DIR]" 1>&2; exit 1;;
 esac
 
 test "x$dir" = x && dir=.
 
 if test -d .git; then
-  exec git ls-files "$dir"
+  eval exec git ls-files '"$dir"' $postprocess
 elif test -d .hg; then
-  exec hg locate "$dir/*"
+  eval exec hg locate '"$dir/*"' $postprocess
 elif test -d CVS; then
   if test -x build-aux/cvsu; then
-    build-aux/cvsu --find --types=AFGM "$dir"
+    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
-    awk -F/ '{                         \
+    eval awk -F/ \''{                  \
        if (!$1 && $3 !~ /^-/) {        \
          f=FILENAME;                   \
          sub(/CVS\/Entries/, "", f);   \
          print f $2;                   \
-       }}'                             \
-      $(find ${*-*} -name Entries -print) /dev/null;
+       }}'\''                          \
+      $(find ${*-*} -name Entries -print) /dev/null' $postprocess
   fi
 else
-  echo "$0: Failed to determine type of version control used in "`pwd` 1>&2
+  echo "$0: Failed to determine type of version control used in `pwd`" 1>&2
   exit 1
 fi
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
-- 
1.5.4








reply via email to

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