Найти конкретные комбинации файлов коммитов в git - PullRequest
0 голосов
/ 19 марта 2019

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

У меня есть файл docker-compose.yml, давайте назовем этот файл A и файл docker-compose.override.yml, давайте назовем этот файл B (в будущем у нас также будут дополнительные файлы, но, поскольку это в основном повторение ситуации, мы пока игнорируем это расширение)

Различные версии A и B представлены с использованиемv1.0 и т. д., IE: Av1.0 и Bv2.1

Мы начинаем с Av1.0 и Bv1.0 Затем добавляем Av1.1 (и поэтому сохраняем Bv1.0), затем добавляем Bv1.1и т. д. В историческом смысле вы видите что-то вроде этого:

Av1.0  Bv1.0
Av1.1  Bv1.0
Av1.1  Bv1.1
Av2.0  Bv1.1
Av3.0  Bv1.1
Av3.0  Bv3.0

(помните, файлы называются A и B, только содержимое отличается)

Как я могу найтиконкретная версия установлена ​​из репозитория таким образом, что:

  • способен найти конкретную версию A
  • способен найти все версии B, связанные с этой версией A

Я думал об использовании тегов и конкретных строк коммита, но я бы хотелКроме того, пользователи могут фиксировать новые версии A или B, не прибегая к очень строгому текстовому вводу (тэгам или коммитам), потому что опечатка выполняется легко.Другим решением было бы полностью автоматизировать добавление в репо, но я не знаю, с чего начать.Так что любая помощь будет оценена.

1 Ответ

0 голосов
/ 03 апреля 2019

После долгих поисков и прочтения я нашел способ сделать это.

Используя комбинацию ветвления и пометки, мы можем достичь желаемых результатов.

Как?

  • каждая основная версия получает свою собственную ветку
  • каждая дополнительная версия фиксируется в основной-версии-ветви
  • каждая версияпомечен с использованием системы управления версиями, которая соответствует релизам

, поэтому в ветках можно найти последнюю версию основного выпуска. Любую другую необходимую версию можно найти с помощью тегов, которые присваиваются каждому коммиту..

Важное замечание: тегирование выполняется с помощью хитов git commit.Потому что пометка не должна быть сделана человеком из-за опечаток или других проблем.И пометка может быть сделана только после успешного коммита.

В итоге это будет выглядеть примерно так:

Av1.0  Bv1.0  <- branch 1.0 tag 1.0-0
Av1.1  Bv1.0  <- branch 1.1 tag 1.1-0
Av1.1  Bv1.1  <-            tag 1.1-1
Av2.0  Bv1.1  <- branch 2.0 tag 2.0-0 (it is the first version in this branch, so it is a 0)
Av3.0  Bv1.1  <- branch 3.0 tag 3.0-0
Av3.0  Bv3.0  <-            tag 3.0-1 (it is the 2nd version of B in this branch so it gets a 1)
...