A reintegração só pode ser usada se as revisões X a Y foram mescladas anteriormente a partir de <URL> para reintegrar a origem, mas esse não é o caso


127

Utilizando ramificações SVN com o Tortoise 1.6. Fui periodicamente mesclando o tronco no ramo para mantê-lo atualizado.

Hoje, pensei em reintegrar o ramo. Eu escolhi "Reintegrar um ramo" do Tortoise e recebi a seguinte mensagem de erro:

A reintegração só pode ser usada se as revisões 4709 a 5019 foram mescladas anteriormente http://subversion/svn/saxdev/trunkà fonte de reintegração, mas esse não é o caso

Em seguida, listou cerca de 50 arquivos com descrições como esta:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

A revisão 5019 é a revisão principal. A revisão 4737 foi a revisão quando criei uma ramificação.

Eu tenho isso no log de revisão 4737

Ação: Caminho adicionado: / branches / qst Copiar do caminho: / trunk

Para mim, essa mensagem de erro diz que o ramo não era originalmente do tronco, o que não é verdade.

Alguma ideia?


1
OK. Eu realmente não uso mais o Subversion, mas aceitarei sua palavra!
Colinjwebb

1
Valeu cara. Eu acho que a página é melhor para isso.
Grey

Respostas:


138

Se você estiver trabalhando em uma ramificação e estiver mantendo-a atualizada com o trabalho de outras pessoas, poderá ficar confuso ao criar uma cópia de trabalho do tronco e tentar reintegrar sua ramificação se receber uma mensagem semelhante a esta:

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

Eu já vi várias soluções alternativas no Google, mas elas me deixaram nervoso como 'hacks'. Para resolvê-lo, decidi fazer exatamente o que o subversion está sugerindo na mensagem. Voltei ao meu ramo e mesclei explicitamente as revisões especificadas:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

Depois de fazer isso, consegui retornar à cópia de trabalho do tronco e reintegrar o ramo sem problemas.

Eu espero que isso ajude


16
Agradável! "faça exatamente o que o subversion está sugerindo na mensagem". :)
Adam

7
Concordo, a resposta mais popular é tentadora, mas provavelmente é melhor corrigi-la corretamente. Eu tive que ir para o arquivo problemático específico e svn mergepara o tronco.
21113 Steve Kehlet

1
Isso funcionou muito bem para mim. O truque principal era que Tortoise não estava me contando a revisão do problema. Depois de atualizar meu cliente svn da linha de comando, consegui que ele me desse uma mensagem como a sua e, em seguida, consegui mesclar a revisão do problema e voltar ao tronco.
user12861

7
Isso não funcionou para mim porque as mesclagens "ausentes" listadas já haviam sido feitas na ramificação (reintegrar a fonte).
Sam

6
Embora essa resposta pareça razoável, ela não funcionou para mim. Continuei recebendo as mesmas mensagens de erro. O que ajudou foi a remoção das propriedades svn: mergeinfo dos arquivos listados, exatamente como a resposta aceita está sugerindo.
Jenny O'Reilly

85

[[Embora minha solução tenha funcionado para mim no passado, ela pode levar a resultados inadequados com os clientes modernos de SVN. No nosso caso, os erros de mesclagem pareciam ser subprodutos de automações que estavam confundindo nosso histórico de SVN e não uma atividade real. Estou deixando isso aqui para posteridade, mas considere a resposta aceita. ]]

A solução para mim foi remover quaisquer svn:mergeinfopropriedades que de alguma forma se anexassem a arquivos individuais na hierarquia.

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

Para encontrar os arquivos com informações sobre o mergeinfo, você pode:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

Em seguida, você pode remover as propriedades mergeinfo:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

Depois de concluir isso, minha mesclagem foi executada corretamente.


2
Isso realmente me ajudou a resolver meu problema, mas o meu se devia à mesclagem de uma revisão de uma pasta filho, em vez de fazê-lo na pasta raiz. Meu problema foi: eu havia realizado a mesclagem, mas a pasta raiz não reconheceu que a mesclagem havia acontecido, isso significava que eu tinha que atualizar manualmente o suporte da mergeinfo com os números de revisão ausentes. OBSERVAÇÃO Eu só poderia fazer isso porque não havia outras alterações nos arquivos para a revisão e causará um comportamento inesperado se outros arquivos precisarem ser mesclados - você precisará refazer a mesclagem das revisões, se for o caso.
ExecutionOrder

5
No TortoiseSVN, você pode clicar com o botão direito do mouse no arquivo, selecionar "TortoiseSVN" -> "Propriedades" e excluir a propriedade svn: mergeinfo.
StarCub

3
@StephenKennedy Você pode estar enfrentando o problema de reutilizar uma ramificação que já foi reintegrada. Nesse caso, consulte a última seção do svnbook.red-bean.com/en/1.7/… começando com "Depois que uma mesclagem --reintegrate for feita de ramificação para tronco, a ramificação não será mais utilizável para trabalhos futuros".
AlexMA #

6
+1. Você não precisa excluir todos os mergeinfos; apenas os que têm intervalos ausentes. Veja minha resposta para uma maneira de excluir apenas o problema mergeinfos filtrando a saída de erro do TortoiseSVN.
Iain Samuel McLean Elder

4
-1. Você não deve remover as propriedades do mergeinfo, a menos que tenha realmente certeza do que está fazendo. Muitas pessoas podem ler isso, excluir essas propriedades e introduzir inadvertidamente outros problemas. Paul Whipp tem uma resposta melhor.
Bizmarck 26/08/14

15

Se você tentar reintegrar sua ramificação ao tronco e vir erros como este no TortoiseSVN:

O teste de mesclagem e reintegração falhou apenas !: "A reintegração só pode ser usada se algumas revisões foram mescladas anteriormente a partir do tronco, mas esse não é o caso"

Clique no texto do erro e pressione CTRL+ A, CTRL+ Cpara copiar todo o texto.

Cole o texto na string here deste script do PowerShell:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

O script extrai os caminhos relativos dos arquivos com o problema mergeinfo e gera uma lista de comandos para corrigir cada um.

Pode ser necessário alterar o 'userdata'valor para se adequar à sua estrutura de repositório.

Execute o script para gerar os comandos necessários para remover o problema mergeinfos.

Neste exemplo, o script produziria esta saída:

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

No prompt de comando, você pode navegar para a base da ramificação (myproject) e executar os comandos para excluir o problema mergeinfos.

Você deve ver uma saída como esta:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

Como na resposta de Gray , agora você deve confirmar as alterações no ramo e tentar se reintegrar novamente. Desta vez deve funcionar!


1
Muito antes de reintegrar, mesclei (não reintegrei) algumas alterações no tronco da minha ramificação porque acidentalmente comprometi-me com a ramificação quando pretendia confirmar com o tronco. Poderia ser a razão por trás desses erros de reintegração?
Iain Samuel McLean Elder

Isso é exatamente o que parece ter causado esse problema no meu caso. Obrigado por reservar um tempo para escrever o script!
Sam

@ Sam Fico feliz que você achou útil. Você precisou substituir o espaço literal por um \s+para fazê-lo funcionar para você?
Iain Samuel McLean Elder

Tipo de; era mais o +necessário para que funcionasse para mim. No meu caso, algumas linhas tinham dois espaços e outras três, portanto, era necessário suporte para números variáveis ​​de espaços. Não sei por que mudei o espaço para a \s; que provavelmente não era necessário, desculpe-me por essa parte!
Sam

@ Sam Não se preocupe, mas vou mudar de volta para um espaço literal por enquanto até o TortoiseSVN começar a misturá-lo com guias ou o que quer que seja :-) Deixei o site +desde que foi útil para você.
Iain Samuel McLean Elder

11

Na verdade, eu o corrigi usando a opção "mesclar duas ramificações diferentes" para mesclar o tronco e a ramificação na minha cópia de trabalho. Então eu comprometi isso com o porta-malas.

Maravilhoso


4
Essa resposta realmente não explica o que você fez. Sem exemplos, nem mesmo um link para a seção necessária do manual.
Zigg

Em retrospectiva, não, não. No entanto, como essa foi minha própria resposta no mesmo dia da pergunta, foi a melhor resposta por alguns meses. Eu gostaria de presumir que faz sentido se você ainda usa o Tortoise SVN 1.6. Aceitei a resposta de Gray como a resposta aceita agora.
Colinjwebb

Exemplo: svn merge ^ / tags / wx ^ / tags / yz. O erro de reintegração apareceu para mim ao usar o 1,8 e mesclar no tronco, onde a fonte de mesclagem teve uma revisão específica previamente mesclada a partir do tronco. 1.8 pareceu decidir que uma mesclagem de reintegração estava sendo tentada, o que não era. Uma mesclagem de execução a seco com 1.6 funcionaria bem, mas a mesclagem de duas URL também se encaixa.
28414 Nick

1
O cenário preciso que falhou com o 1.8 foi copiar uma tag de algumas revisões para uma versão de patch, escolher uma mudança do tronco para o backport por uma mesclagem na tag corrigida, fazendo uma alteração adicional na tag corrigida e mesclando-a de volta no porta-malas. As alterações entre a tag base e a versão corrigida são o que precisam ser mescladas de volta ao tronco, e uma mesclagem de 2 URL funciona como um tratamento para isso.
28414 Nick

Eu deveria ter lido essa resposta antes de passar três dias tentando entender o que estava acontecendo. Eu ainda não entendo por que eu tive este problema, mas suspeito que o comentário de @ Nick é a razão - e agora as coisas estão funcionando Eu não vou olhar mais longe ...
Dave Richardson

6

Algo que funcionou para mim no SVN de tartaruga: em vez de mesclar todas as revisões da ramificação, escolha um intervalo específico e selecione manualmente todas as suas revisões na ramificação.


1
Obrigado por uma idéia tão básica. De todas as respostas, essa não foi apenas a menos complicada, mas foi a única que funcionou para mim.
Redman

3

Faça o que o SVN está lhe dizendo.

  1. Mesclar a ramificação da Reversão que o SVN está lhe dizendo
  2. Reintegrar da ramificação para o tronco

2
Não funcionou para mim. As mudanças já existiam na ramificação. Suas instruções parecem que devem funcionar em alguns casos, mas parecem basear-se em uma suposição, portanto não parecem universais.
Sam

1

Veja também minha resposta aqui para minha experiência com um caso semelhante. Não tenho certeza se essa é a fonte do seu problema, mas parece que o Subversion 1.8 tem problemas com o mergeinfo quando duas alterações se cancelam.


0

Eu me deparei com esse problema. Eu fiz um log SVN na minha filial para descobrir se havia mesclado o tronco à minha filial.

Anotei todas as revisões.

Fiz então a mesclagem do meu ramo no tronco, especificando as revisões manualmente. Especifiquei todos os intervalos para excluir as revisões em que mesclei o tronco. Eu consigo mesclar minha filial.

Eu tive que fazer algumas reviravoltas no mergeinfo, mas consegui mesclar meu código.

Eu imediatamente apaguei meu ramo.


0

Eu recebi esse erro depois de usar uma verificação parcial de uma ramificação. Eu estava mantendo o ramo atualizado com o tronco, mas as revisões do tronco para partes do ramo que não foram retiradas foram obviamente não atualizadas. A correção era fazer um check-out completo da ramificação e mesclar todas as alterações de tronco. Depois de enviá-las para o ramo, eu poderia mesclar o ramo ao tronco com sucesso.


0

Tenho esse problema em

  • TortoiseSVN 1.9.7, Build 27907 - 64 Bit, 2017/08/08 19:34:38
  • Subversion 1.9.7, -release
  • abr 1.5.2
  • apr-util 1.5.4
  • servo 1.3.9
  • OpenSSL 1.0.2l 25 de maio de 2017
  • zlib 1.2.8
  • SQLite 3.14.1

clique com o botão direito do mouse na ramificação em que deseja mesclar (mas receba esta mensagem) e selecione a opção "atualizar para revisão" e, na caixa de diálogo exibida (captura de tela abaixo), selecione essas revisões e clique em ok - depois que todas as revisões anteriores forem mescladas, você não receberia esta mensagem

insira a descrição da imagem aqui

Adicionando isso aqui para ajudar alguém que está usando o Tortoise SVN


-1

Sei que essa é uma postagem antiga, mas estava lutando para resolver esse problema até descobrir que os arquivos listados na mensagem de erro têm um problema de propriedade SVN.

Cliquei com o botão direito do mouse nos arquivos problemáticos: TortoiseSVN> Properties e descobri que o arquivo tinha dois svn: mergeinfo, e um deles não tinha herdado dos dados. Então eu removi essa mergeinfo.

Eu uso o TortoiseSVN 1.12.2, Build 28653 - 64 Bit.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.