【问题标题】:Visual Studio Online - The version descriptor <BranchName> could not be resolvedVisual Studio Online - 无法解析版本描述符 <BranchName>
【发布时间】:2016-02-08 03:38:42
【问题描述】:

我正在使用 Visual Studio Online 和 git 进行一个项目。

我尝试访问 TFS Online 网站并打开我正在处理的项目的源代码,我发现这个错误绝对无处不在:

TF401175:版本描述符 Branch 无法解析为存储库 ProjectName 中的版本

我无法访问分支、提交、源代码或任何东西。 其他团队成员没有问题,并且似乎与我的帐户相关联,因为我尝试使用我的帐户在另一台设备上打开它,但仍然失败。

Visual Studio 的所有操作都可以正常工作。我可以提交、拉取、推送等。我只是无法访问 Web 面板。尝试用谷歌搜索错误,但我发现的只是 MS 网站上报告的错误,该网站已关闭并说问题已修复。对我来说似乎不是固定的。

【问题讨论】:

  • 它是否默认为已删除的分支?你能从网址上看出来吗?是否有其他人访问该存储库,对他们有用吗?
  • @DaveShaw 它适用于团队的其他成员。我是唯一一个不适合的人。是的,它指的是一个已删除的分支,其他人没有或无法再看到的分支。
  • 你可以将 URL 中的分支名称更改为有效的吗?也许让某人点击他们机器上的工作分支,然后将其复制到您的机器上?这是我的主仓库中的“查询”:#path=%2F&amp;version=GBmaster&amp;_a=contents(将其粘贴在 URL 中的仓库名称之后)。
  • 谢谢。我试着按照你说的做,一切又恢复了,然后我意识到那是我的默认分支,它不再存在,所以我进入 Code/Explorer 并简单地选择了 master 分支。我觉得很愚蠢,但这是一个不应该存在的问题。发表此评论作为答案,我会接受:)

标签: git visual-studio tfs azure-devops


【解决方案1】:

您的默认分支已被删除。

您需要将默认分支更改为现有分支。尝试使用分支选择器,它不可用,尝试将#path=%2F&amp;version=GBmaster&amp;_a=contents 附加到默认“代码”URL 的末尾。

【讨论】:

  • 正是我的问题,有点不同的情况。发布管道从未触发,但设置为针对我所在的特定构建管道的新构建而触发。我检查了发布管道,其中一个构建工件的错误操作正在谈论“版本描述符 可以无法解决”,所以我将分支固定到正确的默认分支(设置了一个不存在的分支),一切看起来都很好
  • @DaveShaw 如何更改默认分支?我在任何地方都找不到它。
  • 我可以通过选择有效的分支名称来解决 PR​​ 中的这个错误,比如 development into master。我收到此错误是因为 main 中有一个默认选择主控。在我的情况下,主分支不存在。我将其更改为开发以掌握。然后它开始工作了。
【解决方案2】:

我遇到了同样的错误。
在我的情况下,我的本地分支尚未同步到服务器,因此在我的 Web 浏览器中,Pull-Request 位于服务器(vsts)上,但我的分支不在。
修复它:我在 VS 中进行了同步,推送了我的本地分支,然后它工作了:我在浏览器中刷新了 Pull Request,然后错误消失了。

【讨论】:

  • 我遇到了和上面一样的问题。
【解决方案3】:

就我而言,我尝试获取文件内容并最终得到相同的错误。

TF401174:在'Branch:'指定的版本的存储库'repository'中找不到项目'item'(已解决提交'commit')'

我试图从 VisualStudioOnline 库(Microsoft.VisualStudio.Services.Client、Microsoft.TeamFoundationServer.Client)中创建 if

VssBasicCredential credintials = new VssBasicCredential(String.Empty, "YOUR SECRET CODE HERE");
VssConnection connection = new VssConnection(new Uri("https://yourserverurl.visualstudio.com/"), credintials);
GitHttpClient client = connection.GetClient<GitHttpClient>();

List<GitRepository> repositories = await client.GetRepositoriesAsync(true); // or use GetRepositoryAsync()
var repo = repositories.FirstOrDefault(r => r.Name == "Some.Repo.Name");

GitVersionDescriptor descriptor = new GitVersionDescriptor()
{
    VersionType = GitVersionType.Branch,
    Version = "develop",
    VersionOptions = GitVersionOptions.None
};

List<GitItem> items = await client.GetItemsAsync(repo.Id, scopePath: "/", recursionLevel: VersionControlRecursionType.Full, versionDescriptor: descriptor);

然后,如果您尝试直接获取项目 client.GetItemTextAsync(repo.Id, item.Path) 的内容,则在分支不是默认的情况下,您将收到此类错误。只需再次提供 GitVersionDescriptior。

GitVersionDescriptor commitDescriptior = new GitVersionDescriptor()
{
    VersionType = GitVersionType.Commit,
    Version = item.CommitId,
    VersionOptions = GitVersionOptions.None
};

Stream stream = await client.GetItemTextAsync(repo.Id, item.Path, download: true, versionDescriptor: commitDescriptior)

【讨论】:

    【解决方案4】:

    在我们团队的案例中,当我们尝试在 Azure Devops UI 中创建拉取请求时遇到此错误。

    我们认为我们收到此错误是因为我们的分支名称通常在名称中包含正斜杠字符,例如

    peter/bugfix/BF123-fix-surname-width-issue

    当尝试为这样命名的分支创建 PR 时,错误将包括每个 / 已转换为 ASCII,因此:

    peter%2Fbugfix%2FBF123-fix-surname-width-issue

    我们的解决方法是从与错误消息相同的页面上的分支选择器中选择分支(正确显示为 / 字符而不是 ASCII)并继续创建我们的 PR。

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 2023-04-10
      • 2018-01-04
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多