Gérer un dépôt subversion et un nouvel utilisateur qui ne comprenait pas très bien comment cela fonctionnait.
Pour faire court, puisque leur structure locale a été foirée en raison de la copie de dossiers .svn aléatoires, j'ai fait ce qui suit:
- copié la structure locale dans un dossier appelé staging
- récursivement supprimé tous les dossiers .svn du répertoire intermédiaire
- extrait le dépôt dans un "dossier propre"
Maintenant, nous sommes à la dernière étape - obtenir le contenu du dossier intermédiaire pour écraser le contenu propre.
J'ai besoin qu'une commande copie le contenu du répertoire de transfert dans le répertoire propre, supprimant tout ce qui se trouve uniquement dans le répertoire propre, MAIS laissant les dossiers .svn du dossier propre intact.
Cela ressemble à un travail pour rsync. La commande suivante serait-elle correcte?
rsync -avr --exclude=.svn* [staging] [clean]
rsync
subversion
SeanKilleen
la source
la source
rsync
avec l'--dry-run
option de le découvrir!Réponses:
L'
-C
option pour rsync peut être ce que vous voulez.Ne vous laissez pas duper par la courte description de la page de manuel. Il semblerait que l'option ne s'applique qu'à CVS, mais selon votre version de rsync, elle ignorera les fichiers de presque tous les systèmes de contrôle de version courants existants.
la source
*.a
est pour les bibliothèques statiques iOS.Presque - cela devrait être
ou toute autre forme de citation qui empêche le shell d'étendre le caractère générique. (Le caractère générique ne correspondrait qu'à un fichier improbable dont le nom commence par
--exclude=.svn
, mais il vaut mieux ne pas prendre de risque, et également fonctionner correctement même si le shell est configuré pour s'étouffer avec des caractères génériques non correspondants ou pour les étendre à la liste vide. )-r
est déjà inclus dans-a
. Le supplémentr
est juste superflu, il ne fera aucun mal.--exclude
fait que les fichiers correspondant à son argument ne sont ni copiés, ni pris en compte pour une traversée récursive. La difficulté habituelle avec rsync va dans l'autre sens, à l'exclusion d'un répertoire sauf pour certaines parties de celui-ci. Voir Filtre Rsync: copier un seul motif pour quelques conseils.Dans ce cas particulier, l' exclusion des répertoires de contrôle de version est un moyen rapide d'obtenir ce que vous voulez.
la source