2011-09-14 42 views
3

我想使用Bazaar來處理一個使用Subversion並且歷史悠久的項目。例如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,並且在一天內提交所有SVN的變化進入Bazaar分支。

我該如何做到這一點,以便元數據和單個提交被正確地轉換爲Bazaar(與它們在SVN側發生的粒度相同)?我不需要能夠推入SVN。我需要的只是一種單向解決方案。我希望有一個工具可以做到這一點!

回答

2

我想我找到了一個潛在的解決方案,所以我正在回答自己。

有一個名爲Tailor的工具可以做到這一點。它是一個通用的解決方案,因此它可以與大多數流行的版本控制系統(如CVS,SVN,Bazaar,Mercurial,Git,Darcs和其他一些系統)協同工作。

來完成我問我需要下面的配置文件,例如freebsd-tailor.conf

[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] 

然後我就跑tailor -c freebsd-tailor.conf在revno 225424做初始同步,我想每次都重新運行該命令在此之後逐步獲取新的更改。

我目前正在測試這個。我將以任何成功或失敗更新我的答案。其他解決方案仍然受歡迎。 :)

UPDATE:

我所做的配置示例簡單一點,並添加encoding進入這似乎與許多項目需要。

到目前爲止,我的測試結果是,裁縫不幸的是與大型項目(如我的例子)不是很強大。由於某種原因,在我的bzr存儲庫中缺少一個子目錄,並且使用裁剪拉動更新非常緩慢並且需要大量資源。也許它在小項目中可以正常工作。我喜歡裁縫對於不同的VCS具有如此多的後端,並且對他們的差異保持中立。

相關問題