software →  

darcs

 

Страницы: | 1 |

Скрипт для вывода ченджсета со списком изменённых файлов (Mercurial)

26 мая 2011 // Хельги

В дарксе у команды changes есть замечательная опция -s, которая выводит под каждым патчем краткую пофайловую сводку:

[site D:]$ darcs cha --last 1 -s
Fri Mar  4 22:00:52 Russian Standard Time 2011  franoleg@gmail.com
  * #436 notify: Support no-auth SMTP sending

    M ./help/IndianaSettingsHelp.wiki -1 +5
    M ./sendmail.py -7 +16

В меркуриале я такого ничего не нашёл, но по мотивам поста Mercurial: listing files modified in incoming changesets, and guessing conflicts соорудил вот такой батник:

@echo off
if .%1.==.. goto USAGE

hg log -r %1 
hg log -vr %1 | grep "files:" | sed "s,files:,,"| sed "s,\^[ ]\*,,"  | tr " " "\012" | sort | uniq
goto END

:USAGE
echo Usage: %0 REV
echo     Show hg revision info with file list

:END

Разумеется, требуются unxutils.

Тэги: cmd, darcs, hg
Написать комментарий

Darcs и серверные репозитории

14 ноября 2010 // Хельги

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

Но есть ли способ сделать такое же для даркса без очень большого количества телодвижений? Уже видел darcs-server и некий скрипт для доступа по SSH. В первом не нравятся keyring’и, во втором — невозможность разграничить доступ для разных пользователей к разным репозиториям.

Создавать по шелл-пользователю для каждого тоже не хочется.

Тэги: darcs, красные глазки
Написать комментарий

Починил закоррапченный репозиторий «Индианы»

26 апреля 2010 // Хельги

Починил закоррапченный репозиторий «Индианы». Даркс, конечно, хорошая штука, но у формата репозитория darcs-1.0 есть досадная проблема: эталонное дерево (pristine tree) лежит просто в виде таких же файлов, как и рабочая копия. Итог:

  • один коррапт у меня случился, когда я случайно обработал скриптом две копии файла: в рабочей копии и в эталонном дереве — и даркс решил, что файл не изменился вообще;
  • второй коррапт произошёл, когда что-то системное нагадило мне в pristine файлами desktop.ini, и опять-таки даркс решил, что они там были всегда.

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

Хорошо, что у меня репозитории приватные (правда, зараза, их немало) — я смогу спокойно заменить коррапченные репозитории чистыми.

Дальше надо переходить на даркс версии 2.3, а потом на формат darcs-2.0.

Тэги: darcs, indiana
Написать комментарий

Если бы системы контроля версий были транспортными средствами

26 марта 2010 // Хельги

Мы тут на работе обсуждали разные системы контроля версий, и в итоге пришли к вот такому сравнению:

  • cvs — ржавый гусеничный трактор «Джон Дир», 1920 года выпуска. Ездит.
  • hg — современный седан с автоматической коробкой передач. Удобен, современен, прост в управлении.
  • svn — современный седан с климат-контролем, электропакетом, но на ржавых гусеницах. Пока сидишь внутри, не пытаясь ехать, кажется, что всё нормально.
  • git — спорткупе с салоном от самолёта, полным ручек, кнопочек и дисплеев. Ездит ненамного быстрее обычного седана, но освоить управление гораздно труднее.
  • darcs — экспериментальный автомобиль с роботом-водителем. Едет сам, но если вдруг повернет в стенку, вмешаться будет невозможно.

Тэги: darcs, hg, svn, работа
Написать комментарий

TFS ⇒ HG: Причины перехода

7 марта 2010 // Хельги

Для своих проектов я с 2005 года использовал darcs. Эта система контроля версий одновременно гениальна и ужасна. С одной стороны, за четыре года использования даркса для контроля исходников «Индианы» мерж-конфликты у меня были два или три раза. С другой стороны, даркс совсем не подходит для продакшена: нет ни графических обёрток, ни нормальной интеграции в «студию». Даже графической мержилки нет «из коробки»! Теория патчей математически обоснована, а вот про удобство работы для самых разных категорий пользователей никто не подумал. Хотя для маленького самописанного проекта — отлично.

На работе мы сейчас пользуемся TFS, который работает ровно наоборот. Консольный клиент и графический клиент — равные по мощности. Графическая мержилка и возможность подключить любую другую, по выбору. Полная интеграция в «студию».

Но пользоваться этим тяжело. Централизованная система контроля версий — это фэйл. Нет офлайновых коммитов (и вообще работа без сервера затруднена). Все ветки на сервере. При мерже из ветки в транк теряется вся история. Короче, сделать CVS по уму невозможно, Линус был прав.

При этом TFS мне приходилось использовать не только на работе: дома тоже была парочка проектов, где работа шла на TFS-сервере.

* * *

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

Одной из главных причин, почему я выбрал трак, а не один из других багтрекеров, было то, что трак — это комбинированная система управления проектом. Помимо собственно багтрекера, трак содержит модули вики и интеграции с системой контроля версий. Это невероятно удобно и позволяет, к примеру, перейти из режима просмотра коммита по ссылке на связанный тикет с описанием бага.

Трак поддерживает интеграцию с несколькими системами контроля версий, но лучше всего реализована поддержка Subversion и Mercurial. SVN, разумеется, я даже и не рассматривал (он централизованный), а вот меркуриал для моих нужд вполне подошёл.

* * *

У меркуриала присутствуют все основные качества распределённой системы версий. Каждая рабочая копия содержит свой репозиторий, система отслеживает патчи, а не версии, мерж веток делается через синхронизацию, история обоих веток сохраняется после мержа.

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

Меркуриал лучше даркса подходит для продакшена. Есть несколько способов сделать центральный репозиторий, куда все коммитят: помимо доступа по SSH, можно прикрутить к веб-серверу hgwebdir или просто пустить крутиться hg serve за nginx с аутентификацией.

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

* * *

Единственной проблемой после выбора хорошей во всех отношениях системы контроля версий было перевести проект, лежащий в TFS, на меркуриал. Для этого я воспользовался двухходовкой: tfs2svn помог мне перегнать проект в SVN, а из SVN в меркуриаловский формат конвертирует команда hg import. И если со второй всё было просто, то конвертация из TFS в SVN попортила мне немало крови.

Сейчас мы на работе идём по тому же пути, по которому я прошёл со своим карманным проектом. (Мержи замучили, да и многим другим параметрам распределённая система просто удобнее.) Но поскольку масштабы у нас побольше, то и проблемы возникают более крупные. В связи с этим я планирую поделиться опытом запинывания tfs2svn, а также выложить патчи к этому конвертеру.

Тэги: darcs, hg, svn, tfs, trac, работа
Написать комментарий

Страницы: | 1 |