私が遭遇したGitHubの罠について記録を残しておきたいと思います。
GitHubとは
ソフトウェア開発プロジェクトのためのファイル共有サービスで、Gitと呼ばれる分散型バージョン管理システムのホスティングサイトで、オープンソースプロジェクト向けには無料で管理スペースを提供してくれる素晴らしいサービスの事です。
簡単に言ってしまうと、オープンにすることを条件に無料でソースコード置き場を貸してあげるサービスです。
前置き
私は、今現在、Grabacr07様が開発されたソフトのソースを触っています。
はい、艦隊これくしょん専用ブラウザの「提督業も忙しい」(ソース)に手を加えようとしています。
ソースコードを「Download ZIP」のリンクを辿って落としてきて、いざビルドしてみるとビルドが通らないんですよね・・・
エラーは「D:\KanColleViewer\KanColleViewer-master\Grabacr07.KanColleViewer\Views\Settings\Notification.xaml(67,11): error MC3074: タグ ‘Int32Rule’ は、XML 名前空間 ‘http://schemes.grabacr.net/winfx/2014/controls’ にありません。 行 67 位置 11.」こんな感じのエラーが3つ。
全部「Int32Rule」が無いっていうエラーでした。
私はVisualStudioは6.0以降、本格的に触ってないですし、XAML?何それ?オイシイの?・・・という有様。(XAMLは凄くおいしい仕組みです。←どうでも良い話)
疑うべきポイントが全く分からず、、、開発者様の開発環境がWindows 8.1 Pro + Visual Studio Premium 2013で「<metro:Int32Rule・・・」とか書かれていたので、Windows7 + Visual Studio Community な私の環境ではビルドできないんじゃないか?とか、、、
そもそも今回のためにVisual Studio Communityをインストールしたという状態で、しかも日本語化パッケージをインストールするとWindowsおよび、Visual Studio起動直後にバージョン不一致エラーがでていたので、何かのファイルが欠けた?とか、、、
そもそも、このエラーの前にMetroRadianceに(利用不可)って書かれていてファイルが存在しないよ?・・・開発者のサイトを見ていた時にMetroRadianceっていうライブラリを作って公開したよ~って事が書かれてあったので・・・あれ?そのライブラリをnugetで取らないとダメ?・・・え?nugetって何?・・・あぁorz(それでもビルドがうまくいかなくて)・・・よく見たらフォルダが空やん・・・ソースを落として来いって事?(自分で作ったライブラリだからってソースを直置きするのはどうよ?とか思ったり)・・・ググったらGitHubに誘導された!→ソースダウンロード(これでビルドが通るかも!)→・・・結局ビルド通らず→「疑うべきポイントが全く分からず」の行へ戻る。
色んなところをウロウロしていました。
そもそもGitHubも初めて触るという超初心者・・・っていうのが問題に気付くのに遅れた原因の一つのような気がします。
GitHubの罠
今回、私がGitHubから落としたソースはKanColleViewerとMetroRadianceで、罠だったのはMetroRadianceというリポジトリのソースでした。
どんな罠だったのか結論から言ってしまうと「Download ZIP」でダウンロードできるファイルと、リポジトリの最新は同一ではない・・・っていうことです。
どういうことかっていうと、「Download ZIP」で落とせるのは、コミットされたヘッドの状態ではなく、最新の安定板(バージョン番号がついていたりするバージョン)なのです。(電ではないのです)
※最新の安定板と記載していますが、本当に安定しているかどうかは作者のさじ加減次第。
バージョン管理システムなんだから、そりゃそうですよね・・・っていう話なんですけど、GitHubのweb上ではリポジトリの最新のソース一覧が表示されており、それがmasterと呼ばれているような表記をしています。
「Download ZIP」で落とした圧縮ファイルは「ファイル名 – master」という名前になっていてwebで見たものと同じものと認識できてしまうので非常に紛らわしい作りになっています。
そのため、最新版のソースを落としたハズなのに・・・自分の環境ではビルドが通らないという事件(大げさ)に遭遇します。
(ちなみに、私と同じ問題に引っかかった人をネット上で2人ほど見つけました。)
罠の回避策
そんな現象に遭遇しないために、最新のソースコードを落とすときはGitHubのクライアントをインストールしてPower Shellとかで「git clone ~~」するのが理想的です。
うわ~ん、コマンドラインとか叩くの嫌だぁ~(決してどべちn・・・ゲフンゲフン・・・隼鷹さんじゃな(ry)っていう人は対象のリポジトリへアクセス。
「commits」をクリック
ダウンロードしたいリビジョンの「<>」のマークをクリック
※最新版を落としたいのなら最新版の上記マークをクリック
すると、上記のように指定したリビジョンの状態に変更されますので「Download ZIP」でファイルをダウンロードすると指定されたリビジョンのリポジトリを落とせます。(最新版を指定していた場合は最新版のソースを落とせます)
また、今回の私のケースでいうとGitHub上のKanColleViewerのリポジトリの内容を閲覧できる画面でインポートされているソースへダイレクトに飛べるみたいで、「MetroRadience」をクリックするとそこから「Download ZIP」を行うと正しいソースがダウンロードできるっていうことを後から知りました・・・orz
トラックバック & ピンバック