Mon référentiel central est stocké sur une clé USB de 8 Go. J'ai accidentellement commis de gros fichiers, donc le dépôt ne tient plus sur le bâton. Y a-t-il un moyen de corriger cette situation?Comment garder un référentiel Mercurial petit?
Répondre
J'ai voté pour la réponse de catchyifyoutry car il a les étapes que vous utiliserez probablement, mais voici une liste pratique.
D'abord, cependant, un rappel. Si vous avez déjà placé ce référentiel en semi-public et que les utilisateurs ont extrait le référentiel, aucun des conseils ci-dessous ne fonctionnera. Quand ils poussent et que vous tirez, vous récupérez les changements d'origine dans leur forme non modifiée. Votre seul recours est de parler à chaque personne qui a un clone et demandez-lui de le supprimer et de le recloner. Cela dit, à la liste:
façons d'effacer les fichiers que vous avez commis sur un accident
- Si vous ne l'avez pas encore tiré ou quoi que ce soit commis d'autre:
hg rollback
agira comme un défont - Si vous êtes prêt à jeter les dernières révisions N:
hg clone -r -N repo-with-too-much repo-with-N-fewer changesets
# exemple:hg clone -r -2 big-repo small-repo
- Si votre changement a été trop longtemps pour l'un de ces être d'accord:
hg convert --filemap myfilemap.txt too-big-repo new-repo
Dans ce dernier cas myfilemap.txt
a en elle:
exclude path/to/file/to/remove
Notes:
- l'
clone -r
cas demande techniquement pour le clone minimal qui pourrait inclure la pointe-N révision, qui, si vous avez un repo branchy. Additionallpull -r
lignes (une par tête) sera nécessaire pour tirer sur l'autre histoire non linéaire. - Avec la solution
hg convert
, le hashcode de tous les changeset modifiés et de tous leurs descendants sera modifié.
Ne stockez jamais une chose aussi importante qu'un référentiel de code sur une clé USB. C'est une invitation à perdre tout votre code très bientôt! Acheter un disque dur externe avec suffisamment d'espace et au moins 2 disques séparés à l'intérieur, que vous pouvez mettre en miroir. Rangez-le de façon permanente quelque part et ne le transportez pas. Si vous avez besoin d'un autre accès, utilisez une connexion Internet sécurisée pour accéder à votre disque dur à distance.
Dans ma configuration, j'ai au moins 2 copies: une sur le disque dur de mon PC et une sur la clé USB. Chacun d'eux peut servir de sauvegarde. Je trouve cela suffisant. –
Le code vous appartient (ainsi que le choix) :) J'ai connu un pic électrique, qui a brûlé mon PC, y compris le disque dur interne, et tout ce qui est connecté sur les ports USB, y compris une clé USB ... –
frits tout ce qui est connecté aux ports USB, ne serait-ce pas tuer votre disque dur externe aussi? Je recommande personnellement de conserver un référentiel distant sur un service «cloud» tel que BitBucket. – StriplingWarrior
Vous pouvez restaurer le dernier commit avec les gros fichiers, si le commit est vraiment accidentel. Voir
hg help rollback
Bien sûr, cela ne fonctionne pas si vous avez commis d'autres choses importantes sur le dessus dans l'intervalle. Une autre façon serait d'utiliser strip pour supprimer la branche entière contenant les gros fichiers.
Faites attention, avant d'effectuer l'une de ces opérations, assurez-vous de bien comprendre ce que vous faites! Testez d'abord les commandes sur un référentiel de test ou un clone.
- 1. nettoyage d'un référentiel Mercurial
- 2. Un référentiel Mercurial peut-il habiter dans un autre référentiel Mercurial?
- 3. Symétrie un référentiel Mercurial dans Subversion?
- 4. Fusion du référentiel Mercurial distant
- 5. où est référentiel officiel mercurial
- 6. Comment définir un autre nom d'utilisateur par référentiel dans Mercurial?
- 7. Mercurial: Problème de conversion référentiel cvs Windows Mercurial
- 8. Spécification du proxy par référentiel pour Mercurial
- 9. Ajout de modifications d'un référentiel Mercurial à un autre
- 10. Comment afficher le diff mercurial entre local et référentiel?
- 11. Comment déplacer un référentiel Mercurial créé sur un ordinateur local vers un serveur Web?
- 12. Comment transférer un nouveau projet dans un multi-référentiel Mercurial partagé?
- 13. Référentiel Mercurial et fichiers avec des noms étranges
- 14. Lire le référentiel de mercurial à partir de PHP
- 15. Comment surveiller "check-in/push-es" dans un référentiel central Mercurial?
- 16. Comment configurer au mieux un référentiel central/plusieurs référentiels centraux pour Mercurial?
- 17. Comment lister tous les fichiers dans un référentiel dans Mercurial (hg)?
- 18. Comment déterminer un référentiel?
- 19. Mercurial valider des messages du référentiel local vers le référentiel central
- 20. Mercurial local ramifiant et poussant vers le référentiel partagé
- 21. Comment utiliser mercurial à partir de nant
- 22. Comment combiner deux projets dans Mercurial?
- 23. Que faire pour garder un petit projet Open Source actif et durable?
- 24. Comment copier un référentiel git dans un nouveau référentiel svn?
- 25. Est-ce que Mercurial crée un processus serveur lorsque vous créez un référentiel local?
- 26. Comment créer un référentiel générique
- 27. Comment créer un référentiel Subversion
- 28. Imageview - un petit problème
- 29. Un petit serveur Web
- 30. SML - un petit problème
Cette astuce --filemap ressemble exactement à ce dont j'ai besoin. Bien qu'un peu encombrant, cela devrait être nécessaire dans des cas exceptionnels. Merci beaucoup! –