Git (SSH) dans Visual Studio 2015

Alors que Visual Studio 2015 vient juste de sortir, il existe un lien beaucoup plus intégré avec git.

Cependant, la fonctionnalité qui semble faire défaut est git over SSH. Il existe différents plugins pour 2013 qui autorisent cette fonctionnalité (par exemple, GitExtensions), mais je ne peux pas en voir avec 2015.

Le plugin GitHub ne semble fonctionner qu’avec GitHub et non avec les reposes git génériques.

Je ne cherche pas une opinion qui est meilleure, seulement quelques exemples ou articles pour voir si quelqu’un a Git + SSH sur Visual Studio 2015 fonctionne.

Non. Visual Studio 2015 (RTM) ne prend pas en charge SSH pour les télécommandes Git. Cela est vrai même avec les référentiels GitHub utilisant le plug-in GitHub (qui – à l’heure actuelle – utilise le même mécanisme de connexion pour les référentiels Git que tout autre référentiel Git utilisant Team Explorer.)

Cela est regrettable, mais il existe une poignée de raisons pour lesquelles ce n’est pas encore disponible: la réponse courte est que, à notre avis, il est pire de fournir des SSH que de ne pas fournir de SSH, et nous aimerions avoir la certitude que Toute implémentation SSH que nous fournissons est de haute qualité.

Cela dit, nous y travaillons et progressons. Microsoft va commencer à inclure OpenSSH dans Windows (et est un sponsor de ce très bon projet). Cependant, je ne peux pas prédire le moment où le support est disponible.

L’ extension GitHub est open source, il est donc possible qu’elle puisse utiliser un mécanisme de connexion différent et commencer à prendre en charge SSH avant la prise en charge principale de Git dans Team Explorer.

Voici quelques instructions de base pour Visual Studio Update 2 et Update 3. Consultez le lien dans la publication de BPas pour plus d’informations, par exemple, vous aurez besoin de:

  • CMake (j’ai utilisé 3.5.2)
  • libssh2 (j’ai utilisé 1.7.0)
  • source libgit2 (récupérer le source de VS 2015 comme indiqué dans le lien de BPas)

Construire libssh2

  1. J’ai utilisé libssh2 1.7.0. Vous pouvez utiliser des versions plus anciennes, mais vous ne devez pas corriger certains problèmes de build dans VS2015.
  2. Procédez comme suit:

    cd  (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. Ouvrez le fichier libssh2.sln résultant dans le répertoire de construction

  4. Définissez le type de build sur “Release” (c’est important!)
  5. Modifiez le projet libssh2 et définissez le type d’appel sur __stdcall (par exemple / Gz)
  6. Tout reconstruire, en cas de succès, la lib du résultat sera dans build / src / Release / libssh2.lib

Construire libgit2

  1. Procédez comme suit:

     cd  (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=/include -DLIBSSH2_LIBRARIES=/build/src/Release/libssh2.lib .. 
  2. Ouvrez le fichier libgit2.sln résultant dans le répertoire de construction

  3. Définissez le type de build sur “Release”
  4. Facultatif: Correctif src / transports / ssh.c pour prendre en charge l’authentification par clé SSH RSA, dans la fonction request_creds (autour de la ligne 444):

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

    avec:

     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 { 

    Note: ce patch a été saisi sur l’un des commentaires dans le post de randomswdev, semble fonctionner correctement avec mes tests limités.

  5. Reconstruire tout, la sortie est git2.dll, remplacez libgit2-msvc.dll dans votre répertoire d’extensions Visual Studio 2015

Conforme à BPas: pour Visual Studio 2015, il est possible de créer une version compatible SSH. De plus, j’ai un correctif pour le support des clés publiques / privées:

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

Il est possible d’activer le support ssh en recompilant la bibliothèque GIT dissortingbuée avec Visual Studio 2015. L’article suivant décrit les étapes requirejses:

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

Il y avait un non-sens ici en ajoutant votre git au studio visuel en utilisant le git bash. Même si l’ajout fonctionnerait, la création de commits était également une option mais leur synchronisation nécessiterait toujours le git bash. Donc, ce serait inutile.