Projetos do Visual Studio com Subversion

Baseado no post anterior, pretendo escrever uma série de posts usando o TortoiseSVN para trabalhar com controle de versão num projeto que estou realizando, que se der pretendo colocar minhas experiências aqui, mas isto fica para outros posts.

O Visual Studio não possui integrado outros controles de versão senão o Visual Source Safe (VSS) da própria Microsoft. Eu já trabalhei com o VSS numa empresa o qual estagiei, mas era disponível para desenvolvimento numa rede local. Ter um servidor rodando Windows e com o VSS não é nada comum. Por este motivo optei pelo Subversion.

No post anterior, expliquei sobre como importar um projeto no repositório, dar checkout e realizar um commit simples. Agora vou citar algumas configurações que devem ser feitas quando lidamos com solutions do Visual Studio.

Uma solução é composta de 1 ou mais projetos, estas informações ficam no arquivo *.sln. Cada projeto é compilado e gera dois diretórios bin e obj. Estes arquivos não são de interesse ao controle de versão, uma vez que a responsabilidade dele é apenas gerenciar códigos.

Portanto, devemos eliminar estes diretórios do repositório para isso utilizamos properties do SVN, usando a property svn:ignore.

A configuração do property é particular de um diretório e fica registrado nos arquivos contidos no diretório .svn (ou _svn) que só podem ser vistos se alterar a visualização de arquivos do Windows para exibir arquivos ocultos. Pelo fato desta configuração ser inserida nestes diretórios, ao criarmos um projeto novo que não esta no repositório, esta informação não fica registrada para este projeto, resultando na adição dos diretórios bin e obj. Seria necessário selecionar manualmente cada arquivo que seria submetido excluindo tudo que tem relação com o diretório bin e obj.

Para este problema podemos declarar globalmente o que remover. Assim teremos de remover os seguintes arquivos para uma solução no SVN:

bin obj *.suo *.user

  • bin e obj – são diretório de arquivos binários (compilados)
  • *.suo – corresponde às configurações de usuário para a solução
  • *.user – corresponde às configurações de usuário para o projeto

 

A seguir vou apresentar como realizar cada operação (inserindo properties e global ignore) e comentários sobre problemas que tive e como tratei eles.

Ignorando Diretórios e Arquivos no Subversion

Num diretório com o projeto gerenciado pelo SVN, clique com o direito e TortoiseSVN > Properties, como ilustra a figura abaixo:

tsvn_04 

Em seguida vamos adicionar uma properti svn:ignore com valores

bin obj *.suo *.user

Com espaços entre cada entrada. Marque a opção: Apply property recursively. Isso irá aplicar a todos os subdiretórios recursivamente a mesma property facilitando o trabalho de ter que replicar a mesma configuração para todos os diretórios.

Entretanto, os diretórios que não estão sobre controle (sem .svn/_svn) não terão esta restrição, entao ao dar um Add os arquivos não desejados serão adicionados, sendo necessário fazer a seleção manual. Para este problema a melhor solução é usar configurações globais de ignore aplicando isso a qualquer diretório.

tsvn_03

Ignorando Globalmente Arquivos e Diretórios

Vá em TortoiseSVN > Settings

tsvn_01

Adicione os elementos “bin obj *.suo *.user” como feito acima em “Global ignore patterns

tsvn_02

Agora o trabalho de dar Add simplificou, garantindo que será adicionado apenas arquivos de código ou necessários para a solução.

Problemas e Soluções

Um dos detalhes que tem que se considerar quando se trata de Visual Studio é que os arquivos que gerenciam os arquivos de solução e projeto, são atualizados somente se for realizando um build da solução e projeto.

Por exemplo, se adicionamos uma referência a um projeto ou *.dll o arquivo que gerencias estas referências será alterando somente se houver alguma classe que referêncie a ela, usando o using por exemplo.

Da mesma forma, para remover uma referência não utilizada mais, é preciso removê-la do references e em seguida executar um Build do projeto ou solução para que as alterações sejam registradas no arquivo e assim resultar numa nova versão do arquivo.

Outra situação é se você já deu commit nos arquivos que devem ser ignorados. O jeito é removê-los antes de aplicar o ignore, senão você não terá como dar commit nos arquivos deletados. Realize estas operações com a solução fechada no Visual Studio.

Uma vez corrigido você poderá aplicar as restrições e assim colocar ordem no repositório.

This entry was posted in .NET, svn, tutorial, visual studio. Bookmark the permalink.

6 Responses to Projetos do Visual Studio com Subversion

  1. Amigo instalei o SubVersion e estou com umas dúvidas e gostaria da sua ajuda por favor.

    Primeiro instalei o servidor CollabNetSubversion-server-1.5.5-1.win32
    Seguindo o AnkhSvn-2.0.5250.202.msi e CollabNetDesktop_1.3.msi que pelo o que vi faz a integração com o Visual Studio 2005 e 2008, no meu caso é 2008.
    Continuando instalei o TortoiseSVN-1.5.6.14908-x64-svn-1.5.5 para integrar o SubVersion ao Windows Explorer e ainda o TortoiseSVN-LanguagePack_1.5.6.14908-x64-pt_BR para traduzir do Tortoise para português.

    Até ai está tudo ótimo, a pasta de repositório ficou como d:\RepositorioSVN e consigo criar um repositório dentro dela criando uma pasta normal e botão direito do mouse > TortoiseSVN > Criar repositório aqui e cria normal com alguns arquivos de configuração ali dentro.

    Agora, a partir daí já não estou sabendo como prosseguir, se eu clico com botão direito sobre a pasta criada no diretório de repositório e faço check-out ele pede a URL do Repositório, esse URL que está me complicando, o servidor SubVersion cria um endereço, eu mesmo crio, como funciona?

    Até pelo Visual Studio 2008 ele integrou tudo também e clicando com botão direito sobre o projeto tem as opções do SubVersion e se eu clicar para adicionar aquele projeto ao programa de controle de versão ele pede também a URL do Repositório, acho que meu problema é entender como funciona a URL.

    Será que eu tenho que criar uma aplicação no IIS apontando para a pasta do projeto? Apesar que fiz este teste e nada também.

    Bom agradeço muito sua ajuda e obrigado mesmo!

    • Fabio Y. says:

      Ola Rodrigo,

      O jeito mais prático para se ter um servidor local de SVN é usando o VisualSVN Server que é gratuito. Se você já conseguiu criar o repositório com sucesso basta a pontar o servidor como file system do sistema, por exemplo:

      file:///d:/RepositorioSVN

      Particularmente eu nao gosto muito do AnkhSvn eu prefiro gerenciar pelo explorer usando o tortoise svn, apesar de ser menos friendly para o usuário, mas é uma questao de costume.

      Se você pretende utilizar o SVN apenas localmente, o próprio TortoiseSVN cria o repositório, como você já fez. Agora se quiser publicar um servidor dentro de uma lan por exemplo, o VisualSVN Server cria este tipo de serviço para você.

  2. Israel Borba says:

    Jamais farão um software pior que o ANKH e que este Tortoise.. a ruindade ultrapassa minha paciencia pra descrever a quantidade de problemas que estou tendo..

    SE FOSSE BOM, NÃO SERIA DE GRAÇA!!!

  3. Fabio Y. says:

    Israel eu não o tortoise svn um aplicativo ruim, eu uso ele sem problemas com o visual studio. Acredito que o grande problema de muita gente seja a falta de pragmatismo na hora de usar um controle de versão. Poucas pessoas comitam todas as alterações realizadas. É muito comum ver pessoas comitarem um arquivo apenas quando e não verificando se o projeto compila, muitas vezes por não haver um servidor de integração continua.

    Eu acho extremamente prático você realizar um commit da pasta da solução, assim você evita de comitar um arquivo errado.

    Todas as etapas de configuração que passei são válidas e funcionam muito bem, não havendo poluição no repositorio.

    Quais problemas você está tendo?

  4. Parabéns, muito bom o seu tópico. Eu uso exatamente isso aqui na empresa. Subversion com Tortoise em projetos do Visual Studio. Porém, tem algo que naõ consigo de jeito nenhum: fazer o acesso via web ? Vc me recomenda algum tutorial ? Tentei, cheguei a instalar o Apache (o servidor é um windows 2003 server). Já ou vi falar que tem como fazer pelo IIS. Por fim, gostaria de um passo a passo de como configurar o Subersion para acesso fora da empresa. Sabe onde encontro ?
    Muito obrigado e um abraço !

    • Fabio Y. says:

      Ronei,

      Eu já configurei via apache o SVN, porém se esta utilizando ambiente Windows recomendo o VisualSVN Server (gratuito). A nova versão inclui o último release do SVN e tem suporte ao Trac (não oficial), que fica muito simples de configurar, em alguns minutos você tem um repositório SVN + Trac rodando em Windows. Infelizmente, o VisualSVN Server ainda não inclui suporte a outros sistemas de autenticação como LDAP, apenas o Active Directory que é extremamente simples de configurar.

      Quanto a disponibilização, acredito que não seja complicado uma vez que o SVN roda sobre o HTTP bastanto ter um servidor disponível externamente, não existe nada de específico no SVN, apenas configurar o acesso externo no firewall para a porta utilizada pelo SVN.

      Vale incluir que o VisualSVN Server tem suporte também a certificados o que permite o uso de SSL caso precise de segurança.

      http://www.visualsvn.com/server
      http://www.visualsvn.com/server/trac/

      Abraços

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>