如何从SVN存储库中删除SVN项目

pja*_*ain 30 svn

任何人都可以建议我如何从SVN存储库中删除完整的SVN项目(svn存储库在linux中).我发现"svn delete",但不认为它是一样的.它只能帮助删除文件或子文件夹,但不能删除整个项目.

use*_*419 47

这个答案可能令人困惑

请阅读本文附带的评论,并确保这是你所追求的

'svn delete'针对存储库内容,而不是针对存储库本身.为了进行存储库维护(比如完全删除一个),你应该使用svnadmin.但是,svnadmin没有'delete'子命令是有原因的.你可以

rm -rf $REPOS_PATH
Run Code Online (Sandbox Code Playgroud)

在svn服务器上,

其中$ REPOS_PATH是您用于创建存储库的路径

svnadmin create $REPOS_PATH
Run Code Online (Sandbox Code Playgroud)

  • 呃.我称之为删除存储库,而不是项目. (16认同)
  • 我同意@ MichaelKrelin-hacker,因为你的回答可能让新手感到困惑,有人可能会删除整个存储库,而他的意图只是删除一个项目. (3认同)

wha*_*ger 10

来自svn存储库的"Obliberating"内容,即从光盘擦除此内容,可以按照本文所述完成http://www.limilabs.com/blog/how-to-permanently-remove-svn-folder

它需要访问服务器端svn存储库,因此您必须具有一些管理员权限.

它的工作原理是:(a)将存储库内容转储到文件中,(b)排除某些内容;(c)再次擦除和重新创建普通存储库,最后通过(d)加载过滤的存储库内容:

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)
Run Code Online (Sandbox Code Playgroud)

此操作不会更改存储库计数器.但是,您的存储库现在"缺少"用于创建您在步骤(b)中删除的内容的所有修订号.

Subversion 1.7.5似乎很好地处理了这个"缺失"的修订.例如,使用"svn ls -r $ missing"报告与"svn ls -r $((missing - 1))"相同的报告.

与此相反,我(很老)VIEWVC在查询"缺失"修订时报告"无内容".


use*_*345 9

如果您只想从头版本中删除项目,那么当您运行时,它不再显示在您的仓库中svn list file:///path/to/repo/:

svn delete file:///path/to/repo/project 
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要删除repo中的所有记录,请使用其他方法.


And*_*ell 8

我也觉得接受的答案有点误导,因为它可能导致用户无意中删除多个项目.在SVN的上下文中指出Repository,Project和Directory这两个词是不明确的是不准确的.它们具有特定的含义,即使系统本身不强制执行这些含义.社区,更重要的是SVN客户已经就这些条款达成了一致意见,这些条款允许他们进行标记,分支和合并.

理想情况下,这将有助于消除任何混淆.作为一个不得不从git转到svn进行一些项目的人,直到你了解到SVN分支和SVN项目真正在谈论文件夹结构时才会令人沮丧.

SVN术语

知识库

文件夹和文件的提交和历史数据库.存储库可以包含多个"项目"或没有项目.

项目

一种特定的SVN文件夹结构,使SVN工具能够执行标记,合并和分支.SVN本身并不支持分支.分支是后来添加的,是特殊文件夹结构的结果,如下所示:

  • /项目
    • /标签
    • /枝
    • /树干

注意:请记住,SVN"项目"是用于在存储库中定义特定文件夹结构的术语

存储库中的项目

存储库布局

由于存储库只是文件和目录提交的数据库,因此它可以托管多个项目.在讨论存储库项目时,请确保使用正确的术语.

删除存储库可能意味着删除多个项目!

本地SVN目录(根目录下的.svn目录)

使用URL时,会自动进行提交.

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

  • 删除项目:svn rm skunkworks+svn commit

  • 删除目录:svn rm regulardir/subdir+svn commit
  • 删除项目(不签出): svn rm http://svn.server.local/svn/myrepo/app1
  • 删除目录(不签出): svn rm http://svn.server.local/svn/myrepo/regulardir

由于SVN 项目实际上是特定的目录结构,因此删除项目与删除目录相同.

SVN存储库管理

有几个SVN服务器可用于托管您的存储库.存储库本身的管理通常通过服务器的管理控制台完成.例如,Visual SVN允许您创建存储库(数据库),目录和项目.但是,您无法从服务器控制台中删除文件,管理提交,重命名文件夹等,因为这些是特定于SVN的任务.SVN服务器通常管理存储库的创建.创建存储库并创建新URL后,其余工作将通过该svn命令完成.


Mic*_*ker 5

svn中没有"项目"的概念.所以,随意删除认为属于项目的任何内容.