ajout de l'option NOMERGES pour ne pas tenter de fusionner avec git des fichiers binaires

This commit is contained in:
Jephté Clain 2018-11-02 15:05:49 +04:00
parent 4f7cb900d2
commit 96c146e0c5
1 changed files with 39 additions and 0 deletions

39
pff
View File

@ -29,6 +29,7 @@ PFFCONFVARS=(
"PROTECTS=//Fichiers locaux à protéger lors de l'intégration e.g /dir/, /file, etc." "PROTECTS=//Fichiers locaux à protéger lors de l'intégration e.g /dir/, /file, etc."
"MKDIRS//Répertoires qui doivent toujours exister" "MKDIRS//Répertoires qui doivent toujours exister"
"FILTERS//Filtres appliqués aux fichiers lors de l'intégration" "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 if [ "$#" -eq 1 -a "$1" == --nutools-makelinks ]; then
@ -447,6 +448,27 @@ function get_vlfiles() {
get_vlfiles_nostrip "$@" | sed "s|^$pffdir/pff/$profile/||" 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() { function sync_vlfiles() {
# synchroniser les fichiers de version $3..@ dans tous les répertoires de # 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 # 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= have_base_vlfiles=
for profile in "${profiles[@]}"; do for profile in "${profiles[@]}"; do
array_from_lines vlfiles "$(get_vlfiles_nostrip "$pffdir" "" "$profile" "$version")" 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 if [ ${#vlfiles[*]} -gt 0 ]; then
have_profile_vlfiles=1 have_profile_vlfiles=1
break break
@ -993,6 +1024,14 @@ function patch_cmd() {
done done
[ -n "$have_profile_vlfiles" ] && break [ -n "$have_profile_vlfiles" ] && break
array_from_lines vlfiles "$(get_vlfiles_nostrip "$pffdir" "" Base "$version")" 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 have_base_vlfiles=1
break break
done done