【问题标题】:Getting rid of the .svn files in all directories摆脱所有目录中的 .svn 文件
【发布时间】:2009-08-26 14:18:28
【问题描述】:

有什么办法可以使用 subversion 或任何其他 VCS 将签出的文件保存在 .svn 目录中的不同位置,然后是它们“所属”的目录。例如有一些顶级 /work/my-source-tree 和 /work/my-source-tree-svn 目录?

我知道为什么文件在 .svn 目录中重复(在签入时快速检测更改的文件和简单的工具支持)。但我经常想对文件进行备份,例如在 USB 记忆棒上,传输双倍数量的文件是个麻烦事。

【问题讨论】:

    标签: svn version-control


    【解决方案1】:

    使用svn export 将文件复制到一个干净的目录(即您的U 盘)。它不会复制.svn 目录。这也适用于工作副本:

    svn export <path-to-working-copy> <destination-directory>
    

    【讨论】:

      【解决方案2】:

      使用 CVS、SVN 和其他版本控制系统,您可以进行导出。这允许您获取没有 .svn 或其他隐藏目录的代码副本。

      SVN Export documentation

      【讨论】:

      • 好吧,但是如果我想在我签到之前把我的项目文件带回家完成一些事情怎么办?抱歉,出口不是我想听到的答案。
      • 在这种情况下,svk 可能是你想要的:p
      【解决方案3】:

      svk 是 subversion 之上的一层,它添加了一些额外的功能。一个关键特性是元数据保存在 $HOME/.svk/ 中,而不是保存在每个工作副本中。这将两者分开,使您的备份更容易,工作副本更小。

      此外,它还提供了一些分布式版本控制功能,例如 git 等 - 但仍然使用 svn 作为后端。可能值得一试。

      【讨论】:

      • SVK 已停产。使用 svn 导出。
      【解决方案4】:

      您可以使用 rsync 备份到您的 U 盘,并使用 --cvs-exclude 选项。根据您的版本,这可能不适用于 subversion 文件,因此请尝试 --exclude='.svn/*'

      【讨论】:

        【解决方案5】:
        cd svn-local-dir
        find . -name .svn | xargs rm -rf
        

        【讨论】:

        • 如果你使用-exec选项,你可以省略到xargs的管道,即find . -name .svn -exec rm -rf {} \;
        【解决方案6】:

        FWIW,这在 Subversion 1.7 中不再是问题。

        Subversion 1.7 的工作副本在工作副本的每个目录中都没有一个 .svn 目录,而是在工作副本的根目录中只有一个 .svn 目录。 (Subversion 1.7 Release Notes)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-21
          • 1970-01-01
          • 1970-01-01
          • 2016-06-05
          • 1970-01-01
          • 2012-04-02
          • 2011-04-08
          • 2020-03-07
          相关资源
          最近更新 更多