Minha equipe usa o Team Foundation Server para controle de origem e hoje corrigi alguns bugs e teste de fumaça antes de fazer o check-in, mas esqueci de comentar algum código. (Esse código tornou a interface do usuário um pouco estranha.)
Quero saber quais são as boas práticas antes de fazer o check-in do código - não quero cometer esse tipo de erro novamente.
Você nunca deve fazer o check-in do código comentado. Se você possui um código que precisa ser comentado antes do check-in, está fazendo algo errado.
Quanto às regras:
Construir
3.1 Corrigir erros de construção
Executar testes
4.1 Corrigir testes quebrados
Vá para 1 (até que não haja nada novo para obter)
Somente faça check-in quando todas as etapas estiverem concluídas.
Veja a dança do check-in .
Outras boas práticas:
fonte
rebase -i
e limpar seu histórico local, esmagando as confirmações conforme necessário, para que a linha principal não tenha confirmações feias de trabalho em andamento.Não estou tentando ser muito exigente aqui, mas a suposição nesta pergunta (e todas, exceto uma das respostas) se aplica principalmente ao VCS centralizado, como TFS, SVN, Perforce, etc. É
justo, é isso que o OP está usando.
Por outro lado, no entanto, ao usar o DVCS (como Mercurial e Git), você normalmente não deve esperar para fazer o check-in, e a maioria das coisas mencionadas nas respostas - como diffs, obter as últimas, mesclar etc. - não são necessárias . Mesmo coisas como revisões e testes de código são melhores após o check-in (embora talvez antes de enviar, dependendo ...)
A única exceção que vi aqui (até agora) é a associação a um item de trabalho. Claro, comentar sobre o check-in também é bom ...
fonte
Três coisas que não vi em outras respostas:
Incluir novos arquivos
Reverter arquivos inalterados
Verifique seu commit enviado
Duas coisas quando eu uso o Git:
Compromissos atômicos:
git add --patch
para dividir minha alteração em várias partes, se necessário.Exibir diferenças ao resumir
git commit --verbose
para que eu possa ver um diff da minha alteração enquanto digito minha mensagem de confirmação. (Ou eu uso meu git-vim corrigido para mostrar a diferença.)fonte
Alguns itens de 'boas práticas' que eu aplico nos servidores da minha equipe são bastante simples. Primeiro, antes de fazer o check-in, você deve sempre obter as atualizações mais recentes e executar uma compilação local, para garantir que ninguém mais tenha verificado nada em que o seu código colidir. Além disso, cuide de qualquer conflito de código na sua máquina local, não no servidor. Depois que seu código, com o código mais recente baixado, tiver sido confirmado para compilar e funcionar corretamente, você estará pronto para a próxima etapa. Execute todos os testes automatizados e inicie o check-in para garantir que eles ainda funcionem corretamente. Então, só para ter certeza, obtenha as últimas novamente.
Como administrador do TFS, é possível aplicar comentários em todos os check-ins. Eu recomendaria sempre colocar comentários de check-in para o seu trabalho, independentemente de ter sido aplicado ou não. Se você tiver a opção de fazê-lo, imponha-o. Certifique-se de que os comentários sejam, no mínimo, um resumo geral do que você alterou desde a última vez em que inseriu seu código. Dessa forma, se algo der errado, você poderá examinar os check-ins e ver, grosso modo, o que foi alterado nesse check-in. Isso torna a depuração de uma compilação quebrada muito mais fácil.
Além disso, se você tiver privilégios de administrador do TFS, imponha builds contínuos nos check-ins (para garantir que todos saibam imediatamente se o check-in deles quebra alguma coisa) e você pode configurar o servidor para realizar um check-in fechado ( se o código com check-in interrompe a compilação, o servidor a rejeita) ou você pode simplesmente criar um bug e atribuí-lo a quem quebrou a compilação.
Existem algumas outras opções que você pode ativar ou desativar para manter tudo bem em ordem ou sugerir ao administrador do TFS que mantenha as coisas boas e limpas ... mas elas são em grande parte preferência
fonte
Pesquise e substitua palavrões ;-)
fonte
Se você estiver fazendo check-in no Windows, verifique se o seu código não possui esses caracteres ^ M invisíveis - os editores do UNIX geralmente fornecem erros / avisos por causa disso.
Tente também substituir abas - usuários diferentes acabam vendo tabstops de maneira diferente, alguns com 4 espaços, outros 8 e não são bons para a legibilidade do código.
Melhor abordagem O IMHO é fazer com que um script predefinido verifique seu código em relação às diretrizes de codificação da sua organização. Cargas de sistemas de controle de origem têm essa funcionalidade.
fonte
Na minha empresa, usamos revisões de check-in. Isso não precisa ser detalhado, mas apenas mostrar a alguém as diferenças na lista de alterações e conversar com elas às vezes destacará o erro de digitação que você perdeu nos testes.
Nosso servidor de controle de origem não permitirá que você faça check-in, a menos que anote o nome do revisor nos comentários (no formato! Iniciais, por exemplo! BW, se Bruce Wayne fez sua revisão). O revisor recebe um email informando que ajudou na revisão. Isso está aberto à exploração óbvia, mas parece funcionar muito bem.
fonte
Sempre que possível, gosto de associar um check-in a um item de trabalho. Isso fornece algumas informações contextuais sobre por que isso foi alterado, e não apenas o que foi alterado. O TFS possui um sistema de rastreamento de itens de trabalho bastante decente, portanto, isso é bastante trivial no momento do check-in.
(além de revisar as diferenças das minhas alterações)
fonte
Uma coisa pequena que faço é não fazer check-in de arquivos que realmente não foram alterados. Esses arquivos podem ter sido modificados inadvertidamente, ou podem estar envolvidos em refatorações que foram revertidas ou que foram discutidas.
Dessa forma, seu conjunto de alterações (associado a um item de trabalho) contém exatamente os arquivos necessários para satisfazer o item de trabalho.
fonte
Para combinar todas as respostas aqui e fornecer uma lista de verificação completa
[check-in / check-out] você não deve fazer check-in diretamente no fluxo em que outras pessoas estão trabalhando. Você deve ter uma estratégia de fluxo: por exemplo, por desenvolvedor, um fluxo no qual você possa fazer check-in e check-out independentemente sem incomodar os outros: seu trabalho será esteja seguro, mas em seu próprio fluxo de desenvolvimento, portanto [somente em seu próprio fluxo de desenvolvimento]. A cada verificação, você o associa a um registro de alterações, para que suas alterações sejam atômicas em relação àquelas chamadas de conjunto de alterações (para que você possa distribuir rfc / bugs individuais etc ... sem precisar entregar 'tudo').
[depois rebase com o fluxo da sua equipe] significa que você recebe as alterações de outras pessoas no seu próprio fluxo. Durante essa operação, você pode ver na caixa de diálogo de mesclagem todos os "diffs" e passar por eles ou ... se houver milhares e / ou você não estiver usando código, mas também, por exemplo, modelos de dados / projetos siebel etc. mesclagens não triviais, mesclas trivial-automáticas e triviais, a última categoria contém as difíceis. Lembre-se de que você ainda está trabalhando em seu próprio fluxo.
[rebase completo] Se estiver tudo bem, verifique todas as alterações que você acabou de receber do fluxo da equipe: seu próprio fluxo está atualizado
[entregar] agora entregue seu trabalho ao fluxo da equipe. Se você não deseja entregar tudo, também pode selecionar, por exemplo, 1 RFC específico com as versões específicas dos arquivos ou um conjunto de RFCs / defeitos resolvidos.
[entrega de teste] deve funcionar bem, mas como existe a chance de que alguém entregue alterações também: você pode testar se seu trabalho funciona com as alterações mais recentes no fluxo da equipe. Com as mesmas caixas de diálogo de mesclagem mostrando diferenças.
[entrega completa] conclua sua entrega e seu trabalho agora está no fluxo da equipe.
Para torná-lo mais complexo: Como ainda existe a chance de o trabalho que você entregou = ok, mas você já está trabalhando em uma versão adicional, você deve baseline sempre após a entrega e indicar qual baseline é a preferida para outros usuários. . Isso garante que outros desenvolvedores obtenham uma versão recomendada e não a versão mais recente no fluxo (se você estiver trabalhando nesse cenário). Essa também é uma verificação tripla, para que, mesmo que as versões mais recentes do fluxo da equipe sejam "ruins", elas ainda não sejam as que outras pessoas refazem ou visualizam, e seu gerente de configuração pode mesclar a versão anterior à próxima versão para desfazer sua entrega.
No seu exemplo, você se esqueceu de comentar o código. Erros acontecem. O sistema de gerenciamento de configuração ao seu redor deve cuidar disso. Pode realmente ser que, por exemplo, milhares de mudanças ocorram e "compilações" e "integrações" ocorram em uma hierarquia de fluxos em diferentes servidores encadeados e processados no tempo. Portanto, mesmo depois de cinco meses, seu código comentado é testado em um servidor de integração porque seu código precisa de integração com outros códigos e sistemas, ainda será possível executar atomicamente seu conjunto de alterações e continuar. Portanto, a melhor prática é mais ou menos em um nível superior. O design geral dos fluxos de gerenciamento de configuração deve cuidar disso. Para desenvolvedores individuais, a melhor prática é a validação / teste de unidade. Mas do quadro geral para "
fonte
Algumas das opções a seguir se aplicam mais que outras (ou de formas diferentes), dependendo do seu SCM, então aqui estão elas:
NOTA : alguns dos itens acima parecem bastante óbvios, mas você não acreditaria em quantas pessoas realmente trabalham na ramificação principal ou faz alterações na produção primeiro e depois cria deltas manualmente para executar o controle de versão ... diretamente na ramificação principal. .. e com etiquetas. Doce como a bílis fermentada misturada com suco de axila não lavado ... sim, assim.
fonte
Tenha uma lista de verificação pessoal. Comece vazio quando você estragar, em uma entrada. Quando se tornar uma segunda natureza, remova-o da lista.
Execute os testes. Se eles passarem, verifique. Se você errar e alguma coisa passar nos testes, escreva um teste.
fonte
Fazemos o seguinte ...
Teste - Queremos ter certeza de que funciona. No mínimo, queremos saber que isso não quebra nada.
Revisão de código ou, pelo menos, uma verificação de amigos - Essa é uma ótima maneira de garantir que o conhecimento se espalhe e que as pessoas sejam atualizadas. Também ajuda a detectar bugs antes de fazer o check-in.
Enviar um aviso prévio - Um aviso prévio é enviado ao grupo antes do check-in. O objetivo não é apenas permitir que outras pessoas saibam quais arquivos ou áreas estão sendo alteradas, mas também os avisa (eles devem optar por tomar conhecimento), caso se espere que essas mudanças os afetem.
Algumas horas após o envio do aviso prévio, o check-in é realizado e o grupo é informado por e-mail. Todos no grupo podem saber quando o trabalho específico de um bug ou recurso é concluído.
Uma cópia do aviso de check-in é colada no registro de correção associado ao bug ou recurso. Ao pesquisar os registros, achamos muito útil ter uma idéia do que a correção / recurso implicava.
fonte
Execute seus testes de unidade em que você está trabalhando tão diligentemente. Verde é bom.
fonte
Verifique se seu código está formatado corretamente (por exemplo, para Java: selecione seu código e pressione Ctrl-Shift-F no Eclipse). Mas tenha cuidado ao fazer o mesmo para um documento inteiro.
fonte
Sempre, sempre, sempre , verifique se as alterações que você fez não quebram a compilação. Especialmente pequenas mudanças que podem parecer triviais.
Uma vez eu fiz uma alteração muito pequena que não achei que causaria nenhum problema antes de deixar o trabalho no fim de semana. Com certeza, essa pequena alteração quebrou a compilação e nenhuma execução noturna de teste foi executada para o nosso projeto. O chefe de perguntas e respostas não ficou muito feliz com isso, e com razão.
fonte
Procure por partes de suas alterações que possam ser inseridas como unidades independentes.
Muitas vezes, quando tenho uma correção ou aprimoramento funcional no código, há algumas alterações. Alguns deles são específicos para a mudança de comportamento que estou buscando; outros são refatorações que fiz para tornar essa mudança mais limpa.
Eu prefiro verificar cada refatoração separadamente, com sua própria descrição de alteração, assim:
Então, uma vez que cada boa refatoração é registrada, a mudança final de comportamento geralmente é trivial.
Além disso, algumas alterações afetam muitas linhas de código, mas não são muito interessantes, enquanto outras são muito localizadas, mas têm um impacto importante. Se essas alterações forem verificadas juntas, pode ser difícil ler as diferenças. Então, eu os mantenho separados.
Mais tarde, quando alguém está lendo o histórico de mudanças, é óbvio como as coisas chegaram ao estado atual das coisas e por que elas são assim. Também é trivial desfazer minha mudança de comportamento porque ela não está envolvida com muitas outras edições.
fonte
Faça o que faria ao devolver algo emprestado de alguém. Verifique se está limpo e em boa forma. Se você fez uma bagunça, limpe antes de devolver o código ao proprietário (na maioria dos casos, ao seu empregador).
fonte
Eu mantenho um repositório local de hg para o meu trabalho.
Não reivindico que sejam os melhores, mas eles funcionam para mim.
fonte
Quando escrevo um código que sei que não deve ser registrado, adiciono uma linha antes dele contendo "// TEMP:" e depois com "// END TEMP". Isso, juntamente com o diff antes do check-in, promete que eu não irei verificar esse código por engano.
fonte
Teste completamente tudo o que você adicionou ou alterou. Tente todos os casos possíveis em que você possa pensar. Não deixe o teste para o controle de qualidade. Se eu tivesse um sanduíche para cada vez que fiz algumas pequenas alterações e tentei alguns casos de teste apenas para estar do lado seguro, e imediatamente vi problemas, eu teria muitos sanduíches. Costumo dizer em voz alta para mim mesma: "Estou muito feliz por ter tentado isso ..."
Você diz que a interface do usuário ficou estranha após a alteração. Se você tivesse executado o programa e analisado a interface do usuário antes de fazer o check-in, teria notado o problema?
fonte