Recurso backporting no Git / Subversion

Qual seria a maneira preferida de atingir o fluxo de trabalho a seguir comGit ouSubversion (Eu tenho mais interesse noGit versão, mas a comparação será definitivamente útil):

Digamos que tivemos um lançamento importante do produto recentemente e há um ramo polisihin específico chamadorelease-2.0.x.

O desenvolvimento então continuou evários ramos de recurso foram fundidos nomaster/trunk (eles mais tarde se tornarão parte do próximorelease-2.1.x).

Agora, em algum momento, outra característica (a saber,critical-feature) foi desenvolvido e fundido de volta aomaster/trunk. Percebemos que esse recurso é tão importante, que temos que retroceder pararelease-2.0.x.

Aqui está uma pequena ilustração pseudográfica para o caso descrito. Note que tudo no topo traz diferenças de árvore entrerelease-2.0.x e atualmaster/trunk eleva a problemas de fusão (caso contrário, eu poderia simplesmente mesclar ocritical-feature e evite escrever essa pergunta :)

    (features added since 2.0.x, which
     should not be backported)
              ^   ^    ^
              |   |    |    (code refactorings done
              |   |    |     in master/trunk)
              \   |    /     (*) (*) (*)          
-------------------------------------------------------> master/trunk
      |                                          |
      |                                          |
      |                                          |
      \ release-2.0.x                            \ critical-feature
                                                   (should be backported)
Questões:

Qual seria a melhor maneira de executar o recurso backporting a partir doVCS perspectiva?

Isso deve ser feito como um simplesmerge do correspondentecritical-feature ramo com conflitos de resolução de conflitos?

Ou isso deve ser feito como ocherry-pick do commit, que mescla ocritical-feature para dentromaster/trunk quando estiver feito? Ou talvez até como um conjunto decherry-picks para cada commit nocritical-feature ramo?

Você poderia aconselhar algo sobre o procedimento de resolução de conflitos? O que se deve fazer se a diferença atual entrerelease-2.0.x emaster/trunk é tão grande, que backporting "ingênuo" leva a uma enorme quantidade de conflitos devido a refatoração de código e falta de recursos ouAPI, que foram adicionados após orelease-2.0.x?

FazGit ouSubversion tem algo específico a oferecer para essa rotina, exceto a abordagem de mesclagem padrão ou escolha seletiva? eu acho querebasing não será útil caso a quantidade de conflitos seja grande, mas, obviamente, posso estar errado.

questionAnswers(3)

yourAnswerToTheQuestion