フリーランサーとして、私はSubversionリポジトリを使用する会社でよく働いています。
Mercurialを使用してこれらのリポジトリからコードを取得し、オフラインのときに変更を追跡し、オンラインに戻ったときにすべてのローカル変更を会社のSubversionサーバーにコミットできると便利です。
これは機能しますか?詳細についての良いチュートリアルを読んだことがありますか?
フリーランサーとして、私はSubversionリポジトリを使用する会社でよく働いています。
Mercurialを使用してこれらのリポジトリからコードを取得し、オフラインのときに変更を追跡し、オンラインに戻ったときにすべてのローカル変更を会社のSubversionサーバーにコミットできると便利です。
これは機能しますか?詳細についての良いチュートリアルを読んだことがありますか?
私はCVSを使用している会社で働いているので、HgSubversionはオプションではありませんでした。数日前に同じ質問があり、これに基づいてワークフローを開発しました。
CVSリポジトリがあるMercurialリポジトリを作成しました。これは、「読み取り専用」として扱います。次に、この「読み取り専用」のhgリポジトリを作業リポジトリに複製し、ローカルで変更/修正を行います。私は自分が作成したすべての機能と修正についてリポジトリのクローンを作成してきましたが、リポジトリを1つだけにして、別の分岐戦略を使用して開発を管理することもできます。これがそのような戦略の概要です。
このワークフローの鍵は、その「読み取り専用」リポジトリを持つことです。以前は、CVSの上にある最初に作成したMercurialリポジトリに変更を加えていました。これは機能しましたが、CVSから更新するときに混乱しました。この追加のレイヤーを使用することで、独自の変更を加えたり、CVSから個別に更新したりすることができます。
CVSとの同期を維持する
CVSに変更があるときはいつでも、私はcvsの更新を行います。「読み取り専用」のhgリポジトリでは、これは変更されたファイルとして表示されます。Mercurialを同期するために、私は単に
hg ci -m "Updated from CVS."
(つまり、これらのメッセージの多くは私のhgログに表示されます)。この時点で、私の「読み取り専用」リポジトリはCVSと同期されます。これで、クローンを作成した任意のリポジトリに移動して、を発行し、hg pull
それらhg update
を同期することができます。
hgからCVSへの変更のコミット
逆に、CVSにコミットしたい場合は、変更をhgにコミットした作業リポジトリの1つに移動します。次にhg push
、変更を「読み取り専用」に戻し、「読み取り専用」リポジトリにホップして、を実行しますhg update
。CVSの観点からは、これは新しく変更されたように見えます。その後、cvs commit
CVSに戻ります。ここでは、hgリポジトリで行った作業をログメッセージで繰り返し/要約する必要があります。
確かに、このワークフローには大まかな点があります。hgに複数の変更を加えると、CVS / SVNに1つの変更が加えられるため、履歴がCVS / SVNに保持されず、コミットメッセージを要約する必要があります。CVSと「読み取り専用」リポジトリの同期を維持するように手動で管理する必要があります。これの利点は、追加の拡張機能をインストールする必要がないことです。つまり、両方の観点からファイル自体を処理しているだけです。起こっていることはすべてかなり透明で、あなたの管理下にあります。
私はまだhgに歯を食いしばっていますが、これまでのところ、このワークフローはかなりうまく機能しています。
Harveyはこれについての優れた図を提供しており、このワークフローが他のすべてのVCSに適用されるという優れた点を示しています。
(出典:sr105.com)
HgSubversionを試してください。それはあなたがまさにそれをすることを可能にします。svnリポジトリー(の一部)をhgリポジトリーにローカルで複製し、hgをローカルで操作し、svnをリモートで操作することができます(プッシュおよびプルは、それらに期待することを実行します)。
私は過去にある程度の成功を収めてそれを使用しましたが、それについての豊富な経験はありません。
このwikiページでいくつかの情報を見つけることができます。