Git retagging вменяемых и безумных советов - PullRequest
0 голосов
/ 13 мая 2018

Пока я читал о переименовании тегов git, многие люди указывали прочитать this :

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

Нормальная вещь.

Просто признайте, что вы облажались, и используйте другое имя.Другие уже видели одно имя тега, и если вы сохраняете одно и то же имя, вы можете оказаться в ситуации, когда два человека имеют «версию X», но на самом деле они имеют разные «X».Так что просто назовите это «X.1» и покончите с этим.

Безумная вещь.

Вы действительно хотите также назвать новую версию «X»,хотя другие уже видели старую.Так что просто используйте git tag -f снова, как если бы вы еще не опубликовали старый.

Однако Git не изменяет (и не должен) изменять теги позади пользователей.Так что, если кто-то уже получил старый тег, выполнение git pull на вашем дереве не должно просто заставить его перезаписать старый.

Если кто-то получил от вас тег релиза, вы не можете просто изменить тег для него.обновив свой собственный.Это большая проблема безопасности, поскольку люди ДОЛЖНЫ иметь возможность доверять своим именам тегов.Если вы действительно хотите сделать безумную вещь, вам нужно просто признаться в этом и сказать людям, что вы все испортили.

Я не уверен, полностью ли я следовал этому.

Q) В здравом смысле, что он имеет в виду - if you keep the same name, you may be in the situation that two people both have "version X", but they actually have different "X"'s. So just call it "X.1" and be done with it.

В безумных вещах написано, что если я оставлю имя тега таким же и принудительно нажмуgit pull не будет обновлять моих коллег, имеющих этот старый тег.Следовательно, что он подразумевает под - you may be in the situation .....В чем может быть ситуация?

1 Ответ

0 голосов
/ 13 мая 2018

Предположим, ветвь имеет историю A-B-C.Вы делаете тег foo на B и помещаете его в удаленный репозиторий.Боб выбирает ветку и получает тег foo, который указывает на B.

Позже вы обнаружите, что тег должен был быть на C.Таким образом, вы повторно ставите foo на C и принудительно отправляете его в удаленный репозиторий, но больше никому не говорите.Мэри выбирает ветку и получает тег foo, который указывает на C.

Из вашего примечания к выпуску Боб и Мэри узнают, что версия foo является стабильной ревизией, поэтому они извлекают fooв своих собственных репозиториях.Если B и C имеют одно и то же дерево, что означает, что коды одинаковы, вам просто повезло.Однако, скорее всего, у них разные деревья.Это ситуация, когда Боб и Мэри получают разные коды от foo, и они не знают об этом.

Боб может найти ошибку, которая была исправлена ​​в C, и сообщает об этом Мэри, ноМэри говорит Бобу, что она не может воспроизвести ошибку.Боб говорит, что он проверяет foo, и Мэри говорит, что она тоже.Может потребоваться усилие, которого можно было бы избежать, чтобы выяснить настоящую причину.Хуже, когда все больше людей получают теги с одинаковыми именами, но указывающие на разные коммиты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...