Pregunta

Ya tengo un repositorio svn de solo lectura desprotegido (svn co y no git svn). He realizado algunos cambios y confirmaciones usando git que luego se empuja a github.

En este punto, git no tiene toda la historia de svn. Me preguntaba si había una manera de extraer e importar esto en este momento.

Las diversas guías de git-svn muestran cómo importar un repositorio limpio y transferir el historial, pero no puedo encontrar uno que ya esté en uso.

¿Fue útil?

Solución

Probablemente tendrá que hacer una importación de svn en un repositorio git nuevo, fusionar los dos repositorios (solo agréguelos juntos, probablemente se quejará de que no están relacionados) y luego rebase los cambios que realizó en el historial importado.

Otros consejos

Para completar Thilo 's buena respuesta , una vez que haya importado el repositorio svn a un git, usted puede agregar ese repositorio git al suyo con un script como se detalla en fusión en ramas git no relacionadas

#!/bin/bash

set -e

if test -z "$2" -o -n "$3"; then
    echo "usage: <*> 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

Otros métodos incluyen:

  • intente un " simple " git pull REPO BRANCH
  • utilizando git grafts para restaurar el historial de fusión de svn creando un archivo de texto en .git / info / grafts, donde cada línea contiene una identificación de confirmación seguida de sus padres. Su repositorio local actuará en adelante como si ese compromiso realmente descendiera de ambos padres.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top