Git (SSH) в Visual Studio 2015
Таким образом, только что выпущенная версия Visual Studio 2015 имеет гораздо более интегрированную привязку с git.
Однако функция, которая, кажется, отсутствует, git по SSH. Существуют различные плагины на 2013 год, которые позволяют использовать эту функциональность (например, GitExtensions), но я не вижу никаких результатов с 2015 года.
Плагин GitHub работает только с GitHub, а не с репозиториями git.
Я не ищу лучшего мнения о том, что лучше, только некоторые примеры или статьи, чтобы узнать, есть ли у кого-нибудь Git + SSH на Visual Studio 2015.
Ответы
Ответ 1
Нет. Visual Studio 2015 (RTM) не поддерживает SSH для пулов Git. Это справедливо даже с репозиториями GitHub с использованием подключаемого модуля GitHub (который в настоящее время использует тот же механизм соединения для репозиториев Git, как и любой другой репозиторий Git, используя Team Explorer.)
Это вызывает сожаление, но есть несколько причин, почему это пока недоступно: короткий ответ заключается в том, что, по нашему мнению, предоставление SSH плохо или небезопасно хуже, чем отсутствие SSH вообще, и мы хотели бы быть очень уверен, что любая реализация SSH, которую мы предоставляем, имеет высокое качество.
Тем не менее, мы работаем над этим и добиваемся прогресса. Microsoft начнет включать OpenSSH в Windows (и является спонсором этого очень прекрасного проекта). Однако я не могу предсказать, когда будет доступна поддержка.
Расширение GatHub является открытым исходным кодом, поэтому возможно, что он сможет использовать другой механизм подключения и начать поддерживать SSH до поддержки ядра Git в Team Explorer.
Ответ 2
Вот некоторые основные инструкции для Visual Studio Update 2 и Update 3. См. ссылку в сообщении BPas для основного материала, например. вам понадобится:
- CMake (я использовал 3.5.2)
- libssh2 (я использовал 1.7.0)
- источник libgit2 (возьмите источник из VS 2015, как указано в ссылке BPas)
Сборка libssh2
- Я использовал libssh2 1.7.0. Вы можете использовать более старые версии, но не так, как вам нужно исправить некоторые проблемы с сборкой в VS2015.
-
Выполните следующие действия:
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 ..
-
Откройте полученный файл libssh2.sln в каталоге сборки
- Установите тип сборки в "Release" (это важно!)
- Отредактируйте проект libssh2 и установите для вызывающего типа значение __stdcall (например,/Gz)
- Восстановить все, если удастся, результирующий lib будет в файле build/src/Release/libssh2.lib
Построить libgit2
-
Выполните следующие действия:
cd <libgit2 source dir> (e.g. this is wherever you extracted the libgit2 source you got from VS2015 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 ..
-
Откройте полученный файл libgit2.sln в каталоге сборки
- Задайте тип сборки "Release"
-
Дополнительно: патч src/transports/ssh.c для поддержки аутентификации ключа SSH RSA в функции 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, кажется, отлично работает от моего ограниченного тестирования.
- Rebuild All, вывод git2.dll, замените libgit2-msvc.dll в каталоге расширений Visual Studio 2015
Ответ 3
В соответствии с BPas: для Visual Studio 2015 можно создать версию с поддержкой SSH. Кроме того, у меня есть патч для поддержки открытого/закрытого ключа:
https://github.com/PROGrand/git2-msvstfs-ssh-patch
Ответ 4
Можно включить поддержку ssh, перекомпилировав библиотеку GIT, распространяемую вместе с Visual Studio 2015. В следующей статье описываются необходимые шаги:
http://randomswdev.blogspot.it/2015/07/adding-ssh-support-to-visual-studio.html
Ответ 5
Здесь была глупость по поводу добавления вашей git в визуальную студию с помощью git bash.
Несмотря на то, что добавление будет работать, создание коммитов также является вариантом, но для синхронизации их все равно потребуется git bash.
Так что это было бы бесполезно.