2011-06-29 3 views
2

Le problèmecomment pousser les changements de serveur SVN vers le serveur Web distant

je dois pousser des changements à partir d'un serveur SVN à un serveur Web distant chaque fois qu'un développeur engage code. Je voudrais le faire efficacement. Par conséquent, je souhaite uniquement pousser les modifications sur le serveur distant et non sur l'ensemble du référentiel.

La situation actuelle

Actuellement, le serveur distant appelle une mise à jour toutes les cinq minutes. Cependant, je préférerais que le trafic soit entrant sur le serveur web au lieu d'être sortant. Le serveur svn est sur une boîte de Windows 2003. Le serveur Web est une boîte OpenSUSE 11.4.

Recherches précédentes SO

J'ai recherche SO pour cette question, mais il semble que vous les gars aimez git et la plupart des questions portent sur ce logiciel.

Merci d'avance. Vous êtes géniaux.

+2

Pouvez-vous déclencher la mise à jour par SSHing dans votre boîte SUSE? Si c'est le cas, vous pouvez configurer un hook post-commit sur votre serveur SVN pour cela. J'espère que quelqu'un peut remplir les détails comme une réponse! – Rup

+0

Je peux en effet le faire. –

+0

Lorsque vous dites pousser les changements à un serveur web distant, dans quel format les pousses-tu. Essayez-vous de refléter le repo? –

Répondre

1

Je vais développer le commentaire de Rup (puisqu'il a demandé!).

Il semble que votre serveur distant (appelons le serveur B) possède une copie de travail d'une section du référentiel. Vous souhaitez que votre référentiel situé sur un autre serveur (serveur A) déclenche une commande svn update sur le serveur B.

Il existe plusieurs façons de procéder (comme avoir une copie de travail extraite sur le serveur A avec un rsync de cette copie de travail poussé vers le serveur B, vous permettant également de masquer les répertoires .svn). Mais, comme le dit Rup, le plus simple est de mettre en place un simple hook de post-commit à SSH dans le serveur B et de faire une mise à jour. Sur le serveur A (en supposant que vous avez configuré authorized_keys entre le serveur A et B):

#!/bin/bash 
ssh serverB 'svn update /path/to/working/copy' > /dev/null 
+0

Comment entrer le mot de passe pour ssh et pour svn dans cette approche? – KoviNET

+1

Vous devez configurer un fichier authorized_keys sur le serveur distant (dans mon exemple, serverB). Cela permettra au serveur A de se connecter au serveur B sans avoir à taper un mot de passe. – jtv4k

Questions connexes