2009-08-16 10 views
6

Cette question est posée par curiosité plus que pour quelque chose de pratique, mais puis-je avoir effectivement mon $ GIT_DIR être git: //example.com/repo.git/? Il n'y aurait donc pas de dossier .git - chaque commit, etc. passerait par le réseau.git sans dossier .git - un git-dir distant

modifier: Une utilisation potentielle cas pourrait être pour essayer de faire un simple "exportation" comme svn, mais il se trouve que la question réponse here

+0

Votre question est horriblement libellée, et la grammaire est telle que je connais peut-être la réponse, mais je n'arrive pas à comprendre la question. –

+0

Je suis d'accord. Je l'ai maintenant reformulé pour espérer être meilleur :) –

Répondre

3

$GIT_DIR, introduced in May 2005, est pour:

  • les deux SHA1_FILE_DIRECTORY spécifiant (était GIT_OBJECT_DIRECTORY, à savoir "$GIT_DIR/objects ")
  • GIT_INDEX_FILE (" $GIT_DIR/index")

Lorsque GIT_DIR n'est pas défini, il est par défaut ".git".

Il est destiné à être un chemin absolu ou un chemin relatif vers le répertoire de travail actuel, et non un chemin absolu http ou git.

Inspirés par cette post from Junio C. Hamano:

Certaines commandes ne fonctionnerait pas dans le cas plus tard.
Par exemple, "git diff <one-tree>" (représentant un moyen de différencier partie de l'arbre de travail vous êtes actuellement dans avec l'arbre donné) échouerait.
Remarque: ce n'est pas comme "git diff", qui fait la même chose avec l'index.
Avec ces commandes (et d'autres erreurs qui se produisent lorsque vous exécutez sans GIT_DIR en dehors de l'arborescence de travail), vous devez être dans le sous-répertoire qui vous intéresse. .

1

Non, il n'est pas possible d'avoir $ GIT_DIR distant (il n'est pas possible d'avoir un dépôt distant dans .git/objects/info/alternates). Git ne fonctionne pas comme ça.

2

Je voudrais postuler que si vous posez cette question, vous essayez peut-être de créer un problème à résoudre. Il suffit de penser à pourquoi vous auriez besoin d'avoir un référentiel git singulier que les gens peuvent lire et écrire directement à partir de leurs propres machines distantes, et essayez de les ajouter à la question, car il semble que pour tout le monde vous êtes essayer d'utiliser Git comme SVN. Et que terminera à l'agonie.

Pour commencer, si vous ne voulez pas faire un miroir profond complet juste pour créer un patch pour amont, s'il vous plaît prendre note de:

--depth <depth>
Créer un clone peu profond avec une histoire tronquée à le nombre spécifié de révisions. Un référentiel peu profond a un certain nombre de limitations (vous ne pouvez pas le cloner ou le récupérer, ni le pousser de ), mais est suffisant si vous êtes seulement intéressé par l'historique récent d'un grand projet avec un historique long , et Je voudrais envoyer des correctifs en tant que correctifs. (git help clone)

+1

Ce n'est pas si déraisonnable. Un domaine où Git lutte est avec beaucoup de très gros fichiers avec beaucoup de changements dans l'histoire. C'est-à-dire, où le répertoire .git/est TRÈS grand - beaucoup plus grand (peut-être) que la copie de travail. Par exemple, .git peut ne pas tenir sur un disque dur d'ordinateur portable mais la copie de travail peut. En outre, l'affiche n'a jamais mentionné le partage de ce dépôt distant (ce qui serait un problème) –

+0

Je dois être d'accord avec @Pat Notz. Je m'inquiète que vous vous précipitiez au jugement qu'il s'agit d'un problème "X Y". Rappelez-vous, juste parce que vous ne pouvez pas imaginer un cas d'utilisation ne signifie pas qu'il n'existe pas. Mais votre réponse est sacrément utile, étant donné que Git ne supporte pas cette fonctionnalité. –

2

Comme les autres ont noté, Git n'est pas écrit de travailler de cette façon. Cependant, je pense que vous pourriez avoir votre répertoire .git sur un montage réseau. Peut-être que vous pourriez monter le serveur distant comme un système de fichiers comme NFS ou sshfs. Ce n'est pas aussi général que vous le souhaiteriez, mais cela pourrait fonctionner dans certaines situations.

1

Solution possible (obtuse mais fonctionnelle): monter à distance le répertoire que vous souhaitez utiliser et relier votre répertoire .git au point de montage.

Questions connexes