J'utilise un référentiel SVN pour mon travail de développement web. J'ai un site de développement mis en place qui tient une caisse du référentiel.Utilisation du hook post-commit SVN pour mettre à jour uniquement les fichiers qui ont été validés
J'ai mis en place un crochet post-commit SVN de sorte que chaque fois qu'un commit est faite au référentiel du site de développement est mis à jour:
cd /home/www/dev_ssl
/usr/bin/svn up
Cela fonctionne bien, mais en raison de la taille du dépôt des mises à jour prend beaucoup de temps (environ 3 minutes), ce qui est plutôt frustrant quand on fait des engagements réguliers. Ce que je voudrais, c'est changer le hook post-commit pour seulement mettre à jour les fichiers/répertoires qui ont été validés mais je ne sais pas comment faire. La mise à jour du "répertoire commun le plus bas" serait probablement la meilleure solution, par ex.
Si les fichiers commis suivants:
- /branches/feature_x/images/logo.jpg
- /branches/feature_x/css/screen.css
Il mettra à jour le répertoire :/branches/feature_x/
Quelqu'un peut-il m'aider à créer une solution qui réalise cela?
Mise à jour:
- Le dépôt et le site de développement sont situés sur le même serveur pour les problèmes de réseau ne doivent pas être impliqués.
- L'utilisation du processeur est très faible, et les E/S devraient être correctes (il fonctionne sur un serveur dédié hi-spec)
- Le site de développement est d'env. 7,5 Go de taille et contient env. 600.000 articles, cela est principalement dû à avoir de multiples branches/tags
J'aime la solution sed. Mais comment pouvons-nous être sûrs de 4 caractères avant le chemin du nom de fichier? –
@FelipeAlvarez Il n'y a aucune garantie que cela ne changera pas. Mais, à partir de maintenant (1.8.0), c'est [3 caractères] (https://github.com/apache/subversion/blob/1.8.0/subversion/svnlook/svnlook.c#L568) et [un espace] (https://github.com/apache/subversion/blob/1.8.0/subversion/svnlook/svnlook.c#L601), puis le chemin. –