複数の diff を一気に見る GUI のツールってやっぱりないの?

terminal 原理主義の自分は当然

svn diff
svn diff | awk '/^Index/'
svn diff | awk '/^Index/ {print $NF}'
for i in `svn diff | awk '/^Index/ {print $NF}'`; do svn diff $i | nkf -w ; done | less

みたいなことをしてるんだけど1、GUI のツールにこういうことのできるものを見かけたことがない。なんでだろう。

何が言いたいかというと、例えば TortoiseSVN などで commit する際、変更のあるファイルがリストアップされるでしょ? で、その diff を見ようと思ったら別な diff ツールに渡さなきゃいけないんだけど、そのとき一つ一つ開かないといけないのって面倒くさくない?って話。(これが間違いなら今回の話はもう全然意味ないです。)

ファイル一つだけで済んでるうちはいいんだけど、例えばメソッドを追加したのでプロダクトコードとテストコード両方いじりましたとか、テストデータもいじりましたとか、変更が複数のクラスに入りましたとか、あるわけじゃないですか2。このとき、GUI 使いの人たちはどうやってその変更を一覧するのだろう、という疑問です。

いやね、絶対一覧できなきゃいけないってわけじゃないんだけど、一覧を見てるうちに「あれ、そういえばさっきいじってたファイルを add し忘れてるな」とか「しまった、何の気なしにちょっといじっておいたものをそのまま commit するところだった」なんてことに気づくことがちょこちょこあるし、複数の diff の間でうまく対応が取れていない3ことに気づいたりするし、実際身近な GUI 使いの人の commit 忘れが自分より多い気がしてるのです。当然、使い手の個性もあるでしょうが。

第一、GUI の diff ツールって、確かにきれいに見えるんだけど実際の変更以外も全部表示されてるから、例えば変更の入った部分がファイルの末尾の方ばっかりとかだとスクロールがうざくないですか? コロコロコローって4。そういうのって設定次第でどうにかなるもんなの? それでもやっぱ開いたり閉じたりしてるうちにさっき見てた diff の内容が頭から飛んじゃわない? 飛ぶよね。なんかやっぱ GUI の diff ツールって、書いてる途中のファイルの diff が見れればそれでいいと思ってんじゃないかって気がすんだよなぁ。

まとめ大事だよ、まとめ。まとめて見ようよ。

  1. 最後のは文字コードの混ざったファイル群の diff を全部 UTF-8 にして読むため 

  2. 複数のクラスに同時に変更が入るのはどうなんだという意見もあるだろうけど、実際問題インターフェイスを変えたいとかあるわけで。 

  3. でもテストは通る 

  4. そりゃなんかキーバインドがあるんだろうけど 

More

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Develop Document Jekyll