在我当前工作的项目中,有人决定将二进制文件作为源树的一部分 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 st
和 svn 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 添加它们并导致“文件已存在”提交错误。
编辑: 显然你可以减少工作副本部分的深度,这要简单得多:
来自现有的工作副本)
文件系统删除,而不是 svn rm)。此时该文件夹丢失,如果您进行正常更新,它将返回所有恶意内容。
现在你可以对整个项目做 svn update 但坏的内容不会返回。
关于svn - 如何在提交期间忽略特定的 Subversion 子目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/588024/