Pergunta

No meu ambiente atual, temos uma "limpa" máquina de compilação, que tem uma cópia exata de todas as alterações consolidadas, nada mais, nada menos.

E, claro, eu tenho a minha própria máquina, com dezenas de arquivos em um "em-progresso" do estado.

Muitas vezes eu preciso para construir a minha aplicação com apenas uma mudança no lugar.Por exemplo, acabei de tarefas do ABC, e eu quero criar um EXE com apenas que mudança.

Mas é claro que eu não posso confirmar a alteração para o repositório até que seja testada.

Ramificação parece um exagero para isso.O que você faz no seu ambiente para isolar as alterações para builds de teste e lançamentos?

@Matt b:Então, enquanto você espera para o feedback sobre a sua alteração, o que fazer?Você está sempre trabalhando em exatamente uma coisa?

Foi útil?

Solução

Então você está perguntando como lidar com trabalho em várias "tarefas" de uma vez, certo?Exceto ramos.

Você pode ter várias saídas da fonte na máquina local, como sufixo do nome do diretório com o nome do bilhete que você está trabalhando.Apenas certifique-se de que para fazer alterações no diretório correto, dependendo da tarefa...

A mistura de várias tarefas em uma cópia de trabalho de / commit pode ficar muito confuso, especialmente se alguém precisa rever o seu trabalho mais tarde.

Outras dicas

Eu prefiro fazer e teste baseia-se na minha máquina local/ambiente antes de confirmar ou promover qualquer mudança.

Para o exemplo específico, eu teria check-out de uma cópia limpa da fonte antes de iniciar a tarefa ABC, e após a implementação do ABC, criada uma compilação localmente com que no-lo.

Algo assim:git stash && ./bootstrap.sh && make testes :)

Tento fazer com que cada "commit" operação representam um único, coeso e de mudança.Às vezes, é toda uma correção de bug ou a totalidade do recurso, e, às vezes, é apenas uma pequena refatoração no caminho para algo maior.Não há maneira de decidir que uma unidade é aqui, apenas por instinto.Eu também pedir (implorar!) os meus companheiros a fazer o mesmo.

Quando isso é bem feito, você tem uma série de benefícios:

  • Você pode escrever uma alta qualidade, descrição detalhada para a mudança.
  • Leitura da primeira linha da descrição de cada alteração dá-lhe um sentido do fluxo do código.
  • Os diferenciais de uma alteração são fáceis de ler e entender.
  • Se uma alteração introduz um erro / construir quebra / outro problema, é fácil isolar, compreender, e de volta, se necessário.
  • Se estou na metade do caminho através de uma mudança e decidir abortar, eu não me perder muito.
  • Se eu não tenho certeza de como proceder em seguida, eu posso gastar alguns minutos em cada uma das várias abordagens e, em seguida, escolher o que eu gosto, descartando os outros.
  • Meus colegas pegar a maioria dos meus alterações mais cedo, simplificando drasticamente o problema da integração.
  • Quando eu estou me sentindo preso sobre um grande problema, eu posso levar alguns pequenos passos que eu sou confiante, verificando-los em como eu ir, fazendo, assim, o grande problema um pouco menor.

Trabalho como este pode ajudar a reduzir a necessidade de pequenos ramos, desde que você tome um pequeno, confiante passo, validá-lo e confirmá-lo, em seguida, repita.Eu já falei sobre como fazer o passo pequenas e confiante, mas para que isso funcione, você também precisa fazer a fase de validação de ir rapidamente.Tendo uma forte bateria de jejum, de granulação fina a unidade de testes + de alta qualidade, rápida aplicação de testes é a chave.

Equipes que eu tenho trabalhado antes necessárias revisões de código antes do check-in;que adiciona latência, o que interfere com meu pequeno passo estilo de trabalho.Fazendo as revisões de código de um de alta urgência de interrupção de obras;por isso, não mudar para a programação em par.

Ainda assim, meu cérebro parece gostar de heavy multitarefa.Para fazer esse trabalho, eu ainda tenho vários em andamento alterações.Eu usei vários ramos, várias cópias locais, vários computadores, e ferramentas que fazem cópias de segurança de alterações pendentes.Todos eles podem trabalhar.(E todos eles são equivalentes, implementado de maneiras diferentes.) Eu acho que vários ramos é o meu favorito, embora você precise de um sistema de controle de origem que é bom na fiação de novos ramos rapidamente e facilmente, sem ser um fardo no servidor.Eu ouvi ao bitkeeper é bom nisso, mas eu não tive a oportunidade de check-out ainda.

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