wydanie systemu zarządzania repozytoriami , entuzjastami i przedstawicielami organizacji Software Freedom Conservancy w celu dalszego rozwoju otwartej bazy kodu RhodeCode, po tej platformy w półprywatny produkt komercyjny. Kallithea umożliwia wdrożenie infrastruktury zarządzania rozwojem, która obsługuje systemy kontroli wersji Git i Mercurial, a w rozwiązaniach przypomina GitHub, GitLab i Bitbucket. Kod projektu napisany jest w języku Python i jest licencjonowany na zasadach GPLv3.
Kallithea zawiera wysoko wydajny serwer obsługi żądań push/pull oraz interfejs webowy do organizacji wspólnego rozwoju, który pozwala zarządzać repozytoriami, dzielić uprawnienia, recenzować kod, monitorować aktywność innych uczestników, tworzyć forki projektów, przesyłać żądania pull lub edytować kod na miejscu, za pomocą prostego edytora. Wspierana jest integracja z centralną bazą użytkowników przedsiębiorstwa, opartą na LDAP lub ActiveDirectory. Wspierane jest tworzenie grup repozytoriów i grup programistycznych z ujednoliceniem zarządzania członkami grupy. Wygląd interfejsu można łatwo zmienić za pomocą systemu szablonów. Wspierane jest wizualne przedstawienie aktywności w postaci wykresów. W systemie przeglądania zmian wspierana jest dyskusja nad zmianami i wysyłanie powiadomień.
Część serwerowa platformy jest wielowątkowa, co pozwala na jednoczesne obsługiwanie kilku zapytań pull/push. Aby zwiększyć wydajność, system aktywnie wykorzystuje pamięć podręczną oraz asynchroniczne wykonywanie działań. System integruje narzędzia do tworzenia kopii zapasowych, które okresowo archiwizują i zapisują wszystkie dane za pomocą „scp”. Aby śledzić aktywność w repozytoriach, wspierana jest specjalna warstwa, która prowadzi dziennik wszystkich żądań i umożliwia autoryzację każdego zapytania. Do pracy z repozytoriami wykorzystana jest biblioteka , metadane o projektach mogą być przechowywane w SQLite, PostgreSQL lub innych bazach danych wspieranych w SQLAlchemy.
Główne zmiany:
- Umożliwiono dostęp do repozytorium za pomocą SSH, używając adresu URL w formacie „ssh://kallithea@example.com/name/of/repository”. Autoryzacja przy dostępie do repozytorium przez SSH odbywa się na podstawie klucza publicznego użytkownika (z dodatkową ochroną klucza hasłem lub bez, w zależności od preferencji użytkownika). Ładowanie klucza (~/.ssh/id_rsa.pub) na serwer odbywa się przez interfejs webowy Kallithea, który automatyzuje zapis klucza w pliku authorized_keys. Zaznacza się, że wydajność pracy z repozytorium przez SSH jest wyższa niż przy dostępie do repozytorium przez HTTPS.
- Dodano wsparcie dla rozproszonego systemu zarządzania wersjami Mercurial 5.2.
- Przebudowano funkcję „Admin > Ustawienia > Wizualne > (HTTP) Katalog klonowania URL”, której obsługiwacz teraz wyraźnie sprawdza obecność ciągów „{repo}” oraz „_{repoid}”.
- Przeprowadzono czyszczenie systemu uprawnień dostępu — uprawnienia są zawsze rozpatrywane jako dodatkowe, tzn. gwarantuje się, że każdy użytkownik ma co najmniej te same uprawnienia, co użytkownik domyślny.
- W pliku konfiguracyjnym zaprzestano wsparcia dla ustawienia api_access_controllers_whitelist. Uwierzytelnienie za pomocą klucza dostępu do API teraz automatycznie zapewnia dostęp do wszystkich API, do których użytkownik ma uprawnienia.
- Zaprzestano wsparcia dla Pythona 2.6. Obecnie obsługiwana jest tylko gałąź Pythona 2.7, ale programiści pracują nad zapewnieniem pełnego wsparcia dla Pythona 3.x.
- Usunięto funkcję blokady repozytorium (pull-to-lock, push-to-unlock).
Źródło: opennet.ru
