VisualSVNサーバーでhttpを介して特定のリビジョンを取得する
-
03-07-2019 - |
質問
VisualSVN Serverを使用してSVNリポジトリをホストしています。一部の自動化作業のために、http [s]レイヤーを介して特定のバージョンを取得できるようにします。
サーバーへのhttp [s]要求(httpd?)を介してHEADバージョンを取得できますが、クエリ文字列としてリビジョンを指定する機能はありますか?見つからないようです...
特定のフォルダーに多くのファイルがあり、1つまたは2つだけのファイルは必要ないので、私が助けてくれない限り、チェックアウトを行いたくありません。
解決
決して遅くない方が良い。 https:// entire / Path / To / Folder / file /?p = REV
?p = Revはリビジョンを指定します
他のヒント
この質問への答えをすでに見つけた場合はDunnoですが、Apacheの通常のsvnサーバーでは、次のようにして特定のリビジョンに到達できます。
http://host/svn-name/!svn/bc/REVISION_NUMBER/path/to/file.ext
- ホスト& REVISION_NUMBERは明らかです
- /path/to/file.extはレポジトリに相対的です
visualsvnを使用したことがないため、走行距離が異なる場合があります。
Subversionは、情報にアクセスするために内部で使用するUrisを公に文書化しません。 (文書化されている場合、これは将来のバージョンで変更される可能性があると明示的に述べられています)
ウェブ上のこの情報にアクセスするには、ウェブビューアーを使用できます(例: websvn、 viewvc )。
独自のプログラムからアクセスしたい場合は、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);
}
[アップデート2008-12-31:Subversionの次のいくつかのバージョンの1つは、古いバージョンの取得に使用できるパブリックURLのドキュメント化を開始します。]
VisualSVN Webインターフェイスのヘルプページでは、次のいずれかの形式のアドレス:
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
重要なのは、 'r'で始まるリポジトリのリビジョン番号のようです。ここにある他の回答はどれも言及しておらず、このようにフォーマットされたアドレスを使用して、VisualSVNサーバーからソースファイルの特定のリビジョンを表示することができました。