nutools: ajout de cpvcs() pour copier avec la sémantique de cpnovcs() les fichiers de VCS aussi

This commit is contained in:
Jephté Clain 2015-11-02 16:43:24 +04:00
parent 1ca0ee54b5
commit 775a02119e
1 changed files with 12 additions and 4 deletions

View File

@ -1193,6 +1193,7 @@ function __cpdir() {
}
__CPNOVCS_RSYNC_SLOW=1 # synchro potentiellement plus lente, mais plus fidèle (option -c)
__CPNOVCS_RSYNC_ARGS=(-q)
__CPNOVCS_INCLUDE_VCS= # ne pas ignorer les répertoires de VCS
function cpnovcs() {
# copier le fichier/répertoire $1 *dans* le *répertoire* $2 avec rsync. Les
# options du tableau __CPNOVCS_RSYNC_ARGS sont rajoutées aux options standard
@ -1206,11 +1207,13 @@ function cpnovcs() {
local src="$1" destdir="$2"
[ -d "$destdir" ] || mkdir -p "$destdir" || return 1
if progexists rsync; then
local gitexclude=/.git/
if [ "${src%/}" == "$src" ]; then
gitexclude="/$(basename -- "$src")$gitexclude"
local -a novcs
if [ -z "$__CPNOVCS_INCLUDE_VCS" ]; then
local gitexclude=/.git/
[ "${src%/}" == "$src" ] && gitexclude="/$(basename -- "$src")$gitexclude"
novcs=(--exclude CVS/ --exclude .svn/ --exclude "$gitexclude")
fi
rsync -a ${__CPNOVCS_RSYNC_SLOW:+-c} --exclude CVS/ --exclude .svn/ --exclude "$gitexclude" "${__CPNOVCS_RSYNC_ARGS[@]}" "$src" "$destdir/"
rsync -a ${__CPNOVCS_RSYNC_SLOW:+-c} "${novcs[@]}" "${__CPNOVCS_RSYNC_ARGS[@]}" "$src" "$destdir/"
elif [ "${src%/}" != "$src" ]; then
__cpdir "$src" "$destdir"
else
@ -1219,6 +1222,11 @@ function cpnovcs() {
__cpdir "$src" "$destdir/$srcname"
fi
}
function cpvcs() {
# comme cpnovcs, mais ne pas ignorer les répertoires de VCS
local __CPNOVCS_INCLUDE_VCS=1
cpnovcs "$@"
}
function cpdirnovcs() {
# Le pendant de cpdir, mais en ignorant les sous-répertoires de VCS: copier le
# contenu du répertoire $1 dans le répertoire $2