Pergunta

Eu sou-dever pela política de uso CVS neste determinado projeto, por isso mesmo que eu realmente para mudar para outra coisa, como Git, eu não posso.

Assim, a minha verdadeira pergunta é a seguinte: Nós temos uma convenção que criamos uma nova filial em CVS cada vez que fazemos uma versão (também tag, mas isso é além do ponto). Chamamos esses versão de ramos, e eles nos permitem verificar facilmente a uma versão específica e fazer hot-fix alterações nele -. Isso é o que os nossos pequenos-releases são

Mas agora eu tenho algum grande-ish, mudanças chegando e se eu estava trabalhando no Git, eu estaria criando um recurso de ramo em um piscar de um olho cheias de risco. No entanto, trabalhar em CVS, Eu tentei criar filiais recurso em outro projeto e constatou que as coisas rapidamente se mostrou confuso. Eu acabei com muitas filiais e I pista perdida dos quais ramos foram sincronizadas, que precisavam fusão e que já não estavam em uso.

Então, se aproximando ao ponto de interrogação, é viável para usar o recurso-ramos no CVS? Eles estão muito trabalho para valer a pena ou será que eu, eventualmente, acabam sendo muito por não usá-los? Devo morder a bala e começar a codificação em cabeça, mas dobrar o meu processo de codificação para introduzir as alterações da forma mais discreta possível?

Foi útil?

Solução

Se você é o único desenvolvimento no recurso de ramo, você pode simplesmente usar o Git como o seu sistema de "desenvolvimento sandbox" e, em seguida, depois de ter as alterações feitas, fundi-los em seu repositório de CVS.

Você ainda ganhar o benefício de controle de origem para o seu produto de trabalho intermediária.

Outras dicas

Há uma excelente discussão de estratégias de ramificação chamada transmitido linhas o que pode ajudar -., descreve as vantagens e desvantagens do uso de ramos de recursos

Ele também aborda opções para código de linha owenership e políticas que você gostaria de implementar

Uma coisa a considerar é realmente Fechar o recurso de ramo quando você é feito com ele, uma vez que você se fundiram-lo de volta com o tronco principal. Neste contexto, perto significa simplesmente abandonar o ramo, e não uma verdadeira exclusão.

Uma vez que o trabalho é mesclado, não há realmente nenhuma necessidade para o ramo de "existir".

A fim de identificar rapidamente o que ramos são ramo de funcionalidade, gostaria de sugerir ter uma convenção de nomenclatura de vazamento "FEAT_MY_FEATURE" ou "FEAT_20080926" (data de início?). Isso tornaria mais fácil de ignorar todos esses ramos recurso ao navegar na estrutura do repositório.

Eu tenho trabalhado em um ambiente de vários anos em que esta era uma prática comum e foi muito doloroso. Certifique-se de que as fusões são parte de seu plano de projeto, porque eles estão indo para consumir uma grande quantidade de tempo e são fontes de atraso.

Documentar os ramos e atribuindo-lhes responsabilidades específicas ajudou um pouco.

Nós tivemos que criar uma ferramenta para nos ajudar a mesclar as alterações de forma incremental (uma mudança de cada vez, em vez de juntar a ponta de ramos), porque o CVS não se comportar bem se os dois ramos divergem.

Muitas vezes, sincronizar (pelo menos uma vez por semana).

Eu acho que a melhor maneira de abordar esta questão em retrospecto seria para se certificar de que a divergência continua a ser mínima e dividindo o desenvolvimento arriscado em diferentes marcos usando Scrum, por exemplo.

Eu também incentivá-lo a ler Padrões SCM . Este livro contém uma grande quantidade de bons conselhos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top