git pull / push в одном TCP-соединении - PullRequest
0 голосов
/ 27 ноября 2018

У меня странное сетевое соединение, которое иногда ненадежно.Иногда мне придется вручную нажимать кнопку каждый раз, когда я хочу новое TCP-соединение, для сброса которого может потребоваться до минуты.

Я иногда использую это соединение для проталкивания / извлечения изменений git.

В большинстве случаев это работает довольно хорошо.Я просто git push через соединение, и мои изменения проходят через одно соединение.

Однако, если на удаленном пульте есть ожидающие изменения, которые я не понимаю, мои git push будут отклоненыи мне придется пройти через git pull, а затем еще один git push, превратив одно соединение в три.Я мог бы сделать git pull каждый раз, чтобы убедиться, но тогда это обычно означает дополнительное соединение, где оно не было необходимым.

В Visual Studio есть термин для выполнения вытягивания, а затем нажатия: «Синхронизация».Я знаю, что это не настоящий термин git, но мне было интересно, есть ли способ настроить псевдонимы таким образом, чтобы в одном TCP-соединении можно было выполнять подтягивание и выдвижение.Это сделало бы мою жизнь намного проще.

Я знаю, что могу поддерживать соединение открытым, используя SOCKS, но каждый уровень сетевого взаимодействия дорог, так как это не самое быстрое соединение с самого начала.

1 Ответ

0 голосов
/ 27 ноября 2018

У самого Git нет способа сделать это: он использует libcurl для открытия соединений http или https и запускает ssh для открытия соединений ssh.Для протокола git:// он имеет свой собственный код, который использует уровень сокетов ОС и создает новый сокет.Хотя libcurl может выполнять постоянные соединения, она делает это на основе каждого вызова, и каждая команда Git запускает новый вызов.

Тем не менее, прокси / туннель справился бы с задачей.Вы сами решаете, стоят ли дополнительные накладные расходы.

...