Jump to content


Configurar SVN










1 resposta a este tópico

#1 t.dornelas

    Membro - Novato

  • Membros
  • Pip
  • 13 posts
  • Estado:São Paulo

Adicionado 23 June 2009 - 10:00 AM

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.

#2 Paulo Gurgel

    Já esvaziou sua xícara hoje?

  • (*)Insigne
  • 10498 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

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





1 usuário(s) esta(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)