#!/bin/sh export LANG=POSIX filter_deleted() { local rc_file="$1" shift local cand for cand in "$@"; do grep -q "^R ./$cand/" $rc_file && continue echo $cand done } list_dirents_cvs() { local dirs=`sed '/^D\// !d; s%^D/%%; s%/.*%%' $1/CVS/Entries` dirs="`filter_deleted $1/CVS/Entries $dirs`" local cands if [ -f $1/CVS/Entries.Log ]; then cands="`sed '/^A D\// !d; s%^A D/%%; s%/.*%%' $1/CVS/Entries.Log`" dirs="$dirs `filter_deleted $1/CVS/Entries.Log $cands`" fi local files=`sed '/^\// !d; s%/%%; s%/.*%%; s%^%%' $1/CVS/Entries` files="`filter_deleted $1/CVS/Entries $files`" local d f for f in $files; do echo $1/$f done for d in $dirs; do [ "$opt_only_regular_files" != 1 ] && echo $1/$d list_dirents_cvs $1/$d done } list_dirents_git() { git ls-files $1 git submodule foreach 'git ls-files | sed "s|^|$path/|"' } list_dirents() { if [ -d $1/CVS ]; then list_dirents_cvs $1 return fi git status >/dev/null 2>&1 || { echo "failed to list versioned files in $1: no VCS" >&2 exit 1 } list_dirents_git $1 } set -- `getopt f "$@"` while [ "$1" != -- ]; do case $1 in -f) opt_only_regular_files=1 ;; esac shift done shift list_dirents . | sort