将Git LFS与TFS 2015 Update 2 OnPremise一起使用

时间:2016-04-29 11:32:15

标签: git tfs2015 git-lfs

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门户网站上创建回购
  2. 用VS或git克隆它
  3. 执行" git lfs install"
  4. 执行" git lfs过滤轨道" *。jpg""
  5. 将图像添加到工作区
  6. 提交
  7. 执行" git push origin master" =>使用git.exe失败了
  8. 执行" git push origin master" =>适用于VS
  9. 添加第二张图片并提交
  10. 推送现在可以使用git.exe
  11. 删除本地存储库
  12. 克隆回购=>结帐时使用git.exe或VS
  13. 失败

    我试过"克隆-n"为了避免立即结账,我执行" git lfs install"和" git checkout master",发生了同样的异常: 您的用户名必须是DOMAIN \ user格式。目前是brian%!(EXTRA st     环=字符串)

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

根据错误异常,您的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 protocl将由隐藏了的ntlm.go类处理   实施InitHandshake,Authenticate和Challenge。这个   允许miminal更改现有的client.go类。