Представлен третий выпуск системы управления репозиториями Kallithea, основанной энтузиастами и представителями организации Software Freedom Conservancy с целью продолжения развития свободной кодовой базы RhodeCode, после превращения данной платформы в полупроприетарный коммерческий продукт. Kallithea позволяет развернуть инфраструктуру управления разработкой, которая поддерживает системы контроля версий Git и Mercurial, и по решаемым задачам напоминает GitHub, GitLab и Bitbucket. Код проекта распространяется под лицензией GPLv3. Код проекта написан на языке Python.

Kallithea включает в себя высокопроизводительный сервер обработки push/pull-запросов и веб-интерфейс для организации совместной разработки, который позволяет управлять репозиториями, разделять права доступа, рецензировать код, отслеживать активность других участников, делать форки проектов, отправлять пулл-реквесты или изменять код на месте, через простой редактор. Поддерживается интеграция с централизованной базой пользователей предприятия, основанной на LDAP или ActiveDirectory. Поддерживается создание групп репозиториев и групп разработчиков с унификацией управления членами группы. Внешний вид интерфейса может легко быть изменён через систему шаблонов. Поддерживается наглядное представление активности в виде графиков. В системе рецензирования изменений поддерживается обсуждение изменений и отправка уведомлений.

Серверная часть платформы является многопоточной, что позволяет одновременно обслуживать несколько pull/push-запросов. Для увеличения производительности в системе активно используется кэширование и выполнение действий в асинхронном режиме. В систему также интегрированы средства резервного копирования, позволяющие периодически архивировать и сохранять через scp копию всех данных. Для отслеживания активности в репозиториях поддерживается специальная прослойка, ведущая журнал всех обращений и позволяющая аутентифицировать каждый запрос. Для работы с репозиториями задействована библиотека vcs, мета-данные о проектах могут хранится в БД на основе SQLite, PostgreSQL или других, поддерживаемых SQLAlchemy.

Основные изменения:

  • Добавлена поддержка безопасного сброса пароля с отправкой проверочного кода на указанный при регистрации email;
  • В интерфейсе работы со списком изменений расширены операции выборки по дате;
  • Улучшено отображение изменений статуса в комментариях, прекращено автоматическое создание записей 'No comments'. Обеспечено оперативное обновление ссылок на предыдущий и следующий комментарии.
  • Для Git добавлена поддержка клонирования на стороне сервера и получения данных по URL git://;
  • Конфигурационные файлы .ini снабжены комментариями с объяснением сути директив, выбором значений по умолчанию и примерами;
  • При обращении по HTTPS теперь всегда применяются защищённые cookies;
  • Выполнена чистка названий элементов меню. Изменены вводящие в заблуждение пункты 'Default Permissions', 'Repository Defaults' и 'Delegated Admin';
  • Возможность отправки pull-запросов, охватывающих произвольное число изменений;
  • Продолжен перевод интерфейса с фреймворка YUI на jQuery;
  • Прекращена поддержка старых браузеров, в том числе IE 8;
  • Добавлена поддержка версий Mercurial 3.5 и Pylons 1.0.2;
  • Устранена уязвимость CVE-2015-5285, позволяющая атакующему осуществить подстановку произвольных заголовков в ответ сервера через манипуляции с параметром came_from. Например запрос "/_admin/login?came_from=1%0d%0aX-Forwarded-Host%3a%20http://zeroscience.mk%01%02%0d%0aLocation%3a%20http://zeroscience.mk" приведёт к установке заголовков "X-Forwarded-Host: http://zeroscience.mk" и "Location: http://zeroscience.mk".


Источник: http://www.opennet.ru/opennews/art.shtml?num=43081