2010-03-28 4 views

Répondre

6

La réponse est dans le Subversion FAQ:

Il y a des cas particuliers où vous pourriez vouloir détruire toutes les preuves de un fichier ou d'engager. (Peut-être quelqu'un accidentellement commis un document confidentiel .) Ce n'est pas si facile, parce que Subversion est délibérément conçu pour jamais perdre des informations. Les révisions sont arbres immuables qui s'appuient sur un autre . Suppression d'une révision de l'historique provoquerait un effet domino, créant le chaos dans toutes les révisions suivantes et invalidant éventuellement toutes les copies de travail.

Le projet prévoit, cependant, à mettre en œuvre un jour une svnadmin commande oblitérer qui accomplir la tâche de façon permanente suppression d'informations. (Voir le numéro 516.)

En attendant, votre seul recours est à svnadmin vidage de votre référentiel, puis le tuyau dumpfile par svndumpfilter (hors le mauvais chemin) dans une commande de charge svnadmin. Voir chapitre 5 du livre Subversion pour détails à ce sujet.

+0

merci pour cela, voici un bon article à ce sujet: http://blog.projectnibble.org/2008/03/01/subversion-obliterate-the-forgotten-feature/ cheers – Marcin

0

rm -rf sur le référentiel fonctionne généralement bien.

+0

et svn db? – Marcin

+0

Je vivais sous l'impression que svn garde sa base de données quelque part dans le référentiel du serveur, donc le dépôt nuera aussi au dépôt. Je pourrais avoir tort cependant. – che

1

Non, je ne le crois pas. Si vous avez vraiment besoin de supprimer des fichiers complètement de l'histoire SVN, je pense que la seule façon de le faire serait de faire quelque chose comme le dépôt du dépôt, filtrant les fichiers que vous ne voulez pas avec svndumpfilter, puis recréer le référentiel de la décharge.

Pourquoi voulez-vous faire cela?

+0

J'ai un projet que je voudrais supprimer complètement de mon repo. – Marcin

0

c'est comment faire sous Linux:

/>svnadmin dump /path/to/repos > proj.dump 
/>cat proj.dump | svndumpfilter exclude somefolder > cleanproj.dump 
/>service svn stop 
/>BACKUP /path/to/repos/conf /path/to/repos/hooks (all custom configuration for this repository) 
/>DELETE /path/to/repos 
/>svnadmin create /path/to/repos 
/>RESTORE /path/to/repos/conf /path/to/repos/hooks 
/>svnadmin load /path/to/repos < cleanproj.dump 
/>service svn start 

fait

0

Je suppose que vous parlez de plusieurs projets sous le même référentiel:

myrepo/ 
     project1/ 
     project2/ 

Si vous voulez simplement qu'un projet disparaisse sans viser l'historique du dépôt, vous pouvez simplement masquer ce chemin si vous utilisez un identifiant mécanisme d'authentification qui utilise authz. En d'autres termes, vous êtes et non en utilisant 'svn + ssh' pour accéder au référentiel.

Disons que j'ai déjà un groupe dans mon authz appelé 'tout le monde'. Le dans mon authz je vais définir quelque chose comme:

[/project1]: 
    @everyone = 
+0

Je voudrais le faire supprimer non caché , Merci. – Marcin

Questions connexes