在我当前工作的项目中,有人决定将二进制文件作为源树的一部分 checkin 。二进制文件位于源本身下方的目录中:

project/src             # Here is the location of the source code
project/src/more_src    # Some more source code lives here
project/src/bin         # Here are the binary files

可以想象,因此,合并冲突一直在发生。这很烦人,因为我不认为任何开发人员的机器应该提交二进制文件 - 这应该留给构建服务器。

我是 subversion 的命令行用户。我想忽略 bin 目录,以便在我使用 svn stsvn ci 时跳过这些目录(即使有待处理的更改)。

不幸的是,由于 more_src 目录,我不能使用 -N(非递归)。

我怎样才能做到这一点?

最佳答案

编辑 : subversion 1.6 已经发布。从发行说明:



下面的所有东西现在都过时了。

您可以在正确的位置限制工作副本中文件夹的深度,这样不需要的文件就不会显示为版本化文件。但是,您无法减少现有工作副本的深度。

1)像这样 checkout 一个干净的工作副本(它将只包含根目录中的文件和空文件夹):



2)现在对于您不想忽略的每个文件夹,将内容拉入

svn update --depth infinity /some/good/path

如果包含要忽略的内容的文件夹不在您的工作副本的根目录中,您可以通过重复调用逐步沿着树向下工作
svn update --depth immediates /some/path/to/make/deeper

这种方法确实有一个缺点。如果要忽略的文件通过您自己的操作(例如构建)出现在您的工作副本中,它们将在 svn 状态中显示为未版本化的文件。您甚至可以 svn 添加它们并导致“文件已存在”提交错误。

编辑: 显然你可以减少工作副本部分的深度,这要简单得多:
  • 正常项目 check out (或开始
    来自现有的工作副本)
  • 删除不需要的文件夹(正常
    文件系统删除,而不是 svn rm)。此时该文件夹丢失,如果您进行正常更新,它将返回所有恶意内容。
  • 带回文件夹



    现在你可以对整个项目做 svn update 但坏的内容不会返回。

    关于svn - 如何在提交期间忽略特定的 Subversion 子目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/588024/

    10-14 19:47
    查看更多