Заставить демона git служить репо, который я создал - PullRequest
0 голосов
/ 29 января 2020

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

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

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

As Вы можете видеть, что раздел [branch ...] не совпадает.


И наоборот, если есть еще один git daemon, который я ч не найдено, я хотел бы услышать об этом. Github работал самостоятельно несколько лет go, но отказался от него.


@ Zoredache :

Клонирование репо не копирует конфигурацию. Конфигурация в основном локальна для компьютера, пользователя или каталога.

Без этого я предполагал, что будет способ заставить git синхронизировать c исходную конфигурацию при клонировании , По умолчанию Git не может быть переопределено сервером, а только пользователем.

Возможно, git когда-нибудь разрешит эту опцию, скорее всего, нет. Ах, хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...