Comment puis-je envoyer un e-mail à quelqu'un dans un référentiel git?

84

J'ai essayé:

git archive HEAD --format=zip > archive.zip

: puis j'envoie un e-mail à archive.zip et à l'autre extrémité, ils décompressent archive.zip dans un dossier. Mais quand ils essaient des commandes git, ils découvrent que cela ne produit pas de référentiel git valide

appshare.co
la source
19
Pour les autres qui trouvent ceci: la raison pour laquelle git archive ne convient pas au travail est qu'elle ne fait que monter l'arborescence de travail. C'est pour faire des choses comme faire une archive tar de toutes vos sources, pour la distribution.
Cascabel

Réponses:

113

Vous pouvez utiliser git bundleet envoyer un seul fichier par e-mail

Voir " sauvegarde d'un projet utilisant git "

Un bundle git est juste un fichier qui peut être très facilement créé et à nouveau importé car il peut être traité comme une autre télécommande.

Une fois reçu, vous pouvez le cloner ou le récupérer à partir de ce fichier.

Comme mentionné dans " Sauvegarde du dépôt github ", vous voudrez probablement que le premier e-mail fasse votre bundle avec toutes les branches:

$ git bundle create /tmp/foo-all --all

Comme le mentionne Andreas dans les commentaires, Scott Chacon a récemment (mars 2010) écrit un article "mignon" sur ce sujet dans le blog ProGit :

Le petit paquet de joie de Git

VonC
la source
3
@Zubair: oui, toute l'histoire est sauvegardée, contrairement à git archive!
VonC
2
Merci. Je l'ai compris: git init, puis: git pull bundle.bdl master
appshare.co
6
@Zubair: le dégrouper? Vous pouvez simplement le cloner pour récupérer un dépôt git normal. Ou tirez-le dans un repo vide. Ce qui est, je vois maintenant, ce que vous avez fait;)
VonC
1
Voici un bon aperçu de la façon d'utiliser la commande bundle et de ce qu'elle fait: progit.org/2010/03/10/bundles.html
Andreas
2
@BVengerov Le lien est maintenant git-scm.com/blog/2010/03/10/bundles.html
VonC
4

Comme la réponse précédente l'a dit, git bundle est le moyen.

Si vous souhaitez créer un bundle en utilisant une seule branche (je préfère regrouper uniquement le maître) et en l'envoyant par e-mail, vous pouvez faire quelque chose comme ci-dessous:

$ git bundle create /tmp/mygitbackup.bundle master

Manu Manjunath
la source