Git协议与Team Foundation Server 2013

我最近将我们的TFS系统升级到了TFS 2013.我有一组开发人员正在开发一些使用NodeJS的工具,这些工具在内部使用。 他们以前有一个内部的Gitorious服务器的来源。 他们开发的工具是由其他开发者通过运行带有Gitorious repo url的npm install的:

 npm install git://gitorious.corp.local/project/repo.git 

由于TFS 2013支持我们以前的TFVC,现在已经有了Git,我们已经将所有人都转移到单一的源代码控制服务器上。 该团队已经迁移了他们的存储库,仍然希望能够拥有安装命令。 像这样运行:

 npm install git://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo 

这似乎不工作。 这是错误:

 npm ERR! git clone git://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo Cloning into bare repository 'C:\npm-cache\_git-remotes\git-tfs-8080-tfs-DefaultCollection-Project-git-repo-fbbf0c4b'... npm ERR! git clone git://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo npm ERR! git clone git://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo fatal: protocol error: bad line length character: HTTP npm ERR! Windows_NT 6.1.7601 npm ERR! argv "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "-g" "git://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo" npm ERR! node v0.10.35 npm ERR! npm v2.4.1 npm ERR! code 128 npm ERR! Command failed: fatal: protocol error: bad line length character: HTTP npm ERR! npm ERR! npm ERR! If you need help, you may report this error at: npm ERR! <http://github.com/npm/npm/issues> npm ERR! Please include the following file with any support request: npm ERR! C:\Source\git\sumtotal-module\npm-debug.log 

TFS是否支持git协议?

我用http:

 npm install http://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo 

它失败,出现这个错误:

 npm ERR! fetch failed http://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 401 npm ERR! fetch failed http://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 401 

我一直无法find有关如何在IIS中设置git协议的任何信息,或者是否需要在TFS的configuration中启用它。

这可能吗? 我还没有find一个文章或一个字,说这是/否。

我们的内部标准团队真的不想有多个版本控制系统,所以我真的很想弄清楚这是否是TFS 2013的限制,以及是否有计划的未来支持。

在有限的程度上,我们可以使用Node的Package Manager做些什么来使它与TFS的git仓库一起工作?

编辑/ UPDATE

所有涉及使用HTTP协议的远程操作的git命令都能正常工作,克隆,读取,拉取和推送。

 git clone http://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo 

当使用以下操作时

 git clone git://tfs2013.corp.local:8080/tfs/DefaultCollection/TeamProject/_git/Repo testDirectory 

它失败:

 Cloning into 'testDirectory'... fatal: protocol error: bad line length character: HTTP 

鉴于npm命令产生的错误,我并不感到惊讶,当我使用git协议时, git clone失败。

我的下一步是引发wireshark,看看我能否得到TFS发送的响应。 我宁愿不使用wireshark,所以如果有一个build议,以另一种方式获取响应,我会很感激。

WIRESHARK输出 – 来自TFS的响应

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> <HTML><HEAD><TITLE>Bad Request</TITLE> <META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD> <BODY><h2>Bad Request - Invalid URL</h2> <hr><p>HTTP Error 400. The request URL is invalid.</p> </BODY></HTML> 

想知道如果我需要在IIS中为git协议设置任何东西…

UPDATE

看起来这可能是NPM问题,而不是TFS问题。 使用git://意味着TFS 2013 支持的ssh。 我没有想到在http请求上使用wireshark。 我应该知道这是因为它告诉我答复是401,但NPM的请求无法validation!

我在这里打开NPM的一个问题: https : //github.com/npm/npm/issues/7557