Une des choses que j'aime dans la façon dont j'ai configuré Subversion est que je peux avoir un seul référentiel principal avec plusieurs projets. Lorsque je veux travailler sur un projet, je peux vérifier uniquement ce projet. Comme ça
\main
\ProductA
\ProductB
\Shared
puis
svn checkout http://.../main/ProductA
En tant que nouvel utilisateur de git, je souhaite explorer un peu les meilleures pratiques dans le domaine avant de m'engager dans un flux de travail spécifique. D'après ce que j'ai lu jusqu'à présent, git stocke tout dans un seul dossier .git à la racine de l'arborescence du projet. Donc je pourrais faire une des deux choses.
- Configurez un projet distinct pour chaque produit.
- Configurez un seul projet massif et stockez les produits dans des sous-dossiers.
Il existe des dépendances entre les produits, de sorte que le projet unique et massif semble approprié. Nous utiliserons un serveur sur lequel tous les développeurs pourront partager leur code. Cela fonctionne déjà sur SSH et HTTP et cette partie que j'aime. Cependant, les référentiels dans SVN ont déjà une taille de plusieurs Go, donc traîner tout le référentiel sur chaque machine semble être une mauvaise idée - d'autant plus que nous sommes facturés pour une bande passante réseau excessive.
J'imagine que les référentiels de projet du noyau Linux sont tout aussi volumineux, il doit donc y avoir un moyen approprié de gérer cela avec Git, mais je ne l'ai tout simplement pas encore compris.
Existe-t-il des directives ou des meilleures pratiques pour travailler avec de très grands référentiels multi-projets?
git diff
et lesgit status
deux ont appris à prendre en compte les états des sous-modules même s'ils sont exécutés à partir du projet principal. Vous ne pouvez tout simplement pas manquer la modification du sous-module.GitSlave vous permet de gérer plusieurs dépôts indépendants en un seul. Chaque dépôt peut être manipulé par des commandes git normales, tandis que gitslave vous permet d'exécuter en plus une commande sur tous les dépôts.
Le repo-par-projet présente des avantages avec la mise en composants et des builds simplifiés avec des outils comme Maven. Repo-per-project ajoute une protection en limitant la portée de ce que le développeur est en train de changer - en termes de commits erronés de déchets.
la source