SVN: Pouvez-vous supprimer des répertoires à partir d'un local de la caisse seulement (et non pas à partir du référentiel)?

Supposons que vous disposez d'un répertoire sous le contrôle de subversion, qui contient des fichiers et des tonnes de sous-répertoires, comme ça:

file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/

Maintenant, vous avez besoin des fichiers et certains de la dirs, mais pas tous d'entre eux. Cela peut être fait avec SVN. Il suffit de faire le checkout non-récursive:

svn checkout -N <URL>

Ce vérifie seulement le premier répertoire et les fichiers à l'intérieur. Pas de sous-répertoires sont inclus. Même si vous allez dans la caisse de répertoire et de lancer un "svn up", il suffira de mettre à jour les fichiers extraits précédemment, il ne sera pas ajouter les répertoires. Vous pouvez maintenant sélectivement ajouter les répertoires que vous devez explicitement à la mise à jour de ceux-ci. E. g. si vous avez besoin d'dir2 et dir4 seulement, vous pouvez vous rendre dans la caisse répertoire et exécuter

svn up dir2
svn up dir4

Si vous exécutez un générique "svn up" dans l'avenir, il suffira de mettre à jour les fichiers et ces deux répertoires, il ne sera pas ajouter tous les autres répertoires.

Maintenant le problème: Que faire si je décide plus tard que je n'ai pas besoin dir2 de plus? Comment puis-je me débarrasser de lui? Il n'y a aucun moyen de le faire, d'autres que la suppression de l'ensemble de la caisse et de recommencer à partir de zéro.

Lorsque vous venez de supprimer dir2, la prochaine "svn up" la ramène, comme "svn status" bien sûr, le montre comme absent aujourd'hui ("!" devant son nom). L'exécution d'un "svn remove" supprime, bien sûr, mais sur le prochain commit il va également supprimer à partir du référentiel, qui ne doit pas se produire.

Même le nouveau éparses répertoire ("shallow " checkout") de la fonction de SVN 1.5 est d'aucune utilité ici:

Subversion 1.5 mise en œuvre de
peu profondes des caisses est bon mais n'a pas
le soutien d'un couple d'intéressant
les comportements. Tout d'abord, vous ne pouvez pas
de-télescope d'une copie de travail de l'élément.
L'exécution de svn update --set-profondeur vide
dans une infinie profondeur de la copie de travail sera
pas avoir pour effet que de les jeter
tout, mais le plus haut
—répertoire, il sera tout simplement l'erreur.

- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

Est ce impossible avec SVN? Jamais quelqu'un est venu avec un travail intelligent-pour qui?

Juste de la création de la caisse de répertoire (sans SVN) et ensuite de vérifier les différents sous-répertoires à partir du référentiel directement comme des sous-répertoires de ce répertoire de travail pour les répertoires: maintenant, chaque répertoire est une caisse de son propre, peut être mis à jour et une fois n'est pas besoin de plus, vous pouvez simplement le supprimer. Cependant, comment puis-je obtenir les fichiers, puis (par ex. file1.txt)? SVN ne pas permettre à la caisse des fichiers individuels, vous pouvez seulement de la caisse des répertoires complets.

  • Je pense que c'est la même question que ces deux: stackoverflow.com/questions/862950/..., stackoverflow.com/questions/635446/...
  • Tout d'abord, pourquoi ne pas vous écrire cela comme une réponse? Deuxièmement: Ces deux questions sont sur la prévention de quelque chose d'être commis. Cela n'a rien à voir avec mon problème. Même si je ne svn delete sur le répertoire et empêcher cela d'engagés, le répertoire ne va pas disparaître. Avez-vous seulement lu ma question ou juste le titre?
  • J'ai lu votre question, même si je l'avoue en toute hâte. J'ai pensé vous demandez comment faire pour supprimer un contrôle de version dir dans la copie locale sans affecter la version du dépôt, et sans avoir la dir de retour dans la prochaine mise à jour. Bien que je n'ai pas essayé, il me semble que faire de tout autre membre de une liste de modification permettra de faire exactement cela. Je n'ai pas écrit cela comme une réponse car il existe déjà dans les deux autres questions (j'ai pensé que c'étaient les mêmes) - Si j'étais de droite, je venais d'arriver rep pour quelqu'un d'autre travail. Désolé si ce n'est d'aucune utilité pour vous.
  • Si vous n'écrivez pas une vraie réponse, vous ne pouvez pas obtenir upvotes et je ne peux pas directement des commentaires sur ce que vous écrivez. Même si la question a été répondue par ailleurs, toujours écrire une vraie réponse. Si ma question est donc pas fermé comme dupe dans le temps, je ne peux accepter votre réponse comme "la réponse", même si elle vient de me dirige d'ailleurs. Pas juste? Je pense qu'il est. Après tout juste de répondre en donnant un lien vous donne également rep pour quelqu'un d'autre travail.
InformationsquelleAutor Mecki | 2009-09-17