SVN:如何维护本地 config.blah 文件?
题
在SVN服务器上,有一个文件名为 config.conf
. 。我有一个本地版本,称为相同的东西(在同一个地方)。 如何确保我的本地配置不会被覆盖或签入?
当我在这里时,目录的答案是否不同?
我正在使用 Tortoise SVN,但命令行答案很酷。
谢谢!
[抱歉,如果这个基本问题之前已被问过......我找了找,没找到。]
解决方案
如果您以相同的名称并将其粘贴在同一目录中,SVN 将始终认为该文件是存储库的一部分。您的选择是
- 重命名它(也许编写一个shell脚本
mv config.conf config.conf.theirs && mv config.conf.mine config.conf
然后运行您的应用程序) - 移动它。也许可以向您的应用程序添加一些逻辑,以检查本地用户特定目录中的 config.conf,然后如果未找到,则使用默认的 config.conf
其他提示
对于这个问题的一半,TortoiseSVN有一个很好的答案:忽略提交
这可以防止您意外提交“仅限本地”信息。更改,但它无法解决意外更新本地更改文件的问题。
查看此博客文章,详细了解如何:
http://blog.baljeetsingh。净/ 2009/02 / TIPS-技巧 - svn的-忽略-ON-commit.html
- 使用svn:ignore将其从存储库中排除(您必须先将其从存储库中删除)
- 使用占位符值在config.conf.default中保留副本。您可以将默认副本保留在存储库中。
- 正常使用config.conf - subversion将不再看到它 醇>
谢谢大家。我以为Eoin可能生气了,但事实确实如此。您不能忽略处于版本控制中的文件。
根据乌龟文档
忽略版本化项目
版本化的文件和文件夹永远无法忽略 - 这是颠覆的功能。如果您错误地将文件版本版本为“忽略已经版本版本的文件”的部分,以获取有关如何“不转化”它的说明。
以及来自 SVN 文档
我的项目中有一个文件,每个开发人员都必须更改,但是我不希望那些本地mod曾经投入。如何使“ SVN commit”忽略文件?
答案是:不要将该文件放在版本控制下。而是将文件模板放在版本控件下,类似于“ file.tmpl”。
然后,在初始“ SVN结帐”之后,请您的用户(或构建系统)将模板的正常操作系统副本执行到适当的文件名,并让用户自定义副本。该文件是不转让的,因此永远不会投入。如果您愿意,可以将文件添加到其父目录的SVN:忽略属性中,因此它不会显示为“?”。在“ SVN状态”命令中。
这真是太烦人了……我想我只需要小心该文件并制作我自己的配置的备份副本(我可以忽略)。
感谢大家的回答。
您可以将svn-ignore:属性添加到本地文件夹中,该文件夹不包括config.conf甚至* .conf
但是我相信,你必须完全从SVN中排除这个文件,即如果它已经被检入了repo,你需要先从存储库中删除它
当存在配置文件的颠覆时,我发现有一个专用于它的整个中继非常有用。 为什么? 大多数是因为你可以只有两个本地存储库副本,一个用于本地用途,一个用于远程控制。
像这样:
/ workdir / configuration [是/ workdir / conf_local的链接]
/ workdir / conf_local [保持本地conf更新,但不会设置我的设置]
/ workdir / conf_remote [始终使用远程数据更新,因此我可以提交更改]
我不知道你有什么样的设置,或者这是否适用于你碰巧使用的任何语言,但这是我用网站和PHP做的方式。
首先,您创建默认配置,该配置可能具有不适用于90%设置的天真值,但会为您提供有关哪些值以及实际可配置的内容的参考。此脚本通常称为“ config.default.php
”或类似的东西。在这个脚本的底部可以找到:
if (file_exists("config.php")) require "config.php";
简单的逻辑。如果有配置文件的用户覆盖,则将其加载,并让它覆盖它需要的任何内容。然后只需通过已在所有开发机器上解释的方法以及因任何原因保留svn checkout的任何生产机器来忽略此用户配置文件。这是一种非常灵活的设置,可以为大多数语言/环境设置类似的程序。
您可以在提交对话框中使用/创建不同的列表
它支持 ignore-on-commit 列表,这样这个列表下的文件就不会显示..
你可以参考 此博客链接 了解详情。
http://blog.baljeetsingh达网络/ 2009/02 / TIPS-技巧 - svn的-忽略-ON-commit.html