2017-05-03 54 views
0

我已經在w/bzr(bazaar vcs)上工作了一段時間,並決定在覈心主幹上重新分組許多應用程序(以幫助保存歷史資源)。bazaar與「工作樹」的遠程堆疊分支

對於公佈的網絡應用程序,工作流程包括

bzr push bzr-ssh://<server>/var/www/<remote-branch-name>

其次bzr checkout在服務器上得到一個工作樹。

有了這個新的堆疊範例,我當然想要將一個堆棧分支推送到服務器上,並且有一個工作樹來提供服務,但這似乎不可行?

bzr push --stacked -d <branch> <remote>

會很樂意在服務器上創建一個新的堆疊分支,但是,從服務器:

  • bzr info沒有顯示出父
  • bzr checkout結果的bzr:錯誤:沒有一個分支

Net,no working tree:| |

最終,我剛剛刪除了新的遠程分支並返回並省略了--stacked

還在想我是否錯過了什麼?

+0

這看起來像是上游bzr中的一個bug。 – jelmer

回答

0

我會解釋堆棧分支,但下面我建議您改用共享庫。

「bzr info」是否顯示父母並不重要。它需要顯示一個疊加分支。

在下面的例子中,「堆疊在」是關鍵:

bzr info bzr+ssh://teeny/~/bzr 
Standalone branch (format: unnamed)            
Location: 
    branch root: bzr+ssh://teeny/~/bzr/ 

Related branches: 
    parent branch: bzr 
    stacked on: http://bazaar.launchpad.net/~abentley/bzr/branches-uncommitted 

巴扎嘗試確定堆疊在其上的分支。它應該將其作爲推送輸出的一部分進行打印。

如果發現錯誤,可以使用--stack-on覆蓋它。請記住,您所在的分支必須至少與您所推薦的分支一樣公開。

但我建議共享存儲庫,而不是堆疊分支,以節省空間。它更高效,更加用戶友好。如果Bazaar發現一個包含目標位置的存儲庫,它將自動使用共享存儲庫。例如,「bzr init-repo bzr + ssh:/// var/www /」將創建一個共享存儲庫,該存儲庫將在/ var/www下的所有分支自動使用。

存在堆疊分支來解決隱私問題。如果/ var/www中的某些分支是私有分支,則共享存儲庫是一個風險,因爲它將包含來自這些私有分支的修訂。 Launchpad使用堆疊分支的主要原因是因爲Launchpad支持專用分支。在公共分支上堆疊的私人分支可以節省空間,而不會泄露私人分支到公共分支。它默認使用堆棧,因爲公共分支可能會在其初始推送後變爲私有。