2010-03-29 5 views
4

ContexteComment resynchroniser git avec svn tree?

J'ajoute quelques fonctionnalités à un projet qui utilise la subversion - J'utilise git-svn pour cloner à mon référentiel local, rebasage git-svn pour maintenir les changements récents dans la langue officielle tronc et garder l'histoire linéaire.

Récemment, je me suis oublié et j'ai fait quelques fusions qui ont déséquilibré mon rebasage - une longue histoire, j'avais besoin de passer du temps avec le choix de la cerise pour rendre l'histoire encore linéaire. Après que 1 rebase s'est bien passé, mais maintenant essayer de faire git-svn rebase montre un conflit entre les validations subversion de 2008 (environ 700 validations), même si l'histoire semble être linéaire.

Question

  1. est-il un moyen de reconstruire/resynchroniser mon dépôt git avec le tronc svn?
  2. Si je clone mon dépôt git sur un autre ordinateur (sans le dossier .git/svn) - est-il possible de le rebaser avec le svn, connaissant l'URL de repo et la dernière révision rebasée?
+0

si la télécommande n'utilise même pas git, pourquoi embêter avec rebase du tout? à la fin de la journée, vous leur enverrez un patch, non? – hasen

+0

@hansen - bien non ... Je ne suis pas un contributeur officiel. J'héberge mes changements sur github. Parfois, je leur envoie simplement un message avec ce que j'ai changé et où ils peuvent l'obtenir. – kyrisu

Répondre

2

Vous pouvez réinitialiser votre branche à un commit qui est définitivement synchronisé (un ancien), puis faire une rebase pour synchroniser.

Pour enregistrer les modifications apportées localement, vous voudrez peut-être à la branche avant (et cerise choisir les changements nécessaires de cette nouvelle afterwatds branche)

git branch branch_with_my_changes 
git reset --hard very_old_commit_that_is_synced 
git svn rebase