【问题标题】:svn ignore without deleting files?svn忽略不删除文件?
【发布时间】:2012-02-02 04:51:14
【问题描述】:

我怎样才能忽略我的 svn 存储库中的文件而不删除它们?

当我处理现有项目时,我经常需要设置项目的本地版本并使用我的本地数据库。以 drupal 为例,我检查了 svn 存储库,更改了 settings.php 文件以匹配我的本地数据库,但现在我必须确保我不会再次提交设置文件。

有什么聪明的 svn 命令可以解决这个问题吗?

【问题讨论】:

标签: svn


【解决方案1】:

来自 SVN 帮助:

我的项目中有一个文件,每个 开发商必须改变,但我不 希望那些本地模组永远存在 坚定的。我怎样才能使'svn commit' 忽略文件?**

答案是:不要 将该文件置于版本控制之下。 相反,放置文件的模板 在版本控制下,比如 “文件.tmpl”。

然后,在最初的 'svn 结帐',让您的用户(或您的 构建系统)做一个正常的操作系统副本 模板到正确的文件名, 并让用户自定义副本。这 文件是无版本的,所以它永远不会 做出承诺。如果你愿意,你可以 将文件添加到其父目录的 svn:ignore 属性,所以它不会 显示为“?”在'svn状态' 命令。

【讨论】:

  • 是的,可以解决问题,但是设置文件已经在 svn 控制下,我不想更改它,因为我也必须在生产环境中更改它,我可以't
  • 如果生产文件包含数据库的连接字符串信息,则根本不应该在源代码管理中。更安全的是有一个符号链接到您的构建/部署过程创建的文件(在比源存储库更安全的位置)。
  • 请记住,“应该”是一个动词,“应该”只适用于非人性的完美世界。问题是关于如何实际忽略提交而不是仅仅忽略(从而物理删除)工作副本文件。 BIN 可以忽略和删除,但 conn 文件不能删除,但必须在提交期间忽略。
【解决方案2】:

创建一个名为“.template”的文件版本并对其进行版本控制。当您结帐时,根据需要重命名和编辑。然后使用 svn propedit svn:ignore 忽略副本。

【讨论】:

    【解决方案3】:

    一个可能的解决方案是使用更改列表。您可以将要更改的文件分组到更改列表中,然后在 svn commit 时指定更改列表——不在更改列表中的文件不受影响。

    创建变更列表
    svn changelist math-fixes integer.c mathops.c

    仅提交更改列表中的文件
    svn ci -m "修复一个错误。" --changelist math-fixes

    【讨论】:

    • 这听起来工作量很大,我不想指定我已经更改的文件,而是不应该提交的文件,也许我理解你错了......
    【解决方案4】:

    This answer 谈到使用您的模板文件创建一个名为 ignore-on-commit 的更改列表,它仅在您使用 TortoiseSVN 时才有效。

    但话又说回来,这是针对每个用户的设置。

    【讨论】:

    • 它还谈到“创建一个预提交挂钩脚本,在添加特定属性时拒绝提交。然后您可以将此属性添加到工作副本中的文件以防止提交”,在如果你不使用 Tortoise SVN
    【解决方案5】:

    最简单的方法是转到包含您的配置文件的任何目录并在其上设置属性:

    svn:忽略设置.php

    它将在所有提交和更新中保持原样。您的命令可能如下所示:

    $ svn propset svn:ignore 'settings.php' ./

    【讨论】:

    • 我刚刚测试了这个。我进行了结帐,使用 svn propset svn:ignore 'readme' ./ 对文件进行了 svn 忽略,然后进行了提交,但自述文件在更改时仍会提交。
    【解决方案6】:

    svn propedit svn:ignore ./some_path

    For details see this post.

    【讨论】:

    • 这个我试过了,但是设置文件还是会提交
    • 是的,这会忽略本地文件,但不会阻止跟踪已在 repo 中的文件。
    • OP 已经声明他不想想从 repo 中删除文件。如果文件仍然存在于 repo 中,svn:ignore 什么都不做。
    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 2012-06-04
    • 2011-04-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多