2010-07-19 5 views
14

J'ai récemment eu un objet corrompu dans mon dépôt, pointant sur mon HEAD (l'objet était vide). C'est arrivé après avoir interrompu une commande git-svn. Ensuite, j'ai restauré mon référentiel en changeant manuellement les références sur cet objet.git-svn fetch/rebase échoue après avoir essayé de réparer un fichier corrompu

Maintenant, je veux synchroniser mon dépôt git avec SVN, mais git fetch svn retours:

fatal: Invalid revision range 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch 
rev-list --pretty=raw --no-color --reverse 5a5dc92cd3083960fb4828ae387a32cda0554fa8..refs/remotes/a-branch --: command returned error: 128 

5a5dc92cd3083960fb4828ae387a32cda0554fa8 fait référence à l'objet corrompu, je voudrais dire git-svn ne pas considérer cet objet, mais un autre, mais je ne sais pas comment le pirater.

Si quelqu'un sait où/comment git-svn stocke en interne cette valeur, ce serait génial.

Merci

Répondre

17

si vous avez des métadonnées stockées svn avec vos messages (ceux commit http://svn.…./svn/[email protected] (<id>)), vous pouvez supprimer les fichiers .rev_map.<id> des .git/svn/… répertoires. Git-svn les recréera ensuite avant d'exécuter la commande suivante.

Edit: Lors de l'exécution git gc si vous voyez sortie le long des lignes de:

$ git gc 
warning: reflog of 'HEAD' references pruned commits 
warning: reflog of 'refs/heads/master' references pruned commits 
warning: reflog of 'refs/remotes/trunk' references pruned commits 

alors vous savez que vous devez effectuer l'affaire ci-dessus. Dans ce cas:

rm .git/svn/refs/remotes/trunk/.rev_map.* 
+0

J'ai modifié la réponse pour la rendre plus claire que le dans le rev_map provient de la référence précédente, puisque je travaillais sur ce qui était nécessaire d'une autre référence sur le web. –

Questions connexes