Я перевожу свои личные проекты с использования 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. Все, что я прочитал, говорит, что ты не можешь (или не должен этого делать).

Вот вопросы, которые у меня есть, которые помогут мне понять, если это даже технически возможно (ПРИМЕЧАНИЕ: я уже экспериментирую с этим подходом).

  1. (Q) Сохраняет ли GIT информацию на хосте за пределами GIT-репо (.git dir) и запрашивает эту информацию для правильного управления git-репо. Если это так, то несколько компьютеров, сконфигурированных одинаково с этой информацией, невозможно.

  2. (В) Создает ли GIT временные файлы в рабочей области GIT? Если да, будет ли эта временная информация испортить еще одну копию git, запущенную на другом компьютере? Если так, то снова такой подход неосуществим.

  3. (В) Имеет ли GIT ту же проблему, что и Subersion, в том, что все клиенты, использующие данное репо, должны иметь одинаковую версию?

  4. (В) Сбой этого подхода, если будет введена другая ОС (Linux, Apple OSX)?

  5. (В) Если используется поставщик облачного хранилища, такой как Dropbox, или SpiderOak, это решение все еще работает?

  6. (В) Есть ли другие вопросы или проблемы, с которыми я мог бы столкнуться при использовании GIT, которых я не увидел бы при использовании SVN.

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

Эта статья http://www.sitepoint.com/how-to-use-dropbox-with-svn-or-git-for-cloud-source-control-management/ проделала хорошую работу по объяснению того, как использовать GIT в традиционный способ. Для меня решение Dropbox эквивалентно локальной файловой папке.

1 ответ1

1

Это должно работать без проблем. Просто поместите ваш репозиторий Git, где ваш текущий рабочий каталог SVN находится на host1. Я сделал нечто подобное, когда делю git-репо между несколькими компьютерами, использующими Dropbox (что на самом деле менее целесообразно, чем то, о чем вы говорите, потому что Dropbox создаст отдельную версию репо, если он не сможет синхронизироваться).

Вот ответы на вопросы, которые вы задали.

  1. Некоторая информация хранится в папке .gitconfig в вашем домашнем каталоге, но все это заменяется любой конфигурационной информацией в папке .git , которая является полностью переносимой. Это не должно вызывать никаких проблем. Одна вещь - будьте осторожны, чтобы выбрать один и тот же параметр для концов строк во всех системах или настроить его в папке .git .
  2. Нет (по крайней мере, не то, что я знаю). Все ревизии хранятся в папке .git, а рабочая копия - просто обычные файлы.
  3. Было бы лучше, если бы все они выполняли одну и ту же версию git, чтобы у вас не возникало странных ошибок, но это не могло бы вызвать проблем, если бы они были разными версиями, а вы выполняли только основные задачи.
  4. ОС не будет иметь значения, поскольку папка .git будет такой же. Просто выберите соответствующую опцию для концов линии и выберите ту же опцию во всех системах.
  5. Да, я сделал это на Dropbox. Единственная проблема заключается в том, что Dropbox не может синхронизироваться и создает конфликтующую копию вашего хранилища. Тогда у вас болит голова, чтобы выяснить, какой из них имеет ваши последние коммиты. Это не работает для одновременного доступа нескольких пользователей, поскольку каждому пользователю нужна своя рабочая копия.
  6. Нет больших Я сделал переключение на мои личные проекты некоторое время назад, и это было довольно гладко. Существуют инструменты, которые помогут вам импортировать вашу историю SVN в Git, если хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .