2012-07-29 3 views
2

J'ai un projet sur lequel je travaille et j'utilise TortoiseSVN pour le contrôle de version (le plus récent). Je suis la seule personne à avoir travaillé sur le projet.La copie de travail locale SVN a un fichier qui a été supprimé sur le serveur

Il y a quelque temps, je me déplaçais dans le dossier et les dossiers de ce projet. L'historique des versions m'indique qu'un seul commit était responsable du déplacement et de la suppression de certains fichiers. Comme ceci:

PATH     ACTION  COPY FROM FOLDER 
===================================================== 
/some/folder   REPLACING /some/other/folder 
/some/folder/file1 DELETED 
/some/folder/file2 DELETED 

Maintenant c'est une erreur de ma part. Je n'ai jamais voulu supprimer ces deux fichiers. C'était censé être juste une opération de copie. Mais pas de soucis, non? C'est un contrôle de la source après tout.

Cependant, maintenant il y a de l'étrangeté ici. Quand je regarde /some/folder, je vois que les file1 et file2 sont toujours là. Non seulement cela, ils sont toujours marqués comme sous contrôle de révision. Tortoise croit pleinement qu'ils font partie de ma copie de travail locale. Essayer d'afficher l'historique des fichiers a également donné une erreur sur une URL incorrecte, jusqu'à ce que j'ai effectué "Clean-up" sur la copie de travail.

Maintenant, je peux voir l'historique des fichiers, mais le dernier commit indique toujours qu'ils ont été supprimés, et effectuer une mise à jour sur un autre ordinateur ne place pas les fichiers là. En outre, les modifications apportées à ces fichiers ne peuvent pas être validées.

WTF? O_o

Mise à jour: Ce que j'aimerais savoir, c'est comment et pourquoi cela est arrivé. C'était probablement ma faute, puisque j'ai fait beaucoup de changement de nom de fichier, y compris des choses comme la suppression d'un dossier et la copie d'un autre dossier à sa place, le tout dans le même commit. Mais il ne devrait toujours pas créer une telle confusion. Et alors? En ce qui concerne la fixation, je suppose que je pourrais le faire moi-même. Je peux juste télécharger une autre copie de travail et ajouter les fichiers à travers cela, la fin de l'histoire. Mais dans ce cas, je veux comprendre ce qui l'a causé, comment le reproduire, et si je devrais peut-être soumettre un bug à l'équipe SVN. : P

+0

Que voudriez-vous faire? Voulez-vous restaurer ces fichiers? Ou avez-vous encore des problèmes avec notre répertoire de travail? –

+0

@DavidW. - Mise à jour de la question. –

Répondre

2

Pourquoi cela est-il arrivé? C'est une question difficile à répondre. Cependant, je sais que ce genre de choses arrive souvent avec TortoiseSVN. Ce n'est pas tellement un problème avec le programme, mais généralement en raison d'une erreur humaine.

TortoiseSVN utilise l'interface de Windows Explorer, ce qui peut poser un problème. Dans l'explorateur, je suis habitué à renommer, glisser et déposer, et à supprimer des fichiers en appuyant sur un bouton. Malheureusement, aucune de ces choses que j'ai tendance à faire avec Explorer ne fonctionne avec Subversion. Avec TortoiseSVN, si je veux déplacer un fichier qui se trouve dans mon répertoire de travail, je dois utiliser le menu contextuel TortoiseSVN. Si je veux renommer un fichier, je dois aller au menu contextuel de TortoiseSVN. C'est une rupture dans la façon dont j'interagis normalement avec Explorer, et c'est très facile à oublier. Une chose dont vous devez vous souvenir est qu'une copie de travail peut ne pas être elle-même sur la même révision. Différents dossiers et même des fichiers différents peuvent être à différentes révisions. Vous pouvez facilement voir un fichier qui n'existe plus dans le référentiel s'il s'avère que le dossier que vous regardez est à une révision antérieure à celle du référentiel.

En fait, c'est un autre problème que j'ai avec TortoiseSVN. TortoiseSVN ne vous transmet pas vraiment ce type d'information. Par ailleurs, j'utilise TortoiseSVN sous Windows.Cependant, je dois me tenir au courant des problèmes que j'ai mentionnés lorsque je l'utilise, sinon je trouve que mon référentiel et mon répertoire de travail ne sont pas en parfait accord. J'utilise fortement le client en ligne de commande fourni avec TortoiseSVN. Je trouve que le client en ligne de commande peut être plus informatif et plus facile à synchroniser. Je recommande à quiconque utilise TortoiseSVN d'apprendre le client en ligne de commande et de l'utiliser dans des situations où TortoiseSVN peut vous égarer. 90% de mes validations sont effectuées via le client en ligne de commande, et je fais beaucoup de commandes svn status avec le client en ligne de commande. Je trouve qu'il garde TortoiseSVN en échec.


une chose:. Ne copiez pas les fichiers en arrière et les ajouter dans Subversion, ce sont des fichiers nouveaux sans histoire qui leur est associée. Pour vous, il y a une continuation du fichier précédent. Dans quelques semaines, l'hilarité s'ensuivra quand vous découvrirez soudainement que quelque chose ne va pas avec une fusion.

Au lieu de cela, copiez le fichier de l'ancienne révision du répertoire de travail courant:

$ svn cp -r30 ^/trunk/[email protected] . 

Cela permettra de relier la révision 30 (en supposant que fut la dernière révision de ce fichier avant qu'il ne soit supprimé) au travail en cours copie. L'historique sera correct, et vous et Subversion serez d'accord sur le statut de ce fichier.

+0

1) J'ai utilisé l'interface Tortoise pour déplacer/renommer; 2) La copie de travail est la même révision tout au long - j'ai effectué une mise à jour. 3) Merci pour la suggestion de les restaurer à partir de la dernière révision, ils étaient encore entiers. 4) Je suis la seule personne sur le projet, et il n'y a pas de branches, donc il n'y aura pas de fusion (mais quand même, j'aime garder l'historique propre). –

Questions connexes