2011-04-29 39 views
2

我想清理一個包含格式不正確的Perl代碼的現有Subversion版本庫。 由於我不確定是否需要與相當舊的代碼進行比較,理想情況下,我希望所有修訂的格式都相同。用PerlTidy tiding顛覆Perl回購?

另一方面,通過簽出所有舊版本來創建一個新的repo,使用perltidy進行重新格式化並檢入將不得不保留原始日誌消息。

是否有任何工具/配方可以做到這一點?

回答

3

你究竟想幹什麼?清理所有舊版本?

不要這樣做。你會摧毀你的歷史,即使你應該生成相同的Perl腳本(剛剛整理完畢),你最終可能會破壞以前發佈的一些修訂版本。此外,這是不值得的努力。

我會建議您簽出您當前的修訂版,運行Perl Tidy,然後檢查您的更改。你不會改變你的舊代碼,但它會給你從現在開始工作的乾淨的東西。

當然,如果你的Perl代碼格式很差,你想用Perl整理來運行整個事情,你會遇到更多問題。什麼能夠防止有人再次弄亂代碼?

我也建議你看看Jenkins作爲連續構建過程的一部分。您不需要編譯 Perl代碼,但是您可以使用Jenkins運行測試以確保任何新的Perl腳本和對Perl腳本的任何修改都已被整理。如果Perl腳本的格式不正確,您將失敗您自己和開發人員構建併發送電子郵件。

開發人員在檢查新的Perl代碼之前會很快學會使用Perl Tidy,因爲他們有一個失敗的版本

順便說一句,你的開發團隊的其他人是否支持你的努力?如果沒有,首先要做的就是說服他們好的Perl格式可以幫助減少錯誤,併爲他們提供可以幫助自動化格式化工作的工具。

+0

是的,我想清理舊版本,但由於我找不到工具/配方,因此我開始認爲這可能是一個相當糟糕的主意。我會檢查詹金斯。我會傳播關於perltidy的這個詞。 – darked89 2011-04-29 17:01:46

4

未來,我會推薦一個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當你想看看舊版本。