2010-09-16 8 views
0

Je suis nouveau à mercurial, environ 2 mois maintenant. Nous l'utilisons sur un nouveau projet et essayons de créer un nouveau repo, un clone du tronc, à utiliser comme version "branche".mercurial repository corruption

Nous utilisons un repo central, tout le monde tire/pousser vers/depuis le sur https en utilisant hgwebdir.cgi. En utilisant sur le serveur hg 1.5.4 et "clients" différentes versions, 1.5.2 -> 1.6.3 Tout était ok. Le clone était bon (hg vérifier après clonage), le seul problème est que très vite ce repo s'est corrompu (vide ou manquant, dans les manifestes non retrouvés).

Le repo principal est ok, que cette version se cassé très vite. Les noms des prises en pension sont (les noms de dossiers et noms publiés, résident tous dans le même dossier racine):
AB - pour le tronc
ABRelease - pour le repo de libération
(lire quelque chose dans la documentation, ce qui a sonné cela peut être un problème - voir

Une autre chose très étrange est que les checkins faits uniquement sur le tronc (AB) sont considérés comme disponibles sur la branche de publication, et ils sont affichés comme des erreurs sur vérifier (dans les manifestes non trouvés) Ne comprend pas comment ceux-ci sont arrivés

Des indices?

+0

Êtes-vous sur Windows? Ensuite, il pourrait être un double de http://stackoverflow.com/questions/3453216/mercurial-pushing-a-changeset-to-repo-a-and-somehow-repo-b-has-it-too – Rudi

+0

oui il est ...... – florin

Répondre

0

Ce n'est pas une réponse, mais je dirais que ce que vous faites est certainement supposé fonctionner. S'assurer que le protocole de fil a la rétrocompatibilité complète est très important pour les gens de Mercurial.

Le « cross-talk » entre vos deux prises en pension est très préoccupante et ne devrait pas se produire à moins que quelqu'un erroniously utilisé the share extension.

Que faire si vous essayez de créer un clone de A.B.Release en utilisant clone --pull plutôt que par lui-même clone?

+0

oui --pull résout le problème, comme pull normal utilise des liens physiques pour créer le nouveau repo et c'est faux de mon point de vue. La valeur par défaut ne devrait pas faire cela, car on ne crée pas un nouveau repo juste pour avoir les mêmes données à deux endroits où ils veulent vraiment des repos indépendants. – florin

+0

Les liens physiques sont la solution, les liens symboliques ne peuvent être utilisés que pour tromper les humains et leur faire croire qu'un fichier se trouve réellement dans un autre répertoire, car ils s'habituent à une disposition de répertoire. En interne, lors de l'utilisation de liens physiques, Linux sait que les fichiers sont copiés et ne conserve donc qu'une copie avec une technique appelée «copie sur bit d'écriture», ce qui signifie que chaque fois que l'une des copies est modifiée, le fichier est réellement copié. Donc, vous n'obtenez aucune amélioration en utilisant softliks + vous faites confondre hg et les fichiers corrompus. – linuxero