2011-09-14 9 views
3

私は、Subversionを使用し、非常に長い歴史を持つプロジェクトでの作業にBazaarを使用したいと思います。例えば、svn://svn.freebsd.org/base/head完全な履歴をインポートせずに、Bazaarを使用したSubversionリポジトリをミラーリングしますか?

良いプラグインbzr-svnは、SVNリポジトリでの作業に使用できます。関連するワークフローのいくつかの例がありますhere

私の問題は、SVNから完全な履歴をインポートしたいという前提で書かれているようです。私はそれをしたくありません。それはあまりにも多くのディスクスペースを必要とします(実際には、私が試してみるとインポートがメモリ不足になります)。私は本当に特定のSVNのrevno /タグの前に変更について気にしない。しかし、私は、バザール側に適切に現れるようにカットオフポイントの後にそれぞれの個人をコミットしたいと思っています。どうすればそれを達成できますか?

は、私は基本的に(そこから私は私の地元の支店を作ることができます)私のベンダブランチのために、次のロジックをしたい:明らか

svn co svn://svn.freebsd.org/base/head -r CUTOFF_REVNO 

while true 
do 
    svn up -r NEXT # note: NEXT is not possible even though there is PREV 
    bzr commit 
    sleep N 
done 

以上であるバザール、内のメッセージおよびその他のようなことをコミットし保存しません問題。これを毎日のcronジョブにすることができます。これはちょうどsvn upであり、1日の中のすべてのSVN変更をBazaarブランチに1回の1日コミットでコミットします。

メタデータと個々のコミットがBazaarに正しく変換されるように、これをどのように行うことができますか(SVN側と同じ粒度で)私はSVNにプッシュできる必要はありません。私が必要とするのは、一方的な解決策だけです。私はちょうどこれを行うことができるどこかのツールがあることを願っています!

答えて

2

私は潜在的な解決策を見つけたと思うので、私は自分自身に答えています。

正確にこれを行うことができるTailorというツールがあります。それは一般的な解決策であるため、CVS、SVN、Bazaar、Mercurial、Git、Darcsなどのほとんどの一般的なバージョン管理システムで動作します。

[DEFAULT] 
verbose = True 
projects = freebsd-current 

[freebsd-current] 
root-directory = /home/tailor/freebsd-current 
subdir = upstream 
source = svn:freebsd-current 
target = bzr:freebsd-current 
start-revision = 225424 

[svn:freebsd-current] 
repository = svn://svn.freebsd.org/base 
module = /head 
encoding = iso-8859-1 

[bzr:freebsd-current] 

その後、私はちょうどrevno 225424および再実行コマンドで最初の同期に私がしたいすべての時間を行うためにtailor -c freebsd-tailor.confを実行します。私は例freebsd-tailor.confために、次の設定ファイルが必要に尋ね達成するために

その後、新しい変更を段階的に取得します。

私は現在これをテスト中です。私は成功か失敗かで私の答えを更新します。他の解決策はまだ歓迎されています:)

UPDATE:

私は少しシンプルな構成例を作り、多くのプロジェクトで必要とされているようだencodingエントリを追加しました。

これまでのテストの結果、tailorは、残念ながら大きなプロジェクト(私の例のような)ではあまり頑強ではありません。私のbzrリポジトリで何らかの理由で1つのサブディレクトリが見つからず、テーラでアップデートを引き出すのが非常に遅く、多くのリソースが必要です。小さなプロジェクトでうまくいくかもしれません。私はテイラーがさまざまなVCSに多くのバックエンドを持ち、それらの違いについて中立である方法が好きです。

関連する問題