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.33. 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

Utilisez TortoiseSVNSupprimer pour enlever des fichiers ou des dossiers de Subversion.

When you TortoiseSVNDelete a file or folder, it is removed from your working copy immediately as well as being marked for deletion in the repository on next commit. The item's parent folder shows a « modified » icon overlay. Up until you commit the change, you can get the file back using TortoiseSVNRevert on the parent folder.

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é.

If an item is deleted via the explorer instead of using the TortoiseSVN context menu, the commit dialog shows those items as missing and lets you remove them from version control too before the commit. However, if you update your working copy, Subversion will spot the missing item and replace it with the latest version from the repository. If you need to delete a version-controlled file, always use TortoiseSVNDelete so that Subversion doesn't have to guess what you really want to do.

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

Si vous avez supprimé un fichier ou un dossier et déjà procédé au dépôt de cette opération de suppression dans le référentiel, un simple TortoiseSVNRevenir à l'ancienne version ne pourra plus le ramener. Mais le fichier ou le dossier n'est pas perdu pour autant. Si vous connaissez la révision où le fichier ou le dossier a été supprimé (si vous ne la connaissez pas, utilisez la fenêtre de journal pour la retrouver) ouvrez le navigateur de référentiel et basculer vers cette révision. Sélectionnez ensuite le fichier ou le dossier que vous avez supprimé, faites un clic droit et sélectionnez Menu ContextuelCopier vers... avec comme cible de l'opération de copie le chemin vers votre copie de travail.

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

There is a server hook script available at: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ that will prevent checkins which result in case conflicts.

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.