X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=build-aux%2Fvc-list-files;h=48a33ee7f483af80ed621dd3215ece163aa71755;hb=04da1cb11cf8285b944492aaa636dbd596ed5e74;hp=1e158bb521e219fa4dfa0327ee40e9c826eba563;hpb=575ad1bd0e1b5263116caea5913f424abdde1675;p=gnulib.git diff --git a/build-aux/vc-list-files b/build-aux/vc-list-files index 1e158bb52..48a33ee7f 100755 --- a/build-aux/vc-list-files +++ b/build-aux/vc-list-files @@ -1,7 +1,10 @@ #!/bin/sh # List version-controlled file names. -# Copyright (C) 2006-2008 Free Software Foundation, Inc. +# Print a version string. +scriptversion=2010-04-23.22; # UTC + +# Copyright (C) 2006-2010 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,38 +23,96 @@ # 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 + exit ;; + + --version) + year=`echo "$scriptversion" | sed 's/[^0-9].*//'` + cat < +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) + test "$2" = . || 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" + 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 - exec hg locate "$dir/*" + 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 - 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); \ + if (f ~ /CVS\/Entries$/) \ + f = substr(f, 1, length(f)-11); \ print f $2; \ - }}' \ - $(find ${*-*} -name Entries -print) /dev/null; + }}'\'' \ + `find "$dir" -name Entries -print` /dev/null' $postprocess 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 + 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-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: