git sin la carpeta .git – un git-dir remoto

Esta pregunta se hace por curiosidad más que por cualquier cosa práctica, pero ¿puedo hacer que mi $ GIT_DIR sea git: //example.com/repo.git/? Así que no habría ninguna carpeta .git: cada compromiso, etc. pasaría por la networking general.

editar: Un posible caso de uso podría ser intentar hacer una simple "export" como svn, pero resulta que la pregunta se responde aquí.

$GIT_DIR , presentado en mayo de 2005 , es para:

  • especificando SHA1_FILE_DIRECTORY (era GIT_OBJECT_DIRECTORY , es decir, " $GIT_DIR/objects ")
  • GIT_INDEX_FILE (" $GIT_DIR/index ")

Cuando GIT_DIR no está definido, su valor pnetworkingeterminado es " .git ".

Se supone que es una ruta absoluta o una ruta relativa al directory de trabajo actual, no una ruta absoluta http o git.

Inspirado por este post de Junio ​​C. Hamano :

Algunos commands no funcionarían en el caso posterior.
Por ejemplo, " git diff <one-tree> " (que representa una forma de diferenciar la parte del tree de trabajo en la que se encuentra actualmente con el tree dado) fallaría.
Nota: esto no es como " git diff ", que hace lo mismo con el índice.
Con estos commands (y otros que GIT_DIR cuando se ejecuta sin GIT_DIR fuera del tree de trabajo), realmente se espera que esté en el subdirectory que le interesa.

Postularía que si hace esta pregunta, puede estar intentando crear un problema para resolver.

Solo piense por qué necesitaría tener un repository de git en particular para que la gente pueda leer y escribir directamente desde sus máquinas remotas, e intente agregarlo a la pregunta, porque parece que para todo el mundo está tratando de usar Git como SVN. . Y eso terminará en agonía.

Para empezar, si no quiere hacer un espejo profundo completo solo para crear un parche para el flujo ascendente, tome nota de:

--depth <depth>
Cree un clon superficial con un historial truncado al número especificado de revisiones. Un repository poco profundo tiene una serie de limitaciones (no puede clonar ni extraer de él, ni presionar desde adentro), pero es adecuado si solo está interesado en la historia reciente de un proyecto grande con una larga historia, y quisiera enviar arreglos como parches. ( git help clone )

Como los otros han notado, Git no está escrito para funcionar de esta manera. Sin embargo, creo que podría tener su directory .git en un assembly de networking. Quizás podría montar el server remoto como un sistema de files como NFS o sshfs . No es tan general como te gustaría, pero podría funcionar en algunas situaciones.

No, no es posible tener $ GIT_DIR remoto (ni es posible tener un repository remoto en .git/objects/info/alternates ). Git simplemente no funciona de esta manera.

Solución posible (obtusa, pero funcional): monte de forma remota el directory con el que desea trabajar y enlace de forma suave su directory .git al punto de assembly.