2016-06-27 1 views
0

J'ai une machine virtuelle (boîte virtuelle) sur un hôte Windows exécutant Linux sur l'invité. J'ai un repo git sur le client avec le partage de fichiers mis en place avec Samba de telle sorte que c'est dans mes emplacements réseau. Je lance SourceTree en tant que client git depuis mon hôte Windows pour affecter le repo sur la machine virtuelle.Comment puis-je empêcher la corruption git sur la machine virtuelle Linux?

Le problème est que de temps en temps, les objets git sur mon invité sont corrompus. J'ai déjà trouvé (et continue à trouver) des moyens de réparer le repo git après qu'il est corrompu. Je l'ai réparé, et cela fonctionne. Le problème est que le correctif supprime mes modifications non validées, donc je dois sauvegarder à chaque fois.

Ma question est, comment, si possible, puis-je prévenir la corruption de ces objets git? Il convient de noter que: Je ne force pas l'arrêt de la machine virtuelle. J'ai essayé de désactiver l'actualisation automatique dans Source-Tree. Je suis conscient que je peux sauvegarder les fichiers git à la fin de chaque session de travail et éviter de perdre des progrès comme ça, mais c'est ennuyeux.

Je suis ouvert à toutes suggestions.

Répondre

1

Travailler avec deux exécutables git différents (un pour Windows et un pour Linux) sur le même référentiel est une mauvaise idée. Git est par nature un VCS distribué, donc vous pouvez profiter de cela. Ayez juste un clone du dépôt dans votre système de fichiers Windows, et un dans votre machine virtuelle Linux. Ensuite, vous avez un repo nu (git init --bare) sur votre VM Linux où vous pouvez pousser votre travail et tirer le travail de l'autre repo. Utilisez ssh à partir de l'hôte Windows pour pousser les modifications, pas samba. Sachez que s'il est possible de pousser directement entre deux référentiels non-nus, il n'est pas recommandé (par exemple, vous ne pouvez pas pousser vers la branche actuelle d'un référentiel non nu).

Si, par hasard, vous avez accès à un service git basé sur le Web (GitHub, Gogs, GitLab, ...), vous pouvez également l'utiliser pour pousser et tirer.

+0

Je ne travaille pas avec deux exécutables git différents. Je ne peux pas valider et pousser chaque fois que j'apporte une modification car le référentiel serait illisible sur bitbucket. – Silviu

+0

Pourquoi avez-vous votre repo à l'intérieur de la VM alors? – flyx

+0

Alors que la configuration est étrange, je fais le développement sur cet environnement de l'hôte plutôt que d'avoir les fichiers sur l'hôte. Je crois que j'indique dans la question de toute façon que j'utilise SourceTree dans l'hôte pour gérer le repo git de l'invité. – Silviu