我有这样的设置。
SVN存储库与Live网站完全相同。 每个不同的站点都有不同的配置文件local.xml。 有些客户端是windows / toitoise,有些客户端是Linux服务器,我有SSH访问权限。
我的要求是。
我不希望在更新时也不会在A. Repository上更改local.xml,也不希望在更新时更改B.客户端。
我希望local.xml成为每个新结帐的一部分。
我不希望客户端上的local.xml文件在修改后留下“修改”的问号标记。
我不想在每次提交时手动“取消选中”local.xml,因为还有一些文件夹,如缓存和图像文件也被“忽略”。
我试过了, - 在Repo上锁定文件。提交时会抛出一个丑陋的错误。我担心它会破坏其余的提交。 - SVN:忽略local.xml。但似乎它仍在继续。
感谢您的帮助。
答案 0 :(得分:2)
我想我知道你想要什么。通过构建过程来实现这一目标的正确方法。
在您的存储库中,您将拥有local.template.xml
文件和local.properties.template
文件。没有local.xml
个文件或local.properties
个文件。
您的开发人员将使用local.properties.template
并制作符合其需求的local.properties
文件。开发人员将使用构建过程,它将获取local.properties
文件和local.template.xml
文件,并将它们合并到local.xml
文件中供其使用。
当开发人员提交代码时,他们不会提交local.xml
或local.properties
文件。由于这些不在存储库中,开发人员可以自由更新其工作目录,而不必担心它会以某种方式破坏local.xml文件中的设置。
并且,您可以毫无顾虑地在服务器上进行部署,因为新版本不会重写服务器的local.xml
文件。
您需要的是一个预提交挂钩,可以保证开发人员不会向存储库添加local.xml
或local.properties
。我有one,安装和使用非常简单。它使用控制文件来指定可以添加哪些文件以及由谁添加。
答案 1 :(得分:1)
需要将文件放在忽略列表中,但仅凭它不会起作用。您还需要从存储库中删除该文件。运行此命令从SVN中删除文件,但保留本地文件:
svn rm --keep-local local.xml
svn commit
编辑:在SVN中保留本地设置文件的常用方法是使用default.local.xml
等名称添加它们并将其复制到local.xml
并在第一个之后修改设置查看。这样,您就不会有覆盖实际设置文件冲突的风险。