【问题标题】:TFS Git Pull Request - Merge failed (Why?)TFS Git 拉取请求 - 合并失败(为什么?)
【发布时间】:2016-10-04 06:14:58
【问题描述】:

我们正在使用 TFS Git 创建和合并拉取请求。这对现有用户来说工作得很好,但是当我们在 AD 中添加新用户(复制与现有用户完全相同的权限)时,来自新用户的拉取请求会出错(合并失败)。

可能通过将用户添加到项目团队来授予对 TFS 的访问权限 - 似乎没有用户拥有我们可以找到的任何其他访问权限。

我们已经尝试过使用不同名称的多个新用户(其他一切都与现有用户相同),但我们并没有真正了解为什么会发生这种情况。

我们还验证了现有用户在完全相同的代码上创建的拉取请求不存在此问题。

我们可以做些什么来调查合并失败的原因?

【问题讨论】:

  • 有没有可用的日志语句?从广义上讲,拉取请求失败的原因有很多。
  • 在事件查看器中找不到来自 TFS 的任何相关日志语句。还有其他日志可以查看吗?
  • 您使用的是哪个版本的 TFS?您是否尝试过最新版本的 TFS 2015?由于此工作流程在 TFS 2015 中得到了改进。
  • 我们使用的是 TFS 2015 版本 14.0.23128.0。我们会尝试更新它 - 也许它会有所帮助
  • 能分享一下pull request和merge failed错误信息的截图吗?

标签: git tfs pull-request


【解决方案1】:

尝试在 Visual Studio 中合并分支,看看是否会出现冲突或详细的错误消息。如果存在冲突,请使用合并工具解决冲突,然后提交并推送合并。

【讨论】:

  • 正如我所提到的,我们能够将完全相同的代码与不同的用户合并。此外,有问题的用户可以手动合并分支,没有任何问题,所以这里的 TFS 发生了一些事情。
  • 由于我无法向 AD 添加新帐户来测试您的场景,请告知我们升级 TFS 是否会解决您的问题。
【解决方案2】:

在 eventvwr.exe 中检查 Applications and Services Logs => Microsoft-Team Foundation Server => Debug 是否有以下内容:

LibGit2Sharp.LibGit2SharpException:无法解析签名 - `name` 和 `email` 都不应包含尖括号字符。 在 LibGit2Sharp.Core.Ensure.HandleError(Int32 结果) 在 LibGit2Sharp.Core.Proxy.git_signature_new(字符串名称,字符串电子邮件,日期时间偏移时) 在 LibGit2Sharp.Core.Proxy.git_commit_create(RepositorySafeHandle 存储库,字符串 referenceName,签名作者,签名提交者,字符串消息,树树,GitOid[] parentIds) 在 LibGit2Sharp.ObjectDatabase.CreateCommit(签名作者,签名提交者,字符串消息,树树,IEnumerable`1 父母,布尔 prettifyMessage,Nullable`1 commentChar) 在 LibGit2Sharp.ObjectDatabase.CreateCommit(签名作者,签名提交者,字符串消息,树树,IEnumerable`1 父母,布尔 prettifyMessage) 在 Microsoft.TeamFoundation.Git.Server.Native.LibGit2NativeLibrary.TryMerge(MergeParameters 合并参数,CustomerIntelligenceData ciData) 在 Microsoft.TeamFoundation.Git.Server.ITfsGitRepositoryExtensions.CreateNativeMerge(ITfsGitRepository 存储库,IVssRequestContext requestContext,TfsGitPullRequest pullRequest,字符串 targetRefName,Sha1Id targetBranchTipCommit,Sha1Id sourceCommit,CustomerIntelligenceData ciData,GitPullRequestCompletionOptions completionOptions,Nullable`1&mergeCommitId,List`1&includedCommits) 在 Microsoft.TeamFoundation.Git.Server.TeamFoundationGitPullRequestService.CreateUpToDateMerge(IVssRequestContext requestContext, ITfsGitRepository 存储库, TfsGitPullRequest pullRequest, TfsGitRef& targetRef, Boolean forCompletion, CustomerIntelligenceData ciData)

我们的问题是需要从违规用户的电子邮件中删除尖括号 (< >)。

注意:有一个替代解决方案涉及 TFS 托管的 Git 文件路径,这些路径指向开发人员笔记本电脑上的 URI here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 2019-09-10
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多