这可能吗?如果是这样,我该怎么做?
代码在C#中,我们正在使用TortoiseSVN。
我只想在每次检查时自动格式化代码。
非常感谢
答案 0 :(得分:27)
使用预提交钩子脚本,你可以这样做,是的。 但我确信你会在第一次提交后删除该脚本,因为你会遇到大问题。
如果修改提交的数据,则客户端不知道该提交的数据。因此,在您的脚本“修复”文件格式的提交之后,存储库中的文件内容与工作副本中的文件不同。但是你的工作副本仍然认为它与存储库是最新的(毕竟,它的修改刚刚提交)。
所以在下次更新时,你会陷入地狱 - 破碎的工作副本,愤怒的用户,......
当然,你可能会破坏构建 - 自动格式化有时会产生这种影响。
您当然可以实现一个钩子脚本检查以获得正确的格式,如果没有则返回错误,这非常好。
由于你使用的是TortoiseSVN,你可以尝试在client-side pre-commit hook中进行格式化。
答案 1 :(得分:17)
你在神圣的战场上感动。与人们的格式一致的是要求干草叉和火把。
我的建议:不要。
更不用说,如果你正在谈论C#,而你的开发人员正在使用Visual Studio,那么VS有很多自动格式化工具。只需输入结束的大括号,VS就可以/自动格式化你的代码。
更好的解决方案可能是让所有开发人员使用相同的自动格式设置。
工具 - >选项,文本编辑器 - > C# - >格式化
这些设置是可导出的,因此如果您可以让团队同意在VS中使用相同的代码格式设置,您可以避免在源代码管理系统中执行它的麻烦,最好还是做它做的事情最好的。
如果你一直在努力做到这一点,就像其他人所说的那样,预先提交钩子是要走的路。如果您的SVN服务器在Windows上运行,我是否可以推荐CaptainHook来编写您的钩子脚本?可以使用任何.NET语言编写的可插入的钩子脚本。
答案 2 :(得分:6)
我认为您可以使用存储库中的a pre-commit hook来执行此操作。
编辑对于那些认为这是一个坏主意的人(我不是说它不是):组织强制执行特定的代码样式或代码格式并不罕见。有时这些规则可能非常迂腐并且严格执行,虽然它们通常是涉及此的人为操作(即在将任何内容提交到存储库之前格式化为正确的样式),但自动化过程有时可能很有用。
另一种方法可能是在提交之前自动执行验证,但即使检查失败仍然允许提交,但是只发送电子邮件或其他通知以指示某人不遵循该样式
答案 3 :(得分:6)
答案 4 :(得分:5)
我强烈推荐它。
使用预提交脚本或更好的方法,找到一种在IDE中自动执行的方法(预提交会将更改的文件推送到客户端)。 Eclipse可以在保存时自动格式化。
这样做的理由是,如果开发人员的格式不同,你会发现那些提交的文件,其中提交只是格式化更改而且会引起无休止的混淆。
常见的格式化模式是一个非常好的主意。这将很难介绍,但它是值得的。所有更改都将是真正的更改,而不仅仅是格式更改。根据我的经验,开发人员将看到好处并接受它。
我使用过cvs和java,并使用jalopy进行自动格式化。我们使用的是分支系统,因此它是强制性的,而且效果非常好。
答案 5 :(得分:3)
这是可能的,但也是一个非常非常糟糕的主意。
没有自动代码格式化程序是完美的,我几乎可以保证它会让人们离开。
也就是说,如果你想这样做,请考虑使用预提交钩子。
SVN服务器是在Windows或Linux系统上运行吗?您想使用什么代码格式化程序?