Question

J'ai déjà un repo en lecture seule svn extrait (svn co et pas git svn). J'ai apporté des modifications et des commits en utilisant git qui est ensuite poussé vers le haut pour github.

À ce stade, git n'a pas toute l'histoire de svn. Je me demandais s’il existait un moyen d’extraire et d’importer cela à ce stade.

Les différents guides git-svn montrent comment importer un référentiel propre et transférer l'historique, mais pas celui que je trouve déjà utilisé.

Était-ce utile?

La solution

Vous devrez probablement faire une importation svn dans un nouveau référentiel git, fusionner les deux référentiels (ajoutez-les simplement ensemble, il va probablement se plaindre qu'ils ne soient pas liés), puis rebase les modifications apportées à l'historique importé.

Autres conseils

Pour compléter les Thilo bonne réponse , une fois que vous avez importé le repo svn dans un dépôt git, vous pouvez ajouter ce dépôt git dans le vôtre avec un script, comme indiqué dans fusion dans des branches git non liées

#!/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

Les autres méthodes incluent:

  • essayez un " simple " Git Pull REPO BRANCH
  • utiliser des greffes git pour restaurer l'historique des fusions en créant un fichier texte dans .git / info / grafts, où chaque ligne contient un identifiant de validation suivi de ses parents. Votre référentiel local agira désormais comme si cet engagement descendait réellement des deux parents.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top