0 votes

mercurial hg - pousser vers un dépôt cloné via APACHE provoque des erreurs avec "repository is unrelated" (le dépôt n'est pas lié)

Deux scénarios, l'un fonctionne, l'autre non, alors qu'ils devraient tous deux fonctionner :

  • Scénario #1 : (ne fonctionne pas avec apache)

    Ajout d'un fichier au repo A du client, validation et poussée vers http://SERVER/HG/A ... ŒUVRES Ajout d'un fichier au repo B du client, validation et ajout à http://SERVER/HG/B ... ERREUR avec abandon : le dépôt n'est pas lié il ne fonctionne que si je -f (force) la poussée

  • Scénario n° 2 : (fonctionne via le système de fichiers)

    • Sur le serveur SERVER : Repo "A", Repo "B" clonés à partir de E:/HG/A
    • Sur le client :
      Repo A cloné à partir de E:/HG/A
      Repo B cloné à partir de E:/HG/B

    Ajout d'un fichier au repo A du client, validation et poussée vers E:/HG/A ... ŒUVRES
    Ajout d'un fichier au repo B du client, validation et poussée vers E:/HG/B ... ŒUVRES

Conclusion : ...Quelque chose dans la configuration d'apache ou dans l'intégration entre apache et mercurial fait que le repo n'est pas "lié" .... Des idées ? Pourquoi ai-je besoin de forcer dans le premier scénario mais pas dans le second ? ...et j'ai essayé les deux scénarios via tortoisehg ainsi qu'en ligne de commande.

1voto

Ry4an Points 56453

Je ne sais pas exactement ce qui ne va pas dans votre cas, mais je peux dire que lorsque mercurial dit "unrelated" (sans rapport), cela signifie que les deux dépôts n'ont pas de racine ou de racines.

Normalement, un dépôt mercurial a une seule racine, la révision 0, et tout dépôt ayant cette même racine peut y pousser. Un dépôt peut avoir plusieurs racines, généralement le résultat de quelqu'un qui fait un push -f .

Ce que vous faites dans le scénario 1 devrait donc parfaitement fonctionner. Si ce n'est pas le cas, c'est que votre configuration d'Apache pointe vers http://SERVER/HG/B à un endroit autre que celui où vous pensez qu'il devrait se trouver (peut-être une mauvaise RewriteRule o RedirectMatch o ScriptAlias soit votre Repo B n'a pas été cloné à partir de Repo A comme vous le pensiez, soit Repo A ou B a changé fondamentalement après le clonage initial de B.

Certains outils modifieront le code de hachage de votre nœud racine (révision 0) s'ils sont utilisés pour modifier ce nœud : mq, histedit, strip, rebase, etc. Et c'est parce que la modification du hash modifie complètement le repo que ces outils sont désactivés par défaut et ne peuvent être utilisés que pour des modifications locales, non poussées.

Pour commencer à déboguer, allez sur le SERVEUR et voyez ce qui se passe si vous faites des entrées ou des sorties entre les dépôts A et B au niveau du système de fichiers. Si ceux-ci se plaignent, alors vous savez que ce n'est pas Apache, et si c'est le cas, alors c'est quelque chose de votre configuration Apache.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X