
He estado devanándome los sesos con esto y llegué a una posible conclusión sin solución. Primero, mi dilema.
Tengo un proyecto donde puedo crear un repositorio mediante programación. Puedo editar la descripción del repositorio, configurar la rama predeterminada, etc. Esto esta bien.
También estoy usando git daemon
para servir la carpeta donde se guardan todos los repositorios generados. Aquí es donde entra en juego el problema.
Puedo clonar el repositorio, pero el .git
contenido del repositorio clonado no coincide con el repositorio original.
Lo único que puedo pensar es que cuando estoycreandoEn estos repositorios estoy usando el proceso git de mi sistema, pero al clonar estoy usando el git daemon
proceso ... Ni siquiera estoy seguro de que tenga sentido y mis horas de búsqueda no han arrojado nada.
Como referencia, aquí está el comando que ejecuto para activar git daemon
:
git daemon --reuseaddr --port=9999 --base-path=/Users/me/repos/ --export-all --verbose --enable=receive-pack --informative-errors --detach
A continuación se muestra un ejemplo de un comando de clonación:
git clone git://localhost:9999/me/test18.git
Y aquí están los comandos que ejecuto para crear los repositorios:
git init
git remote add origin git://localhost:9999/me/repo.git
git symbolic-ref HEAD refs/heads/magic
# more stuff
Estas cosas funcionan, solo necesito git daemon
entregar mis repositorios tal como están.
Aquí hay un ejemplo del contenido del .git/config
repositorio que creo:
[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
Aquí está el mismo repositorio 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 puedes ver, la [branch ...]
sección no coincide.
Por el contrario, si hay otro git daemon
por ahí que no he encontrado, me encantaría saberlo. Github había estado trabajando por su cuenta hace varios años pero lo abandonó.
Además, originalmente publiqué esta pregunta en SO, pero después de buscar más en otros sitios de SE, me di cuenta de que SF tiene git-daemon
preguntas más parecidas.
Clonar un repositorio no copia la configuración. La configuración es principalmente local para la computadora, el usuario o el directorio.
Sin este conocimiento, supuse que habría una manera de hacer que git sincronice la configuración inicial al clonar. Los valores predeterminados de Git no son anulables por un servidor, sólo por el usuario.
Quizás git permita esta opción algún día, lo más probable es que no. Ah bueno.
Respuesta1
No creo que el .git clonado deba coincidir con el contenido del .git del servidor. Para configurar un servidor, le recomendaría que siga las instrucciones del libro.https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.