在 SVN 服务器上,有一个名为config.conf
. 我有一个本地版本,称为相同的东西(在同一个地方)。如何确保我的本地配置不会被覆盖或签入?
当我在这里时,目录的答案是否不同?
我正在使用 Tortoise SVN,但命令行答案很酷。
谢谢!
[对不起,如果以前有人问过这个基本问题……我看了但没有找到。]
TortoiseSVN 对这个问题的一半有一个很好的答案:ignore-on-commit
这可以防止您意外提交“仅限本地”更改,但它并不能解决意外更新本地更改文件的问题。
查看此博客文章,了解详细的如何:
http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html
谢谢大家。我以为 Eoin 可能疯了,但事实上这是真的。您不能忽略版本控制中的文件。
根据乌龟文档
忽略版本化项目
版本化的文件和文件夹永远不能被忽略——这是 Subversion 的一个特性。如果您错误地对文件进行了版本控制,请阅读名为“忽略已经版本控制的文件”的部分,了解如何“取消版本”它的说明。
从 SVN 文档
我的项目中有一个文件,每个开发人员都必须更改,但我不希望那些本地模块被提交。如何让 'svn commit' 忽略该文件?
答案是:不要将该文件置于版本控制之下。相反,将文件模板置于版本控制之下,例如“file.tmpl”。
然后,在最初的“svn checkout”之后,让您的用户(或您的构建系统)将模板的正常操作系统副本复制到正确的文件名,并让用户自定义副本。该文件是无版本的,所以它永远不会被提交。如果您愿意,您可以将文件添加到其父目录的 svn:ignore 属性中,这样它就不会显示为“?” 在'svn status'命令中。
这非常烦人......我想我只需要小心那个文件并制作我自己的配置的备份副本(我可以忽略)。
感谢大家的回答。
您可以将 svn-ignore: 属性添加到不包括 config.conf 甚至 *.conf 的本地文件夹
但我相信,你必须从 SVN 中完全排除这个文件,即如果它已经被签入到 repo,你需要先从存储库中删除它
如果您将其命名为相同并将其粘贴在同一目录中,SVN 将始终认为该文件是存储库的一部分。你的选择是
mv config.conf config.conf.theirs && mv config.conf.mine config.conf
然后运行你的应用程序)当配置文件发生颠覆时,我发现拥有一个专用于它的整个主干非常有用。为什么?主要是因为您可以简单地拥有两个本地存储库副本,一个用于本地使用,一个用于远程转换。
像这样:
/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 checkout 的生产机器。这是一个非常灵活的设置,并且可以为大多数语言/环境设置类似的过程。
正如 Scrappydog 指出的那样
您可以在提交对话框中使用/创建不同的列表
它支持忽略提交列表,这样该列表下的文件将不可见..
您可以参考 此博客链接了解详细信息。
http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html