À la différence de CVS, Subversion permet de renommer et de déplacer des fichiers et des dossiers. Il y a donc des entrées de menu pour supprimer et renommer dans le sous-menu de TortoiseSVN.
Utiliser → pour effacer des fichiers ou répertoires dans subversion.
Lorsque vous utilisez la commande → sur un fichier, il est supprimé immédiatement de votre copie de travail tout en étant marqué pour suppression dans le référentiel 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 → sur le dossier parent.
Lorsque vous utilisez la commande → 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 référentiel, vous pouvez revenir en arrière et récupérer le dossier en faisant → 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 référentiel, mais le conserver localement comme un fichier/répertoire sans version, utilisez → . 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 référentiel. Si vous devez supprimer un fichier sous contrôle de version, utilisez toujours → 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 référentiel et vous pourrez alors le supprimer correctement en utilisant → .
Si vous avez supprimé un fichier ou un dossier et avez déjà livré cette opération de suppression au référentiel, alors un normal → normal ne peut 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é (sinon, utilisez la boîte de dialogue Journal pour le savoir) ouvrez l'explorateur de référentiel et allez à cette révision. Choisissez alors le fichier ou le dossier que vous avez supprimé, faites un clic-droit et choisissez → et comme cible pour cette opération de copie, choisissez le chemin de votre copie de travail.
Si vous voulez faire un simplement renommer un fichier ou un dossier, utilisez → Entrez le nouveau nom de l'objet et vous avez terminé.
Si vous voulez déplacer des fichiers à l'intérieur d'une copie de travail, peut-être vers un différent sous-répertoire, utilisez une nouvelle fois le glisser-déplacer :
sélectionnez les fichiers ou les répertoires que vous voulez déplacer
glissez-déposer avec le bouton droit ces fichiers dans le nouvel emplacement à l'intérieur de la copie de travail
relâchez le bouton droit de la souris
Dans le menu qui apparaît, sélectionnez →
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 référentiel 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.
Une autre manière de déplacer ou copier des fichiers est d'utiliser les commandes Windows copier/couper. Sélectionnez les fichiers que vous souhaitez copier, faites un clic droit et choisissez → dans le menu contextuel de l'explorateur. Ensuite allez dans le dossier cible, faites un clique droit et choisissez → . Pour déplacer des fichiers, choisissez → au lieu de → .
Vous pouvez aussi utiliser le navigateur du référentiel pour déplacer des éléments.
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 référentiel 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.
Effectuer des modifications à un nom de fichier est plus délicat avec Subversion sous Windows, parce que pendant un court laps de temps lors du renommage, les deux noms de fichiers existent. Comme Windows a un cas de système de fichiers non sensible à la casse, cela ne fonctionne pas en utilisant la commande habituelle Renommer.
Heureusement, il y a (au moins) deux façons de renommer un fichier sans perdre son historique de journal. C'est important de le renommer au sein de Subversion. Le renommer seulement dans l'explorateur corrompra votre copie de travail!
Solution A) (recommandée)
Livrez les changements dans votre copie de travail.
Renommez le fichier MAJUScules en majusCULES directement dans le référentiel en utilisant l'explorateur de référentiel.
Mettez à jour votre copie de travail.
Solution B)
Renommer MAJUScules en MAJUScules_ avec la commande renommer du sous-menu TortoiseSVN.
Livrez les changements.
Renommer de MAJUScules_ en majusCULES.
Livrez les changements.
Dans le cas où vous avez deux fichiers dans le référentiel 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 référentiel.
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.
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 référentiel, 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 → pour lier les deux fichiers en tant qu'un renommé.
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 → . 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.