3 votes

Exclusion du téléchargement/copie de Midnight Commander

Ma question est similaire à celui-ci mais je voudrais exclure certains répertoires de manière récursive lors de la copie/du téléchargement de fichiers. Plus précisément, je voudrais exclure les dossiers .git de l'ensemble de la base de code que je télécharge (elle contient des sous-référentiels, dont certains sont assez profonds dans la structure).

Je peux le faire pour le répertoire actuel avec la touche "-" et en désélectionnant .git, mais y a-t-il un moyen de le faire de manière récursive ?

3voto

lornix Points 10746

Midnight Commander n'a pas ce genre de contrôle sur les opérations des sous-répertoires. C'est une sorte de "tout ou rien". Comme vous l'avez dit, vous pouvez contrôler les entrées de premier niveau, mais rien de plus.

Je suppose que vous pourriez écrire une sorte de script à utiliser dans le menu F2...

Une autre façon, un peu bancale, mais qui pourrait fonctionner...

find . -type d -name ".git" -exec chmod 000 "{}" \;

Ce qui rendrait tous les sous-répertoires .git illisibles, MC afficherait une boîte de dialogue d'erreur, lui dirait "Continue" et continuerait le traitement.

Après :

find . -type d -name ".git" -exec chmod 750 "{}" \;

pour restaurer les permissions souhaitées. (J'utilise moi-même 750 & 640, beaucoup préfèrent 755 & 644... utilisez ce que vous préférez à la place de '750').

Ha ! et comme une combinaison de mon idée de "mettre dans le menu F2"... vous pourriez mettre CES deux commandes dans le menu F2... rendant ceci presque (presque !) sans douleur.


EDIT :

Sur demande :

#
# Restore permissions for any .git subdirectories to 755
g   Restore .git directories to 755 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 755 "{}" \; 2>/dev/null
#
# Remove permissions for any .git subdirectories
G   Hide .git directories with 000 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 000 "{}" \; 2>/dev/null
#

Enregistrez ceci dans le fichier ' ~/.config/mc/menu '

Si ce fichier existe déjà, ajoutez-le à la FIN (certaines choses doivent être en premier dans le fichier, il ne faut pas tout gâcher).

Si ce fichier n'existait pas, les entrées qu'il contient remplaceront toutes les entrées par défaut du menu F2/User qui étaient normalement visibles. Si vous avez besoin de récupérer ces entrées de menu (certaines sont pratiques !), alors trouver le fichier nommé mc.menu (que l'on trouve généralement dans /etc/mc/ ), copiez-le dans ~/.config/mc/menu et encore une fois, ajoutez ce qui précède à la fin. LA FIN !

Si vous utilisez une ancienne version de mc vous devrez peut-être chercher le mc.menu et le fichier menu doit se trouver dans ~/.mc.menu ... compliqué, oui, un peu. Mais récemment, mc ont révisé l'emplacement de leurs fichiers de configuration pour refléter les meilleures pratiques (suggestions de XDG) et ont tout déplacé vers ~/.config/mc/ . La page de manuel mc(1) est très utile, recherchez menu utilisateur .

Cela ajoute deux commandes :

g (lowercase g)  which will RESTORE the 755 permissions for any .git subdirs
G (uppercase g)  which will REMOVE the permissions (set to 000) from any .git subdirs

J'ai ajouté un test pour empêcher d'effectuer cette opération dans votre $HOME, bien que cela ne soit pas destructif... c'est juste que cela ne me convenait pas de pouvoir le faire à cet endroit.

Profitez-en !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X