| #!/bin/sh |
| |
| list_source_files() { |
| local d r |
| |
| d="$(cd "$1" && echo "$PWD")" |
| r="$d" |
| while [ "$r" != "/" ] && [ ! -e "$r/.svn" ] && [ ! -e "$r/.git" ] && |
| [ ! -e "$r/.hg" ]; do |
| r="$(dirname "$r")" |
| done |
| |
| if [ -e "$r/.svn" ]; then |
| ( |
| cd "$d" || exit $? |
| svn status -v | \ |
| grep -vE '^[D?]|^Performing|^$' | \ |
| cut -c3- | \ |
| while read -r a b c f; do |
| if [ -f "$f" ] || [ -h "$f" ]; then |
| echo "$a $b $c" >/dev/null |
| echo "$f" |
| fi |
| done |
| ) |
| elif [ -e "$r/.git" ]; then |
| subdir="${d#${r}}" |
| if [ "$r" != "" ]; then |
| ( cd "$d" && git ls-tree --name-only -r HEAD ) | sed "s|^$subdir/||" |
| else |
| echo "Ignored directory $1" >&2 |
| fi |
| elif [ -e "$r/.hg" ]; then |
| subdir="${d#${r}}" |
| if [ -n "${subdir}" ]; then |
| subdir="${subdir#/}/" |
| hg manifest | sed -n "s|^$subdir||p" |
| else |
| hg manifest |
| fi |
| else |
| ( |
| cd "$d" && |
| find . -type f -o -type l | \ |
| sed -e 's|^\./||' \ |
| -e '\|\.k\{0,1\}o\(\.\(cm\)\{0,1\}d\)\{0,1\}$|d' \ |
| -e '\|\.mod\(\.c\)\{0,1\}$|d' \ |
| -e '\|/conftest/.*/result-.*\.txt$|d' \ |
| -e '\|/modules\.order$|d' \ |
| -e '\,/Module\.\(symver\|marker\)s$,d' \ |
| -e '\,/\.tmp_versions\(/\|$\),d' |
| ) |
| fi |
| } |
| |
| if [ $# = 0 ]; then |
| list_source_files "$PWD" |
| else |
| for d in "$@"; do list_source_files "$d"; done |
| fi |