RedmineのGitのリポジトリブラウザで改行を無視して差分表示

2011年一発目。

Redmine + Gitで運用してるケースの話。

RedmineからGitのリポジトリを参照してる場合に画面からリビジョンのdiffが見れる。

ただこのままだと改行コードが変更された場合(例えばdos->unix)に全行ハイライト表示されて改修箇所の視認がしづらい。

改行コードの変更がプロジェクトに与える影響が無視出来るレベルなら表示させないでいいと思う。

下記のコードを修正して改行の無視を指定出来た。

./lib/redmine/scm/adapters/git_adapter.rb

line 223付近のshowに-wを追加。

cmd = "#{GIT_BIN} --git-dir #{target('')} show -w #{shell_quote identifier_from}" if
cmd = "#{GIT_BIN} --git-dir #{target('')} diff #{shell_quote identifier_to} #{shell_quote identifier_from}" if !identifier_to.nil?

で、サーバを再起動して改行が無視される事を確認。



[20120125]追記

redmine-1.3.0へアップデートしたらコード変わってた。
lib/redmine/scm/adapters/git_adapter.rb
下記の様に修正。

        def diff(path, identifier_from, identifier_to=nil)
          path ||= ''
          cmd_args = []
          if identifier_to
            cmd_args << "diff" << "--no-color" << "-w" <<  identifier_to << identifier_from
          else
            cmd_args << "show" << "--no-color" << "-w" << identifier_from
          end
          cmd_args << "--" <<  scm_iconv(@path_encoding, 'UTF-8', path) unless path.empty?
          diff = []
          scm_cmd *cmd_args do |io|
            io.each_line do |line|
              diff << line
            end
          end
          diff
        rescue ScmCommandAborted
          nil
        end