当前位置:  开发笔记 > 编程语言 > 正文

如何在提交期间忽略特定的Subversion子目录

如何解决《如何在提交期间忽略特定的Subversion子目录》经验,为你挑选了1个好方法。

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

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(非递归).

我怎么能做到这一点?



1> Wim Coenen..:

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

在Subversion 1.6中,svn update的--set-depth参数已经增长了一个新的值 - 排除.此值告诉Subversion立即从工作副本中排除目标,直到另行通知为止.在Subversion 1.6之前,如果无法轻松地从工作副本中删除目录....

以下所有内容现在已经过时了.


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

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

svn co --depth immediates repoURL/some/wc/path

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

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

如果包含要忽略的内容的文件夹不在工作副本的根目录中,您可以逐步调用

svn update --depth immediates /some/path/to/make/deeper

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


编辑:显然你可以减少工作副本的深度,这更简单:

    正常项目结账(或从现有工作副本开始)

    删除不需要的文件夹(正常的文件系统删除,而不是svn rm).此时文件夹丢失,如果您进行了正常更新,则会返回所有内容.

    带回来的文件夹

svn update --depth empty/path/where/deleted/folder/was

现在你可以对整个项目进行svn更新,但不会返回坏内容.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有