| 1 | = Como Trabalhar com os Branches do Sandbox Utilizando Comandos SVN = |
| 2 | |
| 3 | Como descrito anteriormente, tickets que exijam grandes modificações devem ser implementados em branches separados, ao invés de utilizar diretamente o trunk. |
| 4 | |
| 5 | O primeiro passo é criar um novo branch: |
| 6 | {{{ |
| 7 | svn copy https://svn.expressolivre.org/sandbox/workflow/trunk \ |
| 8 | https://svn.expressolivre.org/sandbox/workflow/branches/{nnnn} \ |
| 9 | -m "Ticket #{nnnn} - Criando novo branch para implementação do ticket." |
| 10 | }}} |
| 11 | O comando '''svn copy''' é utilizado para a criação de branches. Na forma que é mostrado acima, este comando não precisa ser executado a partir de um repositório svn, todo procedimento é realizado no servidor. O primeiro parâmetro é o branch de origem, de onde serão copiados os dados. Os branches criados para os tickets da versão experimental do Workflow devem sempre utilizar o repositório /sandbox/workflow/trunk como origem. O segundo parâmetro especifica o endereço do novo branch. O novo branch deve seguir o padrão /sandbox/workflow/branches/{nnnn}, onde {nnnn} corresponde ao número do ticket. Já o terceiro parâmetro, especificado pela opção ''-m'', especifica a mensagem do commit que criará o novo branch. É importante notar que o commit inicial de criação do branch, será visível apenas ao novo branch, mas não através do branch de origem (trunk). Desta forma, a partir do repositório de origem, não é possível determinar o momento exato de criação dos branches. |
| 12 | |
| 13 | Após criado, o branch pode ser acessado de duas formas: |
| 14 | {{{ |
| 15 | svn checkout https://svn.expressolivre.org/sandbox/workflow/branches/{nnnn} |
| 16 | |
| 17 | para criar uma nova cópia local do repositório já em seu novo branch |
| 18 | }}} |
| 19 | ou: |
| 20 | {{{ |
| 21 | svn switch https://svn.expressolivre.org/sandbox/workflow/branches/{nnnn} |
| 22 | |
| 23 | para mudar o branch de sua cópia local. |
| 24 | }}} |
| 25 | Se estiver trabalhando com mais de um branch e utilizar o svn switch para alternar entre eles, sempre verifique a qual branch sua cópia local está ligada, antes de alterar arquivos, ou realizar commits. Isso evitará atualizações indesejadas que depois ficam difíceis de reverter. Utilizar o comando '''svn info''' para mostrar a url do repositório. |
| 26 | |
| 27 | == Outros Comandos SVN Úteis == |
| 28 | |
| 29 | || svn up || Atualiza a sua cópia local || |
| 30 | || svn st || Mostra os arquivos da sua cópia local pendentes de atualização no repositório || |
| 31 | || svn log || Lista as mensagens de commits já realizados || |
| 32 | || svn info || Mostra a url do repositório e a revisão em que está a sua cópia local || |
| 33 | || svn revert {arquivo} || Atualiza um arquivo local com a última revisão no repositório || |
| 34 | || svn ci -m "{mensagem}" || Realiza a transferência dos arquivos alterados na cópia local, para o repositório || |
| 35 | |
| 36 | == Como Realizar o Merge de um Branch no Trunk == |
| 37 | |
| 38 | Depois que o branch estiver concluído e testado, chegou a hora de transferir as atualizações para o ramo trunk do sandbox. Primeiro obtenha uma cópia local do ramo trunk, com o comando: |
| 39 | {{{ |
| 40 | svn co https://svn.expressolivre.org/sandbox/workflow/trunk |
| 41 | }}} |
| 42 | Depois entre no diretório da sua cópia local do trunk e execute o comando: |
| 43 | {{{ |
| 44 | svn merge --dry-run -r{n1}:{n2} https://svn.expressolivre.org/sandbox/workflow/branches/{nnnn} |
| 45 | |
| 46 | onde {n1} corresponde a revisão inicial do branch e |
| 47 | {n2} corresponde a revisão final do branch |
| 48 | }}} |
| 49 | A opção --dry-run irá rodar o merge em modo simulação, sem que alterações sejam realizadas na sua cópia local do trunk. Será apresentada uma lista dos arquivos a serem atualizados. Observe o indicador no início de cada linha, ele informa o tipo de atualização que o arquivo sofrerá, podendo ser: |
| 50 | |
| 51 | U - Arquivo da cópia local será atualizado |
| 52 | |
| 53 | D - Arquivo da cópia local será excluído |
| 54 | |
| 55 | A - Arquivo será incluído na cópia local |
| 56 | |
| 57 | G - Arquivo da cópia local possui alterações conflitantes com o branch, mas o Svn fará o merge |
| 58 | |
| 59 | C - Arquivo da cópia local possui alterações conflitantes com o branch, e será necessário intervenção manual para resolver o conflito. |
| 60 | |
| 61 | Se quiser prosseguir com o merge, execute o comando novamente sem a opção --dry-run. Caso existam conflitos, o svn solicitará que sejam resolvidos neste momento. |
| 62 | |
| 63 | Após o merge verifique se a sua cópia local continua integra, e proceda o commit no repositório: |
| 64 | {{{ |
| 65 | svn ci -m "Ticket #{nnnn} - Merged {n1}:{n2} /sandbox/workflow/branches/{nnnn} em /sandbox/workflow/trunk" |
| 66 | }}} |
| 67 | |
| 68 | |