Показаны сообщения с ярлыком hg. Показать все сообщения
Показаны сообщения с ярлыком hg. Показать все сообщения

понедельник, 30 марта 2015 г.

"case folding collision between" в Mercurial под Windows

У Mercurial под Windows есть неприятная особенность - если переименовать файл проекта, изменив в нём только регистр одного из символов, то рухнет всё. Mercurial, как дитя Unix-а, считает, что разные регистры - это разные файлы, а вот для Windows это параллельно. В результате - ошибка "case folding collision between" и полный обвал репозитория: даже если удалить зловредный файл, чтобы сделать push, надо сначала сделать pull, а pull не проходит из-за конфликта имён.

Можно посмотреть, что советуют на официальном сайте. Но эти советы не всегда помогают (мне не помогли).

В конце концов, нашёлся хакерский вариант. Только не забудьте сделать резервную копию.

hg pull
# ревизия из репозитория, можно посмотреть в Tortoise
hg debugsetparents <bad revision>
hg debugrebuildstate
hg rm -A -f WeatherTimeMachine-Info.plist
hg ci -m "fixed collision-folding issue"
hg debugsetparents tip
hg debugrebuildstate
hg ci -m "fixed head"
hg push

четверг, 19 февраля 2015 г.

Mercurial

Очень хорошее о практике работы с системами контроля версий. И, пока не забыл, как делать и сливать ветки в mercurial из консоли.

Создаём ветку:

hg branch branch1

Список веток:

hg branches

Заливаем с hg addremove:

hg ci -Am "comment"

Переключаемся на ветку:

hg up branch1

И сливаем с основной:

# Последний фикс с addremove
hg ci -Am "* my fix"

# и теперь сливаем
hg up default
hg merge branch1
hg ci -Am "+ merge branch1"
hg up branch1
hg ci -m "+ close branch" --close-branch
hg push

Устоявшейся маркировки в комментариях нет. Традиционно применяют:

+ фиша добавлена
- фича удалена
* изменение
# изменение (вариант *)
! багфикс

среда, 6 июня 2012 г.

Subversion: GoogleCode против SVN

Очень мной любимый эмулятор Радио-86РК на JavaScript не нуждается даже в хостинге, чтобы работать. Проект, залитый через Mercurial, доступен для чтения всем, а значит, нет нужды заморачиваться с хостингом. Достаточно поставить ссылку напрямую в репозиторий.

Отличная идея! А что будет, если залить проект через SVN?

Увы - ничего хорошего. HTML-документ, загруженный через SVN, можно открыть из браузера... но сервер вернёт его как [text/plain], а не как [text/html]. И браузер покажет вместо страницы её исходный код.

К счастью, Google Code поддерживает репозитории 3 форматов: SVN, Git и Mercurial. Вот и выпал случай их протестировать.
  • SVN - работает неправильно
  • Git - работает правильно (TortoiseGit + msysgit, указать в настройках Tortoise c:\Program Files\Git\bin\ как источник git.exe). Лучше брать git.exe из официального git-scm.
  • Mercurial (он же Hg) - работает правильно
Google Code не любит SVN. Или SVN не любит Web.

Я решил пользоваться Mercurial. Почему?