Управление исходным кодом версию в программной компании является сложной задачей. Вы должны решить, как организовать свои источники.
Первый метод – поставить все в гигантский репозиторий.
Второй метод состоит в том, чтобы разделить источники по нескольким репозиториям.
Оба метода имеют свои плюсы и минусы.
С подходом «Гигантский репозиторий» вы иногда не можете использовать существующее программное обеспечение для контроля источника, как Git, потому что они не масштабируются для очень больших проектов, или вы должны сделать свои собственные патчи, такие как Facebook делает с Mercurial Отказ
С несколькими репозиториями становится легче просто использовать Git как обычно, но, скорее всего, понадобится инструмент на вершине этого, чтобы работать с несколькими репозиториями легче.
Популярное решение для второго случая – использовать подмодулы GIT, но:
Вам нужен «главный» репозиторий на вершине рабочей области
Когда вы обновляете подмодуль, вы должны сделать коммит в родительской репозитории, и этот шаг легко пропустить.
Кроме того, мы обнаружили, что, чтобы убедиться, что все репозитории находятся в постоянном состоянии, мы могли бы просто подтолкнуть тот же тег на несколько репозиториев.
Введите TSRC . Мы используем это каждый день в Танкер управлять нашими источниками.
Он имеет хороший и интуитивно понятный пользовательский интерфейс, который заботится о запуске Гит
Команды для вас в нескольких репозиториях.
Он также имеет функции (необязательные) команды для взаимодействия с GitLab.
Давайте посмотрим, как это работает.
Примечание. Мы будем показывать только базовое использование некоторых команд TSRC. Вы можете использовать --help
обнаружить все доступные варианты.
TSRC
написано в Python3 и может быть установлен с пипс
:
# Linux $ pip3 install tsrc --user $ Add ~/.local/bin to PATH # macOS $ pip3 install tsrc --user $ Add ~/Library/Python/3.x/bin to PATH # Windows $ pip3 install tsrc # PATH is already correct, set by Windows at installation
Вы можете найти источники на Github Отказ
Клонирование репозиториев
TSRC
приводится в движение Манифест Файл, который содержит имена и пути репозиториев к клону.
Используется Ямл
Синтаксис и выглядит как:
repos: - src: foo url: git@gitlab.local:acme/foo - src: bar url: git@gitlab.local:acme/bar
Манифест должен быть введен в репозиторий Git. Затем вы можете использовать следующие команды для создания нового рабочего пространства:
$ mkdir ~/work $ cd work $ tsrc init git@gitlab.local:acme/manifest.git
В этом примере:
Foo
будет клонирован в<работа>/foo
Использованиеgit@gitlab.com/acme/foo.git
Происхождение URL.- Точно так же
бар
будет клонирован в<работа>/бар
Использованиеgit@gitlab.com: acme/bar.git
Убедитесь, что все репозитории актуальны
Вы можете обновить все репозитории, используя TSRC Sync.
.
- Сам проявление будет обновлен первым.
- Если в манифесте добавлен новый репозиторий, он будет клонирован.
- Наконец, другие репозитории будут обновлены.
Обратите внимание, что TSRC Синхронизация
Обновляет только репозитории, если изменения тривиальны:
- Если филиал разогнан,
TSRC
ничего не сделаю. Вам решать использоватьребазе
илислияние
- Дитто Если нет дистанционного отслеживания ветки
Таким образом, нет риска потери данных или внезапных конфликтов.
(Кстати, это хороший пример о том, как реализовать эту директиву от Zen Python: »перед лицом двусмысленности, отказывайтесь от искушения догадаться« .)
Так что вы знаете, где требуется ручное вмешательство, TSRC Sync
Также отобразится сводка ошибок в конце:
Управляющие запросы слияния
Поскольку мы делаем большую часть нашей операции из командной строки, удобно иметь возможность делать операции GitLab с оболочки тоже.
Мы используем PITLAB API Gitlab для создания и принятия запросов слияния.
Например, вот как вы можете создавать и назначить запрос слияния:
# start working on your branch $ tsrc push --assignee
Когда обзор сделан, вы можете принять его и позволить GitLab объединить ветку после того, как CI пройдет следующую команду:
$ tsrc push --accept
Обратите внимание, как - 25 Будет ли
не Смешайте запрос на тягу немедленно. Это по дизайну. Мы считаем, что постоянная интеграция стоит только если это Предотвращает Плохой код от приземления в мастер Таким образом, мы гарантируем, что вы не можете подать CI.
Другие вкусности
TSRC статус
Вы можете использовать TSRC статус
Чтобы быстро получить обзор статуса вашего рабочего пространства:
TSRC Foreach
Иногда вы просто хотите запустить ту же команду на каждом репозиториях.
TSRC
Вы покрыли:
$ tsrc foreach -- some-command --some-opts
(Обратите внимание на -
Токен, который отделяет варианты Некоторые команды
от вариантов TSRC
)
Журнал TSRC
Если у вас есть несколько репо, вероятность, что вы собираетесь использовать несколько из них при выполнении выпуска, так что вы, вероятно, в конечном итоге поставим тот же тег на несколько репо.
Таким образом, вы можете быстро получить обзор всего, что изменилось между двумя тегами.
Вот где TSRC Log
приходит в удобное. Он будет работать Git log
С хорошими вариантами цвета и представить вам сводку:
Мы надеемся, что вы найдете этот инструмент удобным для ваших собственных проектов.
Не стесняйтесь попробовать, внести свой вклад, и дать нам обратную связь.
Оригинал: “https://dev.to/dmerejkowsky/introducing-tsrc”