web-dev-qa-db-fra.com

Comment supprimer un projet SVN du référentiel SVN

Quelqu'un peut-il me suggérer comment supprimer le projet SVN complet du référentiel SVN (le référentiel svn est sous linux). J'ai trouvé "svn delete", mais ne pense pas qu'il en soit de même. Il aide uniquement à supprimer des fichiers ou des sous-dossiers, mais pas la totalité du projet.

30
pjain

cette réponse peut être déroutante

lisez les commentaires attachés à ce message et assurez-vous que c'est ce que vous recherchez

'svn delete' fonctionne contre le contenu du référentiel, pas contre le référentiel lui-même. pour effectuer la maintenance du référentiel (comme la supprimer complètement), vous devez utiliser svnadmin. Cependant, il y a une raison pour laquelle svnadmin n'a pas de sous-commande "supprimer". Vous pouvez juste

rm -rf $REPOS_PATH

sur le serveur svn,

où $ REPOS_PATH est le chemin que vous avez utilisé pour créer votre référentiel avec

svnadmin create $REPOS_PATH
47
user237419

"Oblibérer" le contenu d'un dépôt svn, c'est-à-dire essuyer ce contenu du disque, peut être fait comme décrit dans cet article http://www.limilabs.com/blog/how-to-permanently-remove-svn -folder

Il nécessite un accès au référentiel svn côté serveur, vous devez donc disposer de certains privilèges d'administrateur.

Cela fonctionne en (a) en vidant le contenu du référentiel dans un fichier, (b) en excluant certains contenus et (c) en essuyant et en recréant le référentiel simple à nouveau et finalement en (d) en chargeant le contenu du référentiel filtré:

svnadmin dump "path/to/svnrepo" > svnrepo.txt                    // (a)
svndumpfilter exclude "my/folder" < svnrepo.txt > filtered.txt   // (b)
rm -rf "path/to/svnrepo" && svnadmin create "path/to/svnrepo"    // (c)
svnadmin load "path/to/svnrepo" < filtered.txt                   // (d)

Le compteur du référentiel est inchangé par ces opérations. Cependant, votre référentiel manque désormais tous les numéros de révision utilisés pour créer le contenu que vous avez supprimé à l'étape (b).

Subversion 1.7.5 semble gérer assez bien ces révisions "manquantes". L'utilisation de "svn ls -r $ missing" par exemple, rapporte la même chose que "svn ls -r $ ((missing - 1))".

Contrairement à cela, mon (assez vieux) VIEWVC signale "aucun contenu" lors de l'interrogation d'une révision "manquante".

10
whaefelinger

Dans le cas où vous souhaitez simplement supprimer un projet de la révision principale, afin qu'il n'apparaisse plus dans votre référentiel lorsque vous exécutez svn list file:///path/to/repo/ lancez simplement:

svn delete file:///path/to/repo/project 

Cependant, si vous devez en supprimer tous les enregistrements dans le référentiel, utilisez une autre méthode.

9
user12345

Je pensais moi aussi que la réponse acceptée était un peu trompeuse car elle pouvait conduire à la suppression accidentelle de plusieurs projets par un utilisateur. Il n'est pas exact de dire que les mots Repository, Project et Directory sont ambigus dans le contexte de SVN. Ils ont des significations spécifiques, même si le système lui-même n'applique pas ces significations. La communauté et, plus important encore, les clients SVN ont une compréhension convenue de ces termes qui leur permettent de baliser, de se connecter et de fusionner.

Idéalement, cela aidera à éliminer toute confusion. En tant que personne qui a dû passer de git à svn pour quelques projets, cela peut être frustrant jusqu'à ce que vous appreniez que la branche SVN et les projets SVN parlent vraiment de structures de dossiers.

Terminologie SVN

Dépôt

La base de données des validations et de l'historique de vos dossiers et fichiers. Un référentiel peut contenir plusieurs "projets" ou aucun projet.

Projet

Une structure de dossier SVN spécifique qui permet aux outils SVN d'effectuer le balisage, la fusion et la ramification. SVN ne prend pas en charge intrinsèquement la ramification. La ramification a été ajoutée plus tard et résulte d'une structure de dossiers spéciale comme suit:

  • /projet
    • /Mots clés
    • /branches
    • /tronc

Remarque: N'oubliez pas, un "projet" SVN est un terme utilisé pour définir une structure de dossier spécifique dans un référentiel

Projets dans un référentiel

Disposition du référentiel

Comme un référentiel n'est qu'une base de données des fichiers et des validations de répertoire, il peut héberger plusieurs projets. Lorsque vous discutez des référentiels et des projets , assurez-vous que le terme correct est utilisé.

Supprimer un Référentiel pourrait signifier supprimer plusieurs Projets!

Répertoire SVN local (répertoire .svn à la racine)

Lorsque vous utilisez une URL, les validations se produisent automatiquement.

  • svn co http://svn.server.local/svn/myrepo
  • cd myrepo

  • Supprimer un projet: svn rm skunkworks + svn commit

  • Supprimer un répertoire: svn rm regulardir/subdir + svn commit
  • Supprimer un projet (sans extraire): svn rm http://svn.server.local/svn/myrepo/app1
  • Supprimer un répertoire (sans extraire): svn rm http://svn.server.local/svn/myrepo/regulardir

Étant donné qu'un projet SVN est en réalité une structure de répertoires spécifique, la suppression d'un projet équivaut à la suppression d'un répertoire.

Gestion du référentiel SVN

Plusieurs serveurs SVN sont disponibles pour héberger vos référentiels. La gestion des référentiels eux-mêmes se fait généralement via les consoles d'administration des serveurs. Par exemple, Visual SVN vous permet de créer des référentiels (bases de données), des répertoires et projets . Mais vous ne pouvez pas supprimer des fichiers, gérer les validations, renommer des dossiers, etc. depuis la console du serveur car ce sont des tâches spécifiques à SVN. Le serveur SVN gère généralement la création d'un référentiel. Une fois qu'un référentiel a été créé et que vous avez une nouvelle URL, le reste de votre travail se fait via la commande svn.

7
Andrew T Finnell

Il n'y a pas de concept de "projet" dans svn. Alors, n'hésitez pas à supprimer ce que vous pensez appartenir au projet.

Il est facile de croire que la suppression de l'ensemble du référentiel Subversion nécessite "d'informer" Subversion que vous allez supprimer le référentiel. Mais Subversion ne se soucie de la gestion d'un référentiel qu'une fois qu'il est créé, et non de l'existence ou non du référentiel (si cela a du sens). Cela se passe comme ceci: les outils et commandes Subversion ne sont pas affectés par la simple suppression de votre répertoire de référentiel avec les utilitaires du système d'exploitation standard (comme rm -R). Un répertoire de référentiel n'est pas la même chose qu'un répertoire de programme installé, où la suppression d'un programme sans le désinstaller peut laisser des fichiers de configuration erratiques ou d'autres dépendances. Un référentiel est 100% autonome dans son répertoire et sa suppression est inoffensive (en plus de perdre l'historique de votre projet). Vous venez de nettoyer l'ardoise pour créer un nouveau référentiel Subversion et importer votre prochain projet.

2
user6629735

Élimination d'une copie de travail

Subversion ne suit ni l'état ni l'existence de copies de travail sur le serveur, il n'y a donc pas de surcharge de serveur pour conserver les copies de travail. De même, il n'est pas nécessaire d'informer le serveur que vous allez supprimer une copie de travail.

Si vous êtes susceptible d'utiliser à nouveau une copie de travail, il n'y a rien de mal à simplement la laisser sur le disque jusqu'à ce que vous soyez prêt à l'utiliser à nouveau, à quel point il suffit d'une mise à jour svn pour la mettre à jour et prête pour utilisation.

Cependant, si vous n'allez certainement pas réutiliser une copie de travail, vous pouvez supprimer l'intégralité de la chose en toute sécurité en utilisant les capacités de suppression de répertoire offertes par votre système d'exploitation. Nous vous recommandons, avant de le faire, d'exécuter l'état svn et d'examiner tous les fichiers répertoriés dans sa sortie qui sont préfixés par un? pour s'assurer qu'ils ne sont pas importants.

de: http://svnbook.red-bean.com/en/1.7/svn.tour.cleanup.html

1
Misho