在SVN服务器上,有一个名为config.conf
的文件。我有一个本地版本称为相同的东西(在同一个地方)。如何确保我的本地配置不会被覆盖或签入?
当我在这里时,目录的答案是否不同?
我使用的是 Tortoise SVN,但命令行答案很酷。
谢谢!
[对不起,如果之前有人问过这个基本问题...我看了看,但没有找到。
TortoiseSVN对这个问题的一半有一个很好的答案:忽略提交
这可以防止您意外提交"仅限本地"更改,但不能解决意外更新本地更改文件的问题。
查看此博客文章,详细了解如何:
http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html
- 使用 svn:ignore 将其从存储库中排除(您必须先将其从存储库中删除)
- 在 config.conf.default 中保留一个带有占位符值的副本。您可以将默认副本保留在存储库中。
- 正常使用 config.conf - Subversion 不会再看到它了
谢谢大家。我以为Eoin可能疯了,但事实上这是真的。不能忽略版本控制中的文件。
根据文档
忽略版本控制项
受版本控制的文件和文件夹永远不能 被忽略 - 这是 颠覆。如果文件版本控制依据 错误,请阅读名为 "忽略已经存在的文件 版本化"以获取有关如何 "反转"吧。
来自SVN文档
我的项目中有一个文件,每个 开发人员必须改变,但我没有 希望这些本地模组永远存在 承诺。我怎样才能进行"svn 提交" 忽略文件?
答案是:不要放那个文件 在版本控制下。相反,将 版本下文件的模板 控制,类似于"File.TMPL"。
然后,在初始 'svn 之后 结帐",让您的用户(或您的 构建系统)执行正常的操作系统复制 模板到正确的文件名, 并让用户自定义副本。这 文件未版本控制,因此永远不会 要承诺。如果你愿意,你可以 将文件添加到其父目录 svn:忽略属性,所以它不会 在"SVN 状态"中显示为"?" 命令。
这太烦人了...我想我只需要小心那个文件并制作我自己的配置的备份副本(我可以忽略)。
感谢大家的回答。
SVN将始终认为该文件是存储库的一部分,如果您将其命名相同并将其粘贴在同一目录中。您的选择是
- 重命名它(也许编写一个 shell 脚本来
mv config.conf config.conf.theirs && mv config.conf.mine config.conf
然后运行你的应用程序) - 快点。也许可以向应用程序添加一些逻辑,以检查本地用户特定目录中的 config.conf,然后在找不到时使用默认的 config.conf
您可以在本地文件夹中添加一个 svn-ignore: 属性,该属性不包括 config.conf 甚至 *.conf
但我相信,您必须从SVN中完全排除此文件,即如果它已经签入存储库,则需要先将其从存储库中删除
忽略该文件应该可以帮助您:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html
配置文件的子版本化时,我发现有一个完整的主干专用于它非常有用。为什么?大多数是因为您可以简单地拥有两个本地存储库副本,一个用于本地使用,一个用于远程搜索。
喜欢这个:
/workdir/configuration [ 是指向/workdir/conf_local ] 的链接
/workdir/conf_local [ 保持本地会议更新,但不破坏我的设置 ]
/workdir/conf_remote [ 始终使用远程数据更新,因此我可以提交更改 ]
你有什么样的设置,或者这是否适用于你碰巧使用的任何语言,但这就是我对网站和PHP的方式。
首先,创建默认配置,该配置可能具有不适用于 90% 设置的朴素值,但为您提供了有关存在哪些值以及实际可以配置哪些值的参考。这个脚本通常被称为"config.default.php
"或类似的东西。此脚本的底部是以下内容:
if (file_exists("config.php")) require "config.php";
简单的逻辑。如果配置文件有用户覆盖,则加载它,并让它覆盖它需要的任何内容。然后,只需通过所有开发计算机上已经解释的方法以及出于任何原因保留 svn 签出的任何生产计算机上解释的方法忽略此用户配置文件。这是一个非常灵活的设置,可以为大多数语言/环境设置类似的过程。
正如Scrappydog指出的那样
您可以在提交对话框中使用/创建不同的列表
它支持提交时忽略列表,这样此列表下的文件将不可见。
您可以参考此博客链接了解详细信息。
http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html