Заставить git daemon обслуживать созданный мной репозиторий

Заставить git daemon обслуживать созданный мной репозиторий

Я над этим голову ломал и пришел к возможному выводу без решения. Во-первых, моя дилемма.

У меня есть проект, в котором я могу программно создать репозиторий. Я могу редактировать описание репозитория, устанавливать ветку по умолчанию и т. д. Это нормально.

Я также использую 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

Вот пример команды клонирования:

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 позволит такую ​​возможность, скорее всего, нет. Ну что ж.

решение1

Я не думаю, что клонированный .git должен соответствовать содержимому .git сервера. Для настройки сервера я бы рекомендовал вам следовать указаниям в книгеhttps://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.

Связанный контент