Я перевожу свои личные проекты с использования Subversion (SVN) в GIT. В Subversion я использовал общий рабочий каталог SVN на нескольких хостах (несмотря на то, что люди говорили мне, что это не сработает), и доказано, что он хорошо работает для меня. Важно отметить, что это однопользовательское решение, и я единственный человек, который вносит изменения, поэтому я не запускаю фиксации SVN на нескольких блоках одновременно. Короче говоря, я готов жить с некоторыми ограничениями (при необходимости), чтобы упростить общее управление моими личными проектами.
Чтобы понять, почему я ищу это, рассмотрим мою конфигурацию (ниже). У меня есть пара мощных машин, каждая из которых работает по несколько виртуальных машин. У меня есть несколько больших дисков на "host1" и файловые ресурсы, к которым имеют доступ другие хосты (в локальной сети).
host1 (share \\host1\share)
+vm1 (access SVN working dir \\host1\share\svnproj1, and svnproj2)
+vm2 (access SVN working dir \\host1\share\svnproj1)
+vm3 (access SVN working dir \\host1\share\svnproj1)
host2
+vm4 (access SVN working dir \\host1\share\svnproj1)
+vm5 (access SVN working dir \\host1\share\svnproj1)
laptop (access SVN working dir \\host1\share\svnproj1)
But also have a svn checkout at c:\svnproj1
Все операционные системы - Win7x64 или Win8.1x64. В настоящее время я использую Tortoise SVN 1.8.2 и Subversion 1.8.3 (на ВСЕХ хостах).
Этот подход позволяет мне получить доступ к общей папке сервера (\host1\share) с любого хоста. В некоторых случаях моим репозиториям svn много лет, и более 2 GIG, имеющих отдельные "рабочие области SVN" в каждой виртуальной машине, увеличивают размер моей виртуальной машины, усложняют моментальные снимки виртуальной машины и резервные копии.
Мне также не нужно фиксировать файлы, пока я не заберу свой ноутбук на деловую встречу. Я работаю из дома, так что это не часто. Когда я возвращаюсь с деловой встречи или поездки, я фиксирую свои изменения на своем ноутбуке и запускаю обновление svn update на любой из 5 виртуальных машин, и файлы обновляются для всех 5 виртуальных машин. Для меня это достаточно просто и хорошо сработало.
Так что теперь мне интересно, может ли этот же подход работать с использованием GIT. Все, что я прочитал, говорит, что ты не можешь (или не должен этого делать).
Вот вопросы, которые у меня есть, которые помогут мне понять, если это даже технически возможно (ПРИМЕЧАНИЕ: я уже экспериментирую с этим подходом).
(Q) Сохраняет ли GIT информацию на хосте за пределами GIT-репо (.git dir) и запрашивает эту информацию для правильного управления git-репо. Если это так, то несколько компьютеров, сконфигурированных одинаково с этой информацией, невозможно.
(В) Создает ли GIT временные файлы в рабочей области GIT? Если да, будет ли эта временная информация испортить еще одну копию git, запущенную на другом компьютере? Если так, то снова такой подход неосуществим.
(В) Имеет ли GIT ту же проблему, что и Subersion, в том, что все клиенты, использующие данное репо, должны иметь одинаковую версию?
(В) Сбой этого подхода, если будет введена другая ОС (Linux, Apple OSX)?
(В) Если используется поставщик облачного хранилища, такой как Dropbox, или SpiderOak, это решение все еще работает?
(В) Есть ли другие вопросы или проблемы, с которыми я мог бы столкнуться при использовании GIT, которых я не увидел бы при использовании SVN.
Опять же, важно отметить, что это решение должно работать только для меня, никогда не будет нескольких людей, вносящих изменения в репозиторий GIT, и я могу жить с некоторыми ограничениями, если оно упрощает общее управление виртуальными машинами.
Эта статья http://www.sitepoint.com/how-to-use-dropbox-with-svn-or-git-for-cloud-source-control-management/ проделала хорошую работу по объяснению того, как использовать GIT в традиционный способ. Для меня решение Dropbox эквивалентно локальной файловой папке.