Переход С Svn На Mercurial: Личный Опыт

Для работы с Mercurial в Windows вам нужно всего лишь ЧерепахаHG .

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

Если у вас есть Visual Studio, вы можете использовать красивую плагин .

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

для студентов и лабораторных работ, которых в Интернете предостаточно.

Поскольку единственное преимущество Mercurial для простых смертных — это работа в автономном режиме, этим и следует воспользоваться.

То есть создаем основной репозиторий онлайн: Mercurial на данный момент поддерживает Майкрософт И Google (потрясающе!), поэтому апологеты могут без страданий выбрать любимую корпорацию.

Но с одной оговоркой, у MS в комментариях к коммитам нет русского языка.

Я хочу прийти к соглашению прямо сейчас.

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

Поэтому проблемы SVN (100 человек изменили 100 строк в одном файле и посреди праздника кто-то его переименовал) ни разу не затронули мою компанию и Subversion на 90% удовлетворительна.

Над проектом работают 3-4 программиста; отдельная задача или серия задач для одного компонента решается одним программистом.

Конфликтов между верстальщиком и верстальщиком не возникает, т. к.

они редактируют разные файлы (т. к.

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

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

Оставшиеся 10% до счастья (оффлайн) будут реализованы с помощью Mercurial.



Хостинг

Выбирая услуги хостинга, я остановился на Битбакет .

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

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

Во-вторых, он понимает, принимает и отображает русские комментарии, в отличие от Codeplex. В-третьих, код Google выглядит современнее, работает быстрее, не дает постоянного сбоя IE9 и в целом лучше спроектирован, но имеет ограничение в 2 гигабайта на репозиторий.

2 гигабайта на репозиторий — это очень много, у нас в SVN 600 мегабайт с 200 мегабайтами чистого контента.

Вряд ли мы достигнем этой планки в ближайшие пять лет. Поэтому, если у вас нет желания закрывать код и вас не пугает ограничение в 2 гигабайта, вы можете разместиться на Google; из всех трех хостингов, которые я просматривал, он самый безупречный.

Причем переезд на другой хостинг означает максимум 1 день линейного времени и потраченный час-два.



Вложенные репозитории

Это довольно интересная тема, так как в русской версии описания Mercurial и во многих местах в Интернете пишут, что вложенные репозитории невозможны, Mercurial якобы не для этого создавался.

Такая возможность на самом деле появилась уже давно.

Работает корректно относительно svn:externals, но с нюансами.

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

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

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

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

Соответственно, чтобы все увидели ваше обновление, эта кликнутая ревизия вложенного репозитория должна быть зафиксирована; он хранится в файле «.

hgsubstate».

Второй нюанс может возникнуть, когда вы хотите передать кому-то изменения из своего репозитория напрямую.

Чтобы сделать это с нюансами, нужно внести изменения во вложенный проект, закоммитить их, закоммитить изменение ревизии (эти два коммита можно объединить в один, HG позволяет) и внести изменения в основной проект и закоммитить их тоже.

Теперь перенесите изменения из своего репозитория в другие и получите сообщение «abort: неизвестная ревизия '.

'!» Это происходит по понятным причинам — новая ревизия вложенного проекта остаётся в вашем репозитории.

Третий нюанс — отвязка от основного репозитория по умолчанию вложенного проекта.

Простой вариант — зафиксировать файл с его адресом (.

hgsub) и написать туда что угодно (например, путь в вашей локальной файловой системе), но это ненаучно.

Это научно, если вы используете раздел [subpaths] в .

hgrc. Когда вы отправляете изменения в основной репозиторий основного проекта, изменения в подпроекте автоматически передаются.

Это хорошо.

Мой совет — избегайте материализации чудесных запутанных картинок, которые рисуются во всех гайдах «для новичков» (про возможность раскидывать коммиты за тридевять земель).



Воспоминание

Знакомство с распределенными системами я начал на примере Git просто потому, что время от времени встречаю упоминания о нем.

Вменяемого GUI-клиента я не нашел и все в один голос утверждают, что он есть только у Mercurial и имя ему TortoiseHG. В процессе случайного упоминания в разговоре с другом выяснилось, что его голос тоже был на стороне Mercurial. И двое других тоже.

Мне очень понравилась достопримечательность по старине.

Например, я только в комментарии с минусом обнаружил, что импорт репозитория из SVN в Mercurial не требует танцев, как описано в триллионе руководств (включая боевая вики ), руководства и многое другое – hg Convert СВН .

работает прямо из коробки TortoiseHG. И это произошло не вчера, это работает уже несколько лет. Тот же ориентир на древность и сферических коней, если сравнивать с СВН.

Ох, как печально, что многонедельные бранчи без стволов сливаются, а потом сливаются с конфликтами! Ох как грустно, что мы не можем коммитить код, который не работает, потому что мы кривые разработчики, которые не делают ветвления! Но замечательный Mercurial/Git очень плавно все сольет, потому что ля-ля-ля и ветки получаются автоматически при клонировании.

Во-первых, все сравнения почему-то проводятся с версией Subversion где-то 1.2-1.4, до больших изменений в 1.5 и с 1.7 на подходе.

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

В обратную сторону те же лошадки, только версия Mercurial взята 0.9. Видите ли, вы не можете создавать вложенные репозитории.

В русском переводе всё равно написано, что Mercurial не для этого создавался.

Английская версия уже содержит ссылки на субрепозиторий , но прошло всего несколько лет, в марте 2010 появилась даже поддержка вложенной Subversion. Теги: #dscm #Mercurial #svn #subversion #Codeplex #BitBucket #Google Code #Системы контроля версий #Mercurial #atlassian

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.