Eh bien, laissez-moi tenter votre chance. Vous pouvez analyser la sortie de la commande de mise à jour SVN et générer des instructions de copie qui copient uniquement les fichiers modifiés?
http://svnbook.red-bean.com/en/1.1/ch03s05.html
Examinons la sortie de svn mise à jour un peu plus. Lorsque le serveur envoie des modifications à votre copie de travail, une lettre code est affiché à côté de chaque élément à vous permettra de savoir quelles actions Subversion effectuées pour apporter votre copie de travail mise à jour:
U foo
Fichier foo a été mis à jour (a reçu modifications du serveur).
A foo
foo fichier ou répertoire a été ajouté à votre copie de travail.
D foo
fichier ou répertoire foo a été supprimé de votre copie de travail.
R foo
fichier ou répertoire foo a été replacés dans la copie de travail; que est, foo a été supprimé et un nouvel élément du même nom a été ajouté. Alors que ils peuvent avoir le même nom, le référentiel les considère comme objets distincts avec des historiques distincts .
G foo
fichier foo reçu de nouvelles modifications du référentiel, mais votre copie locale du fichier a vos modifications. Soit les changements ne pas recoupé, ou les changements ont été exactement les mêmes que vos modifications locales, donc Subversion a Fusionné avec succès modifications du référentiel dans le fichier sans problème .
C foo
fichier foo reçu Conflicting modifications du serveur. Les changements du serveur chevauchent directement vos propres modifications au fichier. Pas besoin de paniquer, cependant. Ce chevauchement doit être résolu par un humain (vous); nous discuter de cette situation plus tard dans ce chapitre .
Ou si vous préférez une solution semi-manuelle, vous pouvez utiliser un outil de diff comme WinMerge ou Araxis Merge pour synchroniser les deux répertoires.
EDIT:
Je ne pense pas "svn update" fonctionnera exactement, mais ce que je me suis installé sur était:
- svn caisse de la révision prod actuel (ancien)
- svn commutateur à la révision qui est prête pour prod (nouveau)
J'ai écrit un script pour capturer la sortie du "commutateur". Il traduit les opérations U et A en "ajoute" à une archive zip. Il traduit les opérations D pour supprimer les commandes à exécuter sur le serveur de production. Sur le serveur de production, il suffit de décompresser l'archive et d'exécuter les commandes de suppression.
Je ne comprends pas comment le problème de la libération sur un serveur de production est lié au problème du contrôle de version. Peux-tu élaborer? – cdonner
Pour voir si je comprends. Vous effectuez une mise à jour SVN sur la machine A, puis vous copiez l'intégralité du répertoire du site sur la machine de production. Vous voulez juste copier les choses qui ont changé avec cette mise à jour SVN, évitant ainsi de copier le répertoire entier. Est-ce que c'est ça? –
Si le serveur de production était connecté au serveur svn, nous irions simplement sur le serveur de production et ferions svn update. Mais ce n'est pas connecté. – JoelFan