Obviamente isso só funciona se você usa o git, mas aqui está como eu me aproximo ...
Cada solicitação de recurso e cada bug recebem sua própria filial localmente. O desenvolvedor então faz todas as alterações necessárias. Quando eles terminarem, rebase o branch e mescle / divida os commits em unidades de trabalho lógicas. Para pequenos recursos e para correções de bugs, isso não deve ser difícil mantê-los em um único commit. Para recursos maiores, você pode querer ter vários commits, por exemplo: "Add interface for foo". "Adicionar implementação de foo". "Faça o Whizbang usar o novo recurso foo". O objetivo é manter todas as linhas de código logicamente conectadas em um commit. Nesse ponto, a unidade de trabalho tem um (ou um conjunto) de confirmações. Seu bug tracker deve permitir que você vincule os commits aos tickets. O ticket do bugfix seria vinculado ao commit do bugfix e deveria ser fácil ver que o commit foi mesclado no branch apropriado.