我在哪里:Linux命令行
我现在遇到的问题:
有时我无法进行原子提交(包括一个特定故障单/任务所需的所有修改),因为我们在存储库中有一些文件,其内容因本地开发环境而异。
例如:database.xml
(dbname,username,password等)。我在本地环境中修改此文件,每次我需要进行提交/签入时,我手动列出了提交所需的所有文件/文件夹(不包括本地修改的文件)。
可能是一个错误的设计决策,database.xml
必须从存储库中删除并更改为database.xml.template
(存储在SVN中),因此在手动之前不会包含此文件为它执行svn add
?也许这是错误的方法 - 将所有这些依赖于环境的信息存储在存储库中 - 在这种情况下,我们可以通过提交修改后的配置来破坏所有内容,例如..
据我了解,svn:ignore
属性在这种情况下无法提供帮助,因为它只能用于未存储在存储库中的文件。
如何解决这个问题?
P.S。:我正在使用Ubuntu,而且大多数是SVN的纯命令行。
答案 0 :(得分: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。
答案 1 :(得分:6)
您应该将模板存储在存储库中,而不是您需要在本地修改的实际文件。
这样,您可以根据需要重建pristine文件,而不必冒将文件存储到不应存在的存储库中的风险。
不,svn:忽略不会帮助你。
答案 2 :(得分:0)
我的2美分:首先,您需要确保是否有任何(简单)方法来协调您的项目涉及的所有开发人员的路径。这可能是相同的相对目录结构或应用程序中的一些薄层,它支持一些shell变量或类似$ home,%USERPROFILE%等。随着时间的推移,这将比让每个开发人员处理它更方便。拥有未版本化的配置,这也是IDE试图提供的配置。
一般来说,版本控制配置文件对我来说非常好,只需花费时间设置一个开发工具,不应该偶然丢失。