Я ломал голову над этим и пришел к возможному выводу без решения. Во-первых, моя дилемма.
У меня есть проект, в котором я могу программно создать репо. Я могу отредактировать описание репо, установить ветку по умолчанию и т. Д. Это отлично.
Я также использую git daemon
для обслуживания папки, в которой хранятся все сгенерированные репозитории. Вот где возникает проблема.
Я могу клонировать репо, но клонированные репо .git
содержимое не соответствует исходному репо.
Единственное, о чем я могу думать, это то, что когда я создание эти репозитории я использую процесс git моей системы, но при клонировании я использую git daemon
процесс ... Я даже не уверен, что это имеет смысл, и часы моих поисков ничего не дали.
Для справки, вот команда, которую я запускаю, чтобы активировать git daemon
:
git daemon --reuseaddr --port=9999 --base-path=/Users/me/repos/ --export-all --verbose --enable=receive-pack --informative-errors --detach
Вот пример команды clone:
git clone git://localhost:9999/me/test18.git
И вот команды, которые я запускаю для создания репозиториев:
git init
git remote add origin git://localhost:9999/me/repo.git
git symbolic-ref HEAD refs/heads/magic
# more stuff
Эти вещи работают, мне просто нужно git daemon
чтобы обслуживать мои репозитории такими, какие они есть.
Вот пример содержимого .git/config
в репо, которое я создаю:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git://localhost:9999/me/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "coolerbranch"]
remote = origin
merge = refs/heads/coolerbranch
Вот тот же клонированный репо:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git://localhost:9999/me/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Как видите, [branch ...]
раздел не совпадает.
И наоборот, если есть другой git daemon
там, где я не нашел, я хотел бы услышать об этом. Несколько лет назад Github работал самостоятельно, но отказался от этого.
Кроме того, я изначально разместил этот вопрос на SO, но после дальнейшего поиска на других сайтах SE я понял, что SF имеет больше git-daemon
-этих вопросы.
Клонирование репо не копирует конфигурацию. Конфигурация в основном локальна для компьютера, пользователя или каталога.
Без этих знаний я предполагал, что будет способ заставить git синхронизировать начальную конфигурацию при клонировании. Настройки Git по умолчанию не могут быть переопределены сервером, только пользователем.
Возможно, когда-нибудь git разрешит эту опцию, скорее всего, нет. Ах хорошо.
Я не думаю, что клонированный .git должен соответствовать содержимому сервера .git. Для настройки сервера я бы рекомендовал вам следовать указаниям в книге https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.