Pergunta

Eu já tenho um svn somente leitura repo check-out (svn co svn e não git). Eu fiz algumas mudanças e commits usando git que é então empurrado até github.

Neste ponto, git não tem toda a história a partir do SVN. Eu queria saber se havia uma maneira de extrair e importar este neste momento.

As várias guias git-svn mostrar como importar um repo limpo e transferir a história, mas não um que eu posso achar que já está em uso.

Foi útil?

Solução

Você provavelmente vai ter que fazer uma importação SVN em um repositório git fresco, mesclar os dois repositórios (basta adicioná-los juntos, ele provavelmente vai reclamar sobre eles estarem alheios) e, em seguida, rebase as alterações feitas até a história importado.

Outras dicas

Para completar Thilo 's boa resposta , depois de ter importado o svn repo em um git, você pode adicionar o repositório git em seu com um script conforme detalhado na fundindo em ramos git não relacionados

#!/bin/bash

set -e

if test -z "$2" -o -n "$3"; then
    echo "usage: $0 REPO BRANCHNAME" >&2
    exit 1
fi

repo=$1
branch=$2

git fetch "$repo" "$branch"

head=$(git rev-parse HEAD)
fetched=$(git rev-parse FETCH_HEAD)
headref=$(git rev-parse --symbolic-full-name HEAD)

git checkout $fetched .

tree=$(git write-tree)

newhead=$(echo "merged in branch '$branch' from $repo" | git commit-tree $tree -p $head -p $fetched)
git-update-ref $headref $newhead $head
git reset --hard $headref

Outros métodos incluem:

  • tentar um "simples" git pull REPO BRANCH
  • utilizando enxertos git para restaurar história merge svn através da criação de um arquivo de texto em .git / info / enxertos, onde cada linha contém um cometa ID seguido por seus pais. Seu repositório local passarão a agir como se que cometem realmente descendentes de ambos os pais.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top