VCS - Version Control System at Security and Programming camp 2011

Post on 18-Oct-2014

5668 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

VCS - Version Control System at Security and Programming camp 2011 by Hiro Yoshioka

Transcript

ソースコード管理システム

よしおかひろたか

mailto:hyoshiok@gmail.com http://d.hatena.ne.jp/hyoshiok twitter @hyoshiok セキュリティ&プログラミングキャンプ 2011

目次

なぜソースコード管理システムが必要なのか

大規模分散開発

Gitの紹介

バージョン管理システム

バージョン管理システムはなぜ必要なのか VCS (Version Control System), SCM (Source Code

Manager), RCS (Revision Control System)などとも呼ばれている。

変更を管理したい

複数の人と共同作業をしたい

大規模分散開発

特徴 多くの人が開発に関与

それぞれ独立に開発をしていて他人の作業についてすべて知っているわけではない

開発場所も分散している

ソフトウェア開発のワークフロー

ソフトウェアを変更するとき 機能追加、拡張、変更

バグフィックス

性能改善

リファクタリング(機能は変更しないけど、より保守しやすい実装へ変更するなど)

ワークフロー

コミュニティーベースの開発の場合、様々な仕事がある。 テスト

バグ登録

バグのトリアージ(優先順度付け)

バグのアサイン

コードの修正

ドキュメント執筆。翻訳。

レビュー。

その他いろいろ

ソフトウェア開発のワークフロー

ソースコードリポジトリから取り出す

変更する(コンパイルエラー、ビルドエラーを取り除く)

テストをする

期待どおりでない場合、(変更する、テストする)を繰り返す

ソースコードリポジトリへ戻す

コンフリクトがある場合、コンフリクトを解消するまで、上記を繰り返す

リポジトリがなぜ必要なのか

リポジトリ:ソースコードの保管場所

複数の人が共通のコードで作業をしているから 共同作業のかなめ

なぜバージョン管理が必要なのか

変更部分を知りたい なぜ、その変更をしたのか

どのように変更したのか

自分の変更を追加したときにプログラムが期待通りに動かなくなった原因を知りたい

誰が何をやっているか知りたい

プロジェクトの進捗を知りたい

いつからバグが入っているか知りたい

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

git subversion cvs sccs Rational Clearcase (商用製品 )

Microsoft Team Foundation Server (商用製品 )

VCSへの Linuxでの要求事項*

分散開発を容易にする

何千人の開発者をも扱えること

高速で効率よく動作すること

完全性と信頼を維持すること

説明責任を強制すること

*実用 Git、 Jon Loeliger (著 ) 、吉藤 英明 (監訳 )、 ISBN: 978-4873114408

VCSへの Linuxでの要求事項、2

不変性

アトミックなトランザクション

分散した開発に対応し後押しをすること

完全なリポジトリ

すっきりとした内部設計

自由という意味でのフリー

Git

Linuxの創始者の Linus Torvaldsが必要性にかられて開発

分散型

特徴 高速

分散開発のサポート

ハッシュ (SHA1)による完全性の維持

git の利用

help $ git help $ git help COMMAND $ git COMMAND --help

ユーザ設定

コミッターと著者の設定 $ git config –globall user.name ”Your Name” $ git config –global user.email your@email.address

設定の確認 $ git config -l

リポジトリの作成

既にあるリポジトリからのコピー $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git $ git clone https://github.com/ruby/ruby

新規に作成する $ git init

変更

ファイルの追加、変更など $ git add ファイル

レポジトリへの反映 $ git commit

エディタが起動してコメント記入を求められる

$ git commit -m ”comments”

差分

$ git diff

履歴

$ git log $ git whatchanged

レポジトリの更新

$ git pull レポジトリ名 外部のレポジトリとマージする

二分探索

$ git bisect バグを発見したとき、どのバージョンからバグが混入したか調べる

$ git bisect start$ git bisect bad                 # Current version is bad$ git bisect good v2.6.13­rc2    # v2.6.13­rc2 was the last version                                 # tested that was good

典型的なワークフロー

$ git clone レポジトリ 既存変更、テスト、デバッグなど

$ git add ファイル名 $ git commit $ git push レポジトリ

付録:

githubについて コメントを英語で書くのがなぜ推奨されるのか

github

https://github.com/ gitレポジトリのホスティングサービス

Ruby on Railsの開発などにも利用されている

無料でも使える

利用方法 アカウント作成

プロジェクト登録( git pushなどをして公開) what are you coding (日々の活動をコードで表現)

コメントは英語で

インターネットは英語が公用語

英語で書く訓練になる

参考書

入門 Git、濱野純、 ISBN:978-4798023809 実用 Git、 Jon Loeliger (著 ) 、吉藤 英明 (監訳 )、 ISBN: 978-4873114408

top related