Pergunta

Atualmente estou usando TortoiseSVN fazer uma mesclagem de dois ramos e descobri que seu o suficiente para não inteligente para lidar com uma senario fusão específico.

Em um ramo Eu tenho um método da seguinte forma:

MyMethod(parameter1, parameter2, parameter3)

No outro ramo Eu tenho o mesmo método da seguinte forma:

MyMethod(parameter1, parameter2, parameter4)

TortoiseMerge percebe que há um conflito, mas só me dá a opção de usar uma assinatura do método ou outro. No entanto, o que eu realmente quero é fundi-lo em um único método com todos os quatro parâmetros da seguinte forma:

MyMethod(parameter1, parameter2, parameter3, parameter4)

A única maneira que eu posso obter em torno deste conflito no momento é para resolver a linha de modo que ambos os métodos estão presentes e, em seguida, ir manualmente para o arquivo e corrigi-lo após o conflito foi resolvido.

Este é apenas o modo como as coisas são ou há uma ferramenta de mesclagem mais inteligente lá fora, em algum lugar que seria capaz de lidar com este cenário?

Foi útil?

Solução

Eu não obtê-lo? Seu projeto não irá compilar, ou pior, não será executado corretamente após a fusão, porque a assinatura do método que você deseja não é em qualquer ramo. Não é este o mais perigoso do que um conflito? Talvez eu tenha perdido alguma coisa óbvia.

IMHO TortoiseSVN (ou melhor, o cliente SVN) está fazendo a coisa certa ao relatar um conflito, ele precisa de intervenção humana.

Outras dicas

Araxis Merge é popular por seu poder. Pessoalmente eu gosto SourceGear DiffMerge desde a sua mais free'er.

AFAIK, ferramenta de mesclagem não pode ajudar nesses cenários, exceto reportá-lo como conflito

Você quer a ferramenta para fundi-lo em uma única chamada de função com todos os 4 parâmetros.

MyMethod (Parameter1, Parâmetro2, parameter3, parameter4)

Aqui também vem a ambigüidade se para colocar o parâmetro3 primeiro e depois parâmetro 4 ou vice-versa.

Até agora eu não encontrei qualquer ferramenta que faz o que eu estou pedindo automaticamente. Pode até não ser possível. Mas eu encontrei uma solução alternativa que eu pensei que iria relatar.

Eu acabei de instalar forçosamente fusão visual, que eu encontrei tem uma instalação mais agradável merge do que o padrão fornecido pelo svn tartaruga. Um dos recursos mais interessantes que eu encontrei, que eu não me lembro se tartaruga merge teve, é que ele permite ver e editar o resultado mesclado. Então, mesmo que ele não pode mesclar automaticamente a linha que eu quero, eu sou capaz de editar o conflito in situ em vez de resolvê-lo incorretamente e manualmente atualizá-lo após a fusão.

Eu tenho certeza que TortoiseSVN não pode lidar com isso. Mais amplamente, qualquer outro merge ferramenta de texto com base / diff não pode: manter em mente que essas ferramentas são agnósticos de linguagem que você está usando, eles não entendem o seu código semanticamente. Eles simplesmente fazer uma comparação "char por char", sem realmente ler como um compilador fazer ou dar um significado para o que esses caracteres estão expressando.

No caso de você estiver usando uma linguagem em que este tipo de operação é um pouco legal, talvez você pode verificar se há algo relacionado a esse idioma.

Como para a capacidade de editar durante a agregação, TortoiseSVN pode realmente fazer isso.

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