Пометить несколько веток в git? - PullRequest
7 голосов
/ 10 июня 2009

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

Но, похоже, git не позволит мне поместить одно и то же имя тега в обе ветви. Если я пытаюсь пометить ветви по отдельности, это говорит мне, что метка уже существует, когда я иду пометить ветку секунд. Я попытался передать два коммита в git tag, но мне это тоже не понравилось. Мне не обязательно всегда отмечать две ветви в шаге, но я не хочу добавлять случайные символы в теги только для того, чтобы избежать конфликтов имен.

Есть ли какой-нибудь способ сделать то, что я хочу, или я хочу сделать что-то не то?


Одна ветвь - это код, который изготовитель помещает на устройство, чтобы проверить, правильно ли оно было собрано. Другая ветвь - это код, который поставляется в продукте. Это не совсем две ветки на релиз. Это первый выпуск для этого продукта и, следовательно, первый выпуск для обеих веток, поэтому я попытался пометить обе ветви с помощью «release-1.0».

Ответы [ 3 ]

14 голосов
/ 10 июня 2009

Вы хотите сделать что-то не то. Цель тега - однозначно идентифицировать конкретную ревизию. На вашем месте я бы пометил только производственную ветку и оставил бы ветку тестирования без тегов.

Однако довольно странно, что у вас есть две независимые ветки на релиз. Почему это? Ответ может помочь описать лучшее решение.


Поскольку теги на самом деле не должны указывать на одну и ту же ревизию, но (потенциально) на разные ревизии, теги должны быть примерно такими:

  • appname-1.0-manufacturing
  • appname-1.0-production

Таким образом, вы будете знать, к какому выпуску относится каждый тег, а также к месту, где появился код.

5 голосов
/ 10 июня 2009

Тег просто дает имя отдельному коммиту, поэтому нет, вероятно, нет способа сделать то, что вы хотите.

Мне любопытно, какой будет желаемый результат. Я имею в виду, что одна из целей тега - это имя, которое вы можете оформить позже. Так что если вы git checkout на теге, который ссылается на две ветви ... что происходит?

2 голосов
/ 15 июня 2009

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

...