2010-11-10 2 views
4

Récemment, j'ai ajouté des fichiers volumineux à mon dépôt local et j'ai poussé ces fichiers à l'extérieur vers d'autres dépôts. Après avoir réalisé cela, j'ai fait un peu de googling sur le sujet et j'ai complètement supprimé ces fichiers en utilisant git reset. J'ai aussi fait d'autres choses pour optimiser le repo (git gc, repack). Maintenant, ma copie locale du repo est inférieure à 100 Mo de plus de 400 Mo. Le problème est cependant, que mon repo sur le site heroku est toujours répertorié comme 400 Mo, et je ne suis pas vraiment sûr si theres quelque chose que je devrais, pour refléter tous les changements dans repo à distance?Comment optimiser un dépôt GIT à distance - principalement Heroku

+3

'git gc' appelle en interne' git repack', donc il n'est généralement pas nécessaire de reconditionner directement. – Cascabel

+0

Si vous pouvez vous permettre de le descendre, en mode maintenance, vous pourriez essayer de pousser un petit repo git à heroku, en l'écrasant. Vous aurez des avertissements, suivez-les pour forcer la poussée (je ne me souviens pas des détails). Puis forcez votre vrai repo là-haut. Ce n'est pas une vraie réponse car je ne sais pas comment git gc change votre histoire git avec ces fichiers .. – oma

Répondre

6

Comme avec le dépôt local, git gc est l'opération qui va nettoyer tous les objets libres (comme les blobs pour vos fichiers qui ne font plus partie de l'historique). Lorsque vous avez accès à la télécommande, vous pouvez le faire directement. S'il n'y a absolument aucun moyen de le faire, alors vous êtes bloqué en attendant que l'un de vos pushs se déclenche git gc --auto. C'est garanti pour arriver finalement, donc à moins qu'il y ait réellement un problème avec le repo prenant 400MB (par exemple payer plus pour l'hébergement), ce n'est pas vraiment un problème. N'importe qui récupérant/tirant/clonant du repo va juste obtenir ce qu'il doit obtenir, le 100MB.

Je crois que github exécute aussi périodiquement git gc sur des dépôts; Je ne sais pas si Heroku fait quelque chose comme ça.

+0

Github ne semble pas exécuter gc périodiquement (ou du moins, sur un référentiel sans activité) –

+0

@Romuald je pense il est en fait exécuté indirectement par git quand vous poussez. Je ne sais pas comment vous sauriez si elle est exécutée sur un référentiel distant sans activité - elle ne devrait pas produire de modifications visibles à côté de la taille du repo, et le repo ne peut pas être suffisamment remballé pour changer cela de manière significative . – Cascabel

Questions connexes