git log
の --first-parent
オプションを使えばできる。
git log --oneline --first-parent activerecord/activerecord.gemspec
tig --first-parent activerecord/activerecord.gemspec
どういう話かというと、
あるファイルの変更履歴は git log path/to/file
で追える。ファイル名の変更も追跡したいなら git log --follow path/to/file
でだいたいいける。
一方、 GitHub Flow を採用しているコードベースの場合に、「どの Pull Request で変更されたか」を知りたいことがある。そのときどうすればいいか、という話。
で、結論、 git log --first-parent path/to/file
でだいたいいける。このへんの話が近い感じ。このスライドもわかりやすい。
git log
のデフォルト出力だと長くて見づらいので git log --oneline --first-parent path/to/file
などとするとよい。
tig
を使っている場合は tig --first-parent path/to/file
が便利。さらに hub
コマンドをインストールして以下のカスタマイズをすると o
キーで GitHub 上のページをさくさく開けるのでもっと便利(Pull Request の URL 自体を開くにはもうワンクリック必要だが)。
https://github.com/rails/rails/blob/master/activerecord/activerecord.gemspec でやってみた例。
git log --oneline activerecord/activerecord.gemspec
bdfffd1355 Update the Rails mailing list URLs to new discuss discourse URL [ci skip] 493edf044f Add bug tracker/documentation/mailing list URIs to the gemspecs 027e492b6f Fix links in gemspec and docs from http to https. 647d7e6167 Revert "Revert "Merge pull request #34387 from yhirano55/rails_info_properties_json"" f66a977fc7 Revert "Merge pull request #34387 from yhirano55/rails_info_properties_json" 1b7c3222e8 Require Ruby 2.5 for Rails 6. e74fdbe00c Amend CVE note and security guide section wordings 1c11688b56 Add CVE note to security guide and gemspecs 17ca17072d Merge Arel into Active Record d4eb0dc89e Rails 6 requires Ruby 2.4.1+ 0ea8e7db1a Remove support to Ruby 2.2 2e0fe5928f Use released arel 089ca520e3 Require alpha arel 831be98f9a Use frozen-string-literal in ActiveRecord 87b3e226d6 Revert "Merge pull request #29540 from kirs/rubocop-frozen-string" cfade1ec7e Enforce frozen string in Rubocop 3e6ce1cd69 Add source code and changelog links to gemspecs 40bdbce191 Define path with __dir__ e646bad5b7 Remove deprecated support to passing a column to #quote adca8154c6 applies new string literal convention in the gemspecs 1eb27fafa9 revises the homepage URL in the gemspecs [ci skip] b611350e7c Use released arel 32f7491808 Upgrade to Ruby 2.2.2 f0768eba28 Target Ruby 2.2.1 in gemspecs 2223f49157 Require Arel 7.0.0.alpha d3b098b828 Require Ruby 2.2 for Rails 5.0 96d0f751f9 Bump required Ruby version to 2.1.0 25c85cb6f6 Use released arel c747d4c48c Use released arel cc9091c3e7 Use released arel f2003834c8 Arel master is 6.0.0 18be17ac43 Use the released arel gem a6f58a535e use arel `master` and update activerecord to depend on arel `5.0.0`. 3cc7223f3d Remove depreacted finders 9848e8916f Bump activerecord-deprecated_finders. Fixes #10304 c072fcadd2 Bump arel to 4.0.0 88150e8622 activerecord-deprecated_finders 1.0.0 has a bug with has_many :through associations ca4bfa23a1 Bump activerecord-deprecated_finders to 1.0.0 ddd2c75b26 Revert "instruct RDoc to only parse Ruby files under lib [Fixes #9779]" c24528fbc9 instruct RDoc to only parse Ruby files under lib [Fixes #9779] aac00ed9c5 bumping arel bd36f185a8 Are was release 5f412956cf Less strict activerecord-deprecated_finders version 5937bd02de Undeprecate the :extend option 8110035623 Revert "Omit directories from gemspec.files for RubyGems 2 compat." bb8923dee0 Omit directories from gemspec.files for RubyGems 2 compat. a96a176930 Clean up gemspecs 17bb324f38 Renaming active_record_deprecated_finders to activerecord-deprecated_finders 6c7b250ac0 Add license field to gemspecs, by Matt Griffin dd2c9b9578 add active_record_deprecated_finders as a dep 66b7eb1927 bumping up arel 63dc9b46b1 Fix GH #4909. Dependency on TZInfo move from AR to AS. 488c9ef64c moving to arel 3.0.0 e883c06a4f Updated gemspec for ruby 1.9.3 b6105b0b59 updating arel and journey dependencies be9d3a2008 Bump Arel 1679aa56f3 Synchronize the gemspecs since CHANGELOG has been renamed to CHANGELOG.md 03a045b306 Bump arel dependency 4f8801963c Okay, the new incompatible arel is now called 2.2 and the sun shines upon thee once more 5870291425 Bump arel version a2a7a19d26 Bump up rack-cache and tzinfo 1c23887ab0 Bump ARel to 2.1.3 64d977359d Add the MIT-LICENSE to the Active Record gemspec f72f591c8c Not updating rubyforge for new versions. Result of "gem list -d rails" is not useful. a898df66e4 bumping arel requirement bd4831d699 Bump up rack-cache, tzinfo and thor e14e696e96 fixing arel requirements for released arel 99da42c299 Gem::Specification#has_rdoc= is deprecated since rubygems 1.7.0 ceef719924 Bump Arel up to 2.0.2 e3d6434dd9 depending on arel 2.0.0 ef572cad0a Bump arel to 1.0.1 33afaa446f Depend on ARel 1.0 w/ tiny fixes 3409f2c691 Depend on latest arel RC b91dcb63d0 Bump up tzinfo to 0.3.23 d16c5cc99b Change some missing README -> README.rdoc fcb230144b Bump up nokogiri, memcache-client, sqlite3-ruby, fcgi, mail and tzinfo d103c73d95 Bump Arel to 0.4.0 c8e2ec07a2 Unforce tzinfo from AS d956003fa4 Neat and tidy, I say a8b93d7a05 Bump to arel 0.3.3 to resolve Active Support dep e260d5fbcf Require Arel 0.3.2 c5ff181480 Use arel 0.3.1, for srs 275df55106 Bump arel dep to 0.3.0+ 4bc2cbc3cf Load RAILS_VERSION relative to the gemspec file. deb00bcb8c Read Rails version from a file instead of modifying the load path and doing requires 56ea20605a Wordsmith gem descriptions f221a6f19f Leverage VERSION constants from gemspecs to avoid tedious updates when releasing 5fe3dc4bf5 Adding ruby version spec to all gemspec files to at least 1.8.7 c548e21365 Bump git versions to 3.0.0.beta1 since we've released a81a2a29ab Bump arel dep 031139bb71 Homogenize gemspecs and remove the deprecated autorequire 79817aa9e7 Move to 3.0.0.beta 9bd0422dd7 Bump arel dependency to 0.2.0 from 0.2.pre a4aa95ba0c Bump AR.gemspec Arel dep too 66c4f28bd6 Bump arel requirement to 0.1.1 4cbd3f050b Move from git submodule to gem bundle f430d6b63e Make gemspecs the authoritative source instead of generating them from the Rakefile bd53ebde72 Add required dependencies on activemodel 67f5d611f5 Add rake gemspec and gemspecs to the repo
git log --oneline --first-parent activerecord/activerecord.gemspec
3391494207 Merge pull request #38864 from abhaynikam/replace-mailing-list-url 493edf044f Add bug tracker/documentation/mailing list URIs to the gemspecs b075bbdc69 Merge pull request #35552 from abhaynikam/fix-remaining-set-of-links-in-gemspec 647d7e6167 Revert "Revert "Merge pull request #34387 from yhirano55/rails_info_properties_json"" f66a977fc7 Revert "Merge pull request #34387 from yhirano55/rails_info_properties_json" 04159a7a1d Merge pull request #34754 from rails/require-ruby-2.5 133e0ba33d Merge pull request #34392 from gmcgibbon/gem_security_note_amend bb11a9acab Merge pull request #34388 from gmcgibbon/gem_security_note 989b1cb4a3 Merge pull request #32097 from matthewd/arel d4eb0dc89e Rails 6 requires Ruby 2.4.1+ 0ea8e7db1a Remove support to Ruby 2.2 2e0fe5928f Use released arel 089ca520e3 Require alpha arel 15ef55efb5 Merge pull request #29732 from kirs/frozen-activerecord 87b3e226d6 Revert "Merge pull request #29540 from kirs/rubocop-frozen-string" 3420a14590 Merge pull request #29540 from kirs/rubocop-frozen-string cf8c46938b Merge pull request #29588 from greysteil/add-gemspec-links 4cfcf1ee54 Merge pull request #29176 from bogdanvlviv/define-path-with__dir__ 2471e6391d Merge pull request #27503 from rails/activerecord-deprecation adca8154c6 applies new string literal convention in the gemspecs 1eb27fafa9 revises the homepage URL in the gemspecs [ci skip] b611350e7c Use released arel 33ea933d7b Merge pull request #19753 from jonatack/use-ruby-2-2-2 309ac642cb Merge pull request #19263 from splattael/target-2.2.1 2223f49157 Require Arel 7.0.0.alpha edaab4dbe8 Merge pull request #18209 from claudiob/bump-to-2-2 86857868f8 Merge pull request #17830 from claudiob/bump-required-ruby-version 25c85cb6f6 Use released arel 9887a2cfe5 Merge branch 'master' of github.com:rails/rails cc9091c3e7 Use released arel f2003834c8 Arel master is 6.0.0 11e8badb16 Merge branch 'master' into set_binds 9848e8916f Bump activerecord-deprecated_finders. Fixes #10304 c072fcadd2 Bump arel to 4.0.0 88150e8622 activerecord-deprecated_finders 1.0.0 has a bug with has_many :through associations ca4bfa23a1 Bump activerecord-deprecated_finders to 1.0.0 ddd2c75b26 Revert "instruct RDoc to only parse Ruby files under lib [Fixes #9779]" c24528fbc9 instruct RDoc to only parse Ruby files under lib [Fixes #9779] aac00ed9c5 bumping arel bd36f185a8 Are was release 5f412956cf Less strict activerecord-deprecated_finders version 5937bd02de Undeprecate the :extend option 8110035623 Revert "Omit directories from gemspec.files for RubyGems 2 compat." bb8923dee0 Omit directories from gemspec.files for RubyGems 2 compat. fd16cb3f59 Merge pull request #8147 from gbchaosmaster/gemspec 17bb324f38 Renaming active_record_deprecated_finders to activerecord-deprecated_finders 92fd2120cd Merge pull request #6462 from grosser/feature/licenses dd2c9b9578 add active_record_deprecated_finders as a dep 66b7eb1927 bumping up arel e0cba3a0fa Merge branch 'master' into instance_reader 488c9ef64c moving to arel 3.0.0 e5916862a1 Merge pull request #4071 from rahul100885/rahul100885_work b6105b0b59 updating arel and journey dependencies 26c542ba2c Merge pull request #3701 from arunagw/arel_bump 0fcf8bfbe9 Merge pull request #3516 from cesario/fix_gemspec 03a045b306 Bump arel dependency 4f8801963c Okay, the new incompatible arel is now called 2.2 and the sun shines upon thee once more 5870291425 Bump arel version a2a7a19d26 Bump up rack-cache and tzinfo 506b2dad55 Merge pull request #1871 from guilleiguaran/arel-2-1-3 f116a4835b Merge pull request #1299 from cesario/mit-license 26703f4905 Merge pull request #1165 from arunagw/rubyforge_remove a898df66e4 bumping arel requirement bd4831d699 Bump up rack-cache, tzinfo and thor e14e696e96 fixing arel requirements for released arel 99da42c299 Gem::Specification#has_rdoc= is deprecated since rubygems 1.7.0 ceef719924 Bump Arel up to 2.0.2 e3d6434dd9 depending on arel 2.0.0 d37a65307d Merge josevalim/deprecations branch. 33afaa446f Depend on ARel 1.0 w/ tiny fixes 3409f2c691 Depend on latest arel RC 0c75ec51a9 Merge remote branch 'rails/master' d16c5cc99b Change some missing README -> README.rdoc fcb230144b Bump up nokogiri, memcache-client, sqlite3-ruby, fcgi, mail and tzinfo 751f79a033 Merge remote branch 'rails/master' cae2519900 Merge branch 'master' of github.com:rails/rails 0dd3eac967 Merge branch 'master' of git://github.com/rails/rails b4c91de946 Merge remote branch 'rails/master' e68bfaf1fe Merge remote branch 'mainstream/master' 965fe59bff Merge branch 'master' of github.com:lifo/docrails 8260f0b40f Merge remote branch 'mainstream/master' 535ae3b946 Merge branch 'master' of github.com:lifo/docrails 5446d5cb05 Merge remote branch 'mainstream/master' dd2779e1b8 Merge commit 'mainstream/master' 340be9bddd Merge commit 'mainstream/master'