Могу ли я создать несколько каталогов репозитория на сервере 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)
Единственный недостаток в том, что мне нужно управлять тремя веб-сайтами, а не одним. На самом деле меня это не беспокоит, поскольку это полностью соответствует требованиям политики компании, касающейся физической и логической изоляции различных репозиториев.
Тем не менее - я думаю, что для спонсора этого проекта было бы разумно рассмотреть возможность поддержки нескольких путей к репозиториям, потому что это, вероятно, более распространено в организациях, поддерживающих несколько местоположений дисков репозитория