Могу ли я создать несколько каталогов репозитория на сервере Bonobo GIT?

В Bonobo Git server 5.2.0.0 я изменил "Каталог репозитория" на что-то вроде D:\Git_Repositories,

Но он будет искать репозитории только непосредственно в этой папке и не будет распространять внутри нее папки внутри нее.

Например:

D:\Git_Repositories\PROJECT_A_Repos\Repository_1
D:\Git_Repositories\PROJECT_A_Repos\Repository_2
etc.

Можно ли это как-то сделать?
(Без создания нового приложения Bonobo для каждого каталога репозитория)

2 ответа

Решение

Можно ли это как-то сделать?

По текущей реализации нет:
Bonobo.Git.Server/Git/IGitRepositoryLocator.cs#IGitRepositoryLocator используется в Bonobo.Git.Server/Git/GitService/GitServiceExecutor.cs#ExecuteServiceByName() как так:

args += " \"" + repoLocator.GetRepositoryDirectoryPath(repositoryName).FullName + "\"";

Но ничто не мешает вам добавить больше интеллекта в Bonobo.Git.Server/Git/ConfigurationBasedRepositoryLocator.cs#GetRepositoryDirectoryPath(), убедившись в том, чтобы найти репозиторий имен подпапок +".git" вместо слепого объединения имени репо в фиксированную базовую папку.


Elyahu закончил ( в комментариях):

Я только что создал еще один сайт Bonobo, который использовал другую папку в качестве контейнера хранилища.
Основной сайт Bonobo составляет менее 40 МБ

Другое решение может быть сделать ссылку на другой каталог

Из каталога: C: \ inetpub \ wwwroot \ Bonobo.Git.Server \ App_Data введите следующую команду: MKLINK / D Репозитории D: \\ Репозитории

(для получения информации о MKLINK см.: https://technet.microsoft.com/en-us/library/cc753194(v=ws.11).aspx)

Моя проблема требовала 3 отдельных репозиториев, которые могли быть заблокированы группой AD. Эти репозитории также требовали физического и логического разделения в соответствии с политикой компании. Решение, которое я придумал, выглядит следующим образом.

Прежде всего, я отказался от всей реализации "виртуального приложения" и решил разместить все экземпляры на IIS с одним IP-адресом, создав новые веб-сайты IIS, привязанные к IP-адресу машины, с использованием привязок сайта через имя хоста, чтобы IIS мог разрешить к соответствующему экземпляру. Соответственно - для этого потребовалось 3 внутренние записи DNS. Если вы работаете локально, вам, вероятно, удастся отредактировать файл LMHost.

Пример:

  • Экземпляр 1 = git1.domain.com
  • Экземпляр 2 = git2.domain.com
  • Экземпляр 3 = git3.domain.com

После создания этих трех привязок я просто изменил web.config для проверки подлинности Windows AD, используя наши группы AD для сопоставления пользователей с Teams.

Что касается репозиториев, я поместил их в совершенно другой каталог вне веб-приложений и изменил настройки в Bonobo WebApp, чтобы они указывали на соответствующий репозиторий для этого экземпляра.

Пример:

  • Экземпляр 1 = Путь репо: D:\Repositories\Repo1, Security (ADGroup1, GitAdmin)
  • Экземпляр 2 = Путь репо: D:\Repositories\Repo2, Безопасность (ADGroup2, GitAdmin)
  • Экземпляр 3 = Путь репо: D:\Repositories\Repo3, Безопасность (ADGroup3, GitAdmin)

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

Тем не менее - я думаю, что для спонсора этого проекта было бы разумно рассмотреть возможность поддержки нескольких путей к репозиториям, потому что это, вероятно, более распространено в организациях, поддерживающих несколько местоположений дисков репозитория

Другие вопросы по тегам