LoginSignup
7
1

More than 5 years have passed since last update.

GitHubのソースコードへのリンクを貼る時にはCanonical Formにしようという話

Last updated at Posted at 2017-12-12

GitHubのソースコードへのリンクを貼る時にはCanonical Formにしようという話

GitHubのショートカットを調べていた時にまとめたくなったので書きます。

1行で

GitHub上のその瞬間のコード片へリンクを貼るときは y を押してから リンクをコピーしよう。

もうちょっと詳しく

背景

特定のコード片について語る時に、GitHubのリンクをよく貼って説明する機会などがよくあると思います。
ただその時にGitのブランチには、当然変更などが累積されていくためブランチに依存したリンクを貼ってしまうと、ブランチのその瞬間について語る場合あとで変更が入った場合に文脈的におかしくなってしまいます。

そのためにリポジトリ内コード検索などでコミットハッシュなどを特定してからリンクをコピーするといったことをしている方もいるかと思います。(というか、わたしだけ?)
ただ、それもけっこう煩雑です。
コードを特定する検索キーワードをうまく見つけるという謎技能を身に着けたり、周辺のコードを検索したいなどの言ってることがよくわからないケースを除き、そんなことをわざわざ毎回する人もそういないかと思います。

こんなこと言い出した理由

そして、最近GitHubのショートカットを個人的にまとめてた時に気がついたのが

y Expand URL to its canonical form

というショートカットです。
まず、 canonical form というのがよくわからないかと思います。
なので先に、ブランチに依存したリンクを現在参照している場合は恐らく「参照的な」といった意味で referencial form といった呼び方を(仮に)します。
そして、その参照的なリンクからコミットハッシュを特定してブランチ名の部分をそのコミットハッシュで置き換えたリンクを canonical form というみたいです。
(あんまり正確じゃない気がするのですが便宜的にすいません。)

メリット

canonical from にするとブランチに変更が入った場合に嬉しいです。
ブランチ依存で参照していたコードだと該当箇所が変更されると行などで位置がずれたり変更で修正後の方を参照してしまうといったことになります。
そして、 canonical form でコミットハッシュを特定した場合はそのコミットハッシュの瞬間の情報を必ず参照できます。

デメリット

行単位へのリンクだとそれなりに効力を発揮するのですが、ファイル単位だとそれほど動くことがないはずなので、それほど効力がないです。
で、かつブランチの最新を参照したいリンクの場合だと当然 canonical form にする必要はありません。
まあ、世の常で使い方を考えないといけないですね。

Gitの内部構造について

ややGitの内部構造に寄った話をすると、コミットハッシュで参照できるオブジェクトは一度作られたら変更されないことが保証されているので絶対参照になります。
ただ、ブランチは参照先が変更が累積される度に変わるので、間接参照になります。
やはり、不変オブジェクトはよいです。

まとめ

といった感じで、GitHub上のコード片をSNSなどでリンクとして貼る場合は y を押してからにしましょう。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1