[Top][All Lists]
[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
- vc-list-files and VPATH,
Eric Blake <=