Utilizando svn em linha de comando
Estava trabalhando em projeto com o @Joe e como estavamos em lugares diferentes tinhamos que sincronizar nosso trabalho assim sempre que terminassemos um feature simples como uma página, um layout ou qualquer coisa simples mas funcional nós mandamos para o servidor e o outro poderia pegar as atualizações e seguir com seus próprios códigos.
Para que possamos fazer isso é necessário que nossos códigos estejam sob um servidor de arquivos que faz esse controle de versionamento e outras coisas.
Esse servidor é conhecido como subversion ( http://subversion.tigris.org/ ) ele nos dá inúmeras possibilidades como adicionar arquivos, remover arquivos, sincronizar, verificar updates, avançar para novas versões, retroceder para versões anteriores de arquivos e outras coisas mais. Assim não precisamos ficar fazendo os malditos .old, .old1, .old2, .old3.
Depois dessa micro historinha vamos aos codigos.
Para fazermos o download de um projeto para trabalharmos teremos que ter um usuário e senha cadastrados junto ao servidor isso quem tem de fazer é o administrador do projeto.
Considerando que você tenha um usuário e senha valido no servidor vamos listar as pastas e arquivos do projeto.
# Lista a raiz do projeto svn list svn://url/servidor
# Lista a pasta path do projeto svn list svn://url/servidor/path
Seria básicamente um ls no servidor svn.
Agora vamos fazer o download ou melhor o checkout do projeto para nossa máquina para começarmos os trabalhos, afinal tempo é dinheiro.
#fazendo o download da pasta path para uma url local svn co svn://url/servidor/path /url/onde/ficara/projeto
Caso você não esteja logado vai ser requisitado a senha e o usuário que você esta usando no momento na maquina local vai ser
passado como parametro para o checkout no servidor svn
Caso você tenha outro usuário cadastrado no servidor svn você pode passar esse usário como parâmetro.
svn --username outroUsuario co svn://url/servidor/path /url/onde/ficara/projeto
A cada novo commit (envio de codigos para o servidor svn) será criado um novo número de controle de versão (revision). Pensando que poderiamos mandar um código incorreto(bugado) para o servidor e um companheiro queira pegar uma versão anterior ou seja a ultima versão correta do projeto pois você ou alguém mandou um código bugado.
Vamos pedir ao servidor informações sobre o projeto para sabermos o número da última revisão.
#Descobrindo informações sobre o projeto # o que interessa neste momento e saber qual o numero de revision svn info svn://url/servidor/path #Visto o numero da ultima revisão podemos escolher qualquer versão anterior a essa passando o -r no checkout svn --username outroUsuario -r numerorevisao co svn://url/servidor/path /url/onde/ficara/projeto
Pronto temos os códigos todos em nossa máquina agora mãos a obra vamos trabalhar com codificação.
Quando terminarmos vamos precisar mandar nossa modificações para o servidor, para isso temos um comando bem bacana e simples.
#Voce pode commitar uma pasta inteira ou um arquivo você escolhe svn commit -m "Seu comentário ou justificativa para as mudanças do codigo isso vai para o log do commit" /path/a/ser/commitado /path/arquivo/commitar
Podemos verificar todos os arquivos que estão modificados em seu computador e no servidor.
svn status -u path/a/ser/verificado
Com alguma frequência dois desenvolvedores modificam o mesmo arquivo quando isso acontecer o arquivo vai ser marcado como conflict
Para ver as diferenças é possivel fazer um
svn diff arquivoNovo arquivoVelho
Depois de ter corrigidos todos os erros basta marcar esse arquivo como resolvido.
svn resolv arquivoNovo
Logo
svn resolved arquivoNovo
Para depois fazer seu commit corretamente, agora como você vai resolver os conflitos do arquivo…. isso é com você …
E por ultimo e não menos importante podemos ver o commit das pessoas envolvidas no projeto além de seus comentários e arquivos modificados.
#Pegando a saida do log e redirecionando para o less caso seja muito grande esse log. svn log | less
E para uma leitura completa do log escolha um revision r visto no log visualizado anteriormente.
svn -r -v log
Atenção a dicas básicas, nunca apague fisicamente um arquivo com nosso amigo rm, utilize
svn del /path/arquivo #ou svn rm /path/arquivo #ou para pasta com recursividade svn rm -r /path/past
E para adicição de arquivos ao projeto.
svn add /path/arquivo #ou para pasta //Nao testado :( svn add -r /path/pasta
Acredito que com esses comandos básicos já de para se divertir a vontade com o subversion, aconselho sempre usar um servidor de controle de versão. Existem outros como o CVS, GIT dentre outros mais esses ainda não experimentei , quando o fizer posto aqui alguma coisa.
Abraços
Dinei
maio 25th, 2010 at 18:52
Porra carioca de merda, post peba do caralho.
Aprende a escrever primeiro para depois ensinar os outros a fazer alguma coisa.
Deve ter tirado isso de algum snippr da vida ou de uma pesquisa do google.
Muito babaca esse post. Voce pode escrever coisas melhores. e nao ficar enchendo a internet com merda.
junho 30th, 2010 at 06:32
Desculpe se não serviu de nada para você. Acredito que sirva para alguma outra pessoa e caso não sirva sem problemas o que quero é praticar o compartilhamento de conhecimento.
Obrigado pelo comentário.
agosto 6th, 2013 at 14:43
Muito bom Flávio, a internet precisa de pessoas como você, que só escreve comentários inteligentes, sem baixaria.
Parabéns!!
julho 14th, 2010 at 11:16
o checkout poderia ser feito também por svn co svn://user@host.com.br/uri/
abril 11th, 2011 at 07:30
Muito Bom o artigo!
Excelente!
Parabéns!
setembro 12th, 2011 at 15:28
Boa tarde,
Ao tentar usar o comando “svnserve -d”, o programa de linha de comando que estou usando, o “CMD”, simplesmente para, o cursor tb nao pisca.
setembro 12th, 2011 at 15:37
Victor,
Este post diz respeito a usar um client de SVN , pelo que você postou no comentário me parece que esteja usando um svnserver . Verifica novamente se você não esta extraindo informações de dois ou mais blog´s/Origens difirentes.
Atenciosamente
valdinei
maio 14th, 2012 at 23:27
Valeu mano, me ajudou muito agora…
maio 15th, 2012 at 06:30
Nice
junho 5th, 2012 at 09:41
Quando tento dá algum comand, me retorna sempre a mesma mensagem de erro, estou usando o prompt dos.
Ex:
D:\Repositories\totvs>svn add teste
svn: E155007: ‘D:\Repositories\totvs’ is not a working copy
Pode ajudar?
junho 27th, 2012 at 09:37
Cara, bacana o post.
Esse Flavio é um babaca…perdi meu tempo lendo o comentário dele.
Abraço
novembro 19th, 2012 at 21:54
Ótimo tutorial. Não liga para os noobs que falam merda d+.
julho 12th, 2013 at 14:02
Valdinei, como posso obter uma lista completa com o número da última versão de cada arquivo e subpasta dentro de uma determinada pasta? Obrigada!
março 12th, 2014 at 11:09
Muito bom o poster, parabéns…
abril 25th, 2014 at 13:05
Para criar uma pasta será melhor usar o comando mkdir mesmo.
svn mkdir localhost/svn/folder