2009-08-16 23 views
6

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 red general.git sin la carpeta .git - un git-dir remoto

edición: Un posible caso de uso puede ser para tratar de hacer un simple "exportación" como SVN, pero resulta que esa pregunta se responde here

+0

Su pregunta está horrendamente redactada, y la gramática es tal que posiblemente conozca la respuesta, pero no puedo entender la pregunta. –

+0

Estoy de acuerdo. Ahora lo he reformulado para que sea mejor :) –

Respuesta

3

$GIT_DIR, introduced in May 2005, es para:

  • especifica tanto SHA1_FILE_DIRECTORY (WAS GIT_OBJECT_DIRECTORY, es decir, "$GIT_DIR/objects ")
  • GIT_INDEX_FILE (" $GIT_DIR/index")

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

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

inspirado en este post from Junio C. Hamano:

Algunos comandos no funcionarían en este último caso.
Por ejemplo, "git diff <one-tree>" (que representa una forma de diff la parte del árbol de trabajo que están actualmente en con el árbol dado) fallaría.
Nota: esto no es como "git diff", que hace lo mismo con el índice.
Con estos comandos (y otros que dan error al ejecutar sin GIT_DIR fuera del árbol de trabajo), realmente se espera que sea en el subdirectorio que le interese. .

1

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

2

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

Solo piense en por qué necesita tener un repositorio de git en particular, las personas pueden leer y escribir directamente desde sus propias máquinas remotas, y tratar de agregarlas a la pregunta, porque parece para todo el mundo que usted es tratando de usar Git como SVN. Y que será final en agonía.

Para empezar, si usted no quiere hacer un espejo de profundidad completa sólo para crear un parche para aguas arriba, por favor tome nota de:

--depth <depth>
Crear un clon sin profundidad con una historia trunca a el número especificado de revisiones. Un depósito poco profundo tiene varias limitaciones (no puede clonar ni recuperar, ni presionar desde ), pero es adecuado si solo está interesado en la historia reciente de un proyecto grande con un largo historial de , y querría enviar correcciones como parches. (git help clone)

+1

No es tan irracional. Un área donde lucha Git es con muchos archivos muy grandes con muchos cambios en la historia. Es decir, donde el directorio .git/es MUY grande, mucho más grande (posiblemente) que la copia de trabajo. Por ejemplo, .git puede no caber en un disco duro de la computadora portátil pero la copia de trabajo podría. Además, el cartel nunca mencionó compartir ese repositorio remoto (que sería un problema) –

+0

Tengo que estar de acuerdo con @Pat Notz. Me preocupa que estés apresurándote a juzgar que este es un problema de "X Y". Recuerde, solo porque no pueda imaginar un caso de uso no significa que no exista. Pero su respuesta es bastante útil, dada la realidad de que Git simplemente no admite esta función. –

2

Al igual que los otros han señalado, Git no está escrito para trabajar de esta manera. Sin embargo, creo que podría tener su directorio .git en un montaje de red. Quizás podría montar el servidor remoto como un sistema de archivos como NFS o sshfs. No es tan general como te gustaría, pero podría funcionar en algunas situaciones.

1

Solución posible (obtusa, pero funcional): monte de forma remota el directorio con el que desea trabajar y vincule suavemente su directorio .git al punto de montaje.

Cuestiones relacionadas