この種の機能が Subversion に存在し、非常にうまく機能することに気付きました。SourceGear Vault にそのようなものがあるかどうか疑問に思っていました。
1 に答える
残念ながらSubversionとGitの双方向ブリッジしかありません。SourceGear Vault のブリッジを書いている人は聞いたことがありません。
ただし、他のシステム上でMercurial を使用することはできます。これは、すべてのバージョン管理システム (VCS) で機能する一般的な手法です。あなたがすることは次のとおりです。
外国のバージョン管理システムからコードの最新バージョンをチェックアウトします。Mercurial リポジトリを初期化し、すべてのファイルを追加して、コミットします。
# checkout foreign VCS
$ hg init
$ hg addremove
$ hg commit
作業コピーは、Mercurial の作業コピーと外部システムの作業コピーの両方になりました。Mercurial で開発を行い、それを定期的に外部システムにインポートし、外部 VCS からの変更を定期的に Mercurial にインポートします。
default
外部システムの履歴を追跡するために呼び出されたブランチとhg
、Mercurial で行った開発を追跡するために呼び出された名前付きブランチを使用します。
注:以下の Anton のコメントでは、名前付きブランチを使用して 2 つの開発ラインを分離すると、Vault に表示されるファイルが多すぎます。これが問題になる場合は、代わりに 2 つのクローンを使用してください。
hg
ブランチを作成しましょう:
$ hg branch hg
$ hg commit -m "Started hg branch"
何かを開発できるようになりました。
# work, work, work...
$ hg commit -m 'Fixed bug 42'
# work, hack, work...
$ hg commit -m 'Customers will love this feature!'
このように作業を進めてdefault
いくと、ブランチはブランチから分岐し始めますhg
。違いは、まだ外部システムにエクスポートされていない変更だけです。あなたは違いを見ることができます
$ hg diff default:hg
変更を実際にエクスポートするには、default
ブランチを更新してマージhg
し、変更を外部システムにコミットします。
$ hg update default
$ hg merge hg
$ hg commit -m 'Merge with hg'
# get list of renamed files:
$ hg status --added --copies --change . | grep -A 1 '^ '
# commit to foreign VCS
その後、ブランチに戻って更新しhg
、Mercurial で作業を続けることができます
$ hg update hg
# work, work, wok...
hg
外部 VCS で他の人が変更を行った場合は、それらをブランチにマージする必要があります。default
最初にブランチに更新します。これにより、作業コピーは、外部 VCS が期待するように見えるようになります。その後、作業コピーを更新できます。これにより、Mercurial に変更が反映され、Mercurial にコミットされます。
$ hg update default
# update working copy using foreign VCS
$ hg addremove --similarity 90
$ hg commit -m 'Imported changes from foreign VCS'
このhg addremove
手順により、Mercurial が外部 VCS で行われた名前変更を確実に取得します。自分に合った設定を見つけるには、similarity パラメータを試してみる必要があります。hg status -C
スケジュールされた名前変更を表示するために使用します。
これらの変更をブランチにマージしhg
て、今後の Mercurial ベースの作業に組み込むことができるようにする必要があります。
$ hg update hg
$ hg merge default
$ hg commit -m 'Merge with default'
このように作業を続けます。常にブランチで新しいローカル開発を行い、外部 VCS コマンド (update、commit など) を使用する前にhg
常にブランチを更新します。default
このガイドがあなたや他の誰かに役立つことを願っています! :-)