7
votes

Récupérer du clone git-svn sans --stdlayout

J'ai accidentellement cloné un référentiel de subversion sans ajouter l'argument -stdlayout, me donnant quelque chose comme: xxx

avec la disposition SVN / git-svn étant quelque chose comme: xxx

Toute façon de récupérer de cela?


0 commentaires

3 Réponses :


3
votes

Cela dépend: Voulez-vous pouvoir interagir avec subversion à l'avenir?

Sinon, envisagez de créer manuellement une succursale dans Git pour chaque branche dans Branches et déplacez le contenu de ce répertoire de branche jusqu'au niveau supérieur. Cela vous donne un engagement de travailler, et le suivi de la renommée de GIT devrait signifier que regarder l'histoire fonctionne raisonnablement bien. Si vous voulez des balises, vous pouvez également créer une succursale pour chaque balise, étiquetez-la, puis supprimez la branche.

Ce n'est pas joli, mais cela devrait être fonctionnel.

Plus de travail serait d'utiliser filtre-filtre-branche pour ré-écrire l'historique de chacune des succursales que vous venez de créer de la même manière que vous avez réécrivé la pointe. Cela devrait vous laisser avec un référentiel qui a l'air correct. Vous n'obtiendrez toujours pas l'intégration de la subversion, cependant, et vous devriez déterminer comment traiter le point de branche d'origine.

Beaucoup, beaucoup plus de travail serait de déterminer comment git svn stocke ses métadonnées et transformer le référentiel (probablement à nouveau à l'aide de filtre-filtre git ) en conséquence - tout Les données doivent être là :).


1 commentaires

Git-svn Store Metadata à deux endroits: le git-svn-id ligne dans le message de validation et .git / svn / * /. rev_map fichier. .. Si vous supprimez le REV_MAP , il sera régénéré à partir de git-svn-id



3
votes

Actuellement, on dirait qu'un nouveau départ est la seule option qui maintiendra l'interopérabilité avec SVN.


1 commentaires

Pas la seule option, mais le plus facile. Si vous réécrivez la ligne GIT-SVN-ID et supprimez REV_MAP, Git-SVN peut les reconstruire pour vous.



2
votes

Ce n'est pas une réponse exacte, mais ce que j'ai fait était d'ajouter le drapeau -r pour préciser les derniers engagements, car je ne voulais pas vraiment commettre de toute façon.

git svn clone --prefix = svn / -s -r12000: http http: // Certains / svn / repo

Cela nécessite que vous sachiez quel numéro REV vous voulez retourner dans ce cas 12000. Cela m'a permis de garder ma santé mentale après avoir manqué le drapeau -s et que je voulais vraiment faire en premier lieu dans une quantité de temps raisonnable.


0 commentaires