8

在 SVN 服务器上,有一个名为config.conf. 我有一个本地版本,称为相同的东西(在同一个地方)。如何确保我的本地配置不会被覆盖或签入?

当我在这里时,目录的答案是否不同?

我正在使用 Tortoise SVN,但命令行答案很酷。

谢谢!

[对不起,如果以前有人问过这个基本问题……我看了但没有找到。]

4

9 回答 9

11

TortoiseSVN 对这个问题的一半有一个很好的答案:ignore-on-commit

这可以防止您意外提交“仅限本地”更改,但它并不能解决意外更新本地更改文件的问题。

查看此博客文章,了解详细的如何:

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html

于 2009-08-27T20:48:15.757 回答
5
  1. 使用 svn:ignore 将其从存储库中排除(您必须先将其从存储库中删除)
  2. 在 config.conf.default 中保留一份带有占位符值的副本。您可以在存储库中保留默认副本。
  3. 正常使用 config.conf - subversion 不会再看到它了
于 2008-10-24T13:12:11.593 回答
4

谢谢大家。我以为 Eoin 可能疯了,但事实上这是真的。您不能忽略版本控制中的文件。

根据乌龟文档

忽略版本化项目

版本化的文件和文件夹永远不能被忽略——这是 Subversion 的一个特性。如果您错误地对文件进行了版本控制,请阅读名为“忽略已经版本控制的文件”的部分,了解如何“取消版本”它的说明。

从 SVN 文档

我的项目中有一个文件,每个开发人员都必须更改,但我不希望那些本地模块被提交。如何让 'svn commit' 忽略该文件?

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

然后,在最初的“svn checkout”之后,让您的用户(或您的构建系统)将模板的正常操作系统副本复制到正确的文件名,并让用户自定义副本。该文件是无版本的,所以它永远不会被提交。如果您愿意,您可以将文件添加到其父目录的 svn:ignore 属性中,这样它就不会显示为“?” 在'svn status'命令中。

这非常烦人......我想我只需要小心那个文件并制作我自己的配置的备份副本(我可以忽略)。

感谢大家的回答。

于 2008-10-24T13:11:26.993 回答
3

您可以将 svn-ignore: 属性添加到不包括 config.conf 甚至 *.conf 的本地文件夹

但我相信,你必须从 SVN 中完全排除这个文件,即如果它已经被签入到 repo,你需要先从存储库中删除它

于 2008-10-24T13:04:39.067 回答
3

如果您将其命名为相同并将其粘贴在同一目录中,SVN 将始终认为该文件是存储库的一部分。你的选择是

  • 重命名它(也许写一个shell脚本mv config.conf config.conf.theirs && mv config.conf.mine config.conf然后运行你的应用程序)
  • 移动它。可能会在您的应用程序中添加一些逻辑,以检查本地用户特定目录中的 config.conf,然后在未找到时使用默认的 config.conf
于 2008-10-24T13:07:13.773 回答
1

忽略该文件应该可以帮助您:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-ignore.html

于 2008-10-24T13:05:30.500 回答
1

当配置文件发生颠覆时,我发现拥有一个专用于它的整个主干非常有用。为什么?主要是因为您可以简单地拥有两个本地存储库副本,一个用于本地使用,一个用于远程转换。

像这样:

/workdir/configuration [是到 /workdir/conf_local 的链接]
/workdir/conf_local [保持本地配置更新但不会覆盖我的设置]
/workdir/conf_remote [总是使用远程数据更新,所以我可以提交更改]

于 2008-10-24T13:14:12.993 回答
1

我不知道你有什么样的设置,或者这是否适用于你碰巧使用的任何语言,但这是我使用网站和 PHP 的方式。

首先,您创建默认配置,它可能具有不适用于 90% 的设置的幼稚值,但会为您提供有关哪些值以及实际可以配置的值的参考。该脚本通常称为 ' config.default.php' 或类似的名称。在这个脚本的底部是这样的:

if (file_exists("config.php")) require "config.php";

简单的逻辑。如果配置文件有用户覆盖,则将其加载,并让它覆盖它需要的任何内容。然后通过已经在所有开发机器上解释的方法忽略这个用户配置文件,以及任何出于任何原因保持 svn checkout 的生产机器。这是一个非常灵活的设置,并且可以为大多数语言/环境设置类似的过程。

于 2008-10-24T13:41:31.487 回答
0

正如 Scrappydog 指出的那样

您可以在提交对话框中使用/创建不同的列表

它支持忽略提交列表,这样该列表下的文件将不可见..

您可以参考 此博客链接了解详细信息。

http://blog.baljeetsingh.net/2009/02/tips-tricks-svn-ignore-on-commit.html

于 2010-01-07T10:52:59.713 回答