2017-02-07 4 views
0

en utilisant: Windows, TortoiseHg 4.4TortoiseHg 4.4 fonctionne-t-il pour valider de nouveaux éléments dans les sous-états?

Je viens de commencer à regarder Mercurial comme une route pour le contrôle de version au lieu de notre (pas si) merveilleux système TFS 2010. L'idée est de permettre des branchements plus flexibles en utilisant notre architecture de projet actuelle et de faciliter la fusion.

I a créé une structure de sous repo similaire à celui ci-dessous:

+Main 
    ++SharedProjects 
    ++Country1 
    ++Country2 

(+ = repo, ++ = subrepo)

Cela a créé dans .hgsub principal qui contient:

SharedProjects = SharedProjects 
Country1 = Country1 
Country2 = Country2 

En regardant dans le Workbench hg je peux voir la hiérarchie correcte des dossiers de projet sous Main.

Le problème:

Quand j'ajouter un fichier dans le dossier Pays1 et commets le dossier principal, rien est engagé. Mais si j'engage le Country1 (sub) repo, il s'engage très bien.

De toute évidence, cela risque de poser des problèmes lorsque plusieurs sous-états dans des sous-états existent et qu'il y aura des risques de validation très risqués.

Vous ne savez pas si j'essaie de faire quelque chose que je ne devrais pas faire ou si ça ne marche pas et qu'il y a un truc? Ont cherché et trouvé un bon nombre de questions, mais plus âgés aucun de ces corrections ont travaillé:

J'ai essayé:

  • ajouter ./ à l'avant de chaque chemin de .hgsub
  • en vous assurant récursif 'est cochée dans
  • boîte de dialogue Livrer
  • ajouter 'recurserepos = true' à la Mercurial.ini
  • fichier que fait ne commette si je commets directement la ligne de commande sous repo
  • commit de Main' hg commit -m -S "test ligne cmd commit " » a obtenu le résultat « rien changé »
+0

Plus d'informations sur les tests de ligne de commande. J'ai créé un mainrepo et subrepo (de mainrepo) en utilisant la procédure pas à pas dans les docs HG (http://mercurial.aragost.com/kick-start/en/subrepositories/) et ne peut toujours pas commettre des changements qui ont eu lieu sur un sous-niveau. Il semble que le fichier .hgsubstate soit créé avec tous les 00000000 au lieu d'un guid, mais j'ai essayé de définir différents chemins relatifs (./subrepo, ../subrepo) en vain. donc il semble que ce soit là où le problème réside, mais pour le moment je suis perplexe pour une solution. – DaveC

Répondre

0

Le problème:

Quand j'ajouter un fichier dans le dossier Pays1 et commets le dossier principal, rien est engagé. Mais si je commet le Country1 (sous) repo, il commet très bien. Il est évident que cela va causer des problèmes lorsque plusieurs sous-sous-états existent et qu'il y aura des changements d'engagement très risqués .

Je ne sais pas si j'essaie de faire quelque chose que je ne devrais pas être ou si c'est juste ne fonctionne pas et il y a une astuce?

Voici comment cela fonctionne.

Country1.file est la responsabilité du référentiel Country1.Repository est juste un ensemble de versions de sous-dépôt, où un commit dans Main est un lien pour commettre dans des sous-dépôts.

Par exemple, vous pourriez avoir:

  • Main 1,0 est juste un lien vers SharedProjects 1.1, 1.2 et Country1Country2 1.5.
  • Ensuite, vous pouvez faire un autre commit, où Main 2.0 est SharedProjects 1.99, Country1 1.22 et Country2 2.111.

Maintenant, si vos fichiers ne sont pas sous subrepository, le commit sera dans le dépôt Main.

Je ne recommanderais pas d'utiliser plusieurs niveaux de sous-dépôts. Les sous-dépôts ne sont peut-être pas la meilleure solution pour votre projet.

Vous pourriez avoir un seul référentiel et stocker Pays1 dans une branche nommé Country1, puis Pays2 dans la branche nommé Country2, et ainsi de suite. Une branche pour chaque dossier. Ensuite, vous pouvez les fusionner tous dans la branche default (la branche principale).

+0

Obtenir trop désordonné je pense que pour ce que je voulais.Décidée à utiliser GIT à la fin, il semble un peu plus comme il peut gérer mes exigences (ne s'est pas plaint encore de toute façon!). Merci. – DaveC