2010-03-11 10 views
10

Note: J'ai posé cette question hier au kiln.stackexchange.com, mais je n'ai pas eu de réponse, et ça retarde mon travail. ..Mercurial hg Sous-dépôt question - "avort: inconnu révision"

Mon principal dépôt Mercurial a un tas de subrepositories dans lors de la configuration initiale, je fait une erreur dans mes .hgsub a savoir, je signalais deux subrepositories dans le même répertoire

ce que j'aurais eu..:

sites/1=sites/1 
sites/2=sites/2 
sites/3=sites/3 

Quoi J'ai effectivement eu:

sites/1=sites/1 
sites/2=sites/2 
sites/2=sites/3 

Erreur stupide de copier/coller. J'ai commis le .hgsub incorrect, ne réalisant pas mon erreur. Quelques révisions plus tard, tout en ajoutant un peu de nouveaux sous-dépôts à .hgsub, j'ai remarqué l'erreur et l'ai corrigé à l'intérieur .hgsub. Je me suis engagé et j'ai continué à rouler. J'ai engagé une quantité raisonnable de travail que je préférerais ne pas refaire depuis que j'ai «corrigé» l'erreur dans .hgsub.

Nous arrivons maintenant au problème réel: Je l'ai fait quelques changements à l'intérieur du sites/3 subrepository, et lorsque je tente de commettre le dépôt principal, je reçois l'erreur suivante:

abort: unknown revision 'LongGUIDLookingString'

J'ai trouvé this discussion, ce qui semble résoudre le même problème que moi, mais je n'arrive pas à comprendre comment bos le corrige. Que dois-je faire pour résoudre ce problème?

section pertinente de .hgsubstate:

7d1e430ac5f12e00cb5bebcdf693e72db2c45732 sites/1 
6eea936a5b7cfff6169f59d0dc1c8c4eb5f8412d sites/2 
e2b83b301997de8add1b659d82a7ab8201bda653 sites/3 
+0

Y a-t-il un + à la fin de la chaîne? – tonfa

+0

Pas plus. Voici la chaîne actuelle: 'e2b83b301997de8add1b659d82a7ab8201bda653'. – Tex

+0

@tonfa: que faire s'il a le + à la fin? (ça fait pour moi, mais je ne sais pas où aller d'ici). –

Répondre

13

Je suppose le fichier .hgsubstate contient maintenant un Hached (qui est ce que votre LongGUIDLookingString est) à partir repo3 dans l'entrée de repo2. Essayez d'éditer .hgsubstate pour pointer vers un hashid correct/présent pour chaque repo.

Si cela ne fonctionne pas, veuillez coller votre fichier .hgsubstate afin que nous puissions voir comment il peut être modifié.

+0

Parlez-vous du hashid changeset? Les ID de hachage de modification des sous-éléments ne ressemblent en rien aux hachages de '.hgsubstate'. Ou y a-t-il un autre hashid associé au sous-répertoire 'sites/3' (autre que dans' .hgsubstate')? J'ai ajouté la section pertinente de '.hgsubstate' à la question originale. – Tex

+1

Ok, je vois maintenant que mercurial montre habituellement une version raccourcie de chaque ID de changeset. 'hg --debug tags' obtient la version la plus longue. J'ai exécuté cela sur 'sites/3', collé l'id de changeset tip dans' .hgsubstate' sur la ligne 'sites/3', et je suis maintenant capable de recommencer. On dirait d'être nettoyé maintenant. Merci pour l'aide! – Tex

+1

Pas de problème. J'aurais dû mentionner les hashids complets (complets). Vous pouvez les obtenir en tant que {node} dans la langue du template: hg log --template '{node}' avec '{node | short}' vous obtenant ceux que vous avez l'habitude de voir. –