вторник, 28 августа 2012 г.

Синхронизация git-репозитория на usb flash

Для некоторых проектов бывает нецелесообразно использовать центральные репозитории  наподобие github или bitbucket, а синхронизировать данные проекта тем не менее хочется.
В этом случае можно организовать перенос проекта между машинами на обыкновенной флешке.

Самое простое решение это архивация файлов проекта и копирование архива на флешку, но делать это каждый раз несколько утомительно. Гораздо удобнее воспользоваться возможностями, которые предоставляет git.

Создание локального репозитория в директории проекта:
git init 

Добавление файлов проекта в репозиторий:
git add . 

Допустим флешка смонтирована в директорию /media/usb, тогда следующая команда создаст копию репозитория на флешке:
git clone --local --bare --no-hardlinks . /media/usb/project/path

- обратите внимание на опцию --no-hardlinks, без этой опции команда выдает ошибку Invalid cross-deive link.

Чтобы не указывать каждый раз путь к копии репозитория добавим его с помощью команды:
git remote add usb file:///media/usb/project/path

Теперь после внесения изменений и коммита в локальный репозиторий можно переносить изменения на флешку командой:
git push usb

Для получения обновлений с флешки используется команда:
git pull usb master

Вместо master можно указать другую ветку.
При создании проекта на другой рабочей машине нужно скопировать репозиторий с флешки:
git clone file:///media/usb/project/path

Т.о. получаем удобную систему для синхронизации проекта между двумя и более рабочими машинами с помощью usb флешки или любого другого портативного носителя без использования центрального репозитория.