【问题标题】:VersionControl TFS API Get shelved items programatically c#VersionControl TFS API 以编程方式获取搁置的项目 c#
【发布时间】:2019-01-07 15:58:13
【问题描述】:

我们已经实现了 TFGet 来下载最新的项目,给出 TFS URL、TFS 路径和​​本地路径。

如果在构建定义时选择了搁置集,则需要实现代码来取消搁置集的详细信息。

ItemSet = VcsRef.GetItems(TfsPath, VersionSpec.Latest, RecursionType.Full, DeletedState.NonDeleted, ItemType.File,true); -- 如果是文件夹,则使用它来获取用于下载文件/创建文件夹的项目列表。

要使用这个下载搁置集的详细信息,

          PendingSet[] pendingSets = VcsRef.QueryShelvedChanges("tfget", "userid", null, true);

          if (shelvedChanges.Length == 0)
          {
              Console.Error.WriteLine("You don't have permission to any of the files involved.");
              Environment.Exit(1);
          }
          else if (pendingSets.Length > 1)
          {
              Console.Error.WriteLine("More than one shelveset matched.");
              Environment.Exit(1);
          }
          PendingChange[] shelvedChanges = pendingSets[0].PendingChanges;
          if (pendingSets.Length == 0)
          {
              Console.Error.WriteLine("No shelveset matched.");
              Environment.Exit(1);
          }

          foreach (PendingChange shelvedChange in shelvedChanges)
          {
              // We only want files that are being edited, but there's nothing to diff if  
              // the file is guaranteed not to exist at a different version. 
              Console.WriteLine("shelved changes are",shelvedChange.ToString());
              if (shelvedChange.ItemType != ItemType.File ||
                  !shelvedChange.IsEdit || shelvedChange.IsAdd || shelvedChange.IsBranch)
              {
                  continue;
              }

              var relativeNameOnly = shelvedChange.ToString().Remove(0, TfsPath.Length);
              var targetName = Local + relativeNameOnly.Replace("/", @"\");
              //Console.WriteLine("shelvedChange {0} is", shelvedChange);
              shelvedChange.DownloadShelvedFile(targetName);

          }

但我无法下载,这是正确的方法吗?

【问题讨论】:

  • 现在我正在尝试使用“tf.exe unshelveshelfsetname”命令,但想在不创建工作区的情况下取消搁置它。
  • 使用以下命令将搁置集文件保存到本地文件夹。 tf status /shelveset:TFGET /format:detailed tf view /shelveset:test /output:D:\test\program.cs
  • 你的意思是你的问题已经解决了吗?
  • 是的,使用 tf.exe 我已经达到了要求。

标签: c# tfs shelveset


【解决方案1】:

您可以尝试REST API 获取浅搁置引用集合:

Get http://TFS:8080/tfs/DefaultCollection/_apis/tfvc/shelvesets?requestData.includeLinks=true&api-version=3.2-preview

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多