2010-04-24 7 views
5

J'utilise git comme outil de sauvegarde et 'profil itinérant' pour mon répertoire $ HOME entre portable et desktop.Git ignore les répertoires .git dans les sous-répertoires

Mon problème est que sous mon $ HOME j'ai un répertoire de développement avec plusieurs projets git sur lesquels je travaille. Git ne me permettra pas d'ajouter les dossiers de sous-répertoires .git. Donc, pour m'engager dans ces projets, je dois pousser les changements dans mon repo git $ HOME, tirer sur un ordinateur portable (où ils ont été créés et .git dir exsits) et valider. J'ai lu des sous-modules, mais ce n'est pas vraiment ce que je veux. Je veux juste que les dossiers enfants .git soient traités comme n'importe quel ancien répertoire afin que je puisse les déplacer et les sauvegarder.

Quelqu'un at-il fait cela ou avoir une idée de comment je le ferais?

+4

imho, c'est probablement le mauvais outil pour le travail. Si vous voulez synchroniser votre ordinateur portable et votre bureau, vous devriez peut-être regarder à l'unisson. Si vous voulez mettre à jour tout le travail que vous faites dans $ HOME, l'option la plus simple est rsyncs, mais bien sûr ce n'est pas incrémentiel. vous auriez besoin d'un produit de sauvegarde incrémentielle, ou vous pouvez pirater quelque chose en utilisant rsync et git –

+0

@Igor: Je suis d'accord, généralement. Vous n'avez pas forcément besoin de rsync les repos git, vous pouvez facilement écrire un moyen de les pousser/tirer/les mettre à jour en masse, même si vous décidez que les sous-modules ne sont pas les bons (bien qu'ils puissent probablement fonctionner objectif). – Cascabel

+0

rsnapshot peut faire la chose incrémentale. Honnêtement, sous-modules est ce que vous devriez utiliser. Je voudrais juste écrire un script pour transférer tous les repos. pourquoi voulez-vous mettre à jour les objets git de toute façon? juste pour faciliter le transfert? utiliser autre chose. aussi ce n'est pas une question SO, il devrait être sur SUPERUSER. pourquoi les gens posent toutes ces questions de non-programmation sur le SO. – xenoterracide

Répondre

0

Je recommande un script qui serait la première sauvegarde tous les .git projets que vous avez sous votre répertoire $ HOME: il produira un fichier de sauvegarde (toujours sous votre répertoire $ HOME)
Voir git bundle pour plus.

Et puis, vous pouvez ajouter/mettre à jour les sauvegarde (ou « paquet ») des fichiers sur votre principale git (qui contient tous vos $HOME à l'exception des projets .git)

Enfin, vous pouvez exporter tous votre $ HOME comme un fichier avec la même technique de sauvegarde Git (git bundle).

0

Dans le passé, j'ai utilisé gibak, un outil de sauvegarde Git. En plus de prendre soin des attributs de fichiers, il s'occupe également des dépôts Git dans votre répertoire personnel.

Un avertissement cependant. Je l'ai utilisé pendant un moment, mais parfois la sauvegarde est devenue corrompue. Je n'ai pas étudié cela, mais je soupçonne que cela a à voir avec le fait que les applications en cours écrivent constamment des données dans votre répertoire personnel. À un certain moment, les hachages ne correspondent pas et vous devez faire quelques choses intelligentes afin de le réparer (ou commencer une nouvelle sauvegarde).

Au moins, essayez-le, cela peut fonctionner pour vous. Le problème que j'ai mentionné pourrait aussi être causé par Git. Depuis que j'ai essayé il y a 1,5 ans, il pourrait être réparé entre-temps.

2

Ne le faites pas. C'est une mauvaise idée car vous créez une sauvegarde versionnée d'un référentiel versionné. Il suffit de créer une sauvegarde par rsync (vous pouvez toujours version le parent en utilisant git)

2

Personnellement, j'utilise git pour synchroniser certains fichiers point comme .profile ou .vimrc. Pour éviter des problèmes comme le vôtre, mon git se trouve dans $ HOME/point et les fichiers individuels sont symétriques dans $ HOME.

Questions connexes