Avec SVN, j'avais un seul grand référentiel que je conservais sur un serveur et que je retirais sur quelques machines. C'était un très bon système de sauvegarde et cela m'a permis de travailler facilement sur n'importe laquelle des machines. Je pourrais vérifier un projet spécifique, commettre et mettre à jour le projet «maître», ou je pourrais vérifier le tout.
Maintenant, j'ai un tas de dépôts git, pour divers projets, dont plusieurs sont sur github. J'ai aussi le référentiel SVN que j'ai mentionné, importé via la commande git-svn ..
Fondamentalement, j'aime avoir tout mon code (pas seulement des projets, mais des extraits et des scripts aléatoires, certaines choses comme mon CV, les articles que j'ai écrits, les sites Web que j'ai créés, etc.) dans un grand référentiel que je peux facilement cloner à distance machines, ou clés USB / disques durs comme sauvegarde.
Le problème est que, puisqu'il s'agit d'un référentiel privé, et que git ne permet pas l'extraction d'un dossier spécifique (que je pourrais pousser vers github en tant que projet séparé, mais que les modifications apparaissent à la fois dans le référentiel maître et dans le sous-dossier. repos)
Je pourrais utiliser le système de sous-modules git, mais il n'agit pas non plus comme je le souhaite (les sous-modules sont des pointeurs vers d'autres référentiels, et ne contiennent pas vraiment le code réel, donc c'est inutile pour la sauvegarde)
Actuellement, j'ai un dossier de git-repos (par exemple, ~ / code_projects / proj1 / .git / ~ / code_projects / proj2 / .git /), et après avoir modifié proj1 git push github
, je copie les fichiers dans ~ / Documents / code / python / projects / proj1 / et faites un seul commit (au lieu des nombreux dans les dépôts individuels). Alors fais git push backupdrive1
, git push mymemorystick
etc.
Donc, la question: comment votre code personnel et vos projets avec les référentiels git, et les garder synchronisés et sauvegardés?
Je veux ajouter à la réponse de Damien où il recommande:
Vous pouvez configurer une télécommande spéciale pour pousser vers toutes les télécommandes réelles individuelles avec 1 commande; Je l'ai trouvé sur http://marc.info/?l=git&m=116231242118202&w=2 :
Vous pouvez également vous éviter de taper deux fois les URL en utilisant la contruction:
la source
Je suis également curieux de savoir comment gérer cela et je décrirai la configuration actuelle que j'utilise (avec SVN). J'ai essentiellement créé un référentiel qui contient une hiérarchie de mini-systèmes de fichiers comprenant ses propres répertoires bin et lib. Il y a un script à la racine de cet arbre qui configurera votre environnement pour ajouter ces répertoires bin, lib, etc ... aux variables d'environnement appropriées. Le répertoire racine ressemble donc essentiellement à:
Maintenant, dans / bin et / lib, il y a les multiples projets et leurs bibliothèques correspondantes. Je sais que ce n'est pas un projet standard, mais il est très facile pour quelqu'un d'autre dans mon groupe de récupérer le dépôt, d'exécuter le script 'setup_env.bash' et d'avoir les versions les plus à jour de tous les projets localement dans leur check-out. Ils n'ont pas à s'inquiéter de l'installation / de la mise à jour de / usr / bin ou / usr / lib et il est simple d'avoir plusieurs extractions et un environnement très localisé par caisse. Quelqu'un peut également simplement rm l'ensemble du référentiel sans se soucier de désinstaller des programmes.
Cela fonctionne bien pour nous, et je ne sais pas si nous allons le changer. Le problème avec ceci est qu'il y a de nombreux projets dans ce seul grand référentiel. Existe-t-il un moyen standard git / Hg / bzr de créer un environnement comme celui-ci et de décomposer les projets dans leurs propres référentiels?
la source
, Je n'ai pas encore essayé d'imbriquer des dépôts git parce que je n'ai pas rencontré de situation où j'en ai besoin. Comme je l'ai lu sur le canal #git, git semble être confus en imbriquant les dépôts, c'est-à-dire que vous essayez de git-init dans un dépôt git. La seule façon de gérer une structure git imbriquée est d'utiliser
git-submodule
ou de l'repo
utilitaire d'Android .Quant à cette responsabilité de sauvegarde que vous décrivez, je dis la déléguer ... Pour moi, je place généralement le référentiel «d'origine» de chaque projet sur un lecteur réseau au travail qui est régulièrement sauvegardé par les techniciens informatiques par leur stratégie de sauvegarde de choix. C'est simple et je n'ai pas à m'en soucier. ;)
la source
Qu'en est-il de l'utilisation de mr pour gérer vos multiples dépôts Git à la fois:
la source
Il existe une autre méthode pour avoir des dépôts git imbriqués, mais cela ne résout pas le problème que vous recherchez. Pourtant, pour les autres qui recherchent la solution, j'étais:
Dans le repo git de niveau supérieur, masquez simplement le dossier dans .gitignore contenant le repo git imbriqué. Cela facilite la création de deux dépôts git séparés (mais imbriqués!).
la source