Supprimer, déplacer et renommer

Subversion permet le renommage et le déplacement de fichiers et de dossiers. Des entrées de menu existent pour supprimer et renommer dans le sous-menu TortoiseSVN.

Figure 4.29. Menu contextuel de l'explorateur pour les fichiers non versionnés

Menu contextuel de l'explorateur pour les fichiers non versionnés


Supprimer des fichiers et des dossiers

Utiliser TortoiseSVNSupprimer pour effacer des fichiers ou répertoires dans subversion.

Lorsque vous utilisez la commande TortoiseSVNSupprimer sur un fichier, il est supprimé immédiatement de votre copie de travail tout en étant marqué pour suppression dans le dépôt jusqu'au prochain envoi au dépôt. Il s'affiche sur le dossier parent du fichier un icône « supprimé ». Jusqu'à ce que vous envoyez les modifications au dépot, vous pouvez toujours récupérer le fichier comme à l'origine si vous appelez TortoiseSVNRevenir en arrière sur le dossier parent.

Lorsque vous utilisez la commande TortoiseSVNSupprimer sur un répertoire, il est conservé dans votre copie de travail, mais l'icône change pour indiquer qu'il est marqué pour suppression. Jusqu'à ce que vous envoyez les modifications au dépôt, vous pouvez revenir en arrière et récupérer le dossier en faisantTortoiseSVNRevenir en arrière sur le dossier lui-même. Cette différence de comportement entre les fichiers et dossiers est une caractéristique de Subversion, pas de TortoiseSVN.

Si vous voulez supprimer un élément dans le dépôt, mais le conserver localement comme un fichier/répertoire sans version, utilisez Menu Contextuel AvancéSupprimer (conserver localement). Vous devez tenir la touche Maj enfoncée tout eeffectuant un clic droit avec la souris sur l'élément désiré dans le volet de l'explorateur (volet droit) afin de voir dans le menu contextuel avancé.

Si un fichier est supprimé via l'explorateur au lieu d'utiliser le menu contextuel TortoiseSVN, la boîte de dialogue Livrer affiche ces fichiers et vous laisse aussi les supprimer du contrôle de version avant la livraison. Cependant, si vous mettez à jour votre copie de travail, Subversion découvrira le fichier manquant et le remplacera par la dernière version du dépôt. Si vous devez supprimer un fichier sous contrôle de version, utilisez toujours TortoiseSVNSupprimer pour que Subversion n'ait pas à deviner ce que vous voulez vraiment faire.

Si un dossier est supprimé via l'explorateur au lieu d'utiliser le menu contextuel TortoiseSVN, votre copie de travail sera cassée et vous serez incapables de livrer. Si vous mettez à jour votre copie de travail, Subversion remplacera le dossier manquant avec la dernière version du dépôt et vous pourrez alors le supprimer correctement en utilisant TortoiseSVNSupprimer.

Récupérer un fichier ou un répertoire supprimé

If you have deleted a file or a folder and already committed that delete operation to the repository, then a normal TortoiseSVNRevert can't bring it back anymore. But the file or folder is not lost at all. If you know the revision the file or folder got deleted (if you don't, use the log dialog to find out) open the repository browser and switch to that revision. Then select the file or folder you deleted, right click and select Context MenuCopy to... as the target for that copy operation select the path to your working copy.

Déplacer des fichiers et des dossiers

Si vous voulez faire un simplement renommer un fichier ou un dossier, utilisez Menu contextuelRenommer... Entrez le nouveau nom de l'objet et vous avez terminé.

Si vous voulez déplacer des fichiers dans votre copie de travail, peut-être à un sous-dossier différent, utilisez le glisser-déposer par clic-droit :

  1. sélectionnez les fichiers ou les répertoires que vous voulez déplacer

  2. glissez-déplacez les avec le bouton droit vers le nouvel emplacement dans la copie de travail

  3. relâchez le bouton droit de la souris

  4. Dans le menu qui apparaît, sélectionnez Menu contextuelSVN Déplacer les fichiers dans Subversion ici

Livrez le répertoire parent

Puisque les renommages et les déplacements sont gérés comme une suppression suivie d'un ajout vous devez livrer le dossier parent du fichier renommé/déplacé pour que la partie supprimée du renommage/déplacement apparaisse dans la boîte de dialogue Livrer. Si vous ne livrez pas la partie supprimée du renommage/déplacement, il restera dans le dépôt et une mise à jour par vos collègues ne supprimera pas le vieux fichier. C'est-à-dire qu'ils auront les deux, les vieilles et les nouvelles copies.

Vous devez livrer un renommage de dossier avant de changer l'un des fichiers de ce dossier, autrement votre copie de travail peut être vraiment salie.

Another way of moving or copying files is to use the Windows copy/cut commands. Select the files you want to copy, right click and choose Context MenuCopy from the explorer context menu. Then browse to the target folder, right click and choose TortoiseSVNPaste. For moving files, choose Context MenuCut instead of Context MenuCopy.

Vous pouvez aussi utiliser le navigateur du dépôt pour déplacer des éléments.

Ne faites pas SVN Déplacer sur les externes

Vous ne devriez pas utiliser les commandes Déplacer ou Renommer de TortoiseSVN sur un dossier qui a été créé en utilisant svn:externals. Cette action causerait la suppression de l'élément externe de son dépôt parent, en dérangeant probablement beaucoup d'autres personnes. Si vous devez déplacer un dossier externe, vous devez utiliser un déplacement ordinaire, ajuster ensuite les propriétés svn:externals des répertoires parents de la source et de la destination.

Gestion des conflits de nom de fichier.

Dans le cas où vous avez deux fichiers dans le dépôt avec le même nom mais qui ne diffèrent qu'avec la casse (par exemple TEST.TXT et test.txt), vous ne pouvez plus mettre à jour ou extraire le répertoire parent sous Windows. Bien que Subversion supporte la casse sur les noms de fichiers, avec Windows cela n'est pas possible.

Cela arrive parfois, lorsque deux personnes envoi les modifications au dépôt, à partir de copies de travail séparées, les fichiers qui se trouvent avoir le même nom, mais avec une casse différence. Cela peut également être le cas lorsque les fichiers sont envoyés au dépôt depuis un système gérant par défaut la casse de fichiers, comme Linux.

Dans ce cas, vous devez décider lequel des deux vous voulez conserver et supprimer (ou renommer) l'autre du dépôt.

Éviter que deux fichiers aient le même nom

Il existe un script hook pour le serveur disponible à : http://svn.collab.net/repos/svn/trunk/contrib/hook-scripts/ qui préviendra les livraisons qui résultent en conflits de casse.

Réparer les renommages de fichier

Parfois, votre environnement de développement va renommer des fichiers pour vous dans le cadre d'une restructuration des sources, et bien sûr il ne le dit pas à Subversion. Si vous essayez d'envoyer au dépôt vos modifications, Subversion peut voir l'ancien nom de fichier comme manquant et le nouveau pas encore versionné. Vous pourriez simplement ajouter le nouveau nom de fichier dans le dépôt, mais on perdrait alors l'historique, Subversion ne sait pas que les fichiers sont liés.

Une meilleure solution est d'informer Subversion que ce changement est en fait un renommage, et vous pouvez le faire par les boites de dialogues Livrer et Vérifier les modifications. Il suffit de sélectionner à la fois l'ancien nom (manquant) et le nouveau nom (sans version) et d'utiliser Menu contextuelRéparation Déplacer pour lier les deux fichiers en tant qu'un renommé.

Supprimer les fichiers non versionnés

Généralement vous devrez placer votre liste de fichiers ignorés tel que tous les fichiers générés sont ignorés dans Subversion. Mais que faire si vous souhaitez effacer tous les éléments ignorés pour produire une génération propre? Habituellement, vous devez définir cela dans votre makefile, mais si vous débogez le makefile ou changez le système de construction, il est utile d'avoir un moyen de nettoyer la plate-forme.

TortoiseSVN fournit juste une telle option à l'aide Menu contextuel EtenduSupprimer les éléments non versionnés.... Vous devez tenir enfoncé la touche Maj tout en effectuant un clic droit sur un dossier dans le volet de l'explorateur (volet droit) afin de le voir apparaitre dans le menu contextuel étendu. Cela a pour effet d'ouvrir une boîte de dialogue qui répertorie tous les fichiers non versionnés n'importe où dans votre copie de travail. Vous pouvez ensuite sélectionner ou désélectionner les éléments à enlever.

Lorsque ces éléments sont supprimés, la corbeille est utilisée, donc si vous faites une erreur ici et supprimez un fichier qui aurait dû être versionné, vous pouvez toujours le récupérer.