Obtendo revisão específica via HTTP com o VisualSVN Server
-
03-07-2019 - |
Pergunta
Estou usando o VisualSVN Server para hospedar um repo SVN e, para algum trabalho de automação, gostaria de obter versões específicas através da camada HTTP [s].
Eu posso obter a versão principal simplesmente por meio de uma solicitação HTTP [s] ao servidor (httpd?) - mas existe alguma capacidade de especificar a revisão, talvez como uma string de consulta? Eu não consigo encontrá-lo...
Não quero fazer uma compra, a menos que eu possa ajudá -lo, pois há muitos arquivos na pasta específica, e não quero todos eles - apenas um ou dois.
Solução
Antes tarde do que nunca;https: // integral/path/to/pasta/file/? P = Rev
? P = Rev especifica a revisão
Outras dicas
Não sei se você já encontrou a resposta para esta pergunta, mas no servidor SVN regular no Apache, você pode obter uma revisão específica com:
http://host/svn-name/!svn/bc/REVISION_NUMBER/path/to/file.ext
- host & revision_number são óbvios
- /path/to/file.ext é relativo à raiz do repo
Eu nunca usei o VisualSVN para que sua milhagem possa variar.
A subversão não documenta publicamente os URIs que ele usa internamente para acessar essas informações. (E onde está documentado, é explicitamente declarado que isso pode mudar em versões futuras)
Para acessar essas informações na web, você pode usar um visualizador da web (por exemplo, webvn, Viewvc).
Se você deseja acessá -lo em seu próprio programa, também pode usar uma ligação do cliente como o 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);
}
Atualização 2008-12-31: Uma das próximas versões do Subversão começará a documentar URLs públicos que você pode usar para recuperar versões antigas.
o Página de ajuda para a interface da web visualsvn sugere o uso de um endereço formatado como um deles:
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
O crucial parece ser o número de revisão do Repo prefixado por 'r'. Nenhuma das outras respostas aqui menciona isso, e usando endereços formatados assim, pude visualizar uma revisão específica de um arquivo de origem do nosso servidor VisualSVN.