Текст от 20 сентября 2012.
src/csscomb.php — сама библиотека с алгоритмом сортировки + дефолтный список сортировки
src/cli.php — обвязка для CLI-версии
src/plugins/ — исходный код плагинов. Там нет библиотеки CSScomb, которая копируется туда при построении проекта (см. построение проекта). Это не готовые к использованию плагины, это исходники.
www/ — код CSScomb.com. Оттуда, так же как и из плагинов, откушена библиотека CSScomb, чтобы избежать копипасты. Для работоспособности требуется построение проекта.
build/ — готовые к использованию версии CSScomb (плагины, CLI). Содержимое в этой директории получается в результате построения проекта.
Если вы совсем не знакомы с make, то вот всё, что вам нужно знать: make позволяет избавиться от copy-paste кода CSScomb + позволяет быстро и легко пропихивать изменения в CSScomb во все использующие его сущности: плагины, сайт и т.д.
Для построения проекта нужно иметь установленный make. На OS X 10.8, например, его нет по умолчанию, но он доступен в наборе Command Line Tools.
Код ядра CSScomb находится в src/csscomb.php. Его нужно положить во все плагины, в CLI-версию и веб. Чтобы не делать это руками, я использую make.
После чекаута репозитория нужно выполнить в корне репозитория команду:
make
Автоматически соберутся:
- CLI-версия:
build/cli/ - Плагины:
build/plugin/ - Сайт:
www/- обновится ядро CSScomb,
- причешутся, пожмутся и сконкатенируются CSS и JS файлы (при помощи YUI Compressor и самой CSScomb). Результат положится в _css/ и _js/ соответственно. Подробнее см. цель
buildWwwв Makefile.
- Если проблема связана с сортировкой, нужно выделить минимальный участок кода, на котором воспроизводится проблема. Пойти в Issues и посмотреть нет ли там открытого таска на эту тему. Или закрытого. Создать/переоткрыть таск. Желательно с англоязычным описанием, чтобы смысл был доступен всем.
- Форкнуть проект.
- Счекаутить.
- Построить проект. Вам потребуется файл yuicompressor-2.4.7.jar из YUICcompressor. Он должен лежать в корне репозитория, на одном уровне с Makefile.
- Добавить падающий тест в
www/tests/cases.php. - Внести правки в
src/csscomb.php. - Построить проект: выполнить команду
makeв корне репозитория. При этом все изменения в библиотеке попадут во все нужные места. - Убедится, что тесты, которые раньше проходились, не падают, и что свежий тест, из-за которого вся затея, тоже проходится успешно.
- Закоммитить с упоминанием номера таска в комментарии к коммиту. Например:
'Fix issue #33: support LESS variables on test #test-id'. - Отправить Pull request.
В последнее время я выработал следующий цикл разработки:
- Все коммиты связываются с Issue.
- Вся публичная деятельность только на английском.
- Новые версии планируются через Milestones. Каждая следующая формируется из набора наиболее актуальных открытых Issue. Название Milestone содержит номер мажорной и минорной версии.
- При закрытии очередного Milestone создается tag в git.