| #!/bin/sh |
| # List version-controlled file names. |
| |
| # Print a version string. |
| scriptversion=2011-05-16.22; # UTC |
| |
| # Copyright (C) 2006-2012 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 |
| # the Free Software Foundation, either version 3 of the License, or |
| # (at your option) any later version. |
| |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| |
| # 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. |
| |
| # 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 <bug-gnulib@gnu.org>. |
| 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) |
| test "$2" = . || postprocess="| sed 's|^|$2/|'" |
| cd "$2" || exit 1 |
| shift; shift ;; |
| esac |
| |
| 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 |
| 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) |
| # time-stamp-start: "scriptversion=" |
| # time-stamp-format: "%:y-%02m-%02d.%02H" |
| # time-stamp-time-zone: "UTC" |
| # time-stamp-end: "; # UTC" |
| # End: |