SlideShare a Scribd company logo
1 of 47
Download to read offline
TortoiseHg のすゝめ
鈴木 聡

2013/12/13 Rev.16
まずは、
「バージョン管理システム」の
おさらい

2013/12/13 Rev.16
バージョン管理システムとは?
VCS: Version Control System
●

●

「バージョン管理システム」とは、コ
ンピュータ上で作成、編集されるファ
イルの変更履歴を管理するためのシス
テム。
特にソフトウェア開発において「ソー
スコードの管理」に用いられることが
多い。
Wikipedia 2013年4月13日 (土) 09:26 版より引用
2013/12/13 Rev.16
代表的な VCS 一覧
CVS

VSS
(Visual Source
Safe)

Subversion

Git

Mercurial

初版
リリース

1990年

1994年

2000年

2005年

2005年

リポジトリ
方式

集中

集中

集中

分散

分散

※ リポジトリ : ソースコードの変更情報を記録したデータ
ベースのこと。
2013/12/13 Rev.16
「集中型」バージョン管理
とは?

2013/12/13 Rev.16
集中型バージョン管理
●

●

●

1台の中央サーバにリポジトリを保持
管理対象であるソースコードのみ、ク
ライアントPCに取得する
ソースの変更履歴を参照する場合など
には、サーバにアクセスしながら動作

2013/12/13 Rev.16
集中型 VCS の図

2013/12/13 Rev.16
集中型 VCS
チェックアウト
check out

リポジトリ
サーバー

クライアント
PC

2013/12/13 Rev.16
集中型 VCS
コミット・アップデート
commit
(check in)

リポジトリ
サーバー

update

クライアント
PC

2013/12/13 Rev.16
「分散型」バージョン管理
とは?

2013/12/13 Rev.16
分散型バージョン管理
●

リポジトリの全データをローカル PC にコピー

●

リポジトリのコピー後はローカル PC のみで動作
ソースコードはローカル PC のリポジトリから
チェックアウトする
– コミット(チェックイン)もローカル PC のリポ
ジトリに
–

●

リポジトリを持った PC は、サーバ・クライアン
トどちらにもなれる

2013/12/13 Rev.16
分散型 VCS の図

2013/12/13 Rev.16
分散型 VCS
クローン
clone

Server

PC

2013/12/13 Rev.16
分散型 VCS
チェックアウト
check out

PC

2013/12/13 Rev.16
分散型 VCS
コミット
Commit
(check in)

PC

2013/12/13 Rev.16
分散型 VCS
リポジトリ同期
push

pull
Server

PC

2013/12/13 Rev.16
分散型 VCS の利点 (1)
●

ローカル PC にコミットできる
–
–

–

変更点を気軽にコミットできる
「集中型」で頻繁に発生する「他の人と
ソースコードの変更が衝突してコミット
できない・・・」という心配は無用
「コミット後にマージ」という使い方が
できる
●

マージ作業を何度でもやり直せる

2013/12/13 Rev.16
分散型 VCS の利点 (2)
●

サーバとネットワークで接続されてい
ない状態でも動作
–

サーバへのアクセスが必要ないた
め・・・
● 変更履歴の閲覧
● ファイル内の変更部分の検索
・・・などの動作が速い
2013/12/13 Rev.16
分散型 VCS の利点 (3)
●

ファイル経由でもリポジトリ同期が可
能
–

メールの送受信できれば、添付ファイル
経由でリビジョンの受け渡しが可能

2013/12/13 Rev.16
ファイルを用いた
同期の図
Office A

Office B

Bundle
file

2013/12/13 Rev.16
ここまでのバージョン管理の話を
踏まえて、TortoiseHg の話に。

2013/12/13 Rev.16
TortoiseHg とは?
(トータス エイチ・ジー)
●

●

「分散型バージョン管理システム」である
Mercurial(マーキュリアル)の GUI フロ
ントエンド
Windows / Mac OS X / Linux / FreeBSD /
Solaris … など多くの環境で動作
–

●

TortoiseHg は Python + Qt で実装されている

GPL v2 ライセンスのフリーソフト

2013/12/13 Rev.16
TortoiseHg
ワークベンチ画面

2013/12/13 Rev.16
TortoiseHg のすゝめ (1)
●

CVS や Subversion など、既存の VCS
に動作が近い
–

●

Git は固有のクセが多い

シンプルなワークフロー
–
–

「名前なしブランチ」による平行開発
TortoiseHg(Mercurial)では「コミッ
ト」するだけで勝手にブランチします

2013/12/13 Rev.16
2人の開発者が別々に
コミットすると・・・

↑「Rev.1」に対して2人の開発者が別々の
変更をコミットした場合リビジョングラフ
※ グラフとは、リビジョンの家系図
2013/12/13 Rev.16
これをマージして
統合する

2013/12/13 Rev.16
ブランチによる平行開発
●

●

●

他の開発者の影響を受けずに開発を進め
られる
「名前なしブランチ」に慣れたら、「名
前付きブランチ」を使った開発にシフト
ブランチパターンの適用
–

徐々に平行開発を安全に進められるように
なる

2013/12/13 Rev.16
マージは大丈夫?
●

マージ時に変更が衝突した場合、マー
ジ作業に多くの工数が必要なのでは?
–

既存 VCS でマージのつらさを痛感

ブランチを多用した開発は不安・・・

2013/12/13 Rev.16
「分散型」で強化された
マージ機能
●

分散型バージョン管理では「3way
マージ」でマージが行われるた
め、VCS による自動マージの精度が向
上している
3way マージ:
「マージ対象の2つのリビジョン」と
「ブランチ元リビジョン」、計3つのリ
ビジョンの情報を使用してマージする
2013/12/13 Rev.16
分散型 VCS では
マージしても大丈夫です
●

●

今まで苦労してマージしていたのは、
既存 VCS のデキが悪かっただけ
分散型 VCS を使ってもマージが大変
な場合は・・・
–

おそらく、ソースコードのデキが悪い
●

「変更が局所化できていない」のでしょう
から、リファクタリングしましょう。

2013/12/13 Rev.16
TortoiseHg のすゝめ (2)
●

強力な「リビジョン改変」機能
–

GUI で簡単にリビジョンの移動、圧縮、
削除ができる

2013/12/13 Rev.16
リビジョン改変機能
●

リビジョンの修正(Amend)
–

●

リビジョンの移動(Rebase)
–

●

リビジョンを別の位置に移動

リビジョンの移植(Graft)
–

●

コミットのやり直し

別のブランチに 3way マージ用いて移植

リビジョンの圧縮
–

2つ以上のリビジョンを1つにまとめる
2013/12/13 Rev.16
TortoiseHg のすゝめ (3)
●

Git にも実装されていない機能も
–

Large Files
●

–

Shelve
●

●

–

巨大なバイナリファイルはオンデマンドで取得
変更点を一時的に避けておいて、後で元に戻す
(2013年11月に実装された最新機能なので TortoiseHg
では、まだ使えません・・・)
TortoiseHg 固有の Shelve 機能は使えます

Changesets Evolution
●

「チェンジセットの削除」を別リポジトリに伝搬する

2013/12/13 Rev.16
おすすめ書籍
●

入門 TortoiseHg + Mercurial
秀和システム
2013/2/27 発売
2,200円

2013/12/13 Rev.16
最新情報 (1)

2013/12/13 Rev.16
最新情報 (2)
●

Twitter ハッシュタグ
#mercurialjp

●

Mercurial 日本語ユーザグループ
–

https://groups.google.com/forum/?
fromgroups#!forum/mercurial-ja

2013/12/13 Rev.16
いつ使うの?
●

おそらく、技術的な障壁は無いハズ

●

使う気になれば、すぐに導入できる

●

まずは、「集中型」として使用するの
もアリ。
–

「マージ機能の強化」や「動作が速い」
という恩恵は受けられる

2013/12/13 Rev.16
TortoiseHg を使いましょう!!!

2013/12/13 Rev.16
TortoiseHg を導入した後は・・・

2013/12/13 Rev.16
構成管理パターンを
使った開発
●

ブランチを用いた「構成管理パター
ン」
–
–
–
–

Main line
Task Branch
Release Line
3rd Party Codeline

2013/12/13 Rev.16
A successful
Git branching model

2013/12/13 Rev.16
さらなる
開発効率の向上
これらのパターンを用いて、ソフトウェ
アの開発効率を向上させましょう!!!

2013/12/13 Rev.16
Appendix

2013/12/13 Rev.16
Mercurial とは?
●

●

●

Pythonで実装されているコマンドライ
ン ツール
元々は Linux カーネルのソースコード
管理に使用するために開発が始まった
Go言語, Illumos/OpenIndiana,
Mozilla, Netbeans, OpenJDK,Python,
Vim … 等のプロジェクトにて使用

2013/12/13 Rev.16
Mercurial の略称は
なぜ Hg ?
●

英語の Mercury が水銀を意味し、そ
の元素記号が Hg であることに由来。

2013/12/13 Rev.16
分散型 VCS が
開発された理由
●

●

Linux カーネルの開発過程で「大規模なソ
フトウェアを、複数の開発者で並行開発す
るための手法」が確立されていった。(2002
年~2005年)
Linux カーネルの開発で使用するために
「分散型 VCS」の開発(※1)が行われた
(2005年~)
–

「大規模なソフトウェアを、複数の開発者で並
行開発する」ために最良のツールが作成された
2013/12/13 Rev.16
Git 派の方には
SourceTree がオススメ

2013/12/13 Rev.16

More Related Content

What's hot

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化Kumazaki Hiroki
 
OSセキュリティチュートリアル
OSセキュリティチュートリアルOSセキュリティチュートリアル
OSセキュリティチュートリアルKuniyasu Suzaki
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方Shuji Watanabe
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたHiraku Toyooka
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装MITSUNARI Shigeo
 
PEGで構文解析をする
PEGで構文解析をするPEGで構文解析をする
PEGで構文解析をするjiro4989
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜Teppei Sato
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年BrainPad Inc.
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側do_aki
 
(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務Yutaka Kachi
 

What's hot (20)

ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
OSセキュリティチュートリアル
OSセキュリティチュートリアルOSセキュリティチュートリアル
OSセキュリティチュートリアル
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
 
WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装WebAssembly向け多倍長演算の実装
WebAssembly向け多倍長演算の実装
 
PEGで構文解析をする
PEGで構文解析をするPEGで構文解析をする
PEGで構文解析をする
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
Git Tutorial 教學
Git Tutorial 教學Git Tutorial 教學
Git Tutorial 教學
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
PHPとシグナル、その裏側
PHPとシグナル、その裏側PHPとシグナル、その裏側
PHPとシグナル、その裏側
 
(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務(旧版) オープンソースライセンスの基礎と実務
(旧版) オープンソースライセンスの基礎と実務
 

Viewers also liked

Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」Go Maeda
 
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)Taiji Suzuki
 
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)Takayori Takamoto
 
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築Amazon Web Services Japan
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみたYuto Suzuki
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Go Maeda
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方hibiki443
 

Viewers also liked (8)

Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
Git・Mercurial両対応 リポジトリ管理ツール「Kallithea」
 
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
統計的学習理論チュートリアル: 基礎から応用まで (Ibis2012)
 
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
野外センサネットワークに関する開発研究(東京農工大 大島浩太先生)
 
Oracle R Enterprise の使い方
Oracle R Enterprise の使い方Oracle R Enterprise の使い方
Oracle R Enterprise の使い方
 
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
 
Git LFSを触ってみた
Git LFSを触ってみたGit LFSを触ってみた
Git LFSを触ってみた
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 
大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方大容量ファイルもGitで管理。 Git LFSの使い方
大容量ファイルもGitで管理。 Git LFSの使い方
 

Similar to Tortoise hgのすすめ

バージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないかバージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないか弘実 佐野
 
git&GitHub&SourceTree入門
git&GitHub&SourceTree入門git&GitHub&SourceTree入門
git&GitHub&SourceTree入門Gamu2059
 
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab満徳 関
 
ソフトウェア構成管理のインフラ
ソフトウェア構成管理のインフラソフトウェア構成管理のインフラ
ソフトウェア構成管理のインフラkokiya
 
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Kosuke Tanabe
 
継続的デリバリー読書会 14章
継続的デリバリー読書会 14章継続的デリバリー読書会 14章
継続的デリバリー読書会 14章Yusuke HIDESHIMA
 
サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理についてサイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理についてTakeo Noda
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Koji Shinba
 
Enterprise Manager 3.0
Enterprise Manager 3.0Enterprise Manager 3.0
Enterprise Manager 3.0Yuji Fujita
 
超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩Shin Tanigawa
 
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理ina job
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」Toshiharu Harada, Ph.D
 
Git 入門ちょい手前
Git 入門ちょい手前Git 入門ちょい手前
Git 入門ちょい手前Yuichi Goto
 

Similar to Tortoise hgのすすめ (20)

バージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないかバージョン管理システムを使ってみようじゃないか
バージョン管理システムを使ってみようじゃないか
 
Mercurial入門(前半)
Mercurial入門(前半)Mercurial入門(前半)
Mercurial入門(前半)
 
git&GitHub&SourceTree入門
git&GitHub&SourceTree入門git&GitHub&SourceTree入門
git&GitHub&SourceTree入門
 
DVCSとGitの基礎
DVCSとGitの基礎DVCSとGitの基礎
DVCSとGitの基礎
 
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab
『超初心者向け!visual studio + git で始めるアジャイル開発』 .NETラボ勉強会 #dotnetlab
 
ソフトウェア構成管理のインフラ
ソフトウェア構成管理のインフラソフトウェア構成管理のインフラ
ソフトウェア構成管理のインフラ
 
SVN入門
SVN入門SVN入門
SVN入門
 
Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02Next-L Enju 開発ワークショップ #02
Next-L Enju 開発ワークショップ #02
 
継続的デリバリー読書会 14章
継続的デリバリー読書会 14章継続的デリバリー読書会 14章
継続的デリバリー読書会 14章
 
Vcsは分散型へ
Vcsは分散型へVcsは分散型へ
Vcsは分散型へ
 
サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理についてサイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理について
 
Git -分散バージョン管理システム-
Git -分散バージョン管理システム-Git -分散バージョン管理システム-
Git -分散バージョン管理システム-
 
Enterprise Manager 3.0
Enterprise Manager 3.0Enterprise Manager 3.0
Enterprise Manager 3.0
 
Real legacy
Real legacyReal legacy
Real legacy
 
超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩
 
Scoop!
Scoop!Scoop!
Scoop!
 
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理
 
Gitのススメ
GitのススメGitのススメ
Gitのススメ
 
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
20031030 「読み込み専用マウントによる改ざん防止Linuxサーバの構築」
 
Git 入門ちょい手前
Git 入門ちょい手前Git 入門ちょい手前
Git 入門ちょい手前
 

Recently uploaded

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (7)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Tortoise hgのすすめ

Editor's Notes

  1. 代表的な バージョン管理ソフトの一覧。 この中のツールのうち、いずれかは、開発で使用したことがあると思います。 表の中の「リポジトリ」とは、管理対象となるソースコードの変更情報を記録したデータベースのこと。 この、リポジトリの方式により「集中型」と「分散型」2種類に分けられます。
  2. では、集中型のバージョン管理とはどのようなものか?
  3. : : おそらく皆さんが業務で使用しているのは、こちらのタイプ。 いわゆるクライアント・サーバーモデル。
  4. 図にするとこんな感じ。 中央にリポジトリを格納したサーバがあり、開発者はこのサーバにアクセスしながら使用する形になります。 図中中央にあるのがリポジトリサーバ。 ちなみに、図中の「データベースのマーク」はリポジトリを示しています。
  5. 「集中型バージョン管理」の流れを順に説明しますが、 まず、ソースコードを取得する場合には、リポジトリからチェックアウトを行う。
  6. ソースを更新して、リポジトリに登録する場合にはサーバに対してコミット、(ツールによってはチェックイン)を行う。 サーバにある最新の変更を手元のソースに反映したい場合には、アップデートを行う。 これが集中型の流れになります。
  7. では、もう一方である分散型バージョン管理はどのようなものか?
  8. : :
  9. 図にするとこんな感じ。 開発者全員がリポジトリ(データベース)を保持して、サーバとしてもクライアントとしても動作できるので、矢印だらけになっている。
  10. 分散型バージョン管理では、まず、リポジトリを自分のPCにコピーします。これをクローンと呼びます。
  11. ソースコードを取り出す場合には、自分のPCのリポジトリから。
  12. ソースコードの変更をコミットする場合にも自分のPCのリポジトリに。
  13. コミットしたリビジョンを他のリポジトリとやり取りする場合には、プッシュとプルを使用して、リポジトリ間の同期を取ります。
  14. 分散型の利点を説明すると・・・: : : 分散型のツールは、変更をコミットしてから他の人と同期をとる形になるので、基本的に、コミット後にマージをする、使い方になります。 マージに失敗して元に戻したい場合、ソースをチェックアウトすれば何度でも元に戻れますので、
  15. : : ちなみに、数百万行規模のソースコードを Subversion で運用してみたことがありますが、遅すぎて実用に堪えませんでした。
  16. : : なので、<次>
  17. このように、別々のオフィスで開発を行っている場合でも、「バンドルファイル」というファイルを用いてリビジョンの受け渡しができます。 開発拠点が複数個所に分かれていても、各々で開発を進めて、定期的に成果物としてリビジョンをやり取りする・・という開発もやりやすい。
  18. これが、メインとなるTortiseHgのワークベンチ画面。 ここで画面を切り替えてデモ。
  19. TortoiseHgのどこがお勧めか? というと、
  20. Rev.1 に対して、2人の開発者が別々の変更をコミットして、プルを行うとこの状態になります。
  21. 2人の開発者の変更をマージして、相応の変更を統合します。
  22. 「ブランチ」を用いることで、他の開発者の変更の影響を受けずに、開発を進めることができます。 で、この、「名前なしブランチ」にチームメンバが慣れてきたら、「名前付きブランチ」を使って、「ブランチパターン」を使った開発に移行させます。 そうすることによって、徐々に、平行開発を安全に進められるようにになります。
  23. このワークフローだと、ブランチを多用することになり、マージの頻度も多くなります。 マージに非常に多くの工数が必要なのではないかと?心配になると思います。
  24. 「リポジトリの全情報をローカルに持っている」ため、全てのリビジョンを参照できる。
  25. マージが大変な場合、 おそらく、「変更が局所化できていない」ソースコードだでしょうから、「オブジェクト指向設計」を導入してソースコードをリファクタリングしてください。
  26. 話は戻りますが、もう一つの利点は、強力な「リビジョン改変機能」です。