Estou com uma dúvida quanto a configuração do SVN.
Preciso que o subversion controle a seguinte estrutura de desenvolvimento:
- uma aplicação "core"
- várias aplicações "custom" que são derivadas da "core"
O core é um framework que possui todas as funcionalidades principais e genéricas dos meus sistemas.
E cada cliente para quem eu vendo o sistema, eu preciso criar um projeto, baseado no core. Esse novo projeto vai conter as customizações referentes as necessidades do cliente.
Até ai, tudo normal, o meu core será um "trunk" no SVN e cada projeto custom seria um "branch".
Porem, o meu problema é o seguinte:
- Quando eu fizer um commit no CORE essas alterações devem refletir em todos os PROJETOS;
- Quando eu fizer uma alteração (customização) em um PROJETO e fizer um commit, essas alterção não podem refletir no CORE.
Já pesquisei bastante na net sobre isso, e o que encontro é apenas a configuração básica do SVN (raras as vezes que esses artigos e tutoriais explicam o uso de trunk, branchs e tags)
Será que alguém pode me dar um help?
agradeço qualquer ajuda.
Configurar SVN
Iniciado por t.dornelas, Jun 23 2009 10:00 AM
1 resposta a este tópico
#1
Adicionado 23 June 2009 - 10:00 AM
#2
Adicionado 25 June 2009 - 04:24 PM
Hmmm, eu acho que o sistema trunk x branch não é diretamente aplicável neste caso, embora possa ser utilizado.
Vamos as interpretações corretas.
Trunk é a linha principal de desenvolvimento de um produto. Quando você precisa fazer uma modificação neste projeto sem afetar o trunk, voce cria um BRANCH. O problema é que o branch "perde o vínculo" com o trunk neste momento... pois as modificações do trunk não devem ser refletidas no branch. (O branch é um congelamento do trunk num determinado estado... a árvore continua crescendo, mas o galho não vai subindo no tronco, embora possa crescer independente). A separação trunk x branch cria um sistema com uma ramificação em 2 estados simultaneos.
A idéia é finalizado o branch, devolve-lo ao trunk ou então mante-lo separado. Agora em máquina local, é possível fazer o diff entre os projetos custom e core, e então aplicar as modificações do TRUNK no Core. Isso é feito localmente, não mais pelo SVN. Dessa forma, voce teria algo do tipo:
/home/tdornelas/projetos/core/src
Modificações a vontade no core e depois commit. Quando tiver updated e quiser aplicar em um determinado Custom...
MERGE através de uma ferramenta local com a pasta abaixo...
/home/tdornelas/projetos/custom01/src
Commit nas modificações deste branch.
Sei que o subversion tem merge branch to trunk, mas não sei tem o reverso.
Outro ponto a ser observado é a linguagem e como são feitas essas customizações. Se forem por exemplo em java, você poderia até mesmo gerar um repositório para cada custom, mais o repositório do core. No final terá algo do tipo:
/home/tdornelas/projetos/softwareX/core/classes
/home/tdornelas/projetos/softwareX/custom01/
Uma vez extendendo a classe, bastaria recompilar as aplicações custom que herdam classes core. Entretanto essa aproximação FORÇA que todos os custom aproveitem as expansões de core. Com a versão anterior e merge local. Tudo isso fica optativo o que pode ser interessante.
[]'s
Vamos as interpretações corretas.
Trunk é a linha principal de desenvolvimento de um produto. Quando você precisa fazer uma modificação neste projeto sem afetar o trunk, voce cria um BRANCH. O problema é que o branch "perde o vínculo" com o trunk neste momento... pois as modificações do trunk não devem ser refletidas no branch. (O branch é um congelamento do trunk num determinado estado... a árvore continua crescendo, mas o galho não vai subindo no tronco, embora possa crescer independente). A separação trunk x branch cria um sistema com uma ramificação em 2 estados simultaneos.
A idéia é finalizado o branch, devolve-lo ao trunk ou então mante-lo separado. Agora em máquina local, é possível fazer o diff entre os projetos custom e core, e então aplicar as modificações do TRUNK no Core. Isso é feito localmente, não mais pelo SVN. Dessa forma, voce teria algo do tipo:
/home/tdornelas/projetos/core/src
Modificações a vontade no core e depois commit. Quando tiver updated e quiser aplicar em um determinado Custom...
MERGE através de uma ferramenta local com a pasta abaixo...
/home/tdornelas/projetos/custom01/src
Commit nas modificações deste branch.
Sei que o subversion tem merge branch to trunk, mas não sei tem o reverso.
Outro ponto a ser observado é a linguagem e como são feitas essas customizações. Se forem por exemplo em java, você poderia até mesmo gerar um repositório para cada custom, mais o repositório do core. No final terá algo do tipo:
/home/tdornelas/projetos/softwareX/core/classes
/home/tdornelas/projetos/softwareX/custom01/
Uma vez extendendo a classe, bastaria recompilar as aplicações custom que herdam classes core. Entretanto essa aproximação FORÇA que todos os custom aproveitem as expansões de core. Com a versão anterior e merge local. Tudo isso fica optativo o que pode ser interessante.
[]'s
1 usuário(s) esta(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)











