Альтернативы подмодулям Git? - PullRequest
70 голосов
/ 28 июня 2011

Я чувствую, что использование подмодулей Git как-то проблематично для моего процесса разработки.Я слышал о Git поддереве и Gitslave.

  • Существуют ли еще инструменты для нескольких проектов хранилищ и как они сравниваются?
  • Могут ли эти инструменты работать в Windows?

Ответы [ 3 ]

91 голосов
/ 28 июня 2011

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

  • gitslave полезен, когда вы управляете подпроектами и разрабатываете их более или менее одновременно с суперпроектом, и, более того, когда вы обычно хотите пометить, разветвлять, толкать, тянуть и т. Д все репозитории одновременно. gitslave никогда не тестировался на известных мне окнах. Требуется perl.

  • git-submodule лучше, когда вы не управляете подпроектами или, более конкретно, хотите зафиксировать подпроект в конкретной ревизии, даже если подпроект изменяется. Подмодуль git является стандартной частью git и, следовательно, будет работать в Windows.

  • git-subtree предоставляет интерфейс для стратегии слияния встроенного поддерева git. Лучше, если вы предпочитаете иметь «единую» историю Git с одним хранилищем. В отличие от стратегии слияния поддеревьев, проще экспортировать изменения в разные (каталоги) деревья обратно в исходный проект, но это не так автоматически, как с gitslave или даже с git-submodule.

  • repo теоретически похож на gitslave, но не так хорошо документирован для операций без использования Android, которые я обнаружил. Он полностью посвящен модели разработки Google Android и только изначально поддерживает несколько команд git (хотя вы можете выполнять произвольные команды), а ограниченная встроенная поддержка не поддерживает, например, централизованный репозиторий для отправки и извлечения ветка кажется довольно сложной.

  • kitenet mr - это то, что вы хотели бы использовать, если у вас есть несколько систем контроля версий, но в большинстве случаев оно ограничено для суперпроектов git-only из-за подхода с наименьшим общим знаменателем. Существуют способы запуска произвольных команд, но они не так хорошо интегрированы.

0 голосов
/ 18 июля 2018

Мы столкнулись с подобной проблемой при использовании подмодулей Git в проектах, где у нас были зависимости на разных языках. Чтобы справиться с ними, мы создали и с открытым исходным кодом инструмент под названием MDLR («Модульный»), который дает вам декларативные зависимые от версии зависимости Git с функциональностью, аналогичной подмодулям Git, но без раздражающего рабочего процесса. Вы можете установить его и управлять своими зависимостями с помощью инструкций / загрузок в GitHub repo

0 голосов
/ 28 июня 2011

В настоящее время я использую субмодули для разработки, а не просто для связи сторонних библиотек.Есть несколько способов облегчить жизнь с помощью подмодулей, особенно когда они являются источником конфликтов слияния или перебазирования.Посмотрите на ls-tree, чтобы получить 2 коммита, вовлеченные в конфликт в подмодуле.Это, пожалуй, самая сложная часть подмодулей для людей.На данный момент сценарии значительно облегчат работу.Будущие версии Git должны иметь лучшую встроенную поддержку для работы с ними.

Надеюсь, это поможет.

...