Submit Search
Upload
mercurial-users.jp speech at OSC2013 Tokyo/Spring
•
3 likes
•
2,376 views
Katsunori FUJIWARA
Follow
speech of mercurial-users.jp at OSC2013 Tokyo/Spring on 2013-02-23
Read less
Read more
Technology
Report
Share
Report
Share
1 of 62
Download now
Download to read offline
Recommended
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
バージョン管理のススメ 〜私的歴史探訪編
バージョン管理のススメ 〜私的歴史探訪編
Ken-ichi Kudo
Solaris (Branded) Zone Internals
Solaris (Branded) Zone Internals
Katsunori FUJIWARA
Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?
Katsunori FUJIWARA
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Colin Charles
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Chihiro Adachi
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
Recommended
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
バージョン管理のススメ 〜私的歴史探訪編
バージョン管理のススメ 〜私的歴史探訪編
Ken-ichi Kudo
Solaris (Branded) Zone Internals
Solaris (Branded) Zone Internals
Katsunori FUJIWARA
Pythonista も ls を読むべきか?
Pythonista も ls を読むべきか?
Katsunori FUJIWARA
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Percona ServerをMySQL 5.6と5.7用に作るエンジニアリング(そしてMongoDBのヒント)
Colin Charles
EC-CUBEユーザカンファレンス2016
EC-CUBEユーザカンファレンス2016
Chihiro Adachi
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
SubversionとSugarsync
SubversionとSugarsync
Hidenori Goto
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
ロフト くん
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Uptime Technologies LLC (JP)
Continuous delivery chapter13
Continuous delivery chapter13
favril1
オープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアル
Akira Tanaka
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Yuki Suga
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
You&I
ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連する品質
ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連する品質
Hironori Washizaki
Mvp road show_0830_rev1
Mvp road show_0830_rev1
Takano Masaru
ProjectAtomic-and-geard
ProjectAtomic-and-geard
Naoto TAKAHASHI
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
Seiji KOMATSU
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
hakoika-itwg
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
Fcp
Fcp
Naoto TAKAHASHI
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
Tsukasa Kato
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
study on safety and security ccoding standards
study on safety and security ccoding standards
Kiyoshi Ogawa
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
Yukihiko SAWANOBORI
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
More Related Content
Similar to mercurial-users.jp speech at OSC2013 Tokyo/Spring
SubversionとSugarsync
SubversionとSugarsync
Hidenori Goto
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
ロフト くん
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Uptime Technologies LLC (JP)
Continuous delivery chapter13
Continuous delivery chapter13
favril1
オープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアル
Akira Tanaka
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ohtsuchi
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
Yuki Suga
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
You&I
ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連する品質
ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連する品質
Hironori Washizaki
Mvp road show_0830_rev1
Mvp road show_0830_rev1
Takano Masaru
ProjectAtomic-and-geard
ProjectAtomic-and-geard
Naoto TAKAHASHI
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
Seiji KOMATSU
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
hakoika-itwg
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
Fcp
Fcp
Naoto TAKAHASHI
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
Tsukasa Kato
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
study on safety and security ccoding standards
study on safety and security ccoding standards
Kiyoshi Ogawa
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
Yukihiko SAWANOBORI
Similar to mercurial-users.jp speech at OSC2013 Tokyo/Spring
(20)
SubversionとSugarsync
SubversionとSugarsync
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
「今そこにある危機」を捉える ~ pg_stat_statements revisited
「今そこにある危機」を捉える ~ pg_stat_statements revisited
Continuous delivery chapter13
Continuous delivery chapter13
オープンソースを利用したモデル駆動トライアル
オープンソースを利用したモデル駆動トライアル
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Robotech2012講習会v01最終版v2
Robotech2012講習会v01最終版v2
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連する品質
ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連する品質
Mvp road show_0830_rev1
Mvp road show_0830_rev1
ProjectAtomic-and-geard
ProjectAtomic-and-geard
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
はこだてIKA夜間勉強会 バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Fcp
Fcp
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
study on safety and security ccoding standards
study on safety and security ccoding standards
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
Recently uploaded
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Recently uploaded
(8)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
mercurial-users.jp speech at OSC2013 Tokyo/Spring
1.
Mercurial で簡単履歴管理
藤原 克則 1 OSC 2013 Tokyo/Spring
2.
自己紹介 2
OSC 2013 Tokyo/Spring
3.
• 藤原 克則(FUJIWARA
Katsunori) @flyingfoozy http://d.hatena.ne.jp/flying-foozy/ • Mercurial プロジェクトへの関与 – メッセージ日本語翻訳のコミッタ – コントリビュータとして、日々修正を提案 • 『入門Mercurial』(秀和システム刊)を執筆 3 OSC 2013 Tokyo/Spring
4.
GUIメインの入門書を出版します!
• TortoiseHgを利用した、 GUIによる履歴管理の入門書 • 2月27日頃から順次、 店頭に並ぶ予定 (地域によって異なります) http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial-books.html#thgbook 4 OSC 2013 Tokyo/Spring
5.
履歴管理とは?
5 OSC 2013 Tokyo/Spring
6.
履歴管理の機能 • ファイルの変更内容の記録/参照 –
変更内容ベースの情報: • 変更対象ファイル(What) • 変更箇所(Where) • 変更内容(How) – 変更に関するメタデータ: • 変更実施者(Who) • 実施日時(When) • 変更理由(Why) 6 OSC 2013 Tokyo/Spring
7.
履歴管理の利点 • 特定時点の状態への復帰 –
想定外の変更の取り消し – 以前の状態での動作確認 • 記録内容を元にした履歴の検索/情報抽出 – 障害発生時の原因となった変更の特定 – 別視点での分析: ファイル別/作業者別の変更頻度など • 並行して実施される作業の隔離/統合 – 記録された情報をベースに行うので、何度でもやり直しができる 7 OSC 2013 Tokyo/Spring
8.
履歴管理ツールの世代分類
8 OSC 2013 Tokyo/Spring
9.
履歴管理ツールの世代分類 • Bryan O'Sullivan
氏の 『Mercurial: The Definitive Guide』における分類 – http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/mercurial- books.html#bosbook 9 OSC 2013 Tokyo/Spring
10.
第0世代 • (一般的な)専用ツールを、全く使用しない履歴管理 –
『履歴管理』という名の『無法地帯』 • 変更前/後ファイルの手動保存 – ファイル名末尾に日付をつけて保存 – 定期的に作業成果のアーカイブを作成 • 複数人で並行作業する場合は – 同一領域を共有して並行作業するか、あるいは – 各自の作業後に、成果物を共有領域に上書き 10 OSC 2013 Tokyo/Spring
11.
第0世代の問題点 • メタデータ/変更内容の管理が面倒 –
別ファイル(テキストファイル or エクセル)で管理 – メターデータ相当の情報や、修正前の内容をコメントとして残す – 結果として、整合性の維持が困難になったり、可読性が低下するなど • 必要になってからの、履歴の振り返りが面倒 – 人手が介在するため、誤操作の可能性も高い • 成果記録の安全性確保が難しい – 操作ミスにより、他人の成果を上書きする危険性 • エトセトラエトセトラ…… 11 OSC 2013 Tokyo/Spring
12.
第1世代 • 履歴情報の記録場所(リポジトリ)と、作業領域が隣接 –
代表的なツール: SCCS, RCS • 複数人で並行作業する場合 – 同一領域を共有して並行作業 – 同一ファイルへの同時変更を防止するための排他機能あり 12 OSC 2013 Tokyo/Spring
13.
第1世代の問題点 • 履歴が記録されている、一か所でしか作業できない • 並行作業での安全性確保が難しい
– 同一領域を共有するため、作業成果の独立性が保てない – 排他機能を利用した場合に、排他解放漏れが多発する • エトセトラエトセトラ… … 13 OSC 2013 Tokyo/Spring
14.
第2世代 • リポジトリと作業領域が分離(『中央リポジトリ』型) –
代表的ツール: CVS, Subversion, Visual SourceSafe etc… • 独立した作業領域を使用できるので、 各自の作業成果の独立性が確保できる • クライアント/サーバモデルを導入したことで、 リモートホストでも作業可能 14 OSC 2013 Tokyo/Spring
15.
第2世代の問題点 • リポジトリへの常時アクセスが前提 –
オフライン/ネットワークアクセス制限のある環境での作業が困難 – 応答性が、ネットワーク帯域やサーバ性能に左右される • 履歴記録内容が即時リポジトリに反映 – 作業の途中成果を、バックアップ代わりに記録したりできない • 機能実現上、並行開発に難あり – 履歴の記録が一本道であることが前提 – 継続的なブランチ運用が困難(マージに関しての配慮が不十分) • エトセトラエトセトラ… … 15 OSC 2013 Tokyo/Spring
16.
第3世代 • リポジトリと作業領域が隣接(ただし『分散リポジトリ』型)
– 代表的ツール: Git, Mercurial, Bazaar etc … • 並行開発への配慮 – 履歴の枝分かれ/ブランチ運用の簡便化(=マージの簡便化) – 履歴管理で今最も熱い話題の1つが『ブランチ運用方法』なのは、 第2世代での不満の反動か?(笑) • 個々のリポジトリが、完結した(completed)履歴情報を保持するため、 他リポジトリと連携できない(オフラインな)状況でも、単独で動作可能 • リポジトリ間で、相互に履歴情報の伝搬が可能 – 複数の手段/経路を選択可能 – 負荷分散が容易 16 OSC 2013 Tokyo/Spring
17.
第3世代の問題点 • 難しい(と思われている) –
『分散リポジトリ』という肩書が問題? • 運用の自由度が高い – ブランチ運用などは、最終的に組織としての、 『開発プロセス』や『品質保証方針』などとの兼ね合いになる – それぞれの組織にとっての『最適解』に到達するには、 ある程度の試行錯誤が必要かも? 17 OSC 2013 Tokyo/Spring
18.
Mercurialの利点
18 OSC 2013 Tokyo/Spring
19.
Mercurialとは? • 分散リポジトリ型(第3世代)の履歴管理ツール http://mercurial.selenic.com/ •
コマンド名は “hg” – “Mercurial” の名前の由来である『水銀』(mercury)の元素記号 • Pythonをはじめとする各種OSSの履歴管理で採用 – 『A list of projects using Mercurial』 http://mercurial.selenic.com/wiki/ProjectsUsingMercurial 19 OSC 2013 Tokyo/Spring
20.
概念モデルが簡単 • 記録された履歴は、常に参照可能
– デフォルトの履歴一覧で常時出力される – 『HEAD を移動させると記録した履歴が見えなくなる』といったことが無い – 『一定期間参照されない履歴が破棄される』といったことが無い • 履歴の枝分かれ/ブランチの概念が単純 – Mercurialの『(名前付き)ブランチ』は、CVS/Subversionの『ブランチ』に近い概念 – Gitの『ブランチ』は概念レベルで別物 http://d.hatena.ne.jp/flying-foozy/20120801 参照 • CVS/Subversion経験者や、履歴管理初心者にとって、 理解の障壁が低い 20 OSC 2013 Tokyo/Spring
21.
コマンドラインUIが簡単 • 『1機能1コマンド』 • 最小限の基本コマンドセットで履歴管理可能 •
オプションの名称/用途がコマンド間で統一 • オンラインヘルプ/出力メッセージが、 (ほぼ)100%日本語翻訳済み – 折角の翻訳メッセージファイルが同梱されていない、 残念なパッケージを公開しているディストリビューションもありますが … 21 OSC 2013 Tokyo/Spring
22.
強力な履歴検索機能 • 複雑な条件指定でのリビジョン抽出が可能 –
コミット実施ユーザ名 – コミット実施日時(期間指定可能) – 特定のリビジョンの子孫、あるいは祖先のみの抽出 – 特定のファイル/フォルダに関する修正実施リビジョン – マージ実施の有無 – エトセトラエトセトラ… – さらに、and/or や括弧(優先度指定)による任意の条件の組み合わせ • 使用例に関しては以下のブログエントリ等を参照 – http://d.hatena.ne.jp/flying-foozy/20120511/ 22 OSC 2013 Tokyo/Spring
23.
TortoiseHgなら簡単GUI操作
23 OSC 2013 Tokyo/Spring
24.
各種IDE向けプラグイン • 詳細は Mercurial
の Wiki ページで – 『Information about other tools that work with Mercurial. 』 http://mercurial.selenic.com/wiki/OtherTools 24 OSC 2013 Tokyo/Spring
25.
エクステンションによる機能拡張 • 標準同梱の『エクステンション』を有効にすることで、 Gitと比較して遜色のない機能を使用可能
– 履歴改変: rebase, histedit, MQ – CUI利用時に便利な機能: color, progress, pager, record – 挙動拡張: eol, keyword, largefiles • 基本機能と分離することで – 初期導入のコスト(覚えなければならない事)を下げる – 不慣れな利用者による履歴破壊の危険を回避 25 OSC 2013 Tokyo/Spring
26.
Mercurial導入の障壁
26 OSC 2013 Tokyo/Spring
27.
情緒的な障壁 • 履歴管理ツール自体に対する無理解 –
『履歴管理ツールなんて必要ない』、『手動管理で十分』 – 『自前のツールの方が良い』、『OSSは品質が不安』 • 変化への抵抗 – 『変更を”管理”されるのは嫌だ!』 – 『新しいことを覚えるのは面倒だ!』 27 OSC 2013 Tokyo/Spring
28.
導入コストの障壁 • 既に第2世代ツールが運用されている環境では 第3世代ツールのメリットがなかなか理解してもらえない
– 『小規模なら第2世代で十分』と考えがち – 不便な現状に順応し過ぎて、問題の存在を認識できない • ブランチ運用の困難性 • 中央リポジトリ型の運用柔軟性の低さ • 結果として、初期導入コストに対する抵抗がある • 組織の規模に比例して、コスト由来の抵抗は増加 28 OSC 2013 Tokyo/Spring
29.
政治的な障壁 • 顧客からの使用ツール指定 • 第1~2世代ツールの開発元/販売元
29 OSC 2013 Tokyo/Spring
30.
ゲリラ的Mercurial導入のススメ • 『組織へのMercurialの導入』を目的にすると大変
– 組織の論理や、情緒的な話には、付き合うだけ無駄 • とは言え、周りが使うツールに合わせることで、 自分(達)まで地獄を見る必要は無いよね? • こっそりMercurialを使って、 せめて自分(達)だけは生き延びよう! 30 OSC 2013 Tokyo/Spring
31.
31
OSC 2013 Tokyo/Spring
32.
あるいはトムソーヤ的戦術 • 『~~で便利なので、Mercurial を導入しましょう!』
⇒ 『あーあー、やりたくなーい!面倒臭ーい!』 • 『皆さん大変ですね。私は個人的にMercurialで管理 してるから困りませんけど。おっと、口が滑った。』 ⇒『何それ?俺達にも教えろ、ゴラァ! (#゚Д゚)』 32 OSC 2013 Tokyo/Spring
33.
ゲリラ的Mercurial導入
33 OSC 2013 Tokyo/Spring
34.
ゲリラ的Mercurial導入では… • 自分(達)の作業成果は、内部的にMercurialで管理 • 対外的には、他の履歴管理ツールを使っているように
見せかける – CVS、Subversion、あるいは第0世代ツール(=手動管理) • 自分(達)以外の作業履歴もMercurial側に取り込む – 履歴検索等での利便性 34 OSC 2013 Tokyo/Spring
35.
運用方針 • 連携先(=他の履歴管理ツール)からの取り込みは自動変換 • 連携先への反映は、連携先のツールを使用
– Mercurial側のリビジョンと、連携先に反映されるリビジョンとの間での、 一対一対応の制約を回避 – 制約回避によって、Mercurial 側での内部的な履歴記録の自由度 (記録粒度/ブランチ利用等)を確保 • 構成が多少複雑でも、誤操作の余地が少ない手順 • 第0世代ツールでの取り込み/反映は、手動で頑張る…orz 35 OSC 2013 Tokyo/Spring
36.
全体構成 36
OSC 2013 Tokyo/Spring
37.
連携先からの履歴取り込み • Mercurialリポジトリ repo-sync
に、連携先から履歴取り込み – 基本的には、標準同梱の convert エクステンションで変換可能 • CVS, Subversion, Git, Bazaar etc … – 状況/形式次第では、3rd party エクステンション/外部ツールの利用も • hgsubversion エクステンションや Tailor など • 詳細は『Converting Repositories』参照 http://mercurial.selenic.com/wiki/RepositoryConversion • 連携先でのブランチ/タグもそのまま取り込み可能 – メイントランク(main trunk)の履歴は default ブランチに記録 – それ以外は、同一名称のブランチに記録 37 OSC 2013 Tokyo/Spring
38.
38
OSC 2013 Tokyo/Spring
39.
連携先(の main trunk)から取り込んだ履歴は、default
ブランチに記録される。 39 OSC 2013 Tokyo/Spring
40.
取り込み履歴の共有 • 連携先とMercurial側とのすり合わせ作業は、 sync-default
ブランチで実施 – default ブランチの最新リビジョンからブランチを作成(初回のみ) – 連携先から継続的に取り込まれた履歴は、 都度 default から sync-default にマージ – マージ成果は、リポジトリ repo-shared に反映 40 OSC 2013 Tokyo/Spring
41.
41
OSC 2013 Tokyo/Spring
42.
default と sync-default
の間では、常に default ⇒ sync-default 方向にのみマージを実施。 42 OSC 2013 Tokyo/Spring
43.
独自作業成果の記録 • 独自作業成果は、hg-default ブランチ上で記録
– sync-default の最新リビジョンから、ブランチを作成(初回のみ) – 連携先から継続的に取り込まれた履歴は、 sync-default ブランチを経由して hg-default にも都度マージ – チームメンバは、共有リポジトリ repo-shared 経由で成果を共有 – Mercurial の機能をフルに使用可能 • 独自の(=連携先には見せない)ブランチ作成 • 名前なしブランチで複数ヘッド状態 • 共有リポジトリを経由しない履歴伝搬などなど 43 OSC 2013 Tokyo/Spring
44.
44
OSC 2013 Tokyo/Spring
45.
hg-default あるいはそこから派生したブランチ上の履歴記録は、連携先の管理モデル(e.g. 一本道)の制約を 受けずに、Mercurialの機能をフルに使用可能
45 OSC 2013 Tokyo/Spring
46.
独自作業成果反映用リポジトリの作成 • 作業領域の『ハイブリッド』(hybrid)化 (初回のみ)
– 連携先からのチェックアウト “cvs checkout” や “svn checkout” – チェックアウトした領域を、Mercurialリポジトリとしても初期化 “hg init” (+ “hg pull repo-shared”) 46 OSC 2013 Tokyo/Spring
47.
連携対象 47
OSC 2013 Tokyo/Spring
48.
ハイブリッド領域の同期 • 連携先の最新リビジョンで、作業領域を更新
– 最新内容で強制的に上書き: “cvs update –C” など • sync-default ブランチの最新リビジョンで、作業領域を更新 – 最新内容で強制的に上書き: “hg update –-clean sync-default” • 連携先に対して、差分の有無を確認 – “cvs diff”, “svn diff” など • 差分があるなら、『連携先からの履歴取り込み』から繰り返し – こちらの作業中に、連携先に新規リビジョンが追加されている筈 48 OSC 2013 Tokyo/Spring
49.
連携対象 49
OSC 2013 Tokyo/Spring
50.
ハイブリッドリポジトリの作業領域同期では、Mercurial側の同期対象が、defaultブランチではなく sync-default上のリビジョンである 点に注意。defaultは連携先からの取り込み専用として使用し、成果統合等のすり合わせ作業は、sync-default上で実施する。
50 OSC 2013 Tokyo/Spring
51.
連携先への独自作業成果の反映 • hg-default ブランチから
sync-default にマージ • repo-hybrid リポジトリにマージ結果を反映 • repo-hybrid の作業領域をマージ実施リビジョンで強制更新 – “hg update –-clean sync-default” – 事前に適切に同期されていれば、 マージした独自作業成果=連携先との差分=連携先への反映内容 • 連携先に変更内容を記録 – “cvs commit”, “svn commit” など – 必要であれば、新規ファイルの add や、不要ファイルの remove も、 commit 前に手動で実施 51 OSC 2013 Tokyo/Spring
52.
連携対象 52
OSC 2013 Tokyo/Spring
53.
ハイブリッドな作業領域が、先述した要領で連携先/Mercurialの両方に同期された状態から作業することで、 hg-default ブランチからマージした独自作業成果Xを、連携先にCとして適切に反映することが可能。
53 OSC 2013 Tokyo/Spring
54.
独自作業成果反映直後の、連携先からの取り込みでは、X と同内容の C
が取り込まれるが、『B⇒C』と『b⇒X』 は全く同一の変更になることから、CとXのマージは、Mercurialでは衝突等が発生しない。 54 OSC 2013 Tokyo/Spring
55.
リポジトリ/ブランチが多数登場するが… • 役割を固定化することで: –
作業手順を固定化可能 – 『状況に応じた判断』に由来する誤操作の危険性を低減可能 • 1つのリポジトリ/ブランチで、役割を兼務させると: – うっかり他の作業を実施してしまうかも? – 『ハイブリッド領域の同期』などで、手順が増えてしまうかも? • これだけブランチ/マージを多用しても、 Mercurialなら楽々運用可能 55 OSC 2013 Tokyo/Spring
56.
日本でのコミュニティ活動の紹介
56 OSC 2013 Tokyo/Spring
57.
メーリングリスト • mercurial-ja
– https://groups.google.com/forum/?fromgroups#!forum/mercurial-ja – リリース情報/障害情報等もアナウンスしてます 57 OSC 2013 Tokyo/Spring
58.
Twitter • 公式コミュニティアカウント @mercurialjp •
公式コミュニティハッシュタグ #mercurialjp 58 OSC 2013 Tokyo/Spring
59.
公式サイト • http://mercurial-users.jp/
– イベント開催/参加情報 • 勉強会の開催 • 各種イベントでの出張ハンズオンなど – 最新版の日本語オンラインマニュアルの公開 – 各種情報へのリンク • メーリングリスト等へのリンクも! 59 OSC 2013 Tokyo/Spring
60.
つぶやきも立派な貢献です! • Twitter上の発言等に由来する、 Mercurial本体に取り込まれた修正が、
2012年の一年間で10件以上 – 『Mercurial に関するコミュニティ由来の成果(2012年版)』 http://d.hatena.ne.jp/flying-foozy/20130109 • 疑問/要望等あれば、どんどんお寄せください 60 OSC 2013 Tokyo/Spring
61.
勉強会開催情報 • “TokyoMercurial” と題して、
03/23(土)に勉強会を開催します http://connpass.com/event/1855/ • お菓子を食べながらの和やかな会ですので、 『履歴管理ツールの利用は初めて』な方から、 『Mercurialの中身を知りたい』な方まで、 お気軽に参加ください! 61 OSC 2013 Tokyo/Spring
62.
本日はありがとうございました
62 OSC 2013 Tokyo/Spring
Download now