Суть такова, что мы в нашей конторе не можем размещать свои проекты на GitHub, Bitbucket или любом другом сервере в интернете. Разработчики сидят во внутренней сети и доступ в интернет отсутствует. Но центральный репозиторий необходим, и для этого отлично подходит SCM-Manager (или SCM-Server, как он там называется).

Сайт проекта: https://www.scm-manager.org/, и также проект есть на Bitbucket. Вообще, вся информация есть в документации, но я решил написать и свою инструкцию.

Загрузить приложение можно здесь. Я взял .zip вариант.

Установка простая - надо распаковать архив туда, где приложение будет лежать и работать, например по пути D:\scm-server\.

Далее по желанию можно задать порт, на котором будет работать сервер. По умолчанию 8080, но я захотел изменить на 8888. Для этого надо в файле D:\scm-server\conf\server-config.xml изменить значение:

<Set name="port">
  <SystemProperty name="jetty.port" default="8888" />
</Set>

Затем нужно установить сервер как службу. Для этого открыть cmd.exe, пройти по пути D:\scm-server\bin\ и выполнить команду scm-server install:

Установка службы scm-server

Эта команда установит новую службу, которая и будет являться сервером. И да, если у вас x64, то JRE (а сервер написан на Java) тоже должна стоять x64, иначе сервер не стартует.

Для запуска надо открыть Службы (Пуск -> Выполнить -> services.msc). Найти в списке scm-server, в свойствах задать автоматический запуск и стартовать службу:

Запуск службы scm-server

После старта автоматически создадутся всякие папки и файлы по пути системной учётной записи, примерно тут: C:\Windows\system32\config\systemprofile\.scm. Я, например, хочу хранить всё это в другом месте (в D:\scm\), и чтобы это сделать, надо надо остановить службу и пойти внести изменения в ещё один конфиг, у меня это D:\scm-server\work\webapp\WEB-INF\classes\scm.properties:

# path to the SCM-Manager base directory
scm.home = D:\\scm\\

После этого файлы из C:\Windows\system32\config\systemprofile\.scm можно удалить, ну или переместить в новое только что указанное место.

Всё, теперь сервис можно стартовать и заходить проверять: http://localhost:8888 (по умолчанию логин и пароль scmadmin/scmadmin). Само собой, вместо localhost у вас должно быть сетевое имя или IP-адрес сервера.

Ну и вот так это выглядит:

Веб-интерфейс SCM-Manager

На скриншоте можно видеть тестовый репозиторий, который я создал. И кстати, нашёл одну фигню, которой не замечал раньше - если при создании репозитория указать e-mail вида 1@1.net, то будет ошибка. Я уж было подумал, что накосячил с путями в конфигах, но нет, с почтой test@mail.net репозиторий создался нормально.

Ссылку на созданный серверный репозиторий теперь можно добавить в локальные на компьютерах разработчиков. Например, через GitExtensions:

Добавление серверного репозитория