使用Git LFS和TFS 2015 Update 2 On Premise

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Git LFS和TFS 2015 Update 2 On Premise相关的知识,希望对你有一定的参考价值。

TFS 2015 Update 2带来了Git LFS支持,但是当我尝试将它与Brian Keller VS2015ALM虚拟机(升级到Update 2)一起使用时,我遇到了以下异常:

git-lfs/1.2.0 (GitHub; windows amd64; go 1.6.1; git 386c5d8)
git version 2.8.1.windows.1

$ git-lfs.exe smudge -- Image1.jpg
Error downloading object: Image1.jpg (968bda1e0a17e295e265311f93bc4e631e171
d776d51c6d7a43b52185c82631a)

Your user name must be of the form DOMAIN\user. It is currently brian%!(EXTRA st
ring=string)
goroutine 1 [running]:
github.com/github/git-lfs/lfs.Stack(0x0, 0x0, 0x0)
        C:/Users/techn/go/src/github.com/github/git-lfs/lfs/errors.go:566 +0x87
github.com/github/git-lfs/commands.logPanicToWriter(0x1a42c0, 0xc082020020, 0x1b
54a0, 0xc0823ae1a0)
        C:/Users/techn/go/src/github.com/github/git-lfs/commands/commands.go:195
 +0xf87
github.com/github/git-lfs/commands.logPanic(0x1b54a0, 0xc0823ae1a0, 0x0, 0x0)
        C:/Users/techn/go/src/github.com/github/git-lfs/commands/commands.go:159
 +0x419
github.com/github/git-lfs/commands.handlePanic(0x1b54a0, 0xc0823ae1a0, 0x0, 0x0)

        C:/Users/techn/go/src/github.com/github/git-lfs/commands/commands.go:134
 +0x55
github.com/github/git-lfs/commands.LoggedError(0x1b54a0, 0xc0823ae1a0, 0xa25980,
 0x21, 0xc082029c88, 0x2, 0x2)
        C:/Users/techn/go/src/github.com/github/git-lfs/commands/commands.go:84
+0x89
github.com/github/git-lfs/commands.smudgeCommand(0xc52680, 0xc0820f81e0, 0x1, 0x
2)
        C:/Users/techn/go/src/github.com/github/git-lfs/commands/command_smudge.
go:79 +0xdd2
github.com/github/git-lfs/vendor/_nuts/github.com/spf13/cobra.(*Command).execute
(0xc52680, 0xc0820f8040, 0x2, 0x2, 0x0, 0x0)
        C:/Users/techn/go/src/github.com/github/git-lfs/vendor/_nuts/github.com/
spf13/cobra/command.go:477 +0x3fb
github.com/github/git-lfs/vendor/_nuts/github.com/spf13/cobra.(*Command).Execute
(0xc536c0, 0x0, 0x0)
        C:/Users/techn/go/src/github.com/github/git-lfs/vendor/_nuts/github.com/
spf13/cobra/command.go:551 +0x593
github.com/github/git-lfs/commands.Run()
        C:/Users/techn/go/src/github.com/github/git-lfs/commands/commands.go:99
+0x2a
main.main()
        C:/Users/techn/go/src/github.com/github/git-lfs/git-lfs.go:34 +0x135

ENV:
LocalWorkingDir=C:\Users\Brian\Source\Repos\DemoGitLfs
LocalGitDir=C:\Users\Brian\Source\Repos\DemoGitLfs\.git
LocalGitStorageDir=C:\Users\Brian\Source\Repos\DemoGitLfs\.git
LocalMediaDir=C:\Users\Brian\Source\Repos\DemoGitLfs\.git\lfs\objects
LocalReferenceDir=
TempDir=C:\Users\Brian\Source\Repos\DemoGitLfs\.git\lfs\tmp
ConcurrentTransfers=1
BatchTransfer=true
GIT_DIR=.git
GIT_LFS_PATH=C:\Program Files\Git LFS
GIT_PREFIX=

当我尝试使用git.exe推送并在第一次使用VS2015U2后工作时,这会附加。但是当我尝试使用git.exe或VS2015U2重新克隆我的回购(在结帐时失败)时,我收到此错误。顺便说一句,VS在这种情况下完全崩溃。我尝试使用VSTS进行相同的操作,并且没有发生错误(使用git.exe,GitExtensions或VS2015U2)。所以它似乎是如何提供凭据但如何解决它的问题?

回购步骤:

  1. 在TFS Web门户上创建一个repo
  2. 用VS或git克隆它
  3. 执行“git lfs install”
  4. 执行“git lfs filter track”* .jpg“”
  5. 将图像添加到工作区
  6. 承诺
  7. 使用git.exe执行“git push origin master”=>失败
  8. 执行“git push origin master”=>与VS一起使用
  9. 添加第二个图像并提交
  10. 推送现在可以使用git.exe
  11. 删除本地存储库
  12. 使用git.exe或VS在结账时克隆回购=>失败

我尝试使用“clone -n​​”来避免立即结账,然后执行“git lfs install”和“git checkout master”,发生了同样的异常:您的用户名必须是DOMAIN \ user形式。目前是brian%!(EXTRA st ring = string)

答案

Git Credential Manager for Windows帮助我实现它。

只需使用GCMW并在第一个凭据提示符下(凭据存储在Windows凭据管理器中):

  • 用户名:“vsalm \ brian”
  • 密码:“P2ssw0rd”

它有效。

  • 没有GCMW它不起作用。
  • 它适用于Git 2.8安装提供的GCMW,手动安装1.2.2和1.3(在gitconfig中添加“[credential] helper = manager”)

注意:使用VS2015U2克隆不起作用,在U3中计划修复。更多信息:https://connect.microsoft.com/VisualStudio/feedback/details/2657886/cant-use-git-lfs-with-tfs-2015-update-2-onpremise

另一答案

根据错误异常,您的TFS服务器使用“NTLM”进行身份验证。使用此身份验证,您必须输入用户名:DOMAIN user和密码:pass。因此,请将您的git凭据更新为此格式,然后重试。查看此链接了解详细信息:NTLM Authentication With Git-Lfs

如果LFS服务器返回“Www-Authenticate:NTLM”标头,我们将lfs。endpoint .access设置为ntlm并重新提交http请求。后续请求将通过ntlm auth流程。

我们将NTLM凭证存储在凭证帮助程序中。当系统提示用户输入凭据时,他们必须使用用户名:DOMAIN user和密码:pass

ntlm协议将由ntlm.go类处理,该类隐藏了Init Handshake,Authentication和Challenge的实现。这允许miminal更改现有的client.go类。

以上是关于使用Git LFS和TFS 2015 Update 2 On Premise的主要内容,如果未能解决你的问题,请参考以下文章

TFS 2015 Update 2功能探索

TFS 2015:如何排除某些文件夹触发使用 Git 构建

SharePoint 中的 Visual Studio Team Foundation 服务器 Web 部件无法连接到 TFS 2015 Update 3

TFS 2015 敏捷开发实践 – 看板的使用

如何拒绝提交到 TFS 2015 上的远程主分支?

将本地 VS2012.2 项目连接到 tfs-git