在Subversion中分配给*.xml文件的正确/最佳属性是什么?
我在性质特别感兴趣svn:mime-type和svn:needs-lock.
我认为有两个答案,但我不确定选择哪一个.第一个是将XML文件视为文本文件,让Subversion管理文本合并.为此,我会使用svn:mime-type=text/xml,不会使用svn:needs-lock.
第二种方法是将XML文件视为二进制文件,防止Subversion执行自动合并并坚持锁定编辑前的行为.为此,我会使用svn:mime-type=application/xml并将设置svn:needs-lock.
我认为将XML视为文本是可以的,如果它是直接在文本编辑器中编辑的XML文件,那么用户就可以手动解决任何最终的合并冲突.但是,工具生成的XML文件不能轻易手动编辑,因此Subversion不应自动合并,以免用户处于必须解决(本质上)二进制文件冲突的情况.
保守,我将XML文件视为二进制文件.但我总是要向开发人员解释这一点,他们更愿意直接编辑一些XML文件,而不需要先获取锁.
我想知道其他人对此的看法以及是否存在与工具生成的XML文件有关的危险.
邮政澄清:
在阅读了前三个回复后,我意识到上述问题不够明确.
我怀疑应该在Subversion配置文件()部分中为*.xml文件配置哪些属性?[auto-props]~/.subversion/config
问题是只能有一个配置.那么,我应该保守并将所有XML文件视为二进制文件,还是应该让那些手动编辑XML文件并将所有XML文件默认为文本的用户取悦?
使用 strace 我注意到 git-revert 仅调用两个钩子:
但是 git-commit 调用这四个:
既然 git-revert 会产生提交,为什么它不调用与 git-commit 相同的钩子呢?
我在 Git 邮件列表上询问了这个问题,但没有得到回应。所以我在这里问。
当我实现一个钩子来检测和拒绝恢复合并提交的提交时,我最终研究了这一点,因为它们 很麻烦。
我尝试将其实现为 commit-msg 挂钩,以在提交消息中搜索字符串“This reverts commit SHA-1”。但 git-revert 不会调用 commit-msg 挂钩。
因此,现在我将支票实现为预接收挂钩。但我发现将所有预接收检查也作为预提交或提交消息挂钩实现很有用,这样我就可以在提交时而不是仅在推送时检测问题。