Pull to refresh

Comments 41

Это в 2023 году, я там добавил.

2023 год давно закончился. Время прошедшее. ;)

OpenOffice.org

OOo в 2023 не существует как проект. LibreOffice использует git вроде с самого начала (2011), а Apache OpenOffice c 2019 (а до этого - SVN)

Грустно, что mercurial проиграл. Мне он нравился значительно больше git, но, увы, для взаимодействия с другими лучше пользоваться общепринятым инструментом, чем экзотическим.

Для огромных проектов с субмодулями git лучше подходит. а за огромными и прочие подтянулись.

Возможно, но мне кажется, в первую очередь повлияло, что гит лучше подходит для Линуса. Роль личности в истории :-)

У Линуса разве любимая система контроля версий не email?

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

Роль Линуса в данной истории заключается в том, что он этот git написал.

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

https://habr.com/ru/articles/798881/

Компания Facebook* выбрала Mercurial не потому, что он был более производителен, чем Git. Она выбрала его, потому что мейнтейнеры и кодовая база были более открыты к сотрудничеству. Инженеры Facebook* лично встретились с мейнтейнерами Mercurial, и им понравилась идея партнёрства

Microsoft пошла немного другим путём и допиливала git под свои размеры

https://habr.com/ru/articles/795635/

Аналогично. Полноценные ветки + изначально нормальный GUI. Но, ещё лет несколько назад перебрался полностью на git, ибо, да, mercurial превратился в экзотику.

Грустно, что проиграл svn, хотя он продолжает быть вторым. А в hg, кажется, была постоянная проблема с юникодными именами файлов? Конечно, использование non-ascii символов в именах вредно для здоровья, но не все такие пуристы в этом вопросе.

А мне не особо жалко. Помню даже, что во времена SVN бытовало мнение что-де контроль версий нужен исключительно для командной работы, а для pet project достаточно и archiveYYMMDD.zip. И это, имхо, неспроста.

в hg, кажется, была постоянная проблема с юникодными именами файлов?

Причем ее кажется так и не починили. В 21 веке как то странно.

А ещё в hg каждая следующая версия несовместима с предыдущей. Старый клиент новый репозиторий не читает.

Я не стал утверждать, что проблема актуальна, потому что не проверял. Но, видимо, так и не починили.

А Меркуриал в какой системе контроля версий мейнтейнится?

Я немного не понял. Пишут, что перешли на Git и Github, но репозиторий создан более 20 лет назад? https://github.com/nginx/nginx/commits/master/?after=00637cce366f17b78fe1ed5c1ef0e534143045f6+8270

Коммиту в гите можно поставить любую дату. Как думаете работают тулзы для написания текстов в диаграмме Contributions в гитхабе?

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

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

Хотел написать что покупатель голосует рублем.. Но вспомнил что для большинства GitHub бесплатный.. А бесплатного HgHub никто не предоставил..

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

Есть же GitLab и иные альтернативы GitHub. А Git открытый проект, так что относительно безопасен.

Ого, аж временами FIDO и BBS повеяло.

Так сложилась судьба, что руки попробовать Mercurial у меня так и не дошли.

Может мне тут кто-нибудь объяснить о чем тут плач Ярославны и чем всем не угодил Git?

чем всем не угодил Git?

git сложное.

о чем тут плач Ярославны

Птичку жалко. (ц)

Ну так то mercurial никуда не пропал В дистрибутивах linux он есть, можно установить и пользоваться.

git сложное

А можно мне объяснить в чём именно сложности с Git? В простых сценариях гит прост как две копейки, в сложных - сложность вытекает не из git-а, а из самой сложности проблемы совместной разработки и версионирования кода.

Если сильно не копаться в деталях внутреннего устройства, то я могу на кубиках объяснить git любому человеку минут за 30.

Бранчи там организованы сложно. Если сравнивать с hg.

Если хочется удалить 1 ошибочный комит, в hg это просто strip. В git - целое упражнение из лечебной физкультуры.

Просто посмотреть, есть ли новые комитеты на сервере, но не скачивать? В mercurial - hg in В git - не нашел как

Просто скачать новые комитеты, я позже разберусь, что делать со своими? hg pull. В git - хозяин, я все смержииль, подтверждай давай.

Mercurial проще в работе. git более навороченный, бесспорно.

  1. git reset HEAD~1. Где тут физкультура? Ну, если вы уже залили этот комитет, то ССЗБ, и все сложности начинаются именно из-за механизма совместной работы с кодом, git тут не причём. Если на других плевать, то git push --force решит ваши проблемы.

  2. git fetch? Ну, да, он скачает новые космитв, а не просто посмотрит, но зачем нужно "просто посмотреть" - загадка.

  3. git fetch всё также решит ваши проблемы. Потому что git pull он просто делает fetch + merge/rebase, но если вы хотите вручную разгребать - просто юзайте fetch

git reset HEAD~1

--hard вроде ещё нужно. И вот этот стиль HEAD~1.. не могу никак запомнить;) Ну то есть мы не убираем комит, а откатывается на предыдущий. И он там где-то в потрохах остаётся. А в hg урезать значит урезать ;)

не могу никак запомнить

Читайте '~' как знак минус и всё встаёт на свои места. "Вернуться назад от текущего места на один шаг". Или на 2 шага. Или на три) В зависимости от цифры.

Впрочем в git можно добавить alias-ы для команд, так что можете специально для себя сделать команду strip и просто писать git strip.

Касаемо --hard, зависит от того, хотите ли вы удалить коммит или удалить и код, и коммит) Если просто удалить коммит, то надо без hard) Задача была "удалить ошибочный коммит" - я её и решил)

И снова - вся сложность вытекла из сложности процесса версионирования, а не сложности команд)

Бранчи там организованы сложно. Если сравнивать с hg.

Бранчи в Hg организованы сложно. Если сравнивать с Git.

Сами авторы Hg пишут в документации, что «The term branch is sometimes used for slightly different concepts. This may be confusing for new users of Mercurial.» - прямая цитата из родной вики. В Hg понятие ветки это смешение нескольких разнородных сущностей в одну не сильно приятную (именно из-за смешения) кашу:

​1. «Голова» процесса развития, которых может быть несколько в пределах одной рабочей копии или «ветки» в другом понимании. При операциях push, pull передаются все эти головы. В некоторых местах это называется напрямую словом head.

​2. Некий установленный локальным режимом тег под названием «branch», который приклеивается к каждому новому changesetʼу, и больше ничего не делает. Именно его чаще всего называют «веткой».

​3. Полный пучок п.1, между которыми тоже можно переключаться (множественные головы, которые используются ничтожной частью пользователей, но которые всем надо учитывать).

​4. Bookmarks, которые тоже ветки, аналогично Git, но не получили такое имя из-за намеренного отказа разработчиков.

После этого в Git всё тривиально. А основную обиду большинства сторонников Mercurial получает то, что нет автомата, который пишет название локальной ветки-2 при коммите в атрибуты коммита. В Git это решается явной записью в сообщение коммита, причём чаще всего не в виде ветки, а в виде тикета, под который идёт разработка.

На остальное уже ответили в ветке обсуждения.

Mercurial успешнее, чем Git, изображает то, что реально нужно ≈90 процентам пользователей - использовать распределённую VCS как централизованную, при этом получая некоторые фишки распределённости в виде временного (долго всё равно не нужно) сохранения коммита (changeset, в терминах Mercurial) у локального пользователя. Полные фишки Git всё равно мало кто использует, слово index уже пугает значительную часть пользователей, а rebase вообще аватарой аццкого сотоны в пределах рабочей копии. В эту сторону работают такие фишки, как последовательная нумерация ченжсетов, вписывание имени текущей ветки в метаданные коммита, и тот же отказ от индекса, который требует других, сильно более топорных инструментов, но при этом визуально более наглядных.

В чём-то я их понимаю - я тоже раз пять делал - "git diff" - "что??? где мои правки???" - "git status" - "ааа блин, они в индексе, смотрим git dc (алиас у меня такой)", и пока не научился делать какой-нибудь "git rebase --abort" и вообще внимательно читать вывод git status, пару раз таки делал как на xkcd нарисовано - убить рабочую копию, стянуть с нуля и сделать заново. Сейчас уже не делаю, но это потому, что я понимал, что если ничего не получается, надо прочесть внимательно ;)

Нуну, ждём, не вспомнит ли мс, владелец гитхаба, что у нжинкса русские корни.

Sign up to leave a comment.

Other news