当前位置:  开发笔记 > 运维 > 正文

SVN原子提交方法

如何解决《SVN原子提交方法》经验,为你挑选了2个好方法。

我在哪里:Linux命令行

我现在遇到的问题:

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

例如:database.xml(dbname,username,password等).我在本地环境中修改此文件,每次我需要进行提交/签入时,我手动列出了提交所需的所有文件/文件夹(不包括本地修改的文件).

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

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

怎样才能解决这个问题?

PS:我正在使用Ubuntu,而且大部分都是SVN的纯命令行.



1> FryGuy..:

对此的"标准"程序是这样的(原谅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.


使svn忽略database.xml的实际命令是"svn propset svn:ignore database.xml".(截至svn 1.5.5)
如果我没记错,使用propset将覆盖所有其他svn:ignore's就位.您可以尝试组合propget和propset,或者更轻松地只是加速并使用编辑器添加另一行.

2> angry person..:

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

这样,您可以根据需要重建pristine文件,而不必冒将文件存储到不应存在的存储库中的风险.

不,svn:忽略不会帮助你.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有