Pergunta

Estou bastante utilizado para como fazer fusões CVS no Eclipse, e eu sou de outra forma feliz com a maneira que tanto Subclipse e trabalho subversiva com o repositório SVN, mas não tenho certeza de como fazer fusões corretamente.

Quando eu faço uma junção, parece querer manter os arquivos mesclados em um diretório separado no meu projeto em vez de substituir os arquivos antigos que estão a ser substituído na fusão, como estou habituado no CVS.

A questão não é específica para qualquer Subclipse ou subversivas.

Obrigado pela ajuda!

Foi útil?

Solução

Eu aconselharia não tentando usar plugins do Eclipse como seu acesso primário para o Subversion.

Se você estiver desenvolvendo em Windows, TortoiseSVN é o melhor programa que eu tenho visto para o acesso Subversion. Explore para o diretório do qual você deseja mesclar, clique direito sobre ele e usar a opção de mesclagem Tortoise SVN. Assumindo uma mesclagem não-interativo, uma vez que você conflitos, você vai ter que passar por cada arquivo em conflito e editar os conflitos antes de marcá-los como resolvido. Para este processo, eu recomendo um programa chamado KDiff3, o que mostra sua cópia repositório local (o que foi armazenado na .svn antes da fusão), sua cópia local (incluindo quaisquer alterações), e a cópia que vem do repositório, e permite que você ver facilmente (e até mesmo mão-modificar se necessário) o resultado da fusão. Ele também lida com um monte de pequenos conflitos automaticamente.

KDiff3 é portátil, TortoiseSVN é um Windows shell extensão, por isso, se você estiver usando outro ambiente, gostaria de tentar usar apenas o SVN para mesclar. Mas isso seria muito mais de uma dor:)

Outras dicas

Mesclando um ramo inteiro em tronco

  1. Verifique o histórico do projeto ramo para determinar a versão de que a sucursal foi levado

    • por padrão Eclipse Team "History" só mostra os últimos 25 revisões para que você terá que clicar no botão nessa vista denominada "Show All"
    • quando você diz "Show All" que o levará de volta após a data de ramo e mostrar-lhe toda a história para o tronco, bem assim você vai ter que procurar o seu comentário onde ramificada
    • NOTA : se você usar Tortise SVN para esta mesma tarefa (navegar para o ramo e selecione "Mostrar Log") irá mostrar-lhe só a história ramo para que você possa dizer exatamente onde começou o ramo
  2. Então, agora eu sei que 82.517 foi o primeiro ID versão da história ramo. Assim, todas as versões do ramo últimos 82.517 têm mudanças que eu deseja mesclar no tronco

  3. Agora vá para o projeto "tronco" em seu espaço de trabalho Eclipse e selecione "botão direito - Team - Merge"

  4. A visualização padrão é a fusão 1 url

    • selecione o URL do ramo a partir da qual estão se fundindo
    • sob Revisões selecionar "All"
    • pressione OK
  5. Isto irá levá-lo para a perspectiva "Team Sincronizar" (se não você deve ir lá mesmo), a fim de resolver conflitos (veja abaixo)

Re-Mesclando mais mudanças de filiais em tronco

  1. Insepct o histórico do projeto tronco para determinar a última vez que se fundiram no tronco (você deve ter comentado isso)

    • para a causa do argumento, vamos dizer que esta versão era 82517
  2. Então agora eu sei que qualquer maior versão do que 82.517 nas necessidades do ramo a ser incorporado tronco

  3. Agora vá para o projeto "tronco" em seu espaço de trabalho Eclipse e selecione "botão direito - Team - Merge"

  4. A visualização padrão é a fusão 1 url

    • selecione o URL do ramo a partir da qual estão se fundindo
    • sob Revisões selecione o botão de rádio "Revisões" e clique em "Procurar"
    • isso vai abrir uma lista dos últimos 25 revisões do ramo
    • selecione todas as revisões com um número maior do que 82517
    • pressione OK (você deve ver a lista de revisões no campo de entrada ao lado do botão de rádio)
    • pressione OK
  5. Isto irá levá-lo para a perspectiva "Team Sincronizar" (se não você deve ir lá mesmo), a fim de resolver conflitos (veja abaixo)

Resolução de Conflitos

  1. Você deve estar na perspectiva de "Team Sincronizar". Este será parecido com qualquer sincronização regular para cometer fins onde você vê os arquivos que são novos e arquivos que têm conflitos.

  2. Para cada arquivo onde você vê um conflito escolha "clique direito - Editar Conflitos" (não clique duas vezes no arquivo, ele trará a cometer diff ferramenta de versão, isso é muito diferente)

    • Se você ver coisas como "<<<<<<< .working" ou ">>>>>>> .merge-right.r84513", então você está no modo de edição errada
  3. Uma vez que você tiver resolvido todos os conflitos em que arquivo, diga o arquivo para "marcar como fundiu"

  4. Uma vez que todos os arquivos são livres de conflitos que você pode, então, sincronizar seu projeto Eclipse e comprometer os arquivos para SVN

Eu normalmente verificar ambos os ramos e, em seguida, usar a comparar um ao outro opção que faz um sincronizar-como comparar as duas árvores de origem. Depois de integrar as alterações em um ramo, você pode comprometer volta para o repositório.

integração Use Eclipse, ele funciona perfeitamente bem.

A principal mudança a partir do CVS, é que você só se fundem deltas de um ramo, ou seja, muda de uma revisão para outra. Isso quer dizer que você tem que acompanhar a revisão início correta de alguma forma (a menos que você tem svn história 1,5 merge)

Se você tem esse direito, é só até você para obter as mudanças para a direita com o editor de comparação.

Em primeiro lugar, se você está vendo ">>>>>" e tal em seus arquivos quando você vê-los em Eclipse, isso provavelmente significa que você não está olhando para o arquivo com o editor de comparação adequada. Tente botão direito do mouse sobre o arquivo na visualização Project ou exibição Sincronizar e selecionando "Editar Conflitos" para abrir um editor de comparação que irá mostrar-lhe as regiões conflitantes graficamente em vez de texto. Note que o editor de comparação que vem para "Editar Conflitos" é diferente do que você começa quando você apenas clique duas vezes em um arquivo no modo de exibição Sincronizar - os doublieclick comparar mostra editor das diferenças entre seu arquivo atual e do jeito que existia quando você último check-lo ou atualizá-la, enquanto os conflitos de edição comparar caixa de diálogo mostra as diferenças entre duas fontes de alterações (por exemplo, as alterações que se fundiu contra as mudanças que existiam no seu espaço de trabalho antes de se fundiu).

Em segundo lugar, você pode querer estar ciente de um bug em algumas versões do Eclipse subversivo plugin que faz com que todos os arquivos que as mudanças de mesclagem aceitou ser marcadas incorretamente como tendo conflitos. Este erro foi corrigido, mas um monte de pessoas não parecem ter atualizado para obter a correção ainda. Mais detalhes aqui:

https://bugs.eclipse.org/bugs/show_bug.cgi? id = 312585

Lembre-se que com o SVN revertendo uma árvore modificado para um estado limpo é bastante fácil. Basta ter um espaço de trabalho limpo no ramo de destino merge e execute o comando merge para importar as modificações do ramo fonte da fusão, em seguida, sincronizar o espaço de trabalho e você vai ter a sua janela de comparação eclipse habitual, mostrando todos os arquivos de mesclagem modificado e os conflitos.

Se por algum motivo você não pode resolver os conflitos que você pode svn revert sobre o projeto e voltar para um estado limpo, caso contrário, você faz o merge no lugar e assim que estiver pronto você pode cometer. Note que você não tem de se comprometer, assim que estiver pronto lidar com os conflitos que você também pode voltar à vista dev, verifique se os compila o código, executar os testes de unidade, o que quer e, em seguida, sincronizar novamente e comprometer (uma vez que o conflito são localmente resolvidos eles não vão voltar)

última vez que olhei, quando você usar o comando subclipse merge que irá substituir o arquivo mesclado (usando marcadores de conflito para mostrar áreas conflitantes) e colocar a esquerda original e lado direito da fusão no mesmo lugar. ele não deve colocar nada em diretórios diferentes.

Como regra geral, é melhor para cometer todas as modificações de mesclagem em uma única comprometer e ter apenas as modificações de mesclagem no comprometer para que você possa reverter a fusão posteriormente, se necessário.

O openCollabNet ferramenta de mesclagem para subclipse é bastante puro. Existem muitos tipos de mesclagem disponíveis ea fusão Eu só realizada com ele quando perfeitamente. Eu recomendo-lo.

A única coisa que syncrhonize vista em eclipse falta é check-in capacidade. Em Team vista sincronização posso ver todas as minhas mudanças e resolver conflitos, por isso seria bastante intuitivo para o check-in logo ali, em vez de voltar para visualização de java ir e fazer check-in.

Eu desembarcou aqui porque eu estava procurando uma maneira de mesclar em um editor de mesclagem externo (kdiff3), mas iniciar a fusão do eclipse. Eu não estava satisfeito com as respostas dadas acima. Então aqui é ho para kdiff3 configure como merge e diff editor de SVN em Eclipse:

ir para Windows -> Preferências ? Team -> SVN -> Visualizador de comparação Adicionar uma nova configuração (botão Adicionar): Extensão ou mimetype:. * - se você quiser, você pode especificar diferentes tipos MIME para diferentes editores, eu não preciso que assim o alquantor

Diff : Caminho do programa C: \ Program Files \ KDiff3 \ kdiff3.exe (ou onde quer que você tem o seu editor merge - sry para o caminho janelas, sinta-se livre para adicionar uma versão linux nos comentários ou editar esta resposta.)

Argumentos: $ {Base de} $ {mina} $ {deles}

Merge : Programa caminho C: \ Program Files \ KDiff3 \ kdiff3.exe

Argumentos: $ {Base de} $ {mina} $ {deles} -o $ {fundiu}

Este será provavelmente o trabalho, bem como para outros editores de mesclagem, mas com uma sintaxe diferente argumento (figura it out um deixe-nos saber :)).

O uso é como de costume (team-> conflitos de edição) para fundir e compare-> foo para a vista diff.

Felicidades

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