gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:20:58 33 4
gpt4 key购买 nike

在我正在处理的当前项目中,有人决定将二进制文件作为源树的一部分 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 已经发布。从发行说明:

In Subversion 1.6, the --set-depth parameter to svn update has grown a new value—exclude. This value tells Subversion to exclude the target from the working copy, immediately and until further notice. Prior to Subversion 1.6, if a directory could not easily be removed from a working copy. ...



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

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

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

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 添加它们并导致“文件已存在”提交错误。

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

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



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

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

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com