2009-08-21 4 views
16

У меня только что был быстрый вопрос о git - как обратно совместимы репозитории git? Например, я создал репозиторий, используя git 1.6.4 и скрипт ruby ​​svn2git, но я хочу разместить его на машине под управлением Debian Lenny, которая имеет git 1.5.6.5. Смогу ли я по-прежнему правильно взаимодействовать с хранилищем?Git repository обратная совместимость

ответ

7

Это чрезвычайно обратная совместимость с точки зрения фактического хранения информации, и это все, о чем вы беспокоитесь в этом случае. Я не полный эксперт, но я сомневаюсь, что это изменилось со времени первого стабильного выпуска.

Единственная проблема совместимости, которую я могу придумать, заключается в том, что две версии git работают над одним и тем же репо (не клоны), и есть опции/псевдонимы, установленные в .git/config, которые работают в новой версии но не были [полностью] реализованы в более старой версии ... но даже тогда вам придется очень стараться с близкими версиями. И опять же, это не имеет никакого отношения к фактической информации в репо, просто к командам, которые вы используете для ее управления. Именно здесь происходит развитие git.

+0

Ну, я знаю, что в начале 1.5 релиз формат репозитория был изменен, но я думаю, что это все. Спасибо, я, наверное, могу продолжить работу. Интересно, будет ли у gitosis проблемы со старыми версиями? Я хочу настроить gitosis на этом новом сервере Lenny. Я предполагаю, что он должен иметь возможность получать толкания и все в порядке. – Ibrahim

+0

Некоторые вещи изменились с 1,5, но посмотрите здесь, насколько они осторожны: http://www.kernel.org/pub/software/scm/git/docs/RelNotes-1.5.0.txt То, что изменилось по умолчанию настройка, работа с версии 1.4.3 (по крайней мере). – u0b34a0f6ae

+0

Ha! Уничтожение вашей совершенно злой репутации 666 с +1! – Bombe

7

Было очень мало несовместимых изменений в расположении репозитория git; несовместимый в том смысле, что более старая версия не может иметь дело с репозиторием, созданным с более новой версией, или делать обмен (выборка или push) с более новым сервером.

Вы должны проверить RelNotes (например, от here), чтобы узнать, произошло ли какое-то несовместимое изменение между версиями, которые вы используете.

Некоторые из них (вероятно, все) из этих incompatibile изменений:

  • Подмодулей поддержка: версия мерзавца, прежде чем поддержка подмодуля была введена в ядре мерзавца не будет иметь возможности обрабатывать хранилище, которое использует подмодули (это не понимать поддеревья/записи gitlink)
  • упакованные ссылки: старая версия git не сможет получить через HTTP из более нового репозитория, который использует упакованные ссылки (.git/packed-refs). То же самое со старым git, использующим тот же репозиторий, что и новый git, который имеет упакованные ссылки
  • offset delta packfiles: old git не понимает более новую (более компактную) версию git packfile (of-delta). Это не проблема для извлечения и нажатия, так как есть обнаружение функций поддержки клиентов сервером.

Ничего из этого не было между 1.6.4 и 1.5.6, я думаю.

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