Git на windows, это действительно распространяется? - PullRequest
1 голос
/ 11 июня 2010

Я только начинаю с git на платформе Windows. У меня установлена ​​ mysygit и я исключаю несколько икот Я просто ухожу.

Однако я, должно быть, что-то упускаю, потому что не понимаю, как два клиента msysgit на разных компьютерах с Windows могут напрямую выдвигать и вытягивать друг друга?

Я - полный noob из Linux, но я думаю, что вижу, что ssh позволяет распространять в linux. Тем не менее, клиент msysgit выглядит просто как дополнительные команды в командной строке Windows, и элемент службы Windows отсутствует.

Если я попытаюсь git clone 'MyMatesPc', кто будет слушать этот запрос на другом конце?

Я вижу, что если у вас есть «центральный» сервер, на котором работает git на linux (или cygwin), вы можете делиться коммитами, помещая их в «центральный» репозиторий с одной машины, а затем перетаскивая их на другую.

Это фактически означает, что вам приходится использовать центральный сервер.

У меня нет проблем с этим, но я хотел проверить, что я ничего не пропустил!

Ответы [ 4 ]

6 голосов
/ 11 июня 2010

Вы можете использовать локальный протокол : достаточно простого общего пути для двух Git-репозиториев на двух компьютерах в одной локальной сети для передачи / извлечения друг от друга.
Нет необходимости (в данном случае) в «центральном» сервере.


Как указывает Ноэль Кеннеди в комментариях, ему пришлось локально сопоставить букву диска с удаленным репозиторием перед выполнением: git clone file:///z.
Это самый безопасный путь, поскольку пути UNC не всегда поддерживаются в некоторых версиях msysgit .

Вы можете использовать пути UNC с последними версиями msysgit, как в сеансе Git bash:

$ cd /c/temp
$ git clone //remote-host/share/path/to/repo.git

(обратите внимание на '/' вместо Windows '\')

В сеансе DOS после добавления пути mingw/bin он также может работать (т. Е. Использовать путь UNC вместо подключенного диска)

C:\temp>set PATH=%PATH%;c:\msysgit\bin;c:\msysgit\mingw\bin
C:\temp>git clone \\\\remote-host\\share\\path\\to\\repo.git

Обновление август 2014 (4 года спустя), Git 2.1

Commit c2369bd от Eric Sunshine и Cezary Zawadka (czawadka) означает, что теперь работает более простой путь UNC:

Windows: разрешить использование UNC-пути для репозитория git

Эрик Саншайн исправил mingw_offset_1st_component(), чтобы последовательно возвращать "foo" для UNC "//machine/share/foo", ср этот поток .

Так что теперь это должно работать:

git clone //mymachine/shared/repo.git
4 голосов
/ 11 июня 2010

Это довольно распространенное заблуждение о (одном из многих) рабочих процессах разработки, использующих git, независимо от проблемы msysgit.

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

Например, в ядре Linux существуют сотни различных общедоступных репозиториев: обычно Linus 'считается авторитетным, а выпуски на kernel.org вырезаны из его дерева, но многие люди или проекты используют или поддерживают другие деревья («вилки», хотя этот термин имеет определенные коннотации), и из-за поддержки git это очень незначительное несоответствие импеданса или издержек при отслеживании развития, которое происходит в дереве Линуса (или в любом другом дереве - при просмотре паттерна сейчас ?).

Во многих проектах используется центральный репозиторий, поскольку это хорошо понятная модель для совместной работы или потому что она вписывается в существующую установку непрерывной интеграции - и git точно так же подходит для этого стиля разработки - но это решение рабочего процесса, ни один из них не уполномочен (или даже не одобрен) самим git.

Что касается msysgit или Cygwin, у вас не должно возникнуть проблем с использованием ssh через них, а также есть PuTTy как собственный клиент Windows для использования протокола SSH - он ни в коем случае не специфичен для хостов UNIX. Также легко использовать нативный протокол git или HTTP для извлечения (push - другая проблема). (Как сказал VonC, вы также можете извлекать данные из локальных репозиториев, так что если у вас есть сетевой ресурс / общий ресурс Samba или что-то еще для git).

2 голосов
/ 11 июня 2010

Существует множество способов обработки клонированных репозиториев, в зависимости от соединения между двумя машинами.Если вы хотите избежать хлопот по установке Git-сервера в Windows, вы можете хранить репозитории Git в общем каталоге и получать к ним доступ, используя протокол file:.В зависимости от используемого вами Git-клиента может потребоваться сопоставить этот общий каталог с буквой диска.

0 голосов
/ 11 июня 2010

git-серверные компоненты пока не очень хорошо поддерживаются на win32, imho.

Ничто не говорит о том, что вы не можете получать патчи от людей по электронной почте и применять их в своем хранилище.

Кроме того, суть распределенного управления версиями заключается в том, что хотя вы МОЖЕТЕ выбрать синхронизацию с удаленным репозиторием, вам не нужно это делать.Ничто не мешает вам использовать git на отключенном компьютере в любой точке мира (включая середину океана или удаленную пустыню).

...