Question

J'ai une situation de développement quelque peu intéressante.Le client et le serveur de déploiement se trouvent à l'intérieur d'un pare-feu sans accès au serveur Subversion.Mais les développeurs sont en dehors du pare-feu et peuvent utiliser le serveur Subversion.À l'heure actuelle, la solution que j'ai trouvée consiste à mettre à jour ma copie locale du code, puis à extraire les fichiers les plus récemment mis à jour à l'aide d'UnleashIT.

La question est de savoir comment extraire uniquement les fichiers mis à jour de Subversion afin qu'ils puissent être physiquement transportés à travers le pare-feu et placés sur le serveur de déploiement.

Je ne crains pas d'essayer de modifier la configuration du pare-feu ou de trouver un moyen plus simple d'accéder au serveur Subversion depuis l'intérieur du pare-feu.Je suis simplement intéressé par un moyen d'obtenir une exportation partielle du référentiel des fichiers les plus récemment modifiés.

Y a-t-il d'autres propositions?

Réponse trouvée :En plus de la réponse que j'ai marquée comme Réponse, j'ai également trouvé ce qui suit ici pour pouvoir le faire depuis TortoiseSVN :

depuis http://svn.haxx.se/tsvn/archive-2006-08/0051.shtml

* select the two revisions
* right-click, "compare revisions"
* select all files in the list
* right-click, choose "export to..." 
Était-ce utile?

La solution

J'ai trouvé rsync extrêmement utile pour synchroniser les arborescences de répertoires sur plusieurs systèmes.Si vous disposez d'un accès shell à votre serveur à partir d'un poste de travail de développement, vous pouvez régulièrement extraire le code localement et exécuter rsync, qui transférera uniquement les fichiers modifiés vers le serveur.

(Cela suppose un environnement de type Unix sur vos postes de travail de développement.Cygwin fonctionnera bien.)

cd deploy
svn update
rsync -a . server:webdir/

Votre question donne l'impression que vous n'avez pas réellement d'accès réseau direct depuis vos postes de travail de développement vers votre serveur, et ce que vous recherchez vraiment, c'est un moyen pour que Subversion vous indique quels fichiers ont été modifiés. exportation svn prend en charge un argument pour vous permettre d'extraire uniquement les fichiers modifiés entre des révisions particulières.Depuis l'aide de SVN :

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Vous devrez garder une trace de la dernière révision que vous avez copiée sur le serveur.En supposant qu'il s'agisse de la révision SVN xxxx :

svn export -r xxxx:HEAD http://svn/

Copiez ensuite simplement le contenu du déployer répertoire sur votre serveur au-dessus des fichiers existants.

Cela ne gérera pas les fichiers supprimés, ce qui peut s'avérer problématique dans certains environnements.

Autres conseils

svn export n'accepte pas de plage de révision, essayez-la.

Une solution possible est d'obtenir la liste des fichiers modifiés avec :

svn diff --summarize -rXXX http://svn/...

puis exportez chacun d’eux.

Donc si je comprends bien...

Supposons que vous ayez un dépôt qui ressemble à ceci :

/
|+-DIR1
|   |- FILEa
|   |- FILEb
|+-DIR2
|   |- FILEc
|   |- FILEd
|- FILEe
|- FILEf

Et disons que vous mettez à jour des fichiers FILEa, FILEc, et FILEf et remettez-les dans le référentiel.Ensuite, ce que vous souhaitez exporter hors du référentiel est une structure qui ressemble à ceci :

/
|+-DIR1
|   |- FILEa
|+-DIR2
|   |- FILEc
|- FILEf

Est-ce correct?

Les hooks Subversion semblent très prometteurs.Mais étant relativement mal informé sur la façon de scripter le hook, comment pourrais-je extraire les fichiers qui ont été validés et les FTP quelque part en conservant la structure de répertoires ?

Si je pouvais faire cela, alors quelqu'un à l'intérieur du pare-feu pourrait extraire les fichiers vers le serveur de déploiement et nous serions prêts à partir.

Vous pourriez essayer de jouer avec le vidage de l'administrateur svnadmin commande fournie avec les binaires Subversion.Vous pouvez utiliser cette commande pour vider l'intégralité du référentiel dans un fichier, uniquement certaines révisions ou une plage de révisions.Utilisez ensuite chargement de l'administrateur svnadmin pour charger le fichier de vidage dans un nouveau référentiel propre.

Ce n’est pas une solution parfaite puisqu’elle fonctionne en termes de référentiel et non de fichiers individuels.

Vous voulez simplement que les personnes qui se trouvent derrière le pare-feu puissent accéder aux derniers fichiers validés dans Subversion, n'est-ce pas ?

Pourriez-vous écrire un script de crochetage svn qui utilise une méthode (peut-être scp ou ftp) pour envoyer les fichiers vers l'emplacement distant au moment où ils sont validés ?

Si vous marquez les révisions, cela peut aider github svn-diff-export

Vous ne fournissez pas d'informations sur ce qui est autorisé via le pare-feu.Je ne connais pas UnleashIT.

Je suppose que vous pourriez avoir un script qui exporte depuis SVN vers un dossier sur le serveur SVN.Le script compresse ensuite les fichiers exportés.Vous pouvez ensuite transporter le fichier ZIP comme vous le souhaitez et l'extraire sur le serveur de déploiement.

TortoiseSVN prend en charge les serveurs proxy afin que vous puissiez en utiliser un du côté client ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top