2017-07-20 3 views
0

Je tente de lier par programme un commit à un élément de travail dans TFS et je pense que je suis proche. Lors de la création d'un nouveau ExternalLink, j'ai du mal à former la propriété LinkedArtifactUri. Je peux exécuter une requête simple pour un élément de travail pour voir cette propriété devrait quelque chose comme ce qui suit:Comment puis-je lier par programmation un commit à un élément de travail dans TFS? (besoin d'un deuxième GUID dans LinkedArtifactURI)

"vstfs:///Git/Commit/ef43137b-a906-47b1-8dd4-0438b26c20c4%2fd211ee62-075d-4419-9d0b-cb58b76ae9dd%2fedfe1d438a77c2a95afa30e625f5dabe2656dea0"

Je me suis donc pour déterminer où les GUIDs dans cette chaîne viennent et j'ai pu figure sur les deux premiers, mais je suis actuellement perplexe sur le dernier. Le premier GUID est l'ID du projet (récupérable en faisant quelque chose comme _store.Value.Projects[TEAM_NAME].guid. Le second est l'ID Git Repo.) Quelqu'un peut-il me renseigner sur ce que le troisième GUID pourrait être?

Voici mon code qui devrait fonctionner si je peut savoir où obtenir ce dernier GUID.

var item = _store.Value.GetWorkItem(165464); //work item id # 
var gitRepoService = _projectCollection.GetService<GitRepositoryService>(); 
var gitProjectRepoService = gitRepoService.QueryRepositories("TEAM_NAME"); 
var defaultGitRepo = gitProjectRepoService.Single(gr => 
gr.Name.Equals("REPO_NAME")); 

var gitGuid = defaultGitRepo.Id; 

var proj = _store.Value.Projects["TEAM_NAME"]; 
var id = proj.Guid; 

var linkToAdd = new ExternalLink(_store.Value.RegisteredLinkTypes[ArtifactLinkIds.Commit], $"vstfs:///Git/Commit/{id}%{gitGuid}%{Where_does_this_guid_come_from}"); 
item.Links.Add(linkToAdd); 
item.Save();  

Merci beaucoup pour votre temps S'il vous plaît laissez-moi savoir si je suis pas clair ou si vous avez besoin d'autre de moi

+0

Résolvez-vous le problème avec la solution d'Andy? –

+0

@ starain-MSFT J'ai pu lier la validation en codant en dur l'ID de validation et je vais maintenant essayer de le récupérer à partir de l'API REST comme il l'a mentionné ci-dessous. J'accepterai sa réponse après et vous contacterai si j'ai des problèmes. Merci beaucoup. – user95227

+0

@ starain-MSFT Je ne suis pas sûr si vous recevrez une notification pour ma réponse à Andy ci-dessous mais s'il vous plaît vérifier le commentaire et offrir des commentaires si vous en avez. J'ai un problème en sélectionnant tous les commits sur ma branche de sujet et en les reliant à un élément de travail. Merci beaucoup. – user95227

Répondre

1

Le troisième GUID. devrait être le commit ID, il s'agit de l'identifiant de validation complet. Vous pouvez l'obtenir via REST API

Pour lier une validation à un élément de travail, vous pouvez vous référer à cet élément utile article, il contient les étapes détaillées et l'exemple de code pour votre référence.

+0

Salut Andy, est-ce que vous ou @ starain-MSFT avez des idées sur la façon dont je pourrais associer tous les commits sur une branche avec un work item? L'article que vous avez lié est très utile, mais je voudrais simplement lier tous les commits sur ma branche de sujet à un élément de travail, plutôt que tous les commits contenant une certaine chaîne comme dans l'article. Mon problème est qu'après avoir sélectionné ma branche, 'branch.Commits' contient les commits de ma branche et tous les commits de la branche parente. Comment puis-je sélectionner uniquement les validations de la branche? Je peux faire une question séparée avec plus de détails si ce commentaire n'est pas clair. Merci – user95227

+0

@ user95227 Je pense que ce fil sera utile https://stackoverflow.com/questions/37805335/get-commits-of-an-item-in-one-branch-with-tfs-rest-api –