Re[40]: Git wtf?..
От: · Великобритания  
Дата: 09.02.16 23:23
Оценка: +1
Здравствуйте, alexzz, Вы писали:

A>Допустим, у Маши с Петей отсутствует фантазия. Маша закоммитила, поставила синхронизируемую закладку, запушила. Петя закоммитил у себя и поставил закладку с таким же именем. Попробовал её синхронизировать, но оказалось, что закладка с таким именем уже есть. Петя переименовал свою закладку, и они жили долго и счастливо.

Вроде я понял чего тебе не понятно. hg имеет жуткое cvcs наследие, которым жестоко коцают мозги юзеров. Ты видишь только два репозитория, притом один из них более главный, или ещё "центральный сервер". А в dvcs — репозиториев потенциально бесконечно и они все равноправны. Маша и Петя это могут быть две БОЛЬШИЕ команды. И закладка команды ПЕТЯ уже разползлась в 1000 реп, закладка команды МАША в 2000 реп. И вот теперь приходит тут такая МАША и указывает ПЕТЕ что он у себя всё везде обязан поменять, т.к. МАША так хочет, как думаешь, куда пошлёт её ПЕТЯ?

A>>>Могут под свои задачи именованные ветки завести, если захотят или потребуется зачем-то.

A>·>Ветки же уже заведены — с именем "experiment". Надо будет кому-то из них ветку переименовывать, переписывая историю. А от этой истории уже могут другие зависимости существовать...
A>В худшем случае, если Маша с Петей две недели пахали локально в ветках с одинаковым названием, успели наделать много-много ревизий, даже успели засветить где-то на стороне хеши этих ревизий, а потом одновременно запушили на сервер, так что ни у кого из них не было шанса заранее узнать о совпадении имён ― ну, значит, пока будет две ветки "experiment". Хоть три. Можно их сразу закрыть и продолжить с новыми внятными названиями. Можно повесить закладки. Можно оставить как есть.
Это называется ripple effect — где-то небольшая проблема и все вокруг везде должны всё менять, вместо того, чтобы сделать локальное согласование только в точке взаимодействия.

A>Я толком не пользовался Гитом и не могу прочувствовать проблему совпадения имён.

Ты похоже, просто толком мне пользовался dvcs. Это не проблема git, это проблема распределённой разработки.

A>>>Маша и Петя спокойно обошлись без именованных веток, без bookmarks, без тэгов, вообще без всего.

A>·>Т.к. при совпадении имён веток, Маша может вытянуть ветку Пети под другим именем, скажем, назвать её в своём репозитории как petya_dev. По смыслу — ветки dev у Пети и у Маши — независимые истории.
A>Вот на самом деле зачем Маше Петина ветка под другим именем? По смыслу это одна ветка, у который есть своё имя (если есть). С чего его вдруг менять?
Чтобы их легко различать по имени, а не по неким косвенным признакам.

A>>>·> Почему их нужно насильно сталкивать лишь по тому, что у них случайно совпали имена — хз.

A>>>Я думаю, слово "нужно" неверно. Устраивает базовый функционал анонимных веток? Пользуешься им. Испытываешь неудобства? Можешь использовать закладки и/или именованные ветки.
A>·>Как выяснилось выше — не могу, проблему они не решают.
A>Чем больше перечитываю, тем больше не понимаю, о чём речь. Что конкретно ты не можешь? Hg ругается на совпадение имён, виснет, теряет данные или не даёт коммитить, пушить и т.д.? Ему пофиг.
Ему пофиг на человеков: люди умные — захотят, разберутся.

A>·>Вот. Уже внезапно стало три анонимные ветки, различать их стало ещё сложнее.

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

A>·>Та же проблема, имена закладок глобальны, да ещё и пушатся без спросу — думай тщательно каждый раз когда даёшь название.

A>Можно тщательно думать, давая имена. Можно не думать, давая имена. Можно не давать имена. Имена не на что не влияют.
Они влияют на конфликты.

A>Я так понял из разговоров, что Гит заставляет давать каждой головной ревизии уникальные в пределах репозитория имена.

Нет, гит _сам_ добавляет префикс к имени. Хотя не обязательно, можно и без имён обойтись Например, дефолтным именем FETCH_HEAD

A>Но поскольку головных ревизий бывает много, а слов в языке мало, то названия совершенно разных веток в разных репозиториях периодически совпадают. И тогда чтобы влить в один репозиторий изменения из другого, иногда приходится чужие ветки у себя переименовывать. И тогда в разных репозиториях совершенно разные ветки могут называться одинаково, а одна и та же ветка может называться по-разному. Отсюда, наверное, такая любовь и ненависть к именам?

Они совадают потому что репозитории разные и независимые, потенциально — без какого либо централизованного контроля, distributed vcs однако.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.