Инструмент для управления исходными библиотеками в проекте (без подмодулей)? - PullRequest
0 голосов
/ 31 января 2019

Существует ли инструмент командной строки для автоматизации ведения коллекции исходных библиотек и применения их к проектам?

Для игровых джемов (или, возможно, также для долгосрочных проектов) я не хочу размещать своисобственный клон каждой библиотеки, которую я использую, чтобы иметь возможность изменять ее (и предоставлять каждому члену моей команды разрешение на каждый клон).Вместо этого я хочу, чтобы весь мой исходный код находился внутри дерева исходных текстов моего проекта - это означает, что я не могу использовать подмодули git.

Итак, скажем, у меня есть проект "puppypark" и я хочу использовать некоторые библиотеки "baton""и" windfield ".

Я ищу такой вид рабочего процесса:

  • зарегистрировать библиотеки
    • librarian add baton git://lib.com/baton.git
    • клонирует вцентральное хранилище (например, в ~ / .librarian /)
  • добавление библиотек в проект
    • librarian use baton puppypark ./src/foreign/
    • создает ветку (отключеноmaster) для этого проекта в центральном репозитории
  • объединяет изменения проекта в центральном репозитории
    • librarian apply puppypark
    • переключается в ветку проекта и копирует изменения вклон
  • объединить вышестоящие изменения в проект
    • librarian apply baton puppypark
    • принимает текущее состояние ветви проекта и копирует в проект
  • никаких действий не происходит, если в целевом хранилище нет чистого рабочего пространства
  • действия всегда приводят ккоммит, суммирующий предпринятые действия
    • коммиты всегда должны иметь идентификатор фиксации (ша)

Это может быть независимо от моей системы контроля версий, но если это такэто с git, это тоже здорово.

Я думаю, что это что-то вроде Карфагена (но для исходного кода вместо встроенных библиотек, и меня не интересуют зависимости).Может быть, я смогу достичь этого с помощью git-subtree, но я не понимаю как.Я думаю, что это похоже на loverboy , но меня интересует более общее решение.

1 Ответ

0 голосов
/ 25 февраля 2019

Я не смог найти решение, поэтому я написал свое собственное: Библиотекарь автоматизирует копирование модулей в проекты и из них.В отличие от loverboy, вы даете ему общие правила, как копировать модули, а не требовать правил для каждого модуля.

Пример использования для настройки для love2d и импорта windfield в проект "puppypark":

librarian config love --path src/lib/ --root-marker init.lua --rename-single-file-root-marker ".*.lua" --include-pattern ".*.lua|LICENSE.*"
librarian acquire love windfield https://github.com/adnzzzzZ/windfield.git
librarian checkout puppypark windfield
librarian checkin puppypark windfield
...