Ok, dans TFS, nous avons une branche principale trunk et une autre branche, appelons-le secondary . Nous avons créé un nouveau fichier dans le répertoire trunk , mais lorsque vous essayez de fusionner ce fichier spécifique, il ne nous donne pas la possibilité de fusionner vers la branche secondary . Nous supposons que c'est parce qu'un fichier analogue n'existe pas en secondaire.
Est-ce la cause du problème et si oui, comment pouvons-nous obtenir ce nouveau fichier à partir du répertoire trunk dans secondaire ?
Ici, nous fusionnons un fichier qui existe dans secondary . Comme vous pouvez le constater, la liste déroulante répertorie nos trois branches ( secondaire est en fait celle du milieu):
Maintenant, lorsque je tente de fusionner un fichier créé dans trunk after secondary a été ramifié, secondary n'est plus répertorié comme branche cible.
Je pense que cela devrait être possible via l'interface graphique VS comme suit:
Sélectionnez le dossier dans lequel le nouveau fichier a été ajouté et commandez une fusion (de tout le dossier) dans votre branche secondary .
Maintenant, tous les fichiers modifiés du dossier apparaissent dans votre liste en attente + votre nouveau fichier.
Annulez tous les autres fichiers et procédez à l’enregistrement du seul fichier qui compte.
On pourrait soutenir que cette restriction de TFS est en fait logique:
en essayant de fusionner ce fichier spécifique
Pour comprendre TFS, il est utile de se rappeler que l'unité de changement est le changeset , et que ce sont les changesets (et non les fichiers) qui sont archivés et fusionnés.
Nous supposons que c’est parce qu’un fichier analogue n’existe pas en secondaire
Ceci est correct - dans la version (numéro de modification) à laquelle se trouve la branche cible, ce fichier n’existe tout simplement pas, il n’ya donc rien à fusionner.
En général, vous ne gagnez rien en sélectionnant un fichier dans la boîte de dialogue de fusion des sources, comme il est dit, il vous est demandé de sélectionner la source et de cibler branches . Spécifiez les branches à la racine, choisissez Selected changesets only
et TFS vous montrera une liste des ensembles de modifications existant dans la source mais non fusionnés avec la cible. Si vous ne voulez que celui qui a ajouté ce nouveau fichier, vous pouvez le sélectionner dans cette liste.
"Désormais, lorsque j'essaie de fusionner un fichier créé dans le coffre après la création du secondaire, le secondaire n'est plus répertorié comme branche cible."
Pour cela, cliquez avec le bouton droit sur le fichier dans l'Explorateur de contrôles source et choisissez Branche au lieu de Fusionner. Cela fera alors apparaître une boîte de dialogue pour spécifier la cible.
En général, il est préférable de fusionner le tronc et le secondaire plutôt que des morceaux (il est plus facile de garder la branche cohérente dans le temps).
Je pense que la raison en est simplement que vous ne pouvez pas fusionner quelque chose qui n’a pas été ramifié. Si vous fusionnez le dossier contenant le nouveau fichier, notez que l'action est [fusionner, branche], ce qui indique que vous créez une branche dans le nouveau fichier à la suite de la fusion du dossier parent. Autant que je sache, sélectionner le fichier> Fusionner & créer une branche> Succursale au lieu de Fusionner semble être la solution. La seule différence que je vois est que l'historique indique qu'il a une [branche] plutôt qu'une [fusion, branche]. Une fois que vous avez créé une branche du fichier dans votre branche secondary , vous pouvez fusionner les modifications apportées au fichier entre les branches.