2008-10-01 24 views
30

J'utilise VisualSVN Server pour héberger un repo SVN, et pour certains travaux d'automatisation, j'aimerais pouvoir obtenir des versions spécifiques via la couche http [s].Obtenir une révision spécifique via http avec VisualSVN Server

Je peux obtenir la version HEAD simplement via une requête http [s] au serveur (httpd?) - mais est-il possible de spécifier la révision, peut-être en tant que chaîne de requête? Je ne peux pas sembler le trouver ...

Je ne veux pas faire un checkout à moins que je puisse l'aider, car il y a beaucoup de dossiers dans le dossier spécifique, et je ne les veux pas tous - Juste un ou deux.

Répondre

4

Subversion ne documente pas publiquement l'Uris qu'il utilise en interne pour accéder à ces informations. (Et où il est documenté, il est explicitement indiqué que cela peut changer dans les futures versions)

Pour accéder à ces informations sur le Web, vous pouvez utiliser un Web Viewer (par exemple websvn, viewvc).

Si vous souhaitez y accéder à partir de votre propre programme, vous pouvez également utiliser une liaison client comme 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 2008-12-31: L'une des prochaines versions de Subversion commencer à documenter les urls publics que vous pouvez utiliser pour récupérer les anciennes versions.]

+0

Intéressant - très, très intéressant. Je vais donner un tourbillon. –

+0

Notez que les versions plus récentes de Subversion ont maintenant une syntaxe d'URL publique pour récupérer les anciennes révisions. Le @revision peut être spécifié avec? P = révision et un -r rev en utilisant? R = rev. (Et ces valeurs peuvent bien sûr être combinées) –

6

J'sais si vous avez déjà trouvé la réponse à cette question, mais dans le serveur svn régulier sur apache vous pouvez obtenir une révision particulière avec:

http://host/svn-name/!svn/bc/REVISION_NUMBER/path/to/file.ext 
  • hôte & REVISION_NUMBER sont évidents
  • /path/to/file.ext est relatif à la racine repo

Je ne l'ai jamais utilisé VisualSVN pour que votre kilométrage peut varier.

+0

Intéressant; Je vais jeter un oeil –

+1

VisualSVN n'utilise pas ce format. Voir la réponse de @ chhenni ci-dessus. –

+0

Cela ressemble à ce que j'étais après - comment le faire sans quelque chose comme visualsvn. Je ne suis pas sûr de suivre la partie '! Svn/bc /'. Comment voulez-vous récupérer une révision spécifique à partir d'un chemin comme celui-ci 'http: // svn.apache.org/repos/asf/httpd/site/trunk/content/index.mdtext' –