software →  

trac

 

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

Консольные сочетания клавиш

31 марта 2012 // Хельги

Захотелось недавно вечером в ГЗ, где нет интернета, позаниматься конвертацией тикетов из трака в Bugs Everywhere. На факультете интернет есть, но закрыт SSH.

Залез с телефона на сервер, запаковал базу, выложил в паблик и слил, потом перекинул на ноутбук. После чего с чувством выполненного долга лёг спать.

Зато теперь знаю, что вместо клавиши Tab можно нажимать C-i (собственно, ASCII-код табуляции — 9, он же порядковый номер буквы i).

А запишу-ка я несколько полезных сочетаний консоли, чтобы не забыть:

C-a Перейти к началу строки
C-e Перейти к концу строки
C-w Удалить предыдущее слово
C-l Очистить терминал
C-r Инкрементальный поиск

Последнее заменяет клавишу F8 виндовой консоли, а остальное полезно на маке, где Cmd-Left, Cmd-Right и Opt-Delete в стандартном терминале не работают.

* * *

Другой бесполезный факт: единственная однобуквенная команда, которая работает на моём debian-сервере дома — это w. На маке работает ещё x.

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

Ohloh не обманет

13 марта 2011 // Хельги

Скрипт для русификации справки трака

14 февраля 2011 // Хельги

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

Чтобы не заменять страницы справки на переведённые по одной, можно воспользоваться таким shell-скриптом:

#!/bin/sh
env=/path/to/trac/env
for page in `trac-admin $env wiki list | tail -n +4 | cut -f1 -d' '`
do
    wget http://trac.edgewall.org/wiki/TranslationRu/${page}?format=txt \
        -O $page -o /dev/null
    if [ "`stat -c %s $page`" -ne "0" ]
    then
        trac-admin $env wiki import $page $page
        echo $page downloaded
    fi
done

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

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

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, работа
Написать комментарий

Замена тернарной операции для python 2.4

2 февраля 2010 // Хельги

В питоне начиная с версии 2.5 появилась тернарная операция с синтаксисом true_value if condition else false_value. Синтаксис немного непривычный, да и по разным причинам иногда приходится писать так, чтобы работало и на версии 2.4.

А вот сейчас, читая исходники плагина MasterTickets к траку, я увидел отличную замену тернарной операции: condition and true_value or false_value. Как я сам не додумался до такой простой вещи?

Порядок операндов ?: сохранён, да и логика вполне прозрачна.

Замечание

eSyr обратил моё внимание вот на что: если true_value вычислится в ложное значение (0, пустая строка, пустой список), то в итоге выражение вычислится в false_value.

Так что это удобный хак, но не более.

Редакция от 12 февраля 2010
Тэги: python, trac
Написать комментарий

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