SVN可以执行类似git过滤器属性的操作吗?

时间:2010-11-23 04:20:36

标签: svn git

我对git不太熟悉,但看起来它可以使用过滤器属性,例如,在提交之前整理XML文件。 SVN手册专门(强烈)建议不要使用预提交挂钩。还有另一种方式吗?

5 个答案:

答案 0 :(得分:1)

答案似乎是:没有。我认为拒绝提交是SVN唯一安全的选择。

答案 1 :(得分:0)

没有别的方法可以做到这一点,而且你会发现即使支持这样做也会让你感到头疼。甚至不建议您在签入之前自行重新格式化代码,因为您的版本差异不会让您对真正改变的内容有所了解。只有当某些东西格式太可怕而且它不可读时我才会这样做。

答案 2 :(得分:0)

您想要做的任何事情的唯一地方是使用clean/smudge脚本来模糊数据库连接字符串,商务门户的密码等。如果您可以拥有一个配置文件并且它是功能性公共数据和私人安全数据的混合。

Pro Git Book's Attributes Section

希望这会有所帮助。

答案 3 :(得分:0)

这听起来像是IDE或XML编辑器的工作。例如,Eclipse允许您在保存时指定各种自动操作(但是制作一个糟糕的XML编辑器)...我确信有一个XML编辑器可以在保存时为您整理或重新格式化XML。

我不认为差异应该是反对这一点的理由,因为一个好的差异工具可以选择忽略空格和/或不重要的差异,即使文件已被重新格式化,也可以轻松查看差异。

根据您使用的团队,如果这种“整理”会大大改变您触摸的每个文件,您可能希望避免它,或者它可能完全没问题。例如,我有Eclipse修剪尾随空格并在保存时添加缺少的@Override注释,但我不告诉它在保存时完全重新格式化我的.java文件。

答案 4 :(得分:0)

使用Git,您可以获得存储库的完整副本供您个人使用,因此在提交过程中对文件进行清理不是问题。毕竟,你只是在影响自己。

但是,Subversion有一个集中的存储库,这意味着在提交过程中复制文件比较复杂,通常不鼓励。

其中一个问题是这种类型的东西必须由一个钩子处理,而钩子,因为它们在服务器上运行,所以无法访问你的工作副本。他们可以通过只读的svnlook命令检查提交,但就是这样。是的,有办法绕过它,但正如手册所说,不推荐。

即使使用像Git和ClearCase这样的版本控制系统,在提交过程中也可以使用文件,但这仍然不是一个好主意。首先,它可以减慢提交过程,因为钩子脚本运行会使用户感到沮丧。第二,如果munging进程实际上破坏了文件会发生什么?开发人员假设在提交之前测试并验证他们的更改。 “破坏构造”是一种犯罪,甚至比在休息室喝最后一杯咖啡更糟糕,而不是制造另一个锅。然而,这是一个开发人员,他们做了他们想要的所有事情,这是愚蠢的钩子脚本做到了!

这应该由自动构建过程完成(您正在使用CruiseControl或Hudson等增量构建系统吗?)。这可以作为测试的一部分完成,如果文件格式不正确,可以将构建标记为“不稳定”。实际上,Hudson有一些钩子可以做到这一点,作为构建过程的一部分,这使得这非常简单。构建服务器可以通知程序员他的错误(糟糕的程序员!文件很难缩进!没有甜甜圈给你!)以及技术主管或构建经理。

签入的内容是开发人员编写和测试的内容。检查格式化,单元测试以及构建系统可以完成的所有其他工作。