我想清理包含格式错误的 Perl 代码的现有 subversion 存储库。由于我不确定是否需要与相当旧的代码进行一些比较,所以理想情况下,我希望所有版本的格式都相同。
另一方面,通过签出所有旧版本、使用 perltidy 重新格式化和签入来创建新的存储库,必须保留原始日志消息。
有什么工具/食谱可以做到吗?
我想清理包含格式错误的 Perl 代码的现有 subversion 存储库。由于我不确定是否需要与相当旧的代码进行一些比较,所以理想情况下,我希望所有版本的格式都相同。
另一方面,通过签出所有旧版本、使用 perltidy 重新格式化和签入来创建新的存储库,必须保留原始日志消息。
有什么工具/食谱可以做到吗?
对于未来,我会推荐一个svn pre-commit hook到运行Test::PerlTidy的脚本,以强制每个人保持他们的代码整洁。
svn diff
当您想要与旧版本进行比较时,您可以考虑使用自定义命令,而不是尝试更改所有以前的提交。就像是:
#!/bin/bash
# tidydiff.sh for tidying code before diffing
perltidy "$1" > "/tmp/$1"
perltidy "$2" > "/tmp/$2"
diff "$1" "$2"
rm "/tmp/$1" "/tmp/$2"
然后svn diff --diff-cmd=tidydiff.sh
在您想查看旧版本时使用。
你到底想做什么?清理所有旧版本?
不要这样做。您将破坏您的历史,即使您应该生成相同的 Perl 脚本(刚刚整理),您最终也可能对以前发布的一些修订版感到厌烦。此外,这不值得努力。
我建议您检查当前的修订,运行 Perl Tidy,然后检查您的更改。你不会改变你的旧代码,但它会给你从现在开始使用的干净的东西。
当然,如果你的 Perl 代码格式很差,以至于你想用 Perl 整洁地运行整个代码,你就会遇到更多问题。是什么阻止了某人再次将代码弄得一团糟?
我还建议您将Jenkins视为持续构建过程的一部分。您不编译Perl 代码,但您可以使用 Jenkins 运行测试以确保所有新的 Perl 脚本和对 Perl 脚本的任何修改都已整理好。如果 Perl 脚本的格式不正确,您将无法构建并通过电子邮件发送给您自己和开发人员。
开发人员将很快学会使用 Perl Tidy,然后再签入新的 Perl 代码,以面对构建失败的公共尴尬。
顺便问一下,您的开发团队的其他成员是否支持您的努力?如果没有,您要做的第一件事就是让他们相信良好的 Perl 格式化可以帮助减少错误,并为他们提供有助于自动化格式化工作的工具。