diff --git a/pff b/pff index 8b74e68..1c14d92 100755 --- a/pff +++ b/pff @@ -29,6 +29,7 @@ PFFCONFVARS=( "PROTECTS=//Fichiers locaux à protéger lors de l'intégration e.g /dir/, /file, etc." "MKDIRS//Répertoires qui doivent toujours exister" "FILTERS//Filtres appliqués aux fichiers lors de l'intégration" + "NOMERGES=//Fichiers qu'il ne faut pas chercher à fusionner" ) if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then @@ -447,6 +448,27 @@ function get_vlfiles() { get_vlfiles_nostrip "$@" | sed "s|^$pffdir/pff/$profile/||" } +function is_nomerge() { + local file="$1" pffdir="$2" + local nomerge rfile + setx rfile=get_rfile "$file" "$pffdir" + setx file=basename -- "$rfile" # utilisé pour le match sur le nom du fichier + for nomerge in "${NOMERGES[@]}"; do + if [[ "$nomerge" == */* ]]; then + # matcher sur le chemin relatif + if eval "[[ $(qval "$rfile") == $(qwc "$nomerge") ]]"; then + return 0 + fi + else + # matcher uniquement sur le nom du fichier + if eval "[[ $(qval "$file") == $(qwc "$nomerge") ]]"; then + return 0 + fi + fi + done + return 1 +} + function sync_vlfiles() { # synchroniser les fichiers de version $3..@ dans tous les répertoires de # profil, ou seulement le répertoire de profil $2 si la valeur n'est pas @@ -986,6 +1008,15 @@ function patch_cmd() { have_base_vlfiles= for profile in "${profiles[@]}"; do array_from_lines vlfiles "$(get_vlfiles_nostrip "$pffdir" "" "$profile" "$version")" + # filtrer les fichiers de NOMERGES + mergefiles=() + for vlfile in "${vlfiles[@]}"; do + setx rfile=get_rfile "${vlfile%__pv-${version}__}" "$pffdir" + is_nomerge "$rfile" "$pffdir" && continue + array_add mergefiles "$vlfile" + done + vlfiles=("${mergefiles[@]}") + # on en a trouvé if [ ${#vlfiles[*]} -gt 0 ]; then have_profile_vlfiles=1 break @@ -993,6 +1024,14 @@ function patch_cmd() { done [ -n "$have_profile_vlfiles" ] && break array_from_lines vlfiles "$(get_vlfiles_nostrip "$pffdir" "" Base "$version")" + # filtrer les fichiers de NOMERGES + mergefiles=() + for vlfile in "${vlfiles[@]}"; do + setx rfile=get_rfile "${vlfile%__pv-${version}__}" "$pffdir" + is_nomerge "$rfile" "$pffdir" && continue + array_add mergefiles "$vlfile" + done + vlfiles=("${mergefiles[@]}") have_base_vlfiles=1 break done