O funcionamento do SVN ocorre da seguinte forma: pega os arquivos do repositório (em um servidor SVN), faz as alterações necessárias, enviar de volta para o repositório (Backup). E assim sucessivamente.
1 - Algum conceitos importantes
Repositório - local onde você vai guardar o seu projeto. O repositório é uma pasta que é controlada pelo Subversion.
Cópia de Trabalho (Working Copy) - A cópia de trabalho fica alocada na sua máquina local. É onde o desenvolvedor faz modificações nos arquivos para depois armazenar no repositório (Backup) de um servidor SVN.
Ao criar o seu repositório, estruturá-lo através de 3 diretórios, assim:
+ trunk
+ branchs
+ tags
Isso é muito utilizado quando você tem uma aplicação de médio/grande porte onde você tem vários desenvolvedores ou mesmo naquelas que você tem previsão de muitos versões. A idéia aqui é dividir para facilitar.
No diretório trunk deve-se colocar o projeto inicial. Seria o que o pessoal chama de linha de desenvolvimento padrão. Você começa por ai e desenvolve tudo ai dentro.
Se por um acaso um desenvolvedor decide, de repente, adicionar uma funcionalidade revolucionária que não estava prevista no projeto, a idéia é que se faça isso em uma branch! Ou seja, você copia o estado atual da sua aplicação que está no diretório trunk para um subdiretório dentro de branch, por exemplo, vers_nova_funcionalidade. Isso é necessário porque imagine fazer isso na linha principal de desenvolvimento, ou seja, no diretório trunk. Pode acontecer que, por isto tudo ser um teste, quebrar a aplicação. Se você separa em um outro diretório, neste caso, um subdiretório dentro de Branch, você pode testar a vontade, sem prejudicar os outros desenvolvedores.
Outra explicação de uso de uma cópia dentro do branch é quando você fecha um projeto na sua versão 1.0 e ai decide que vai começar a versão 2.0, mas não quer deixar de dar suporte na versão 1.0, que é a que todo mundo usa. Nesse momento você continua com o desenvolvimento normal, da versão 2.0, dentro do trunk, e cópia tudo para um subdiretório, por exemplo, versao1.0, dentro do branch, e continua a versão 2.0 no diretório raiz.
O diretório tags é utilizado para criar uma cópia da sua aplicação(projeto) em um momento estável, uma versão a ser lançada no mercado, você vai e copia tudo, todos os seus arquivos, diretórios, etc, para um subdiretório dentro de Tags, como por exemplo, versao1.0. Tudo bem, fica tudo muito organizado, mas já imaginou a quantidade de arquivos que eu vou ter na minha máquina? Um bocado, repetido em tudo que é canto ! Ai que está. O Subversion controla tudo isso de maneira magistral, só copiando o que deve ser copiado e fazendo links simbólicos internos. Ou seja, você terá o mínimo de arquivos duplicados.
Tudo isso é apenas convensão para sua organização. Se você não quiser. Não precisa criar diretório trunk ou branch ou tag ou qualquer outro.
O comando update tratará de atualizar a sua versão da cópia de trabalho de acordo com a que está no repositório. Também é utilizado, quando você quer pegar uma versão qualquer do seu projeto, que não a última, ou mesmo, uma versão que está em algum branch.
Caso você queira trabalhar em um branch específico, por exemplo, uma versão 2 que você está desenvolvendo, em vez da linha de desenvolvimento principal:
$ svn checkout http://localhost/svn/projeto/branchs/ver1.0
2 – Adicionado/Removendo arquivo ou diretório para controle do SVN
Toda e qualquer alteração na sua cópia de trabalho não é automaticamente controlada pelo subversion. Uma vez que você tenha alterado um arquivo, você precisa dizer para o subversion que você alterou e que ele deve ser enviado para o repositório.
Entre no diretório local do projeto que alterou e execute o comando:
$ svn commit --message "Arquivo texto_5.txt modificado"
Quando quiser realmente adicionar ou remover um diretório ou arquivo, você deve fazer isso com os comandos do subversion. Não adianta usar mkdir, rm ... , quando utilizados causa a impressão que funciona, mas quando executa o commit as alterações não são enviadas ao servidor. Para adicionar ou deletar um arquivo ou diretório para o controle do subversion utilize o comando:
$ svn add “Arquivo ou Diretório”
$ svn delete “Arquivo ou Diretório”
Depois execute o commit, enviando as alterações feitas de volta para o repositório:
$ svn commit -m “Novo arquivo adicionado/removido ao repositório”
A cada commit o número da revisão é incrementado e a cada arquivo criado, deve-se adicioná-lo ao repositório. Existem programas com interface gráfica para fazer esse trabalho. Ex: rapidSVN, o TortoiseSVN(para windows),
Caso remova um diretório ou arquivo e depois se arrependa basta executar:
$ svn update
OBS: Isso antes de executar o commit, esse comando volta para a revisão atual, sincronizando com o servidor, perdendo todas as modificações feitas localmente.
3 – Recuperando dados de uma revisão anterior
svn update - Atualiza a cópia do repositório, caso tenha ocorrido alguma mudança.
svn log - Exibe as alterações feitas ao repositório.
svn resolved arquivo - Indica ao subversion que você já resolveu os conflitos desse arquivo
Se você executa o commit e gera a Revision 5 e depois perceba que deletou um arquivo importante ou desejar voltar em algum arquivo da versão anterior, basta você dizer para o subversion que atualize a sua cópia de trabalho para a revisão anterior, no exemplo a Revision 4.
Antes é necessário saber para qual versão voltar para isso execute:
# svn log //mostra os comentários de cada revisão
ou
# svn log –verbose //mostra os arquivos de cada revisão.
Depois de verificada para qual revisão deseja retornar, execute por exemplo:
# svn update -r4
Atualizado para revisão 4.
Agora você está na revision 4 na sua máquina local,
# svn update //você retorna a última revision.
Recuperando um arquivo da revision 4, apagado por algum motivo, para o revision atual.
$ svn copy -r4 http://ip_servidor/svn/projeto/trunk/globals.inc /project/teste/
Esse comando pega o arquivo globals.inc do revision 4 e copia para o local do projeto onde foi feito o checkout. Agora para adicionar o arquivo globals.inc novamente ao projeto faça:
$ cd /project/teste
$ svn add globals.inc
$ svn commit -m "globals.inc novamente incrementado"
OBS – Caso Delete um arquivo e queria recuperar. Se você ainda não deu commit é facil: use o comando svn revert. Ele irá retornar o diretório para a última versão. Agora, se você já deu um commit no repositório, você precisará copiar o arquivo deletado diretamente do repositório. Siga os passos acima.
Nenhum comentário:
Postar um comentário