8

我在哪里:Linux 命令行

我现在遇到的问题:

有时我无法进行原子提交(包括一个特定票证/任务所需的所有修改),因为我们在存储库中有一些文件,其内容在本地开发环境中有所不同。

例如:(database.xml数据库名称、用户名、密码等)。我在本地环境中修改了这个文件,每次我需要提交/签入时,我都会手动列出提交所需的所有文件/文件夹(不包括这个本地修改的文件)。

也许这是一个错误的设计决策,database.xml必须从存储库中删除并更改为database.xml.template(存储在 SVN 中),所以在您手动执行之前不会包含此文件以提交svn add?也许这是错误的方法 - 将所有这些环境相关信息存储在存储库中 - 在这种情况下,我们可以通过提交修改后的配置来破坏一切,例如..

据我了解,svn:ignore属性在这种情况下无济于事,因为它只能用于未存储在存储库中的文件。

如何解决这个问题?

PS:我使用的是 Ubuntu,而且大部分是纯命令行的 SVN。

4

3 回答 3

8

对此的“标准”程序是这样的(原谅 SVN 语法,我最近一直在使用Bazaar):

echo config > database.xml.template
svn add database.xml.template
svn ignore database.xml
svn commit

然后在每个人的开发机器上:

svn checkout
cp database.xml.template database.xml
...edit database.xml...

当他们承诺时,

echo foo > someotherfile
svn commit

database.xml文件不会被添加到 Subversion。

于 2009-05-03T10:26:46.627 回答
6

您应该在存储库中存储一个模板,而不是您需要在本地修改的实际文件。

这样,您可以在需要时重建原始文件,而不必冒险将文件存储到不应该存在的存储库中。

不, svn:ignore 在这里帮不了你。

于 2009-05-03T10:22:25.950 回答
0

我的 2 美分:首先,您需要确保是否有任何(简单的)方法可以为参与项目的所有开发人员协调您的路径。这可能是相同的相对目录结构或应用程序中的某个薄层,它支持一些 shell 变量或诸如 $home、%USERPROFILE% 等。随着时间的推移,这将比让每个开发人员处理它自己的未版本化配置和这也是 IDE 试图提供的。

一般来说,版本控制配置文件对我来说非常好,这只是开发人员花在设置上的时间,不应该意外丢失。

于 2014-08-11T08:03:35.223 回答