Git(SSH)在Visual Studio 2015中

因此,随着Visual Studio 2015刚刚发布,与git有了更多的整合搭配。

然而,似乎缺乏的function是通过SSH的git。 2013年有不同的插件允许这个function(即GitExtensions),但我不能看到任何与2015年。

GitHub插件只能用于GitHub而不是通用的git仓库。

我不是在寻找哪个更好的意见,只有一些例子或文章,看看是否有人在Visual Studio 2015上有Git + SSH工作。

不,Visual Studio 2015(RTM)不支持Git远程的SSH。 即使GitHub存储库使用GitHub插件(目前它使用与Git仓库相同的Git仓库连接机制,使用Team Explorer也是如此)。

这是令人遗憾的,但是为什么还没有这个可用的原因有很多:简单的回答是,我们认为,提供SSH 不好还是不安全比不提供SSH更糟糕,我们想要非常自信我们提供的任何SSH实施都是高质量的。

这就是说,我们正在努力,并取得进展。 微软将在Windows中开始包括OpenSSH (并且是这个非常好的项目的赞助商)。 但是我不能预测什么时候可以提供支持。

GitHub扩展是开源的,所以它有可能可以使用不同的连接机制,并在团队资源pipe理器中的核心Git支持之前开始支持SSH。

以下是Visual Studio Update 2和Update 3的一些基本说明。请参阅BPas的文章中关于基本内容的链接,例如您需要:

  • CMake(我用3.5.2)
  • libssh2(我用的是1.7.0)
  • libgit2源代码(从BP 2015的链接中注意到,从VS 2015获取源代码)

build立libssh2

  1. 我用了libssh2 1.7.0。 您可以使用较旧的版本,但不要修改VS2015中的一些版本问题。
  2. 请执行下列操作:

    cd <libssh2 root dir> (eg wherever you extracted the source to) mkdir build && cd build cmake -DCRYPTO_BACKEND=WinCNG -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF .. 
  3. 在构build目录中打开生成的libssh2.sln

  4. 将构buildtypes设置为“释放”(这很重要!)
  5. 编辑libssh2项目,并将调用types设置为__stdcall(例如/ Gz)
  6. 重build所有,如果成功的话,生成的lib将在build / src / Release / libssh2.lib中

build立libgit2

  1. 请执行下列操作:

     cd <libgit2 source dir> (eg this is wherever you extracted the libgit2 source you got from VS2015's extensions directory, see BPas' link for details) mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DSTDCALL=ON -DSTATIC_CRT=OFF -DUSE_SSH=OFF -DLIBSSH2_FOUND=TRUE -DLIBSSH2_INCLUDE_DIRS=<libssh2 root dir>/include -DLIBSSH2_LIBRARIES=<libssh2 root dir>/build/src/Release/libssh2.lib .. 
  2. 打开生成目录中生成的libgit2.sln

  3. 将生成types设置为“释放”
  4. 可选:修改src / transports / ssh.c以支持SSH RSA密钥身份validation,函数request_creds(444行):

     if (!t->owner->cred_acquire_cb) { no_callback = 1; } else { 

    有:

     if (!t->owner->cred_acquire_cb) { if (user) { const char *val = NULL; val = getenv("USERPROFILE"); if (val) { char *szprivfilename = malloc(strlen(val) + 128); char *szpubfilename = malloc(strlen(val) + 128); strcpy(szprivfilename, val); strcat(szprivfilename, "/.ssh/id_rsa"); strcpy(szpubfilename, val); strcat(szpubfilename, "/.ssh/id_rsa.pub"); git_cred_ssh_key_new(&cred, user, szpubfilename, szprivfilename, ""); free(szprivfilename); free(szpubfilename); } if (!cred) { giterr_set(GITERR_SSH, "git_cred_ssh_key_new failed to initialize SSH credentials"); return -1; } } else { no_callback = 1; } } else { 

    注意:这个补丁是从randomswdev的post中的评论中抓取的,似乎在我有限的testing中正常工作。

  5. 重build所有,输出是git2.dll,replaceVisual Studio 2015扩展目录中的libgit2-msvc.dll

符合BPas:对于Visual Studio 2015,可以构build支持SSH的版本。 此外,我有补丁公共/私人authentication支持:

https://github.com/PROGrand/git2-msvstfs-ssh-patch

通过重新编译随Visual Studio 2015分发的GIT库,可以启用ssh支持。以下文章介绍了所需的步骤:

http://randomswdev.blogspot.it/2015/07/adding-ssh-support-to-visual-studio.html

这里有一些关于使用git bash将git添加到visual studio的废话。 即使添加将工作,创build提交也是一个选项,但同步它们仍然需要git bash。 所以这将是有点没用。