Fazendo o daemon git servir o repositório que criei

Fazendo o daemon git servir o repositório que criei

Estive quebrando a cabeça com isso e cheguei a uma possível conclusão sem solução. Primeiro, meu dilema.

Tenho um projeto onde posso criar um repositório programaticamente. Posso editar a descrição do repositório, definir o branch padrão, etc. Isto é bom.

Também estou usando git daemonpara servir a pasta onde são mantidos todos os repositórios gerados. É aqui que entra o problema.

Consigo clonar o repositório, mas o .gitconteúdo do repositório clonado não corresponde ao repositório original.

A única coisa que consigo pensar é que quando estoucriandonesses repositórios estou usando o processo git do meu sistema, mas ao clonar estou usando o git daemonprocesso '... nem tenho certeza se isso faz sentido e minhas horas de pesquisa não resultaram em nada.

Para referência, aqui está o comando que executo para ativar git daemon:

git daemon --reuseaddr --port=9999 --base-path=/Users/me/repos/ --export-all --verbose --enable=receive-pack --informative-errors --detach

Aqui está um exemplo de comando clone:

git clone git://localhost:9999/me/test18.git

E aqui estão os comandos que executo para criar os repositórios:

git init
git remote add origin git://localhost:9999/me/repo.git
git symbolic-ref HEAD refs/heads/magic
# more stuff

Essas coisas funcionam, só preciso git daemonservir meus repositórios do jeito que estão.


Aqui está um exemplo do conteúdo do .git/configrepositório que eu crio:

[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

Aqui está o mesmo repositório clonado:

[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

Como você pode ver, a [branch ...]seção não corresponde.


Por outro lado, se houver outro git daemonpor aí que não encontrei, adoraria ouvir sobre ele. O Github trabalhava por conta própria há vários anos, mas o abandonou.

Além disso, postei originalmente esta pergunta no SO, mas depois de pesquisar mais em outros sites do SE, percebi que o SF tem git-daemonperguntas mais esquisitas.


@Zoredache:

Clonar um repositório não copia a configuração. A configuração é principalmente local para o computador, usuário ou diretório.

Sem esse conhecimento, eu presumia que haveria uma maneira de fazer com que o git sincronizasse a configuração inicial após a clonagem. Os padrões do Git não podem ser substituídos por um servidor, apenas pelo usuário.

Talvez o git permita essa opção algum dia, provavelmente não. Ah bem.

Responder1

Não acho que o .git clonado deva corresponder ao conteúdo do .git dos servidores. Para configurar um servidor, recomendo que você siga as instruções do livrohttps://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.

informação relacionada