Como estruturar repositórios git para o projeto?


9

Estou trabalhando em um módulo de sincronização de conteúdo para o Drupal. Existe um módulo de servidor, que fica em um site e expõe o conteúdo por meio de um serviço da web. Há também um módulo cliente, que fica em um site diferente e busca e importa o conteúdo em intervalos regulares.

O servidor é criado no Drupal 6. O cliente é criado no Drupal 7. Será necessária uma versão do Druapl 7 do servidor. E haverá a necessidade de uma versão Drupal 8 do cliente e do servidor, uma vez lançada no próximo ano.

Eu sou bastante novo no git e no controle de código-fonte, então fiquei pensando qual é a melhor maneira de configurar os repositórios git? Seria o caso de ter um repositório separado para cada instância, ou seja:

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

Ou faria mais sentido ter um repositório para o servidor e outro para o cliente, em seguida, criar ramificações para cada versão do Drupal?

Atualmente, tenho 2 repositórios - um para o cliente e outro para o servidor.

Respostas:


7

A menos que o projeto seja realmente grande, eu iria para o repositório único com subdiretórios para servidor e cliente e criaria uma ramificação para cada versão. Você ainda pode ter várias cópias do repositório, caso deseje acessar várias versões ao mesmo tempo.

Ao manter vários repositórios, você dificultaria a transferência de alterações (o rebase é mais fácil do que aplicar patches). No caso (improvável), não haverá alterações a serem aplicadas a várias versões, você ainda não perde nada ...

Além disso, você sempre pode alternar para vários repositórios: basta clonar o repositório e remover os ramos que você não deseja. Indo ao contrário é mais difícil.

Eu aceitaria vários repositórios somente se o servidor e o cliente não compartilharem nada ou se o código for realmente grande.


É assim que irei, porque o Drupal armazena versões diferentes como ramificações. Eu tinha +1 também, mas preciso de 15 representantes!
Littledynamo 13/11/2012

4

Eu já vi e trabalhei com essas variações. Tudo em uma pasta com subpastas para servidor e cliente ou um repositório cada. Eu prefiro o repositório único para todas as partes principais do projeto.

No caso de grandes mudanças de versão, eu simplesmente criaria novos repositórios também. Definitivamente não tem ramos diferentes para eles. Embora as ramificações sejam poderosas para a implementação de novas funcionalidades e talvez uma ramificação de implantação permanente, eu sempre evito que muitas delas sejam executadas paralelamente por um longo tempo. Você sempre terá que atualizá-las (faça novas refazidas quando a ramificação principal for alterada etc.), portanto, mantenha a estrutura básica o mais simples possível. Ter um repo extra é (na minha humilde opinião) menos doloroso do que fazer malabarismos com ramos em diferentes estados. Especialmente se cliente e servidor não compartilharem muito código.

Não sei muito sobre o Drupal e quão fortes são as diferenças entre as versões. Portanto, meu argumento de preferir diferentes repositórios se baseia mais na minha experiência no Rails. Entre as versões, às vezes há grandes diferenças em coisas como a forma como os arquivos são nomeados ou a estrutura da pasta (por exemplo, pipeline de ativos), o que torna mais confortável a criação de um novo repositório. Drupal (ou qualquer outra estrutura) pode ter menos diferenças, então tudo bem continuar no repositório existente.


11
Obrigado. É interessante porque acabei de descobrir que os módulos Drupal Core armazenam versões separadas como ramificações. Eu acho que faz sentido imitar essa estrutura. Gostaria de marcar com +1, mas preciso de 15 representantes!
Littledynamo 13/11/2012
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.