2016-12-13 1 views
-1

Nous avons un outil automatisé en C# et en utilisant l'API "libgit2sharp", il fera le Référentiel de Clone, le fichier Stage, Valider et Pousser les changements, la création de la requête Pull est faite par l'API REST.VSTS - Ajouter un élément de travail avec PullRequest

Maintenant, il faut ajouter un élément de travail avec la demande Pull, il faut des suggestions pour continuer.

Merci,

+1

Ajouter '# 1234' dans le message de commit. – jessehouwing

+0

Quel est le résultat après avoir essayé d'associer une demande de traction à un élément de travail (reportez-vous à ma solution)? –

Répondre

0
public static bool AddWorkItem() 
    { 
     HttpWebResponse response = null; 
     string workItem = "12345678"; 
     string pullReqId = string.Empty; 
     string artifactId = string.Empty; 
     string moduleName = "abcd"; 


     pullReqId = "123456"; 
     artifactId = "vstfs:///Git/PullRequestId/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"; 
     try 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://tfs-glo-xxxxxxxxx.visualstudio.com/_apis/wit/workItems/" + workItem); 

      request.Accept = "application/json;api-version=3.0;excludeUrls=true"; 
      request.ContentType = "application/json-patch+json"; 
      request.Referer = "https://tfs-glo-xxxxxxxxx.visualstudio.com/Apps/_git/" + moduleName + "/pullrequest/" + pullReqId + "?_a=overview"; 

      string _auth = string.Format("{0}:{1}", "GITUserName", "GITPassword"); 
      string _enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(_auth)); 
      string _cred = string.Format("{0} {1}", "Basic", _enc); 
      request.Headers[HttpRequestHeader.Authorization] = _cred; 

      request.Method = "PATCH"; 

      string body = @"[{""op"":0,""path"":""/relations/-"",""value"":{""attributes"":{""name"":""Pull Request""},""rel"":""ArtifactLink"",""url"":" + "\"" + artifactId + "\"" + "}}]"; 
      byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body); 
      request.ContentLength = postBytes.Length; 
      Stream stream = request.GetRequestStream(); 
      stream.Write(postBytes, 0, postBytes.Length); 
      stream.Close(); 

      response = (HttpWebResponse)request.GetResponse(); 
     } 
     catch (Exception ex) 
     { 
      Log.Write("Add Work Item: ", ex); 
      return false; 
     } 
     return true; 
    } 
1

Il est pas pris en charge pour associer des éléments de travail à une demande de traction via l'API REST ou API SDK client, mais vous pouvez relier la demande de traction pour élément de travail via l'API REST. Ainsi, le flux de travail sera comme ceci:

  1. Créer la demande de traction via REST API
  2. Link qui tire la demande pour élément de travail via l'API REST.

Plus d'informations, vous pouvez consulter ce fil pour les détails: Associate Work Items to a Pull Request Programmatically (Inclure le code C#)