Синхронизация репозиториев без возможности проталкивать и извлекать коммиты
На данный момент я не могу использовать git-сервер, поэтому я использую одну из моих любимых функций git, которая превращает любой каталог на моем компьютере в git-репо (только git init
вещь).
Я использую это, потому что я был единственным программистом, и я мог отслеживать свои собственные вещи. Сейчас все немного изменилось, и я работаю с небольшой командой. Некоторые другие вещи, однако, не изменились, и я все еще не могу иметь git-сервер, поэтому локальные репозитории по-прежнему являются единственным вариантом.
Самая простая процедура была в том, чтобы распространить код среди других парней, как архивировать мой репозиторий и пересылать его. Когда они закончили, они отправили его мне, и я заменил исходный репо. Работает вроде хорошо, так как у нас почти никогда не бывает двух человек, работающих в одном репо из-за организации проектов.
Теперь я хотел бы сделать что-то более последовательное, например, объединить все, что мне отправляют, в мой локальный репозиторий. Этот пример позволил бы мне в конечном итоге иметь двух человек, работающих в одном репо (или, возможно, его подмножестве).
Я читал о скриптах git patch. Но, честно говоря, я не чувствовал себя очень комфортно с решением. Во-первых, потому что в моих первоначальных экспериментах это не сработало сразу (да, я знаю, это просто вопрос лучшего понимания, но все же не так интуитивно, как остальная часть git), а во-вторых, потому что мои репозитории также будут содержать двоичные файлы, которые я нужно также контролировать... не уверен, что патчи справятся с этим:/
Какую процедуру вы, ребята, предложите организовать? есть ли команда, которая позволила бы мне объединить репозитории так, как я описал?
Спасибо!
е.
3 ответа
Как насчет отправки друг другу путей?
git format-patch
а также git am
может удовлетворить ваши потребности. Я использовал его в прошлом, и он работает достаточно хорошо для отправки нечастых изменений.
Если у вас есть какой-то способ настроить общий каталог, даже если он находится на чьем-то компьютере, вы можете сделать git init
там и пусть все добавляют этот репо как удаленный. Это не так чисто, как иметь gitolite или что-то вроде SSH, но должно работать просто отлично.
Хорошая вещь в распределенном контроле версий заключается в том, что вам не нужен только один сервер, к которому все могут обращаться постоянно. Вы можете иметь столько серверов, сколько вам нужно. Вы можете настроить сервер или общий каталог внутри брандмауэра компании, для всех, у кого есть доступ к использованию, и чтобы ваши удаленные сотрудники настраивали свой собственный локальный ssh или что-то, что вы можете при необходимости использовать.
Если вы хотите продолжить работу с почтовыми репозиториями в виде zip-файлов, все, что вам нужно сделать, это вместо замены основного локального репо, распаковать его в отдельную папку, а затем сделать git pull
из этой папки в основной репо, чтобы объединить его. Не так эффективно, как пропускная способность git format-patch
, но немного более знакомый в вашем конкретном рабочем процессе.