Organizando ramos do SVN com o TortoiseSVN

1

Como organizo filiais no sistema SVN? Eu estou usando o TortoiseSVN desde que eu uso o Windows.

Atualmente, tenho esse tipo de estrutura de arquivos / diretórios. De certa forma, estou me acostumando a gerenciar versões numeradas, embora não veja a imagem completa de como esse sistema de gerenciamento funciona.

program_main\trunk\corefile.php
program_main\tags.0\corefile.php
program_main\tags.1\corefile.php
program_main\tags.2\corefile.php

Agora eu gostaria de fazer outro programa baseado nele. Vai ser um programa separado, mas usa o programa principal como base. Se o programa principal for atualizado, o programa modificado estendido também será atualizado com o número da versão correspondente.

program_mod\trunk\corefile.php
program_mod\trunk\additionlalfile.php
program_mod\tags.0\corefile.php
program_mod\tags.0\additionalfile.php
program_mod\tags.1\corefile.php
program_mod\tags.1\additionalfile.php
program_mod\tags.2\corefile.php
program_mod\tags.2\additionalfile.php

Quando clico com o botão direito do mouse na pasta de troncos do programa principal e escolho TortoiseSVN -> Branch/Tag e especifico o caminho para /program_main/branches/program_mod/1.0 , ele tenta enviar os arquivos para a pasta de ramificação no diretório principal do projeto no servidor público. O diretório principal do projeto é público e visível para todos, eu gostaria de não fazer o upload da versão modificada (filial) naquele servidor.

Neste caso, como devo fazer? Eu acho que esta deve ser uma operação muito simples, usando o comando mesclar ou algo assim.

Obrigado pelo seu conselho e informação.

    
por Teno 10.10.2012 / 05:55

1 resposta

2

Algumas notas

  • Organização da árvore de repositórios, funções de diferentes nós dentro do repositório Subversion são apenas uma questão de convenções, "melhores práticas" e hábitos e estritamente relacionados ao estilo de trabalho, não usadas ferramentas do lado do cliente para acessar o repositório. Ou seja, "usando o TortoiseSVN" é informação irrelevante à luz da sua tarefa (mesmo / encontrado e satisfeito / técnica será | pode ser usado com qualquer svn-client em qualquer sistema operacional)

  • Sua tarefa de negócios precisa ser definida (melhor e mais correta, no meu POV) não como "como usar ramificações", mas como "como armazenar e vincular projetos relacionados em caso do Subversion SCM-backend ", onde o uso de branches (ou qualquer outra hierarquia dentro de repo) é apenas uma escolha e não melhor (IMNSHO)

Soluções

Externos do Subversion

Qualquer parte do repositório SVN, que precisa ser clonada em qualquer outro lugar (e a relação entre o clone e o original salvo no futuro) pode ser utilizada em svn:externa l truque. Dessa forma, adicionaremos ao repositório "virtual tree", que existe em algum lugar - de alguma forma, mas pode aparecer no checkout'ed WC como parte do nosso repositório

(neste diretório do tronco da imagem é externo do repo independente)

Sua estrutura simples atual de program_mod

dir /B

corefile.php

additionalfile.php

impõe uma restrição na versão do Subversion (tanto no cliente quanto no servidor), porque os arquivos externos foram adicionados apenas no Subversion 1.6, para diretórios externos

dir /B /S

z:\mod\additionalfile.php

z:\mod\Core

z:\mod\Core\corefile.php

versões anteriores também podem ser usadas. A última opção também tem mais uma ligeira vantagem em termos de controlabilidade no caso de expansão do core-project em um projeto multi-file: no caso de externals baseados em arquivos, você terá que adicionar todos os novos arquivos manualmente, externalidades de diretório incluirá todos os arquivos dentro do objeto externo

Ramifica e mescla

Do outro lado, você pode usar o método de mesclagem de ramificação para manter program_mod

Ramifique a origem do núcleo (/ trunk) em alguns, qualquer nó separado dentro do repositório ( branches/program_mod , f.e). Adicione additionalfile.php neste ramo. Depois de cada trunk-commit / better / ou antes do lançamento de program_mod / worse / merge trunk no branch program_mod (ou svn copy corefile no post-commit hook - TBT!)

    
por 10.10.2012 / 18:45