Pull to refresh

Еще один open source аналог Github

Reading time 2 min
Views 20K
На данный момент времени, есть следующие альтернативы github:
  • Сам github fi (стоит 5000$, не open source)
  • Gitorious (open source, написан на RoR, использует ActiveMQ, короче — зверь машина)
  • Недавно появившийся gitlab (open source, написан на ruby)

В этот список я хотел бы добавить мое приложение. Может быть, оно еще кому то пригодится. Что у него внутри:

  • Написан на Scala
  • Используется Lift
  • Хранилище — MongoDB
  • «Своя» реализация git, ssh, http демона. Первый с иcпользованием Apache Mina Core, а второй Mina SSHD, последний с Rest из Lift
  • Для работы с git используется JGit

Могу похвастаться, что ставится проще чем конкуренты (что на linux, что на windows, при условии наличия Mongo):
$ git clone git://github.com/btd/luna.git
$ cd luna
$ sbt package
$ mkdir  $JETTY_HOME/repo (дефолтовая папка для хранения пользовательских реп)
$ mv ./target/scala-2.9.1.final/получившийся.war $JETTY_HOME/webapps/

Честно говоря не могу похвастаться тем, что все идеально работает — баги есть, стараюсь исправлять по мере нахождения.
Сейчас мое приложение умеет следующие вещи:
  • Управление пользователями. Пользователи могут добавлять себе репозитории, добавлять к репозиториям коллабораторов.
  • Управление репозиториями. Можно задавать отдельные ключи для репозитория, форкать. Публичный/приватный репозитории
  • Пулл реквесты
  • История коммитов, просмотр дерева исходников на коммите и просмотр diff
  • Доступ по ssh (чтение и запись), git(чтение), http(чтение и запись)
  • Оповещения о пушах на email. Используется camel так, что на практике можно добавить другие транспорты.

Profit для меня:
  • Изучил scala и lift (это мое первое приложение на scala)
  • Узнал кучу нового о git
  • Изучил библиотеку Apache Mina, Apache Camel, JGit. Открывал issue, добавлял функционал (патчи приняли).
  • Еще один конкурент системам, приведенным вначале статьи



Ссылки и уточнения:
Tags:
Hubs:
+47
Comments 37
Comments Comments 37

Articles