Notre projet fait environ 11 Go, dont 10 sont des données binaires (images .png). Par conséquent, une opération git diff
ou git status
prend plus d'une minute. Heureusement, tous les fichiers de données sont séparés dans un dossier avec le merveilleux nom data
. L'affectation est "Évitez de compresser, de différer et d'autres opérations coûteuses sur des fichiers binaires."
Il a été envisagé de diviser le projet en deux référentiels. Ce
data
serait alors un dépôt externe, qui est vérifié par le dépôt principal du code source. Il a été décidé que les frais généraux liés à la synchronisation des dépôts seraient trop importants, en particulier pour les artistes qui travaillent avec les fichiers de données.Dire explicitement à git que ces fichiers sont binaires , excluant les fichiers des différences ont été considérés, mais ceux-ci ne semblent être qu'une solution partielle à la question.
Je pense que les attributs git sont la solution, mais comment? Ou existe-t-il une meilleure architecture qu'un dépôt monolithique?
Réponses:
Vous pouvez utiliser git-lfs ou des outils similaires (git-fat, git-annex, etc.). Ces outils remplacent essentiellement les fichiers binaires de votre référentiel par un petit fichier texte avec des hachages et stockent les données binaires réelles de manière non git - comme un partage réseau.
Rend les différences et tout ultra-rapides car seuls les hachages sont comparés, et est - au moins pour git-lfs - transparent pour l'utilisateur (après l'installation une fois).
Afaik git-lfs est pris en charge par github, gitlab, VisualStudio et est open source.
la source
git-lfs
sur un projet avec de nombreux gigaoctets d'actifs avec une équipe mixte développeur / artiste? Je suis intéressé de savoir si les gens utilisent git-lfs pour des projets tels que les jeux et l'animation. Depuis son encore assez nouveau au moment de la rédaction. D'après ma propre expérience, la barrière d'entrée à git pour les utilisateurs moins techniques est déjà très élevée, donc avoir une couche supplémentaire pour la gestion des fichiers en plus - peut être difficile à utiliser pour les gens à moins qu'ils ne soient déjà à l'aise avec git.Utilisez les dépôts GIT et SVN
Si les fichiers binaires peuvent être séparés logiquement de la source, vous pouvez envisager d'utiliser git pour les fichiers texte et un non DVCS tel que subversion pour les fichiers binaires.
Un projet sur lequel je travaille fait cela car nous avons beaucoup de Go pour les bibliothèques par compilation (pour les dépendances OSX / Win32), dont nous devons garder la version.
D'un autre côté, si vous avez des utilisateurs non techniques, l'utilisation de deux systèmes de contrôle de version peut être problématique. Cependant, si les artistes ne travaillent pas sur du code, vous pouvez fournir un script pour effectuer la mise à jour et ils peuvent utiliser subversion pour valider des ressources binaires.
Utiliser SVN (avec
git svn
)Bien que ce compromis ne soit pas toujours aussi agréable pour les développeurs habitués à utiliser git normal, vous pouvez utiliser SVN pour le référentiel principal et les développeurs peuvent utiliser des
git svn
outils.Cela rend un peu plus de travail pour les développeurs utilisant git, mais signifie pour tous ceux qui ne sont pas familiers avec DVCS (ou VCS en général) - ils peuvent utiliser le modèle simple de SVN sans avoir à utiliser plusieurs systèmes de contrôle de version complexes.
git-lfs est également une option, mais je ne l'ai pas utilisée, je ne peux donc pas parler de son bon fonctionnement.
la source