Obtenir une révision spécifique via http avec VisualSVN Server
-
03-07-2019 - |
Question
J'utilise VisualSVN Server pour héberger un référentiel SVN. Pour certains travaux d'automatisation, j'aimerais pouvoir obtenir des versions spécifiques via la couche http [s].
Je peux obtenir la version HEAD simplement via une requête http [s] au serveur (httpd?) - mais existe-t-il une possibilité de spécifier la révision, par exemple sous forme de chaîne de requête? Je n'arrive pas à le trouver ...
Je ne veux pas faire d’extraction sauf si je peux l’aider, car il y a beaucoup de fichiers dans le dossier spécifique, et je ne les veux pas tous - juste un ou deux.
La solution
Mieux vaut tard que jamais; https: // entier / Chemin / Vers / Dossier / fichier /? p = REV
? p = Rev spécifie la révision
Autres conseils
Je ne sais pas si vous avez déjà trouvé la réponse à cette question, mais sur un serveur svn normal sur Apache, vous pouvez accéder à une révision particulière avec:
http://host/svn-name/!svn/bc/REVISION_NUMBER/path/to/file.ext
- hôte & amp; REVISION_NUMBER sont évidents
- /path/to/file.ext est relatif à la racine du référentiel
Je n'ai jamais utilisé visualsvn, votre kilométrage peut donc varier.
Subversion ne documente pas publiquement les Uris qu’elle utilise en interne pour accéder à ces informations. (Et là où cela est documenté, il est explicitement indiqué que cela peut changer dans les versions futures)
Pour accéder à ces informations sur le Web, vous pouvez utiliser un visualiseur Web (par exemple, websvn, viewvc ).
Si vous souhaitez y accéder à partir de votre propre programme, vous pouvez également utiliser une liaison client telle que SharpSvn.
using (SvnClient client = new SvnClient())
using (FileStream fs = File.Create("c:\\temp\\file.txt"))
{
// Perform svn cat http://svn.collab.net/svn/repos/trunk/COMMITTERS -r 23456
// > file.txt
SvnCatArgs a = new SvnCatArgs();
a.Revision = 23456;
client.Cat(new Uri("http://svn.collab.net/svn/repos/trunk/COMMITTERS"), a, fs);
}
[Mise à jour le 31/12/2008 - Une des prochaines versions de Subversion commencera à documenter les URL publiques que vous pouvez utiliser pour récupérer les anciennes versions.]
La page d'aide pour l'interface Web VisualSVN suggère d'utiliser une adresse au format semblable à celui-ci:
link to r1484 commit in the serf's project repository:
https://demo-server.visualsvn.com/!/#serf/commit/r1484/
link to the current content of the trunk/context.c file in the serf's project repository:
https://demo-server.visualsvn.com/!/#serf/view/head/trunk/context.c
link to the content of trunk/context.c file at revision r2222 in the serf's project repository:
https://demo-server.visualsvn.com/!/#serf/view/r2222/trunk/context.c
L'essentiel semble être le numéro de révision du référentiel préfixé par 'r' . Aucune autre réponse ici ne mentionne cela, et en utilisant des adresses formatées de la sorte, j’ai été en mesure de visualiser une révision spécifique d’un fichier source à partir de notre serveur VisualSVN.