web-dev-qa-db-ja.com

Visual Studio 2015のGit(SSH)

そのため、Visual Studio 2015がリリースされたばかりで、Gitとのはるかに統合された連携があります。

ただし、不足していると思われる機能はgit over SSHです。この機能を許可する2013年のさまざまなプラグイン(GitExtensions)がありますが、2015年には表示されません。

GitHubプラグインはGitHubでのみ動作し、一般的なgitリポジトリでは動作しないようです。

Visual Studio 2015でGit + SSHを使用している人がいるかどうかを確認するために、いくつかの例や記事だけが優れているという意見は探していません。

44
John Mitchell

いいえ。VisualStudio 2015(RTM)はGitリモートのSSHをサポートしていません。これは、GitHubプラグインを使用するGitHubリポジトリーにも当てはまります(現時点では、チームエクスプローラーを使用する他のGitリポジトリーと同じ接続メカニズムをGitリポジトリーに使用します)。

これは残念ですが、これがまだ利用できない理由はいくつかあります:短い答えは、私たちの意見では、SSHpoorlyまたはinsecurelyは、SSHをまったく提供しないよりも悪いため、提供するSSH実装が高品質であることを非常に確信したいと思います。

とはいえ、私たちはそれに取り組んでおり、進歩を遂げています。マイクロソフトは WindowsのOpenSSH を含め始めます(そして、その非常に素晴らしいプロジェクトのスポンサーです)。ただし、サポートが利用可能になる時期については予測できません。

GitHub拡張 はオープンソースであるため、異なるエクスプローラーでコアGitをサポートする前に、異なる接続メカニズムを使用してSSHのサポートを開始できる可能性があります。

49
Edward Thomson

Visual Studio Update 2およびUpdate 3の基本的な手順を次に示します。基本的な内容については、BPasの投稿のリンクをご覧ください。あなたは必要になるでしょう:

  • CMake(3.5.2を使用しました)
  • libssh2(1.7.0を使用しました)
  • libgit2ソース(BPasのリンクに記載されているように、VS 2015からソースを取得します)

libssh2のビルド

  1. Libssh2 1.7.0を使用しました。古いものを使用できますが、VS2015でいくつかのビルドの問題を修正する必要はありません。
  2. 以下をせよ:

    cd <libssh2 root dir> (e.g. 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. ビルドディレクトリで結果のlibssh2.slnを開きます

  4. ビルドタイプを「リリース」に設定します(これは重要です!)
  5. Libssh2プロジェクトを編集し、呼び出しタイプを__stdcallに設定します(例:/ Gz)
  6. 成功した場合、すべてを再構築し、結果のlibはbuild/src/Release/libssh2.libにあります。

libgit2のビルド

  1. 以下をせよ:

    cd <libgit2 source dir> (e.g. 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. ビルドタイプを「リリース」に設定します
  4. オプション:src/transports/ssh.cにパッチを適用して、request_creds関数(行444あたり)でSSH RSAキー認証をサポートします。

    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の投稿のコメントから入手したもので、私の限られたテストではうまく機能しているようです。

  5. すべて再ビルド、出力はgit2.dll、Visual Studio 2015拡張ディレクトリのlibgit2-msvc.dllを置き換え
7
GSBTom

BPasへの準拠:Visual Studio 2015では、SSH対応バージョンをビルドできます。さらに、公開/秘密キー認証サポート用のパッチがあります:

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

4

Visual Studio 2015で配布されたGITライブラリを再コンパイルすることにより、sshサポートを有効にすることができます。次の記事では、必要な手順について説明します。

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

3
BPas

Git bashを使用してビジュアルスタジオにgitを追加することについては、ここではナンセンスでした。追加は機能しますが、コミットの作成もオプションでしたが、それらを同期するには依然としてgit bashが必要です。だから、これはちょっと役に立たないでしょう。

0
user5895940