Mercurialリポジトリの統合と分割
Mercurialリポジトリの統合と分割のコマンドconvertの使い方がわかったのでメモ。
【元ネタ】
Mercurial の convert 拡張を用いてリポジトリの内容を一括で変換する (フェンリル | デベロッパーズブログ)
紹介マニアどらふと版: convert と filemap を利用した hg リポジトリの分割と統合
Mercurial リポジトリを分割する - ursmの日記
schrome.net - Mercurialリポジトリへの分割と変換を行うシェルスクリプト
Mercurialリポジトリを統合したり分割したい理由は、新規開発や2次開発で一旦作ったものの、それらのライブラリを後からまとめたり、多すぎるので分割したりしたい時があげられる。
その場合、修正履歴もそのまま引き継ぐようにしたいが、Mercurialは履歴の引き継ぎも統合・分割時に行なってくれるので便利。
例えば、srcリポジトリをtargetリポジトリのsrcフォルダへ統合する場合は下記になる。
echo rename . src > map.txt
hg convert --filemap map.txt src target
cd target
hg merge
hg commit -m "srcを追加"
もちろん、CVS・SVN・GitなどのリポジトリをMercurialへ移行することも可能。
hg convert --helpを見ると、ほとんどのSCMに対応しているみたい。
hg convert [OPTION]... SOURCE [DEST [REVMAP]]
別 SCM のリポジトリから Mercurial リポジトリへの変換
Accepted source formats [identifiers]:
- Mercurial [hg]
- CVS [cvs]
- Darcs [darcs]
- git [git]
- Subversion [svn]
- Monotone [mtn]
- GNU Arch [gnuarch]
- Bazaar [bzr]
- Perforce [p4]
但し、tortoisehg-2.2.2-hg-2.0.2では正しく動作するが、tortoisehg-2.3.1-hg-2.1.1ではhg convertを実行するとエラーになるので注意。
Mercurialのバグかもしれない。
MercurialやGitを触ってみると、従来のCVSやSVNとは全く異なるバージョン管理ツールであるのがよく分かる。
過去の修正履歴を保持しながら、移行作業も可能だし、過去の修正履歴を改変することも可能だ。
そのような機能があるおかげでマージ作業も移行作業もRedoやUndoが可能になるので、失敗を恐れずに作業できる余裕が生まれる。
ツールが新しい使い方を提唱することで、アジャイルなソフトウェア開発を更に補強してくれる。
ツールがプロセスを改善していく。
色々触ってみる。
【追記】
Mercurial2.1.1ではsplicemapを使えばhg convertが成功するらしい。試してみる。
mercurial-2.1.2.tar.gz: mercurial-2.1.2/i18n/ja.po | Fossies Archive
| 固定リンク
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「Agile」カテゴリの記事
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- 「世界一流エンジニアの思考法」の感想(2024.12.08)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
コメント
Mercurial の 2.0.2 から 2.1.1 にかけての convert 系修正で、
単純な変換で失敗するのは issue 3205 関係だと思います。
http://mercurial.selenic.com/bts/issue3205
# 終端条件で上手いこと止まらない場合があるのかな?
投稿: 藤原克則 | 2012/04/22 19:30
◆藤原さん
ご指摘ありがとうございます。
「入門Mercurial」の方にお返事して頂き光栄です。
@karbou_12さんの指摘のように、Ver2.1.2がTortoiseHgに反映されれば問題ないようですね。
Issue 3311: convert: "invalid mode or filename" since 2.1.1 - Mercurial issue tracker
http://mercurial.selenic.com/bts/issue3311
投稿: あきぴー | 2012/04/22 20:24