Recentemente participei de um processo de migração em minha empresa, onde criamos um COM+ para disparar processos de criação de pastas em um servidor SVN.
Irei abordar neste post como podemos executar comandos do SVN através do C# e em breve irei disponibilizar um tutorial de como criar um COM+ com permissões para executar esses processos.
Todos os processos são executados através da classe System.Diagnostics.Process.
Criando um repositório - Comando create
Usando a classe Process do ASP.NET nós podemos disparar qualquer processo do Windows (é claro que em alguns casos são necessárias permissões de administrador), para isto, basta informar o caminho do executável e se necessário passar os parâmentros do aplicativo a ser disparado.
Veja abaixo como é simples criar um repositório no SVN através do C#:
//Primeiro criamos um processo
Process processo = new Process();
//Definimos dois parâmetros:
//Primeiro: o caminho do arquivo executável
//Segundo: os parâmetros necessários para criação do repositório
processo.StartInfo = new ProcessStartInfo("C:/Arquivos de programas/VisualSVN Server/bin/svnadmin.exe", "create /Repositories/nome_do_repositorio");
//Iniciamos o processo
processo.Start();
//Esperamos o processo finalizar
processo.WaitForExit();
Veja que no segundo parâmetro o caminho do repositório está “/Repositories”, isso porque o servidor SVN está instalado no C:, caso você não consiga acessar por esse caminho, preencha o parâmetro com o caminho completo.
Criando pastas - Comando mkdir
Tão simples quanto criar repositórios, são as criações de pastas nos repositórios. Para criar pastas em um determiando repositório basta executar o seguinte código:
//Criamos um processo
Process processo = new Process();
//Definimos os parâmetros:
//Primeiro: o caminho do arquivo executável
//Segundo: os parâmetros necessários para criação da pasta, caso necessário passe o usuário e a senha
processo.StartInfo = new ProcessStartInfo("C:/Arquivos de programas/VisualSVN Server/bin/svn.exe", "mkdir -m[notepad] --username "usuario"--password "password" https://caminho_do_servidor:8443/svn/nome_do_repositorio/"+ nome_da_pasta);
//Inicia o processo
processo.Start();
//Esperamos o processo finalizar
processo.WaitForExit();
Alguns servidores necessitam que seja informado o usuário e senha para permitir a criação das pastas.
Mais comandos do SVN
Vocês ainda podem utilizar outros comandos do SVN como:
- Commit: Grava todas atualização feita em um repositório.
- Import: Importa uma determinada pasta para um repositório.
- Add: Adiciona um arquivo em um determinado repositório, mas não grava a alteração (necessita de um Commit após sua execução)
- Delete: Deleta o arquivo do repositório.
Qualquer dúvida estou a disposição.
Espero que tenham gostado. Em breve tem mais.