Nous avons plusieurs bibliothèques partagées qui existent en tant que sous-états dans un référentiel parent. Si une personne clone le repo mère, il ressemble à:Extraction d'un collègue lors de l'utilisation de sous-dépôts
/ParentRepo
---- .hg
---- .hgsub
---- .hgsubstate
---- SharedSub1
---- SharedSub2
---- SharedSub3
---- SharedSub4
---- ParentRepo.sln
.hgsub ressemble à ceci:
SharedSub1 = http://ourfogbugz.us.com/..../SharedSub1
SharedSub2 = http://ourfogbugz.us.com/..../SharedSub2
SharedSub3 = http://ourfogbugz.us.com/..../SharedSub3
SharedSub4 = http://ourfogbugz.us.com/..../SharedSub4
de hgrc Chaque subrepo ressemble à ceci:
default = http://ourfogbugz.us.com/..../SharedSub1
assez standard des trucs.
Mais! Comment, à l'aide de cette configuration, un collaborateur tire-t-il d'un autre sans utiliser un serveur central en tant qu'intermédiaire? Donc, le collègue A fait 'hg serve', et B fait 'hg pull http://coworkerA.us.com:8000' ... mais cela échouera, car le fichier hgsub pointe toujours sur le serveur central, et donc B ne recevra que des changements du serveur central et n'obtient aucun changement des sous-états de A qui n'existent pas sur le serveur central.
Ceci est encore plus compliqué si le serveur central est en panne ou inaccessible. Il n'y a aucun moyen pour les gens de se tirer directement les uns des autres en utilisant des sous-déclarations!
Comment se débrouiller entre collègues en utilisant des sous-états? Il est hors de question de modifier les fichiers hgrc et hgsub, car vous devez le faire pour chaque sous-reportage (nous en avons environ 20), et une fois pour chaque collègue!
J'ai également posté cette question sur le Kiln StackExchange de frapper un public plus large: http://kiln.stackexchange.com/questions/1780/pulling-from-a-co-worker-when-using-subrepositories
Le fichier .hgsub, sur le serveur central, aurait donc des chemins relatifs? Lorsque vous clonez cela en local, cela signifie-t-il que vous aurez également besoin de copies séparées de tous les sous-répertoires? – Andrew
Vous auriez besoin d'une copie de chacun, oui, mais plusieurs clones du projet de niveau supérieur pourraient pointer vers le même clone local ../SharedSub1 - leurs répertoires de travail ne sont pas utilisés et la révision d'utilisation est stockée dans le clone local du .hgsubstate du parent repo afin qu'ils ne se heurtent pas les uns les autres. –
Mais vous devrez toujours cloner manuellement tous les SharedSub (s), n'est-ce pas? Certes, il s'agit d'une opération ponctuelle, mais c'est un gros obstacle. Aussi, avez-vous obtenu des sous-rapports relatifs pour fonctionner correctement avec "hg serve"? – Andrew