vcs_git() { local branch='' local OPTIND=1 local opt while getopts 'b:' opt; do case "$opt" in b) local branch="$OPTARG" ;; esac; done shift $((OPTIND-1)) [ "$1" = '--' ] && shift local reponame="$(basename "$1")" local dir="$dir_source/$name/$reponame" mkdir -p "$dir" if [ ! -d "$dir/.git" ]; then # Clone new repo git clone --recursive --depth=1 $([ "$branch" ] && echo "-b $branch") "$1" "$dir" cd "$dir" echo "$(git rev-parse @)" > "${dir}_rev_$_satname" vcs_compile=true else cd "$dir" if git fetch $([ "$branch" ] && echo "origin $branch") > /dev/null; then git reset --hard FETCH_HEAD > /dev/null fi local rev="$(git rev-parse @)" if [ "$rev" != "$(cat "${dir}_rev_$_satname" 2> /dev/null || true)" ]; then echo "$rev" > "${dir}_rev_$_satname" vcs_compile=true fi fi version="$(git rev-list HEAD --count)_$(git rev-parse --short HEAD)" cd "$OLDPWD" getfile "$reponame" }