Obtenez rapidement une liste de tous les svn:externals pour une distance dépôt svn
Nous avons un référentiel svn avec beaucoup de répertoires et de fichiers et de notre système de construction doit être en mesure de trouver toutes les propriétés svn:externals, de manière récursive pour une branche dans le référentiel, avant de le vérifier. Actuellement, nous utilisons:
svn propget svn:externals -R http://url.of.repo/Branch
Cela s'est avéré très coûteux en temps et c'est une largeur de bande de porcs. Il apparaît que le client reçoit tous les accessoires pour tout le repo et de faire le filtrage localement (bien que je n'ai pas confirmé l'existence de ce avec wireshark). Est-il un moyen plus rapide de faire cela? De préférence, une façon d'amener le serveur à retourner uniquement les données souhaitées.
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez mentionné, il consomme de la bande passante réseau. Toutefois, si vous avez accès au serveur où ces dépôts sont hébergés, vous pouvez l'exécuter via
file://
protocole. Il est prouvé pour être plus rapide et pas de réseau en consommant.Aussi, si vous aviez l'ensemble de la copie de travail en place, vous pouvez également exécuter dans vos WC.
Espère que cela vous aide à obtenir les résultats plus rapidement!
file://
va me donner Avorté après quelques secondes. Similaire à svn.haxx.se/utilisateurs/archives-2007-04/0500.shtmlJ'ai finalement trouvé une solution. J'ai décidé de briser la demande en de multiples petits svn demandes et ensuite faire de chacun de ces une tâche à exécuter par un pool de threads. Ce genre de claque le serveur svn, mais dans notre cas, le serveur svn est sur le réseau local et cette requête n'est faite lors de la pleine construit de sorte qu'il ne semble pas être un problème.
os.popen()
lorsqu'elle est exécutée dans un thread. Il a juste meurt en silence. J'ai donné de l'exécuter dans un thread et a retiré l'ensemble de l'enfilage partie de ce script. Si je suis en perte de vitesse ici, ce script est plus fiable par rapport àpropget -R
qui vient de mourir en silence lorsqu'un dépôt est trop grand.Il est lent à cause de l'interrupteur-R; tous les répertoires à l'intérieur de votre chemin de référentiel sont recherchés pour le bien de manière récursive, ce qui est beaucoup de travail.
Pas de solution idéale (peut avoir des effets secondaires) et non pas la réponse sur votre problème, mais
Vous pouvez réécrire toutes les définitions externes et ajouter (réécrit) dans une commune, lieu connu - de cette façon vous aurez à éliminer la récursivité dans pg après le changement
Si vous n'avez pas l'esprit à l'aide de Python et de la pysvn bibliothèque, ici, est un programme en ligne de commande que j'utilise pour SVN alias:
Cela devrait fonctionner dans les deux Python 2 et Python 3.
Vous pouvez l'utiliser comme ceci (adresses supprimé):
Que pour la performance, cela fonctionne assez rapide (bien que mon référentiel est assez petit). Vous devez vérifier par vous-même.
pas sûr de l'endroit où j'ai trouvé ce petit bijou, mais il est très utile de voir les externes propres externes: