69
バババババババババ ババババババババババババ !!

バージョン管理云々 公開用

  • Upload
    -

  • View
    153

  • Download
    2

Embed Size (px)

Citation preview

バージョン管理云々明日といわず今すぐやろう !!

1.バージョン管理以前

20140415.zip

20140415.zip

•ただし更新日時は 2015年

20140415.zip

•ただし更新日時は 2015年•解凍したファイルの更新日は 2013年 (!)

20140415.zipの問題点•ファイル名の日時は正しいのか•中身が書き換わっていても判別できない•タイムスタンプも書き換えられる

20140415.zipの問題点• =ユニークさ (同一性 )を保証できない• 「これは世界どこにも、現在過去未来同じものは無い」 と思

いたい。

その他の問題

粒度•変更内容を探す

Ver.1.1 Ver.1.0

粒度•大量の変更があると探しきれない

•バグ番号 #12の修正•ファイル名の修正•コメントの追加•コメントの削除•仕様変更 #14の対応•Makefileを整理•etc

Ver.1.1 Ver.1.0

複数人の開発•容易に上書きされる変更

A B

A B A B

複数人の開発•容易に上書きされる変更

A’ B

A B A’ B/修正完了!\

複数人の開発•容易に上書きされる変更

A B’

A B’ A’ B/やめて!\/こっちも完了!\

2.集中型バージョン管理

機能

機能•版数 (revision)管理

コミットとリビジョン•変更内容 (commit)と版数 (revision)が紐づけられる

Rev.1

Rev.2

•初版。 Ver.1.0

・バグ番号 #12 の修正・

Rev.4

Rev.3

Rev.2

Rev.1

コミットとリビジョン•変更内容が細かくなる

•初版。 Ver.1.0

・バグ番号 #12 の修正

・インデントの修正

・機能追加

コミットとリビジョン•コミットログ

Rev. 日付 変更内容1 2015/Apr/15th Ver.1.0リリース2 2015/Apr/17th バグ #14修正。関数の引数チェックが入っていな

い。3 2015/Apr/23th インデントがそろっていなかったので修正。4 2015/Apr/29th 機能追加。異常があったら内容を画面に表示させ

る。5 2015/May/1st Ver.1.1リリース

Rev.5

コミットとリビジョン•コミットログ•いつでも好きな個所に戻れる。

Rev. 日付 変更内容1 2015/Apr/15th Ver.1.0リリース2 2015/Apr/17th バグ #14修正。関数の引数チェックが入っていな

い。3 2015/Apr/23th インデントがそろっていなかったので修正。4 2015/Apr/29th 機能追加。異常があったら内容を画面に表示させ

る。5 2015/May/1st Ver.1.1リリース

Rev.1

機能•版数 (revision)管理•ネットワーク機能

Repository

Bob’s working direc.Alice’s working direc.

同時にコミットしても変更がかち合わない。

A’ B’

A B’ A’ B

バージョン管理システム

機能•版数 (revision)管理•ネットワーク機能•クライアント機能

クライアント機能•変更内容を管理する機能山盛り

差分ビューアー

修正履歴

シェル拡張•ファイルごとの状態がわかりやすく・使いやすく

変更中のファイル

変更が無いファイル

エクスプローラーのシェル拡張

集中型バージョン管理の問題点

差分の抽出

Rev. 日付 変更内容1 2015/Apr/15th 仕様変更 #25 変更途中まで。2 2015/Apr/17th バグ #115修正。バッファオーバーフロー3 2015/Apr/23th 仕様変更 #89 保存データカラムを追加4 2015/Apr/29th ファイルの改行コード変更5 2015/May/1st 仕様変更 #25 変更完成

差分の抽出

Rev. 日付 変更内容1 2015/Apr/15th 仕様変更 #25 変更途中まで。2 2015/Apr/17th バグ #115 修正。バッファオーバーフロー3 2015/Apr/23th 仕様変更 #89 保存データカラムを追加4 2015/Apr/29th ファイルの改行コード変更5 2015/May/1st 仕様変更 #25 変更完成

差分の抽出

Rev. 日付 変更内容1 2015/Apr/15th 仕様変更 #25 変更途中まで。2 2015/Apr/17th バグ #115 修正。バッファオーバーフロー3 2015/Apr/23th 仕様変更 #89 保存データカラムを追加4 2015/Apr/29th ファイルの改行コード変更5 2015/May/1st 仕様変更 #25 変更完成2 ~ 4 の内容は関係ない内容

影響の連鎖

Rev. 日付 変更内容1 2015/Apr/15th 仕様変更 #25 変更途中までなのでビルドできませ

ん。2 2015/Apr/17th バグ #115修正。バッファオーバーフロー3 2015/Apr/23th 仕様変更 #89 保存データカラムを追加4 2015/Apr/29th ファイルの改行コード変更5 2015/May/1st 仕様変更 #25 変更完成。ビルドできるようになり

ました。

影響の連鎖

Rev. 日付 変更内容1 2015/Apr/15th 仕様変更 #25 変更途中までなのでビルドできませ

ん。2 2015/Apr/17th バグ #115 修正。バッファオーバーフロー3 2015/Apr/23th 仕様変更 #89 保存データカラムを追加4 2015/Apr/29th ファイルの改行コード変更5 2015/May/1st 仕様変更 #25 変更完成。ビルドできるようになり

ました。

Rev. 日付 変更内容1 2015/Apr/15th 仕様変更 #25 変更途中までなのでビルドできませ

ん。2 2015/Apr/17th バグ #115 修正。バッファオーバーフロー3 2015/Apr/23th 仕様変更 #89 保存データカラムを追加4 2015/Apr/29th ファイルの改行コード変更5 2015/May/1st 仕様変更 #25 変更完成。ビルドできるようになり

ました。

影響の連鎖

2 週間開発がストップ !!

障害時の問題•終日までに必要なテストを行う•手元のソースコードは別件で破損中•「サーバから最新のソースコードを持ってこなきゃ…」• 年 に 一 度 の サ ー バ メ ン テ ナ ン ス 開 始•午後 21:00

3.分散型バージョン管理

機能•ブランチ

ブランチ•ブランチ (branch)=枝

ブランチ

ブランチ

ブランチ

ブランチ

ブランチ

Branch 2

Branch 1

ブランチ

変更 B 用のブランチ。B に関する変更だけ

変更 A 用のブランチ。A に関する変更だけ

Branch 2

Branch 1

ブランチ

マージ ( 合流 ) 地点。変更 A と B の内容が混ざり

合う

Merge

作り方はほぼ自由

作り方はほぼ自由オレンジの補助機能が必要だったので後

付け

追加機能。結局不要になった。

機能•ブランチ•リモート /ローカルリポジトリ

Bob’s working direc.

従来通り共通できる

Alice’s working direc.

Branch1 Branch2

Repository

Branch1 Branch2

Branch1 Branch2

バージョン管理システム

Bob’s working direc.Alice’s working direc.

各人がブランチを持ち寄る•開発者は 5人•おのおのブランチを 5~ 10個持っている• =50ブランチ

Branch1 Branch2 Branch3 Branch4 Branch5 Branch6

手に負えない

必要な分だけ共有 !!

リモート (共有 )/ローカル (私有 )リポジトリRemote Repository

Local Repository

Remote Repository

Local Repository

Alice’s

リモート /ローカル

Branch1 Branch1

Branch1

Remote Repository

Local RepositoryAlice’s working direc.

リモート /ローカル

Branch1new!!

Alice’s working direc.

Remote Repository

Local Repository

リモート /ローカル

Branch1 Branch1commit!!

Alice’s working direc.

Remote Repository

Local Repository

リモート /ローカル

Branch1 Branch1非共有状態

Alice’s working direc.

Remote Repository

Local Repository

リモート /ローカル

Branch1 Branch1

Branch1

push!!

Alice’s working direc.

Remote Repository

Local Repository

リモート /ローカル

Branch1 Branch1

Branch1

公開状態

Alice’s working direc.

Remote Repository

Local Repository

リモート /ローカル

Branch1 Branch1

Branch1

Branch2 Branch2

必要になるまで、手元で隠しておけ

複数人で共有する場合

Bob’s working direc.Alice’s working direc.

Branch1 Branch2 Branch3 Branch4

Bob’s Local Repo.Alice’s Local Repo.

Repository

Branch1 Branch2 Branch3 Branch4

Branch2

Branch2

Bob’s working direc.Alice’s working direc.

Branch1 Branch2 Branch3 Branch4

Bob’s Local Repo.Alice’s Local Repo.

Repository

Branch1 Branch2 Branch3 Branch4

Branch2

Branch2

Branch2 は Alice, Bob の共有

Bob’s working direc.Alice’s working direc.

Branch1 Branch2 Branch3 Branch4

Bob’s Local Repo.Alice’s Local Repo.

Repository

Branch1 Branch2 Branch3 Branch4

Branch2

Branch2

Branch2

だが Bob は手元に Branch2 を持っていなくてもよい

Bob’s working direc.Alice’s working direc.

Branch1 Branch2 Branch3 Branch4

Bob’s Local Repo.Alice’s Local Repo.

Repository

Branch1 Branch2 Branch3 Branch4

Branch2

Branch2

Bob は Branch3,4 だけに集中できる !!

まとめ

バージョン管理は差分との戦いの歴史

•いつどこで何が変更されたかを管理したい•いつでも過去の状態に戻りたい•変更された内容をもっと整理して管理したい• etc