Git Pluginの文字化け
Hudson の Git Plugin を使うと文字化けする問題とその解決方法 (不完全) に書かれているとおり、Windows上のHudsonでGit Pluginを使用すると変更履歴の文字化けが発生します。
要点だけ書くと、変更履歴に表示される履歴は"git log"の出力を取り込むのですが、デフォルトではUTF-8で出力されるログをWindowsのデフォルトエンコーディングであるWindows-31Jとして扱ってしまうのが問題のようです。
GitSCM.javaの714行目に、
private String putChangelogDiffsIntoFile(IGitAPI git, String branchName, String revFrom, String revTo) throws IOException { ByteArrayOutputStream fos = new ByteArrayOutputStream(); String changeset = "Changes in branch " + branchName + ", between " + revFrom + " and " + revTo + "\n"; fos.write(changeset.getBytes()); git.changelog(revFrom, revTo, fos); fos.close(); return fos.toString(); }
最後のreturn文でgit logの出力をfosに出力してfos.toString()していますが、ここをfos.toString("UTF-8")とすれば文字化けしていない変更履歴を取得することができます。Hudsonのユーザでi18n.logoutputencodingを変更してたら、そのエンコーディングにしないといけないかも。
ちなみに、changelog.xmlファイルを出力しているのはGitSCM.javaの391行目あたりですが、XMLではないようにみえるのは気のせいか。