Manuals

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.34. Menu contextuel de l'explorateur pour les fichiers versionnés

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


Supprimer des fichiers et des dossiers

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

Quand vous faites TortoiseSVNSupprimer sur un fichier ou un dossier, il est immédiatement effacé de votre copie de travail et marqué pour suppression dans le dépôt à la prochaine livraison. Le dossier parent de l'élément affiche l'icône superposée de l'état « modifié ». Tant que vous n'avez pas livré la modification, vous pouvez récupérer le fichier en utilisant TortoiseSVNRevenir en arrière sur le répertoire parent.

Si vous voulez supprimer un élément dans le dépôt, mais le conserver localement comme un fichier/répertoire non versionné, utilisez Menu contextuel étenduSupprimer (conserver localement). Vous devez tenir la touche Maj enfoncée tout en effectuant un clic droit avec la souris sur l'élément désiré dans le volet de l'explorateur (volet droit) afin de voir cette commande dans le menu contextuel étendu.

Si un élément est effacé depuis l'explorateur au lieu d'utiliser le menu contextuel de TortoiseSVN, la boîte de dialogue de livraison signale ces éléments comme manquants et vous permet de les retirer de la gestion de version avant la livraison. Cependant, si vous faites une mise à jour de votre copie de travail, Subversion détectera l'élément manquant et le remplacera avec la dernière version du dépôt. Si vous avez besoin de supprimer un fichier versionné, utilisez toujours TortoiseSVNSupprimer pour que Subversion ne soit pas obligé de deviner ce que vous cherchez réellement à faire.

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

Si vous avez supprimé un fichier ou un dossier et déjà livré cette opération de suppression dans le dépôt, 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 l'explorateur de dépôt et basculez 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 simple renommage d'un fichier ou d'un dossier sans changer son emplacement, utilisez Menu contextuelRenommer... Entrez le nouveau nom de l'élément et vous avez terminé.

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

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

  2. faites-les glisser 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 éléments versionnés ici

Livrer 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 suppression du renommage/déplacement apparaisse dans la boîte de dialogue Livrer. Si vous ne livrez pas la partie suppression 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 copies, la vieille et la nouvelle.

Vous devez livrer un renommage de dossier avant de changer l'un des fichiers de ce dossier, sinon votre copie de travail peut être vraiment perturbée.

Une autre façon de déplacer ou de copier des fichiers est d'utiliser les commandes copier/couper de Windows. Sélectionnez les fichiers que vous voulez copier, faites un clic droit et choisissez Menu contextuelCopier

Vous pouvez aussi utiliser l'explorateur de dépôt pour déplacer des éléments. Lisez la section intitulée « L'explorateur de dépôt » pour en savoir plus.

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 devriez utiliser un déplacement ordinaire, et ensuite ajuster les propriétés svn:externals des répertoires parents de la source et de la destination.

Gérer les conflits de casse dans les noms de fichier

Si le dépôt contient deux fichiers qui ont le même nom mais qui ne diffèrent que par la casse (par exemple TEST.TXT et test.txt), vous ne pourrez pas mettre à jour ou extraire le répertoire parent sous Windows. Bien que Subversion soit sensible à la casse dans les noms de fichiers, ce n'est pas le cas de Windows.

Cela arrive parfois lorsque deux personnes livrent, depuis des copies de travail séparées, des fichiers qui se trouvent avoir le même nom, mais avec une différence de casse. Cela peut également arriver quand les fichiers sont livrés depuis un système d'exploitation qui utilise un système de fichiers sensible à la casse, 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 y a un script hook serveur disponible à l'adresse : https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ qui bloque les livraisons qui créeraient des 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 de livrer vos modifications, Subversion peut voir l'ancien nom de fichier comme manquant et le nouveau comme un fichier non versionné. Vous pourriez simplement livrer le nouveau nom de fichier pour le rajouter dans le dépôt, mais on perdrait alors l'historique, car 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 dans les boîtes de dialogue 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éparer le déplacement pour lier les deux fichiers en tant que renommage.

Supprimer les fichiers non versionnés

Généralement vous paramétrez votre liste des ignorés pour que tous les fichiers générés soient ignorés dans Subversion. Mais que faire si vous souhaitez effacer tous les éléments ignorés pour produire une génération propre ? Généralement vous définiriez cela dans votre makefile, mais si vous êtes en train de déboguer le makefile ou de changer le système de build, il est utile d'avoir un moyen de nettoyer la plate-forme.

TortoiseSVN fournit précisément une telle option avec Menu contextuel étenduSupprimer les éléments non versionnés.... Vous devez tenir enfoncée la touche Maj tout en effectuant un clic droit sur un dossier dans le volet de l'explorateur (volet droit) afin de voir cette commande apparaître 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 où qu'ils soient 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.

TortoiseSVN homepage