23
Next-L Enju 開発ワークショップ 2 2012 3 10 田辺浩介

Next-L Enju 開発ワークショップ #02

Embed Size (px)

Citation preview

Next-L Enju 開発ワークショップ第 2回

2012年 3月 10日田辺浩介

バージョン管理システム

コンピュータファイルの変更者や変更履歴、コミット時のログなどのメタデータを管理するための仕組み

プログラムのソースコード管理で広く使用される

バージョン管理システムで管理されるファイルは「リポジトリ」に保存される

リポジトリ

バージョン管理システムで管理されているファイルを保存する場所

リポジトリは複数人で共有できる複数人で同じファイルを同時に編集することも、その際に発生した複数箇所の変更をひとつにまとめることもできる

リポジトリ

ある時点でリポジトリに登録されているファイル全体の状態をもとに、作業用の新しい保存場所を分岐して作ることができる保存場所を「ブランチ」と呼ぶ

新しい機能追加など、大規模な変更は別のブランチを作ってそこで行い、完成したら元のブランチに統合(「マージ」と呼ぶ)する

バージョン管理システムがないと

誰がいつソースコードを変更したのかがわからない最新のソースコードがどれかわからない

不具合が出ても、どの変更でその不具合が起きたのかがつかみにくい

結果として不具合が多発する

ファイルサーバとの違い

ファイルの変更履歴やコミットログなどのメタデータの管理特定のコミットが行われた時点のファイルだけを取り出すことができる

リポジトリ全体を特定のコミット時の状態に戻すこともできる

つまり、間違っても問題が発生しても、簡単に元に戻せる

バージョン管理システムの種類

CVS, Subversion, Gitなどなど

現在人気があるのは Git

リポジトリを自分のコンピュータに作れる(サーバ不要、オフラインでもコミット可能)

githubの成功

github

Gitを使ったリポジトリサービス

公開リポジトリは無料で使用可能

開発者の SNS的な要素も含む誰が、どの開発プロジェクトで、どんなコードを書いているか

どの開発プロジェクトが注目されているか

githubの特徴

クリック 1回で他人のソースコードを自分のリポジトリにコピーできる

自分のリポジトリにコピーしたソースコードに加えた変更を、コピー元の人に取り込んでもらうように連絡することができる

課題

誰かのプロジェクトを forkする

変更を加えて元の作者に pull requestを送信する

pull requestを受け取って mergeする

githubの特徴

バグ管理システムや wikiなどのコミュニケーションツールもついている

外部サービスとの連携機能も豊富コミットしたら自動的にメールで通知、 Twitterに投稿など

githubの特徴

とにかくいろいろなものが登録されているRuby on Railsや jQueryのような超有名ソフトウェアのソースコードも

Webサイトの HTMLも

自分専用のエディタの設定ファイルも

とにかくいろいろな企業、いろいろな開発者が登録している

Twitter, Facebook, ほかにもたくさん

はじめよう

Githubのアカウントを取ってみましょう

新しくリポジトリを作り、リポジトリにファイルを追加してみましょう

ファイルを編集し、その変更点をリポジトリに登録しましょう

用語(とりあえず覚えよう)

コミットバージョン管理システムを使って、リポジトリにファイルを保存すること

「チェックイン」とも呼ぶ

コミット時には通常、内容を簡潔に説明するための「コミットログ」を書く

チェックアウトリポジトリからファイルを取り出すこと

用語(とりあえず覚えよう)

ブランチリポジトリ内の作業領域。複数のブランチを作成することも、後でまとめることもできる

マージ複数人で同じファイルを変更していた場合、そのファイルの変更点をひとつにまとめること

たとえば、あるブランチでの作業を別のブランチに取り込む場合にこの言葉を使用する

用語(とりあえず覚えよう)

コンフリクト複数人で同じファイルの同じ箇所を、それぞれ異なる内容で編集しており、そのままではマージができない状態のこと

どの内容を採用するかを決めてからコミットする

用語(とりあえず覚えよう)

フォークあるソフトウェアをもとに、別の開発者・開発体制でソフトウェアを新しく作り始めること

あるブランチから別のブランチを作ることもこう呼ぶ

用語(とりあえず覚えよう)

リビジョンある時点でのリポジトリの状態に対して、バージョン管理システムが付与する IDのこと

タグある時点でのリビジョンに対して、開発者が付与する番号やキーワードのこと

作業の流れ

githubのアカウントとリポジトリを作る

SSH公開鍵を作り、 githubに登録する

ローカルにリポジトリを作る

githubにリポジトリを push(アップロード)する

githubのアカウントとリポジトリを作る

“New repository”を選択

その後の手順が表示されるので従う

github上のコードを取得する

以下のコマンドを実行$ git pull

他人のリポジトリを自分のところにコピーする

以下のコマンドで行う$ git clone [email protected]:nabeta/enju_ws.git

協力しよう

自分のリポジトリに他の参加者をcollaborator(協力者)として追加する

他の参加者のリポジトリをフォークする

フォークしたリポジトリから、フォーク元にpull request(変更点の取り込みのリクエスト)を送る