4 альтернативы подмодулям Git, о которых вы должны знать

Хотите разрабатывать меньшие модули и делиться ими между репозиториями? Вот несколько полезных опций.

Иногда вам нужно иметь код из одного репозитория внутри другого репозитория. Обычно это создает проблему, поскольку Git управляет исходным кодом, а не зависимостями. В результате был создан целый набор инструментов для поддержки рабочего процесса разработки с совместным использованием кода на более модульном уровне, стремясь преодолеть разрыв между Git Repo SCM и вложенными репозиториями внутри него.

Подмодули Git позволяют сохранить репозиторий Git в качестве подкаталога другого репозитория Git. Теоретически это позволяет вам клонировать другой репозиторий в свой проект и хранить ваши коммиты отдельно. Почему это полезно? потому что это позволяет вам использовать другой проект из проекта, над которым вы работаете.

Однако, если вы выполните быстрый поиск подмодулей Git в Google, результаты не будут положительными. Это связано с некоторыми серьезными недостатками подмодулей git, такими как привязка к определенной версии внешнего репо, отсутствие эффективного управления слиянием и общее представление о том, что сам репозиторий Git на самом деле не знает, что теперь он является мульти- репозиторий модулей.

Git по своей сути также не создан для обработки зависимостей и отношений между компонентами. Таким образом, рабочий процесс, связанный с совместным использованием кода, становится сложным, и субмодули изо всех сил пытаются выполнить желаемый рабочий процесс. В Mercurial субхранилища называются последней инстанцией, которую следует избегать.

В этом посте мы предложим и рассмотрим полезные альтернативы подмодулям Git, которые помогут разработать несколько общих компонентов в проектах и ​​в репозитории. Не стесняйтесь попробовать их и добавить свои собственные предложения в комментариях.

1. Бит (для JS)

Bit — это расширение с открытым исходным кодом для Git, которое обрабатывает как исходный код, так и зависимости между различными проектами и на уровне отдельных компонентов.

См. также:  Git с Bitbucket

Прочтите:« Как мы создаем микро-интерфейсы »

 


Как мы создаем микро-интерфейсы
Создание микро-интерфейсов для ускорения и масштабирования нашего процесса веб-разработки. blog.bitsrc.io

 

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

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

Затем компоненты могут быть помечены версией и экспортированы в коллекцию удаленного хостинга (предпочтительно через bit.dev), откуда их можно импортировать в другие проекты, где вы также можете их разработать. и внести изменения.

Поскольку Bit отслеживает код и управляет зависимостями между проектами, вы можете легко объединить изменения кода между различными репозиториями и обновить граф зависимостей по всей вашей кодовой базе.

Результат двоякий:

  1. Вы можете легко управлять несколькими модулями в репозитории, в то время как Bit обрабатывает отношения зависимости между ними. Когда вы меняете модуль и обновляете его версию, вы можете запустить bit status Bit уведомит вас об изменении модуля и спросит, хотите ли вы обновить иждивенцев. Bit даже позволяет разрабатывать модули с разными средами в одном репозитории, например TS внутри репозитория JS.
  2. Вы можете поделиться этими модулями в нескольких репозиториях, в то время как Bit расширит рабочий процесс Git, чтобы контролировать и синхронизировать изменения между ними, а также легко обновлять весь график зависимостей в репозиториях.

Если вы работаете с bit.dev, вы также получите пользовательский интерфейс для поиска общих компонентов, совместной работы и даже игры с примерами в Интернете. «Взглянем».

 

teambit / bit
Легко делитесь кодом между проектами со своей командой. — teambit / bit github.com

 

 

Совместное использование повторно используемых компонентов кода в команде · Бит
Легко делитесь повторно используемыми компонентами между проектами и приложениями для более быстрой совместной работы. Сотрудничайте для разработки… bit.dev

См. также:  Шаблон проектирования паттерна

 

2. Поддеревья Git

Экспериментальная альтернатива команде git-submodule, которая объединяет и разбивает поддеревья вашего проекта на подпроекты и обратно. Поддеревья позволяют включать подпроекты в подкаталог основного проекта, при желании включая всю историю подпроекта. Поддерево — это подкаталог, который можно добавлять, разветвлять и объединять вместе с вашим проектом любым удобным для вас способом. Идея слияния поддерева состоит в том, что у вас есть два проекта, и один из проектов отображается в подкаталог другого и наоборот. Когда вы указываете слияние поддеревьев, Git может определить, что одно является поддеревом другого, и слить соответствующим образом.

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

3. Git slave

Gitslave — это «сценарий для скоординированного контроля версий больших проектов, объединяющий код из нескольких независимых репозиториев с помощью Git». Он предоставляет оболочку для Git, которая управляет деревом каталогов с несколькими «подчиненными» репозиториями в каталогах. Это означает, что ваша командная строка Git сможет управлять всеми «подчиненными» репозиториями из самого «главного» репозитория.

Это может быть полезно при разработке различных подпроектов в репозитории и при необходимости консолидации рабочего процесса и обновлений между ними.

Оболочка запускает ваши команды Git в каждом из репозиториев и объединяет вывод для всех из них. Gitslave — это добавленное дополнение, и, кроме одного нового файла в суперпроекте, изменения в .gitignore и, возможно, несколько частных переменных конфигурации не влияют на ваши репозитории.

 

gitslave
Загрузите gitslave бесплатно. Скоординированные суперпроекты с несколькими репозиториями для Git. Gitslave — это сценарий для скоординированного… sourceforge.net

 

4. Lerna (для многопакетных JS-репозиториев)

«Аааа! Лерна не управляет исходным кодом! Это не инструмент для управления репо в другом репо! » — Да ты прав. Он не управляет исходным кодом. Он не объединит рабочий процесс Git для подпроектов в вашем репозитории. Вы не сможете контролировать или объединять изменения в подпроектах с помощью Lerna или расширять любой другой рабочий процесс управления исходным кодом для подкаталогов в проекте или между разными репозиториями. Тем не менее, разработчики JS могут использовать Lerna для достижения некоторых из цели, которые должны быть достигнуты с помощью подмодулей Git.

См. также:  Как уменьшить код Java Boilerplate с помощью Lombok

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

Каждый модуль будет настроен со всеми конфигурациями автономного пакета, включая файл package.json и все остальное. Итак, когда вашей конечной целью является создание JS-репозитория, в котором вы можете разрабатывать несколько пакетов и публиковать их, Lerna пригодится в качестве альтернативы Git-Submodules в том смысле, что делает этот рабочий процесс практичным.

 

lerna / lerna
дракон: инструмент для управления проектами JavaScript с несколькими пакетами. — lerna / lerna github.com

 

Почетные упоминания

 

ingydotnet / git-subrepo
Участвуйте в разработке ingydotnet / git-subrepo, создав учетную запись на GitHub. github.com

 

 

git-repo — Git в Google
Repo — это инструмент, созданный на основе Git. Repo помогает управлять многими репозиториями Git, выполняет загрузку в систему контроля версий… gerrit.googlesource.com

 

Добавляйте еще в комментариях… Ура ?

Учить больше

 

Как мы действительно используем повторно используемые компоненты?
Я поговорил с 30 командами об их повторно используемых компонентах. Вот что я узнал. blog.bitsrc.io

 

 

Упрощение монорепозиториев с помощью Bit
Как использовать Bit + NPM для упрощения архитектуры монорепозитория с участием Лерны и его друзей и без них. blog.bitsrc.io

 

 

Как обмениваться компонентами React UI между проектами и приложениями
Простое руководство, которое поможет вам организовать, совместно использовать и синхронизировать компоненты React между приложениями вашей команды. blog.bitsrc .io

 

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: