meilleures pratiques en mercurial: twig vs clone et fusion partielle?

… donc je me suis habitué aux choses simples avec Mercurial ( add , commit , diff ) et j’ai découvert le fichier .hgignore (yay!) et j’ai eu le coup de créer et de changer de twig ( branch , update -C ).

J’ai cependant deux grandes questions:

  1. Si je suis dans la twig “Branch1” et que je veux apporter certains changements mais pas tous de la twig “Branch2”, comment ferais-je cela? En particulier si tous les changements sont dans un sous-répertoire. (Je suppose que je pourrais simplement cloner l’ensemble du référentiel, puis utiliser un outil de fusion de répertoires tel que Beyond Compare pour choisir mes éditions. Il semblerait toutefois possible d’isoler les modifications dans un fichier ou un répertoire.)

  2. Commuter entre les twigs avec la update -C à update -C semble si facile, je me demande pourquoi je me donnerais la peine d’utiliser le clone . Je ne peux que penser à quelques raisons (voir ci-dessous). Y a-t-il d’autres raisons qui me manquent?

    une. si j’ai besoin d’agir sur deux versions / twigs à la fois (par exemple, faire une différence de performance)

    b. pour une sauvegarde ( clone le référentiel sur un lecteur réseau dans un emplacement physiquement différent)

    c. pour faire le choix et fusionner comme je l’ai mentionné ci-dessus.

J’utilise le clone pour:

  • Branches locales de courte durée
  • Clonage vers différentes machines de développement et serveurs

La première utilisation est assez rare pour moi – surtout quand j’essaie une idée que je pourrais vouloir totalement abandonner. Si je veux fusionner, je veux fusionner TOUS les changements. Ce type de twigment sert principalement à suivre les différentes twigs des développeurs afin de ne pas les perturber. Juste pour clarifier ce dernier point:

  • Je continue à travailler sur mes changements et je tire les changements de mes collègues et ils tirent les miens.
  • Quand cela me conviendra, je fusionnerai TOUTES les modifications d’une (ou de toutes) de ces twigs dans la mienne.

Pour les twigs d’entités ou les twigs à durée de vie plus longue, j’utilise des twigs nommées qui sont plus facilement partagées entre des référentiels sans fusion. Il se sent aussi “mieux” quand vous voulez fusionner sélectivement.

Fondamentalement, je le regarde de cette façon:

  • Les twigs nommées servent à développer différentes twigs ou versions de l’application
  • Les clones permettent de gérer différentes consortingbutions à la même version de l’application.

C’est ma prise, mais c’est vraiment une question de politique.

Pour la question 1, vous devez être un peu plus clair sur ce que vous entendez par “changements”. Lequel de ces mots voulez-vous dire:

  1. “Je veux tirer certains, mais pas tous les changesets d’une twig différente dans celle-ci.”
  2. “Je veux que la dernière version de certains fichiers , mais pas tous, se trouve dans une twig différente.”

Si vous parlez de l’article 1, vous devriez examiner l’extension de la transplantation , en particulier l’idée de choisir quelques modifications.

Si vous voulez dire article 2, vous feriez ce qui suit:

  • Mettez à jour la twig dans laquelle vous souhaitez extraire les modifications.
  • Utilisez hg revert -r --include pour modifier le contenu de ces fichiers comme ils le sont sur l’autre twig.
  • Utilisez hg commit pour valider ces modifications sur la twig en tant que nouvel ensemble de modifications.

Quant à la question 2, je n’utilise jamais de clones de référentiel pour me twigr, donc je ne sais pas. J’utilise des twigs nommées ou des twigs anonymes (parfois avec des signets).

J’ai une autre option pour vous: les files d’attente Mercurial.

L’idée est d’avoir une stack de patches (pas de commits, de “vrais” patches) sur votre répertoire de travail actuel. Vous pouvez ensuite append ou supprimer les correctifs appliqués, en append un, le supprimer, en append un autre, etc. Un seul correctif ou un sous-ensemble de ces derniers devient une nouvelle “fonctionnalité” comme vous le souhaitez probablement avec les twigs. Après cela, vous pouvez appliquer le patch comme d’habitude (car c’est un changement). Les twigs sont probablement plus utiles si vous travaillez avec quelqu’un d’autre?