Posted in ASP.NET, Visual Studio | 11 Comments
Utilizando SVN, Tortoise e o integrando ao Visual Studio.
Instalando, Configurando e usando SVN e uma dicazinha de como integrar esse cabra ao Visual Studio 2005, 2008 e 2010. Não é nem de longe difícil a integração, então se você veio aqui somente por este motivo, pegue o Ankhsvn na listinha ae embaixo, e pule logo pro final deste artigo, do contrario, aproveite as dicas, e se tiver dúvidas só postar nos comentários que ajudarei de todas as formas possíveis! Este artigo foi traduzido e picotado de outros 4 que encontrei quando busquei detalhes sobre o assunto, espero ser bem claro abaixo =)
Vamos lá?!
Você vai precisar de:
Subversion: http://subversion.tigris.org
É o servidor de SVN, pode baixar a última versão que não tem grilo. A instalação é tranquila, nem necessita de explicações.
Caso você não queira/precisa instalar o Subversion na sua máquina, e vai consumir um SVN externo, então não precisa copiar!
Uma dica de SVN externo é o repositório do Google code: http://code.google.com/hosting/
Tortoise SVN: http://tortoisesvn.tigris.org
Tortoise é com certeza o Client UI de SVN mais utilizado, e de fácil instalação. Após instalado, você conseguirá trabalhar com ele a partir de qualquer pasta no seu windows.
Ankhsvn tool: http://ankhsvn.open.collab.net
É a ferramenta de Subversion que provê integração total com o Visual Studio 2005, 2008 e 2010! Na minha opinião, em questão de integração, ele é mil vezes melhor que o Microsoft Source Safe… (claro que não bate o Team Fondation $erver, mas isso é outra história hehehe)
Se você quiser uma versão paga de integração com a IDE da Microsoft, tente o VisualSVN ($49 doletas…)
http://www.VisualSvn.com
Primeiro Passo – Configurar SVN/Tortoise
Após instalar tudo, e reiniciar a máquina (importante). Abra as Configurações do TortoiseSVN a partir de qualquer pasta no Windows Explorer. Basta clicar com o direito em uma pasta, selecionar TortoiseSVN > Settings.
Após feito isso, na guia de General mesmo, marque a opção Use "_svn" instead of ".svn" directories, para trocar o nome dos repositórios de .svn para _svn para melhor funcionamento no Visual Studio
Criando um novo Repositório com o TortoiseSVN
Agora vamos criar um repositório e então adicionar um projeto do Visual Studio nele, e fazer tudo conversar na mesma língua!
Repositórios são basicamente “banco de dados” aonde estarão os arquivos a serem versionados. Este pode ser armazenado na sua máquina local ou remota, acessando via Daemon Service ou através de HTTP utilizando Apache module (instalado a parte). Vamos trabalhar aqui com sua máquina local, e usando o Tortoise para administrar este banco de dados. Para criar um repositório, basta criar uma pasta aonde você colocará o projeto do VS.
Vamos usar como exemplo: C:\Projetos\Aquavisor
Após criar a pasta, clique com o botão direito do mouse nela e vá em TortoiseSVN > Create Repository Here (a pasta deve estar vazia, e não ser “somente leitura”)
Depois disso você precisa configurar o C:\Projetos\Aquavisor\conf\svnserve.conf
no SvnServe.conf:
[general] #anon-access = read auth-access = write password-db = passwd realm = Aquavisor
Isso para liberar autentificação de usuários na pasta.
Feito isso, para adicionar usuários, basta colocar seus usernames e senha como chaves pares (username = password), Exemplo:
[users] malkafly = senhachiquechique golum = precioso anakin = morrampovododeserto
Colocando Subversion como um serviço
Uma vez que o repositório é criado, o próximo passo é tornar ele acessível remotamente. Junto com o Subversion virá um built-in chamado Daemon server, que permitirá esse acesso através de TCP/IP (porta 3690 por default). A ativação do serviço é feita pelo SvnServer.exe localizado na pasta BIN da instalação do Subversion, quanto você rodar esse .exe ele já irá ser instalado como um serviço, e para fazer isso de forma mais fácil, vamos criar um arquivo bach, ou digitar tudo como linha de comando mesmo.
Tudo na mesma linha e corrigir o caminho do subversion caso você tenha alterado durante a instalação:
sc create svn binpath= "\"c:\arquivos de programa\subversion\bin\svnserve.exe\" --service -rd:\subversion" displayname= "Subversion Server" depend= Tcpip start= auto
Se quiser fazer em bach (o que é beeeem melhor), basta abrir o bloco de notas, adicionar a linha acima, e salvar com a extensão .bat.
Caso precise/queira usar outra porta então use o comando -listen-port=nn.
Agora para startar o serviço do svn basta ir no Gerenciador de Serviços do windows ou via linha de comando mesmo: sc start svn
Testando o Repositório
Primeiro, para ter certeza que o repositório está OK, é iniciar o TortoiseSVN de qualquer lugar e tentar conectar no seu endereço de IP ou host da máquina. Abra uma pasta qualquer, clique com o botão direito do mouse, escolha TortoiseSVN > Repo-browser e adicionar seu novo server de SVN, exemplo: svn://endereçoIPOUhostname/. Se abrir seu repo, sem nenhuma mensagem de erro, então: “Maaaravilha alberto!” tudo certinho e ok ![]()
Caso contrario certifique-se do caminho digitado, definitivamente TEM que funcionar localmente, remotamente pode dar bucha por causa do Firewall, verifica se ele está bloqueando a porta selecionada (3690 por padrão!)
Adicionando seus Projetos/Arquivos ao SVN
Como se sabe, o TortoiseSVN não se integra ao Visual Studio, então vou mostrar como fazer o basicão só pelo Tortoise mesmo, e depois mostro o integrado (muito porque, é extremamente mais simples já que que o ankhsvn vira um plugin do visual studio).
Então vamos lá, adicionando. Supondo que meu projeto, tenha a seguinte estrutura:
[raiz]
– Malkafly.Aquavisor
—- Malkafly.Aquavisor.BusinessLayer
—- Malkafly.Aquavisor.DataLayer
—- Malkafly.Aquavisor.Web
Criação de projetos é um pouco complicado com Tortoise, porque quando você pode facilmente importar conteúdo para o SVN no servidor, a opção Importar não verifica automaticamente o conteúdo local. Você também não pode dar Checkout imediatamente depois de você ter importado porque o Tortoise não irá permitir que você sobrescrever arquivos existentes que não estão sob o SVN.
Uma das formas de resolver isso é:
- Criar um novo diretório no repositório
- Encontrar a pasta do seu projeto no Explorer
- Usar o Tortoise para dar Checkout na nova pasta criada no repositório
- Adicionar arquivos diretamente pelo Explorer com o Tortoise
- E Commit Changes
Passo a passo fica assim.
1 – Criaremos uma “Pasta um nivel acima da sua Raiz”.
– No Tortoise vá no Repo-browser;
– Na janela de “Repository Browser” selecione o host, clique com o direito do mouse e vá em Create folder;
2 – Baixando a nova pasta Raiz, e adicionando seu projeto.
– Volte ao Explorer e vá ou crie, a pasta “Aquavisor” no diretório aonde deseja baixar projeto;
– Clique direito nessa pasta, e selecione SVN Checkout...;
– Selecione o nível topo do repositório e aponte para sua pasta local correspondente;

Bom, nada de fato foi baixado, porem agora você pode adicionar seu projeto individualmente…
3 – Adicionando o Projeto ao SVN
– Volte ao Explorer, a pasta que você acabou de dar checkout, está com um Ícone Verde.
– Arraste/Copie seu projeto para dentro desta pasta, ela vai ficar com um Ícone de interrogação.
– Agora basta clicar com o botão direito do mouse nesta pasta, ir em TortoiseSVN > Add…

e confirmar, ele vai subir recursivamente todos arquivos, e pastas.
Recomendável, de que como é um projeto .net que estamos falando, você vá nas pastas /bin/ e /obj/ de cada projeto, e remova do repositório. Para fazer isso, vá nestas pastas de cada projeto, clique em com direito do mouse: TortoiseSVN > Delete and add to ignore list... e selecionar a opção de ignorar por nome.
AH! Claro, se for adicionar a bin como ignorada, tenha certeza de subir as .dll auxiliares do projeto de alguma forma… Eu geralmente crio uma pasta “lib” na raiz do projeto, e subo junto, ela só não é adicionada ao projeto do visual studio, mas está no repositório.
4 – Commit!
– Feito isso, adicionado o projeto, arquivos e tudo mais, e também (opcionalmente) ter removido as pastas de log, obj, bin
etc… vamos ao commit!
– Clique na raiz da pasta que você tinha criado anteriormente, clique com o direito e SVN Commit..

Pronto! Após subir tudo, seu diretório vai ficar cheio de balõezinhos verdes nos ícones =)
Isso você fará cada vez que precisar adicionar um projeto no SVN.
Agora que ele está pronto, vamos usar-lo!
Baixando um projeto do SVN para pasta local
Isso vale principalmente para você que hospeda seu código no Google Code, Codeplex ou servidor web de terceiros, e precisa ter acesso ao fonte.
Basta criar uma pasta em algum local bacana como o descrito lá em cima na criação do projeto no svn, depois dar clique direito do mouse sobre essa pasta, e basicamente ir em SVN Checkout.
Só que desta vez (para quem acaba de criar o próprio server SVN, ou acabou de subir pela primeira vez o source), aparecerá todos os arquivos do seu projeto, então basta selecionar a raiz do projeto, e apontar para sua pasta correspondente na sua máquina local.

Usando o Tortoise
Diferente do Source Safe, o SVN utiliza um conceito de marge-copy-Modify, que possibilita que vários usuários possam trabalhar no mesmo arquivo, ao mesmo tempo.
Os Ícones
Vermelho com exclamação: Significa que este arquivo foi alterado e ainda não foi enviado ao servidor (SVN commit…), quando este ícone esta em uma pasta, quer dizer então que dentro desta, há arquivos nessa situação.
Verde Checkado: Arquivo que está com a mesma versão do servidor.
Amarelo alerta: Se durante um update houver algum conflito, este arquivo irá ser marcado com a exclamação amarela.
Sinal de + azul: Arquivos em seu diretório local que não estão no servidor, e para que sejam adicionados ao svn precisam ser “added” ao svn, e depois SVN Commit.
Pegando um arquivo para trabalhar
Regra numero 1 que aprendi com o mestre Oleiro, que vivia acertando as cagadas que eu fazia no SVN…
1º Antes de pegar qualquer arquivo para edição, selecione o mesmo, clique com o direito do mouse e vá em SVN
Update.... Feito isso as chances de você trabalhar em uma cópia antiga deste arquivo são remotas.
Após dar um “update”, então basta abrir o arquivo e começar seu trabalho. Automaticamente, ele atualizará o iceno para vermelho, que significa alterado em relação a versão do servidor.
Caso ao baixar tenha dúvidas sobre as alterações feitas no código, você pode ir em “Check for modifications”:

…e comparar as versões direfentes do servidor e local do arquivo em questão:

Subindo seus arquivos para o SVN
Feito o trabalho no arquivo, para mandar para o svn, é simples! Basta selecionar o arquivo (ou diretório) e ir em “SVN Commit”. Uma vez que existir divergências no código fonte, será necessário fazer uma verificação nas diferenças, e tomar decisão por subscrever a versão do servidor (ou local) ou optar por um marge, que é unir ambas versões, toda calma e cuidado nessa hora é pouco!

Integração com Visual Studio
Essa sinceramente dispensa muitas explicações.
Após baixar o AnkhSVN e instalar. Abra o visual studio e veja a diferença na sua Solution Explorer:

E a nova barra adicionada:

Dúvidas? Sugestões? Criticas?! manda bala ae nos comentários =)
Abraços!



11 Comments