Todos sabem, ou deveriam saber, a importância de manter um projeto sob alguma forma de controle de versão, principalmente quando este projeto vai ser realizado por vários integrantes, que podem estar programando sem estar em contato uns com os outros, em arquivos diferentes ou às vezes um mudando os arquivos dos outros. As vantagens de integrar os códigos dos diferentes membros do projeto durante todo o andamento das atividades, de possuir um log com todas as alterações que foram feitas, possuir os códigos de cada versão, podendo reverter um dado arquivo para uma versão mais antiga que funcionava e até mesmo a possibilidade de verificar a atividade de cada participante do projeto são apenas alguns dos motivos para alguém usar uma ferramenta de controle de versão.
Desde projetos pequenos, como alguns da universidade, que vão durar um mês e ter no máximo 4 ou 5 participantes, até grandes projetos como os hospedados no sourceforge (eMule por exemplo), é interessante possuir uma ferramenta de versionamento. Existem vários sites que oferecem o serviço gratuitamente, alguns exigindo que o projeto seja open-source, como o Google Code (http://code.google.com/hosting/), no qual você deve escolher entre algumas licenças como GPLv2 ou 3, Apache ou Mozilla e possui um espaço limitado (se não me engano são 100MB) para manter seu código. Outros sites como o Assembla (http://www.assembla.com, oferece 500MB) permitem projetos fechados (EDIT: Desde outubro de 2008 o Assembla deixou de oferecer o serviço gratuito para projetos de código fechado. Projetos opensource continuam podendo ser hospedados por lá sem problemas). Já tive a oportunidade de trabalhar com ambas as ferramentas citadas acima, e posso dizer que elas foram muito úteis para projetos da universidade e outros projetos pessoais. Quando os projetos passam a ser fechados, envolver dinheiro realmente, em que o código deve ser protegido e/ou não se pode depender totalmente da conexão com a internet, usar uma ferramenta na web pode não ser a melhor opção (mesmo que alguns dos serviços, como o Assembla, ofereçam versões pagas que resolvem alguns dos problemas de ter seu repositório todo na web). Daí surge a necessidade de instalar seu próprio servidor SVN ou CVS, e com isso, pode surgir uma grande dor de cabeça.
Resumindo bem, a maioria dos servidores “oficiais” de controle de versão são realmente complicados pra instalar. Já vi gente que já tinha instalado umas dez vezes um servidor de CVS se passar pra conseguir instalar a décima primeira vez… O processo as vezes parece até místico :p. É instalação deszipando arquivo, escrevendo comando em prompt, alterando variável de ambiente do SO… enfim, seu projeto pode correr o sério risco de parar antes de ter uma linha de código escrita. Os leitores mais masoquistas podem dar uma olhada neste site, que possui um passo-a-passo de como instalar o servidor subversion normal e criar um repositório. Pra simplificar tudo isto, vou falar sobre o VisualSVN Server.
Como citei no título deste post, o VisualSVN Server é grátis, pra qualquer tipo de projeto, ao contrário do cliente VisualSVN para o Visual Studio, do qual falei neste outro post. Também falei que o VisualSVN Server é “plug an play”… estou tomando esta expressão emprestada do pessoal de hardware, pois é a melhor expressão que eu encontro para falar sobre este programa. A única ação que você precisa tomar para criar o servidor é instalar o programa. Pronto, não precisa mais enfiar valores bizarros nas variáveis de sistema nem se embrenhar em prompts cinza-sobre-preto (particularmente, prefiro verde-sobre-preto). Toda a manutenção é feita através do console de gerenciamento do sistema, aquele mesmo que é usado para gerenciar o IIS ou os discos no seu Windows, através de uma interface extremamente limpa e fácil de usar. A criação de um repositório, de usuários e a atribuição de quais usuários vão ter acesso (e em que nível) a cada repositório é extremamente simples. Para exemplificar bem como este processo é simples, vou mostrar um passo-a-passo, ilustrando com screenshots das telas, sobre como criar seu repositório usando o VisualSVN Server.
1. Baixe o VisualSVN Server. Vá em http://www.visualsvn.com/server/ e baixe a versão mais nova do programa. Este é o único arquivo que você precisará baixar para fazer seu servidor funcionar.
2. Rode o Instaladador. A Tela de Instalação mais importante é a seguinte:

Nela você escolhe onde o programa será instalado, em que pasta ele irá manter os repositórios (note que para escolher, você deve clicar no respectivo botão Browse), o nome do servidor, uma porta para o servidor (a porta padrão é 8443) e se você quer ou não usar https. Eu gosto de usar https e mudar a porta pra qualquer outra, mas isso fica a seu critério.
3. Depois de concluir a instalação, seu servidor de repositórios já está rodando! Se quiser conferir, vá em http(ou https)://NomeDoSeuServidor:SuaPorta . Você ainda não criou nenhum repositório nem nenhum usuário, então não vai conseguir ver nada. Vamos criar agora.
4. Abra o console de configuração do VisualSVN Server. Você deve ver uma tela como a seguinte:

Vamos primeiro criar um usuário. É só ir com o botão direito em Users, e clicar em “Create User”. Informe um login, digite e confirme a senha (a senha é case-sensitive) e crie o usuário. Se você tentar agora entrar na página do seu servidor e passar este usuário/senha, você vai ter uma tela como a seguinte:

Para alterar a senha ou remover um usuário, basta clicar sobre o login desejado na tela de usuários e escolher a ação.
5. Agora vamos criar um repositório. Também é uma operação extremamente simples, basta clicar com o botão direito em “Repositories”, “Create Repository…” e escolher um nome para ele. Na tela onde você bota o nome para seu repositório, você tem a opção de escolher se devem ser criadas as pastas padrão de um projeto no svn: “trunk”, usada para manter os arquivos em desenvolvimento, “branches” para as versões suficientemente estáveis, onde não haverá mais desenvolvimento, apenas correções, e posteriormente o código sofrerá testes exaustivos, e “tags”, que são realmente as versões de release do projeto. Recomendo fortemente deixar o servidor criar estas pastas, dado que são um padrão quando se usa o SVN.
6. Finalmente, você deve configurar quem terá acesso ao seu repositório. Clique com o botão direito sobre o nome de seu repositório e escolha “security”. Por default todos tem acesso de leitura e escrita, para mudar isto basta você remover o grupo “Everyone” da lista e adicionar os usuários que você deseja que tenham acesso e qual nível de acesso você deseja dar para cada usuário ou grupo.
7. Tudo pronto, agora basta você dar um checkout usando o cliente svn de sua preferência para o endereco [[http ou https)]]://[[NomeDoServidor]]:[[PortaDoServidor]]/svn/[[NomeDoRepositorio]]/
Pronto, seu repositório está criado e você pode fazer o que quiser com ele
… Bem simples, e em 5 minutos você tem um servidor de controle de versão para seu projeto rodando! Qualquer dúvida, pode postar um comentário que eu tento responder o mais rápido que der.

31 Março 2008 às 3:09 pm |
Estive agora a instalar essa maravilha!
É possivel aceder do exterior colocando o meu IP publico noutro local e ele acede aos repositórios??
2 Abril 2008 às 6:23 pm |
Teoricamente, nada impede que você faça isto. Ainda não testei, mas pretendo tentar assim que puder e aviso por aqui.
Você podia também usar um serviço de DNS dinâmico, como o dynDNS ou o no-ip, que vc não ia nem precisar ter um ip fixo nem divulgar o ip de sua máquina.
13 Abril 2008 às 9:59 am |
Ola! eu estou agora a começar a trabalhar com o visualSVN. Instalei-o na minha máquina, criei um utilizador e um repositório utilizei o tortoise como cliente, fiz o checkout e tudo bem. não tive qq problema.
A minha dúvida é a seguinte:
vamos imaginar que estou a desenvolver um projecto e que neste momento tenho as pastas versao 0.0 e versao 0.1. neste momento estou a trabalhar na versao 0.1, mas a versao 0.0 está estavel e queria coloca-la na pasta branches (que é onde ficam colocadas as versão estáveis, não é??????). cm faço para colocar nessa pasta o conteudo da minha pasta versao 0.0?????
não sei se a minha duvida está clara de perceber, espero que sim…
13 Abril 2008 às 10:13 am |
Olá Cristóvão,
Acredito que entendi sua dúvida. Não sei se existe uma maneira automática de fazer isto. A solução que eu uso é criar uma pasta temporária e depois, usando o Tortoise, dar um checkout nela para a revisão da versão estável. Daí, na pasta que tenho com os branches, crio uma nova pasta, colo o conteúdo da pasta na qual dei o checkout da versão estável, adiciono e comito.
Se você descobrir alguma maneira automática de fazer isso, me mantenha informado, por favor
13 Abril 2008 às 10:19 am |
Já descobri como enviar o conteudo para a pasta branches/. É muito fácil.
13 Abril 2008 às 10:29 am |
a maneira que usei foi a seguinte:
- botão direito em cima da pasta versao 0.0 -> tortoiseSVN -> Branch/tag.
- depois indico o seguinte endereço: https://diablo:8443/svn/netoRPS/branches/versao 0.0 (ou seja, crio uma nova pasta dentro da pasta ../branches/, neste caso /versao 0.0 e copio para essa nova pasta todo o conteudo da pasta /versao 0.0), mas não activo a opção “Switch working copy to new branch/tag”.
Assim ele cria essa nova pasta dentro da pasta branches copia para lá o conteudo da versão 0.0, mas a minha directoria de trabalho continua a ser a que já estava definida antes de fazer esta operação.
o procedimento que me descreves-te parece ser um pouco diferente do meu. mas parece ser um pouco mais complexo. no entanto também não parece ser muito complicado, penso que só custará a 1ª vez que o fizer…
cumps,
neto
29 Abril 2008 às 11:06 am |
Instalei o VisualSvn server! Ele funciona perfeitamente quando o repositorio está na mesma maquina que o server está instalado, quando tento apontar para um repositório que localiza em outra maquina (remoto), ele não consegue inicializar o server, lembrando que eu tenho permissao de controle total na pasta do repositorio.
Gostaria de saber, se tem como utilizar um repositorio remoto (em outra maquina) ?
9 Setembro 2009 às 6:30 pm |
Sim. É possivel. Mas não é simples. Veja aqui, como:
http://www.visualsvn.com/support/topic/00022/
2 Outubro 2008 às 2:34 pm |
Fala cara,
Legal o blog e o post.
Comecei a fazer uns testes com o visual SVN, porém na hora de criar um repositório ele não pergunta se eu quero que ele crie automaticamente as pastas. O que pode ser isso?
Outra coisa, com o Visual SVN eu tenho como criar tags, branches, etc.. para um projeto?
vlw!
2 Outubro 2008 às 2:44 pm |
Opa…
olha só, quanto a ele não perguntar sobre a criação, eu não tenho idéia de por que isso aconteceu… sempre que precisei, isso funcionou. Mas para criar, é só dar um checkout no repositório recem-criado, criar as pastas, adicionar na mão e comitar
Sobre a criação de tags e branches, não é função do servidor, é do cliente svn. Se vc usa tortoise, dá uma olhada aqui: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html que explica bem o que vc precisa fazer para criar branches e tags
Qq duvida, falae!
vlw
12 Fevereiro 2009 às 10:10 am |
Amigo,
Qual client você recomenda utilizar para acessar esse servidor.
12 Fevereiro 2009 às 10:22 am |
Opa Alex,
o client de sua preferência, qualquer um vai funcionar com ele
. No windows eu uso tortoise quando tenho permissão de administrador na máquina (precisa pra instalar
). Sem permissao de admin, ou no Linux, eu uso RapidSVN… os dois são da tigris, e podem ser encontrados em http://www.tigris.org.
Se vc usa eclipse, o subclipse é uma ótima pedida, no site da tigris também tem dizendo como instalar direto pelo eclipse.
27 Fevereiro 2009 às 4:28 pm |
Olá Amirton.
Você sabe se tem alguma forma de determinar permissão por usuário? Tipo… usuário X vai ser um usuário com perfil de administrador, já o usuário Y vai ser perfil básico.
Desde já agradeço a sua atenção.
2 Março 2009 às 9:58 am |
Bom dia, estou usando o usuário com admi9nistrador da máquina e dei todas as permisões para ele. Mas não consigo criar nenhuma pasta para o repositorio que eu criei, poderia me ajudar com este problema?
Grato.
12 Março 2009 às 11:14 am |
Estou usando o VisualSVN, estou meio perdido, quando eu crio o repositorio, como faco para colocar os arquivos nas pastas trunk, e mais uma coisa, eu vi que ele criou as pastar trunk, branches e tags, mas no caminho fisico, essas pastas nao aparece. Estou um pouco perdido, tem como me ajudar?
18 Maio 2009 às 11:53 pm |
Amirton
Tem essa solução free ( http://www.projectlocker.com )
[]’s
5 Julho 2009 às 2:11 am |
Muito boa dica!!!
Parabéns e o tutorial está 100% e muito facil de entender!!!
Grande abraço.
19 Agosto 2009 às 9:27 am |
Apesar de certificações e gostar de ambiente homogêneo MS, também tenho um lado de paixão pelos ambientes Unix e (academicamente falando) por Java.
Entretanto, para quem vive de praticidade e possui clientes que vivem a todo tempo solicitando mudanças, escrever linhas de código (Unix) que dobram a esquina passa a ser uma atividade comprometedora, em se tratando de tempo.
Procurei muito por instalação de servidores SVN (Subversion, principalmente), mas configurar levaria o tempo do nosso projeto.
Você conseguiu mostrar algo que realmente supre as necessidades de funcionalidade e praticidade… e obrigado por compartilhar.
Diego Sayron
25 Agosto 2009 às 8:07 am |
Na verdade este VisualSVN Server é limitado certo ?
A parte de geração de logs e outras coisas são disponíveis apenas na versão Enterprise do Software conforme o seguinte link:
http://www.visualsvn.com/server/licensing/
Vocês conhecem algo realmente semelhante a este software porém com a licensa totalmente free/opensource ? Pode ser tanto em Windows quanto em Linux,porém prefiro algo visual para gereciamento.
Quanto ao tutorial está realmente excelente!
Parabéns
Abraços