Guia quase-rápido de uso do bzr =============================== (Também conhecido como "Um Tutorial para o Bazaar-ng em português brasileiro") Uso inicial ----------- Instale o bzr de http://bazaar-vcs.org/Download . Feito isso, diga para o bzr quem você é: C:\> bzr whoami "Ivan Ivanovich " Caso o projeto em si já não tenha sido criado: C:\> cd "\Documentos\meuprojetinho" C:\Documentos\meuprojetinho> bzr init C:\Documentos\meuprojetinho> bzr add arquivo.c added arquivo.c C:\Documentos\meuprojetinho> bzr add projeto.dev added projeto.dev Agora você recordar a versão inicial do seu projeto C:\Documentos\meuprojetinho> bzr commit -m "Versao inicial, ainda tosca" added arquivo.c added projeto.dev Commited revision 1. Pronto, agora pode começar a fazer alterações. C:\Documentos\meuprojetinho> bzr status modified: arquivo.c added: outro.c Veja que mudança você fez até agora (+ indica linha adicionada, - indica linha removida): C:\Documentos\meuprojetinho> bzr diff === modified file 'arquivo.c' --- arquivo.c 2008-05-28 02:42:45 +0000 +++ arquivo.c 2008-05-28 02:42:51 +0000 @@ -1,4 +1,6 @@ int main() { - printf("zdravstvuitsie\n"); + printf("priviet\n"); } === added file 'outro.c' --- outro.c 1970-01-01 00:00:00 +0000 +++ outro.c 2008-05-28 02:45:21 +0000 @@ -0,0 +1,1 @@ +/*nada*/ Recorde essas mudanças: C:\Documentos\meuprojetinho> bzr commit -m "retorne zero por bonito" arquivo.c modified arquivo.c Commited revision 2. C:\Documentos\meuprojetinho> bzr commit -m "temos agora um outro arquivo" outro.c modified outro.c Commited revision 3. E assim por diante, veja mais detalhes sobre isso em: http://doc.bazaar-vcs.org/bzr.1.5/en/mini-tutorial/index.html Trabalhando com mais pessoas ----------------------------- Suponha que Nicolai Nicolaiev criou um projeto e trabalhou um pouco nele, agora você quer fazer alterações nele também. Pegue o código dele de algum lugar na internet: bzr get http://nicolai.irreais.net/projetos/sisteminha C:\Documentos\> bzr get http://nicolai.nicolaiev.net/projetos/sisteminha Branched 666 revision(s). C:\Documentos\> cd sisteminha C:\Documentos\sisteminha> dir sisteminha.c sisteminha.dev Agora, em vez de começar e mecher nos arquivos diretamente no diretório "sisteminha" que foi criado, vocẽ ("Ivan") vai criar mais uma cópia do projeto para que realmente possa mecher nos arquivos e recordar as alterações lá: C:\Documentos\> bzr branch sisteminha sisteminha-ivan Branched 666 revision(s). Pronto, agora exisitirá um diretório sisteminha-ivan, aonde você pode fazer suas alterações e ir fazendo bzr commit como desejar, sem preocupar-se com o que Nicolai está fazendo. Então, Nicolai lhe diz que fez umas mudanças e disse para você atualizar sua cópia. Você vai atualizar a cópia do "sisteminha": C:\Documentos\> cd sisteminha C:\Documentos\sisteminha> bzr pull ... Now on revision 669. Caso queira saber quais foram as 2 últimas alterações C:\Documentos\sisteminha> bzr log --limit=2 ------------------------------------------------------------ revno: 669 committer: Nicolai Nicolaiev branch nick: sisteminha-nicolaiev timestamp: Tue 2008-05-27 23:59:00 -0300 message: Corrigi um problema na rebimboca da parafuseta. ------------------------------------------------------------ revno: 668 committer: Nicolai Nicolaiev branch nick: sisteminha-nicolaiev timestamp: Tue 2008-05-27 23:36:04 -0300 message: Adicionei uma rebimboca à parafuseta. Então você deve trazer essas alterações para o diretório aonde você está trabalhando: C:\Documentos\sisteminha> cd ..\sisteminha-ivan C:\Documentos\sisteminha-ivan> bzr merge M sisteminha.c A rebimboca.c All changes applied successfully. Assim, o bzr vai tentar fundir todas as mudanças que o Nicolaiev fez junto com as mudanças que você fez paralelamente. Se as mudanças foram nas mesmas regiões de um arquivo, haverão conflitos, o bzr vai avisar e você terá que arrumá-los manualmente (estarão indicados no arquivo), aí antes de commitar terá que fazer: bzr resolve . Após feito o merge, é necessário recordar as mudanças trazidas: C:\Documentos\sisteminha-ivan> bzr commit -m "sincronizei com nicolai" modified sisteminha.c added rebimboca.c Commited revision 668. Suponha que as alterações que fez agora estão "boas" e quer enviá-las para o Nicolaiev. Faça um merge de suas alterações no "branch" do nicolai, commite e faça push delas para enviá-las. C:\Documentos\sisteminha-ivan> cd ..\sisteminha C:\Documentos\sisteminha-ivan> bzr merge ..\sisteminha-ivan M sisteminha.c All changes applied successfully. C:\Documentos\sisteminha-ivan> bzr commit -m "Adicionei suporte a bla" modified sisteminha.c Commited revision 670. C:\Documentos\sisteminha-ivan> bzr push --remember bzr+http://ivan@nicolai.nicolaiev.net/projetos/sisteminha/ Pushed up to revision 670. Pronto! O jeito preguiçoso ------------------- Tem uma outra maneira um pouco menos trabalhosa de manter-se sincronizado: C:\Documentos\> bzr checkout bzr+http://ivan@nicolai.nicolaiev.net/projetos/sisteminha C:\Documentos\> cd sisteminha C:\Documentos\> bzr unbind E agora para sincronizar com nicolaiev novamente: C:\Documentos\sisteminha> bzr bind C:\Documentos\sisteminha> bzr update Your local commits will now show as pending merges with 'bzr status', and can be committed with 'bzr commit'. modified: sisteminha.c C:\Documentos\sisteminha> bzr commit -m "Adicionei suporte a bla" modified sisteminha.c Commited revision 670. Pronto, as suas alterações foram enviadas para o servidor.