Рубрики
Без рубрики

Представляем TSRC

Представляем TSRC, инструмент для управления несколькими репозиториями Git и автоматизировать взаимодействие GitLab. Помечено Python, CLI, Git.

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

Первый метод – поставить все в гигантский репозиторий.

Второй метод состоит в том, чтобы разделить источники по нескольким репозиториям.

Оба метода имеют свои плюсы и минусы.

С подходом «Гигантский репозиторий» вы иногда не можете использовать существующее программное обеспечение для контроля источника, как 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”