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

时间:2011-11-09 11:31:20

标签: svn

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

9 个答案:

答案 0 :(得分:47)

  

这个答案可能令人困惑

请阅读此帖后附带的评论,并确保这是您的目标

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

rm -rf $REPOS_PATH

在svn服务器上,

其中$ REPOS_PATH是您用

创建存储库的路径
svnadmin create $REPOS_PATH

答案 1 :(得分:10)

" Obliberating"来自svn存储库的内容,即从光盘擦除此内容,可以按照本文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)

此操作未更改存储库计数器。但是,您的存储库现在已经缺失了#34;用于创建您在步骤(b)中删除的内容的所有修订号。

Subversion 1.7.5似乎可以解决这个问题&#34;缺失&#34;修改很好。使用&#34; svn ls -r $ missing&#34;例如,报告与&#34; svn ls -r $((缺失 - 1))&#34;相同的报告。

与此相反,我的(很老的)VIEWVC报告&#34;没有内容&#34;当查询&#34;缺失&#34;修改

答案 2 :(得分:9)

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

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

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

答案 3 :(得分:7)

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

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

SVN术语

存储库

  

文件夹和文件的提交和历史记录数据库。存储库可以包含多个项目&#39;或者没有项目。

项目

  

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

  • /项目
    • /标签
    • /分支
    • /中继线

注意:请记住,SVN&#39;项目&#39;是用于在存储库

中定义特定文件夹结构的术语

存储库中的项目

存储库布局

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

    • / skunkworks "Project" due to layout
      • /标签
      • /分支
      • /中继线
    • / app1 "Project" due to layout
      • /标签
      • /分支
      • /中继线
    • / fooproject "Project" due to layout
      • /标签
      • /分支
      • /中继线
    • / regulardir <-- Not a "Project"
      • /子目录
  • http://svn.server.local/svn/myrepo2

    • / APP2 "Project" due to layout
      • /标签
      • /分支
      • /中继线

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

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

本地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命令完成。

答案 4 :(得分:5)

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

答案 5 :(得分:1)

处理工作副本

Subversion不会跟踪服务器上的工作副本的状态或是否存在,因此保持工作副本没有服务器开销。同样,没有必要让服务器知道您要删除工作副本。

如果您可能再次使用工作副本,将它留在磁盘上没有任何问题,直到您准备再次使用它为止,此时所需要的是一个svn更新以使其更新并准备好使用。

但是,如果您肯定不会再次使用工作副本,则可以使用操作系统提供的任何目录删除功能安全地删除整个内容。我们建议您在此之前使用你运行svn状态并检查其输出中列出的前缀为?的任何文件?确保它们不重要。

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

答案 6 :(得分:1)

很容易相信删除整个Subversion存储库需要“通知”Subversion您要删除存储库。但Subversion只关心在创建存储库后管理存储库,而不关心存储库是否存在(如果这是有意义的话)。它是这样的:Subversion工具和命令不会受到使用常规操作系统实用程序(如rm -R)删除存储库目录的不利影响。存储库目录与已安装的程序目录不同,删除程序而不卸载它可能会留下不稳定的配置文件或其他依赖项。存储库在其目录中是100%自包含的,删除它是无害的(除了丢失项目历史记录)。您只需清理平板以创建新的Subversion存储库并导入下一个项目。

答案 7 :(得分:-1)

转到Eclipse, 单击菜单栏中的窗口,然后单击“打开透视图 - &gt;其他 - &gt; SVN资源库探索 - &gt;单击确定”

现在,在执行“单击确定”后,您需要前往卡车(或将项目保存在SVN中的位置),然后选择项目(您要删除),然后右键单击 - &gt;删除。

这将从subversion中删除项目。

答案 8 :(得分:-2)

正确的句子是:svnadmin deltify $ PATH。 不要忘记从文件svn-acl中删除项目或存储库(如果你使用它)。 如果您只是删除存储库的文件夹,则可能会损坏svn目录,具体取决于您的环境中svn的配置方式。