2009-02-02 3 views
0

Il existe un projet Java sur lequel je travaille.Mercurial et une sorte de workflow d'intégration continue pour le projet Java

Pour avoir le projet dans Mercurial, je sais que je dois faire un référentiel pour toutes les classes. Comme il y a beaucoup de classes je pense que si je peux avoir une copie d'un pot fait d'une copie du dépôt plus les modifications que je dois faire.

Donc, en termes Mercurial il y a:

  1. mise en pension principale avec toutes les classes
  2. mise en pension Litle avec des modifications et de nouvelles classes

Je veux faire fusionner de repo B Un repo. Et puis je veux tirer et mettre à jour seulement les classes (* .java) qui existent dans mon repo B.

J'ai essayé en vain ceci:

  1. Pour créer repo B I clone mise en pension et supprimer tous les fichiers.
  2. Quand je dois modifier un .java je fais un wget du fichier particulier le mercurial server dans ma machine locale . Lorsque le fichier est nouveau, je viens de exécuter hg add.
  3. Pour faire les commits je fais hg commit -I file1 -i file2 ... -i fileN pour tous les fichiers existants dans le dossier de travail de B repo.

Puis la partie sans succès:

  1. Je ne peux pas faire une mise à jour hg uniquement des fichiers existants. Lorsque le repo B est fusionné dans un repo , tout est ok Mais je ne peux pas exécuter hg validation d'un état fusionné avec le paramètre -I . C'est tout ou rien.
  2. Quand je tire de mise en pension et j'essaie de mise à jour j'ai le même problème 4.

Je suis au courant de hg pull -f pour le début d'une pension sans rapport avec des prises en pension B au lieu d'un clone. Mais il a le même problème de mise à jour. Et ça a l'air plutôt moche. Je pense que transplant plugin il peut aider. J'ai aussi lu ceci How to combine two projects in Mercurial?.

Préserver l'historique des fichiers dans A Repo est un must, même si cet historique a été généré dans B Repo.

Connaissez-vous la meilleure façon d'y parvenir?

grâce

Répondre

4

Qu'est-ce que vous cherchez est appelé un Partial Clone et ne sont pas pris en charge dans Mercurial.Honnêtement, votre flux de travail semble assez cassé - créer un repo de sous-ensemble et essayer de le garder en synchronisation se bat contre la façon dont les outils devaient être utilisés. Pourquoi ne pas simplement construire le pot dont vous avez besoin à partir du repo complet, mais en incluant seulement des classes spécifiques dans la fourmi (j'espère) <jar> tag. Nous avons un référentiel avec des milliers de classes et le build all produit de nombreux jars différents dont chacun est un sous-ensemble de l'univers entier des classes. Cela dit, si vous devez rester avec votre flux de travail actuel, vous devez le modifier. Ne clonez pas le référentiel complet, puis supprimez les fichiers dont vous ne voulez pas, car vous incluez toujours leur historique complet.

Au lieu de cela, utilisez hg convert (le Convert Extension) pour construire votre référentiel sous-ensemble à l'aide d'un filemap et l'option --filemap. En utilisant à la fois un type de référentiel source de hg et le type de destination hg, vous pouvez utiliser la filemap pour inclure uniquement les fichiers souhaités. Vous ne finirez pas avec un clone, mais avec un référentiel complètement nouveau, avec tous les changesets d'origine, mais uniquement pour les fichiers que vous avez spécifiés. L'utilisation du mode incrémental intégré de conversion rendrait possible la conversion de nouvelles modifications à partir du dépôt complet comme une sorte de mise à jour.

Questions connexes