2014-12-31 3 views
3

В любой момент я работаю над несколькими документами в LaTeX. Мне нравится держать свои документы в git repos, чтобы использовать ветвление, быть в состоянии вернуться и т. Д. И т. Д. Частично я работаю на своем компьютере в своем офисе и частично в доме.Обмен несколькими git-репозициями между компьютерами

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

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

Вопрос: что такое «правильный» способ справиться с этой ситуацией?

(другая соответствующая информация:.. Я бег Linux и предпочитаю подход командной строки Нет Dropbox разрешен)

+0

Филиалы не предназначены для несвязанного контента, и Git не поддерживает разрешения для каждой ветви (хотя это может потребовать некоторое серверное программное обеспечение). Я настоятельно рекомендую оставаться в репозиториях для каждого проекта. – Chris

+0

Это было мое впечатление - спасибо за подтверждение! Сейчас все бумаги находятся в отдельном репозитории, и я хотел бы сохранить его таким образом. То, что я хочу, - это простой способ клонировать весь набор репозиториев сразу, а не один за другим. – Mark

ответ

3

У вас есть по крайней мере три диапазон вариантов:

а) SSH

Это самый простой способ, потому что ему нужны только Git и SSH. У вас может быть центральный репозиторий на одной из ваших машин с помощью ssh (который является одним из протоколов git поддерживает) и указать все ваши «подчиненные» репозитории на этот. Проверьте this link для получения дополнительной информации.

Этот подход не требует подключения к Интернету, только доступ ssh к машинам, Git делает остальную магию.

б) Публикация репозиториев через HTTP на собственной машине

Вы можете разместить свой репозиторий через HTTP на одном из ваших машин Linux с помощью gitorious. Плохая часть заключается в том, что вам нужно настроить конфигурацию. Как только это будет сделано, вы все настроены!

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

с) хостинг через Bitbucket или Github

Если предположить, что ваши документы будут частные хранилищами, я рекомендую использовать Bitbucket (как это бесплатно для частных хранилищ). Github еще лучше (IMHO), но для частных репозиториев это not free.

И Github, и Bitbucket работают через HTTP или SSH-соединение с этими веб-сайтами, поэтому для них требуется подключение к Интернету.

Ведение РЕПО синхронизированные:

Один из способов сделать это с помощью hooks. Этот подход должен сочетаться с одним из пунктов a) или b). В принципе, после каждого нажатия вы можете запустить скрипт для синхронизации остальных репозиториев, с помощью rsync или любого другого подхода.

+0

Спасибо! Я знаю, как делиться каким-либо одним хранилищем с SSH (хотя я еще не пробовал других). Но я хочу, чтобы скопировать всю структуру каталогов на другой компьютер (путем клонирования каждого репо в папку с идентичным именем), без необходимости вручную делать это для каждого отдельного репо на обоих компьютерах. – Mark

+0

Я добавил раздел о ответе, который может вам помочь: «Сохранение репозиториев синхронизировано» – avenet

+0

А, это интересный способ сделать это! Поэтому вы бы рекомендовали, чтобы я продолжал использовать свою текущую настройку с одной синхронизированной копией каждого репо, вместо того, чтобы генерировать отдельное репо (на бумагу) на каждом компьютере и нажимать/вытягивать между ними? Я не был уверен, что будет лучше. – Mark

1

Если ваш вопрос в основном о легком управлении изменяемого набора хранилищ в общем месте, вы можете думать о Git подмодулях или поддеревах:

каталоге Родителя (который содержит все реальных сделок РЕПО) становится пустым «супер-хранилищем «с репозиториями как подмодулями | поддеревьями (но все же частью суперрепо для выборки | push | clone), добавление | удаление узла - это просто вопрос о единственной команде | редактирование соответствующего конфигурационного файла

Смежные вопросы