svn - 如何忽略目录
Posted
技术标签:
【中文标题】svn - 如何忽略目录【英文标题】:svn - how to ignore directory 【发布时间】:2020-05-05 14:47:38 【问题描述】:我有一个版本化的子目录,里面有很多种文件和目录,*.c, *.h, *.a, *.so ..., 等等。此外,这些东西每次都被部分修改一旦项目建成,非常大,以至于当我从父目录提交时,这个子目录会大大减慢进度。
svn 慢的原因很明显,因为 svn 需要解析到这个子目录并在提交对话框中列出所有这些。
我需要某种方式让 svn 忽略这个子目录,以便加快提交进度,并且这种方式仅限于本地部分,而不是服务器部分(尽管我从未必须提交它,并且可能两者都不会在未来,其他人会这样做。)
以下是我做过但失败的事情:
在提交对话框中:右键单击 -> 移动到更改列表 -> 提交时忽略。
此方法提供分组功能,让用户更快地识别内容,但无助于忽略文件/目录。
右键子目录 -> TortoiseSVN -> 删除并添加到忽略列表。
这个方法会删除子目录,这不是我想要的。
运行时配置区 - 全局忽略选项。
全局-忽略扩展的主题,子目录包含 *.c 文件也是如此。如果我将 *.c 添加到 global-ignores 列表中,我将无法 在其他目录中提交 *.c 文件!
编辑: svn 版本是 1.6.17
【问题讨论】:
你的意思是你做了大量不想提交到仓库的本地修改?这可能是一个不寻常的场景,如果您首先提供一些背景信息并解释为什么会发生这种情况,也许会有所帮助。 是的,这些本地修改是构建项目的输出结果 所以您的组织决定将生成的二进制文件提交到存储库,但这些二进制文件与实际源代码不对应?那是我不太明白的部分。与生成 *.c 和 *.h 文件的构建过程相同。您是否有可能为当前代码快照和稳定版本使用相同的输出文件夹? (顺便说一句,svn 1.6.17 几乎是 9 年前的事了,尽管我想这不会改变任何事情。) 你的解释很好,你理解正确。那些版本化和生成的二进制文件与实际的源代码不对应,我不知道为什么作者首先将它放在存储库中。 这能回答你的问题吗? Subversion: prevent local modifications to one file from being committed? 【参考方案1】:通常不鼓励将生成的二进制文件存储在版本控制中,即使做得正确也是如此。我的建议是从存储库中完全删除每个生成的文件夹输出,然后将其添加到父文件夹的 svn:ignore
属性中,因此它是一个完全本地目录。然后,找到一种完全不同的机制来分发二进制版本;如果需要在子版本中完成,它会在存储库中建议一个新的层次结构,例如/branches/releases
.
如果禁止或不鼓励修复损坏的程序(根据我的经验,“我们总是这样做”是许多组织的法律),您可以尝试进行不包含这些文件夹的稀疏结帐或(如果这不起作用)配置您的本地构建以在其他地方生成其输出;最多,这意味着处理 ignore-on-commit
更改列表中的单个文件。
【讨论】:
我还发现“版本化的文件和文件夹永远不能被忽略——这是 Subversion 的一个特性。”来自svn书以上是关于svn - 如何忽略目录的主要内容,如果未能解决你的问题,请参考以下文章