よもやま話β版

よもやま話を書きます。内容はぺらぺら。自由に書く。

GitHubのソースコード参照リンクを残すときはmasterを避ける

tl;dr

GitHub参考URLをmasterを参照したものにしていると数年後に見直したときに泣くぞ!気をつけろ!(経験談)

こんなときあるよね

GitHubを使っているときなど、ソースコードへの参照URLを残したい場合がある。 このとき、リポジトリからそのまま素直に目的のコードを探しにいき、特定の行番号をクリックすると次のようなURLとなる。 (pluckが好きなのでその部分の実装のリンクを貼ってみる。) https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/enumerable.rb#L124

しかしこのURLには問題がある。 ソースコードは生き物みたいなものなので、masterは日々更新されてしまう。 数ヶ月経った後のこのファイルの124行目は果たしてpluckの実装を指しているのだろうか? これを誰かが読んでいるときは、すでに全く別の行だか空行だかを指しているかもしれない。 せっかく参考にと残したURLが別の場所を指していては意味がない。

手段1: tagの指定

f:id:beta_chelsea:20181027181249p:plain:w500

将来的にも確実に意図した指定を残す方法として、branchやtagを指定してから行番号リンクを獲得するようにしている。 自分としてはどちらかというとtagのほうがバージョン指定がURLに入るのでわかりやすいかなと感じている。 (あっ、v5.2.1の時点ではpluckは114行目なんですね...) https://github.com/rails/rails/blob/v5.2.1/activesupport/lib/active_support/core_ext/enumerable.rb#L114

手段2: Copy permalink

f:id:beta_chelsea:20181027181211p:plain:w500

特にバージョン指定も関係ない場合、行を選んだ時の左側の「…」を押すと手っ取り早くCopy permalinkができる。 このときURLは次のようになる。 https://github.com/rails/rails/blob/5431e17733366da1fd10f2cd3039d66a56012683/activesupport/lib/active_support/core_ext/enumerable.rb#L124

おまけ

1行選択したあと、Shiftを押しながら別の行を選ぶと、範囲指定ができる。URLとしては L数字- で繋げればよい。 https://github.com/rails/rails/blob/v5.2.1/activesupport/lib/active_support/core_ext/enumerable.rb#L107-L121

f:id:beta_chelsea:20181027181936p:plain:w500