2010-07-19 33 views
4

使用git,我可以創建分支conceptually,而不必分支我的目錄結構。當我在分支之間切換時(假設所有內容都已提交),它將更改我正在處理的文件的內容,以反映「當前」分支的狀態。是否有與Git默認分支相當的Bazaar?

真的就像能夠做到這一點 - 它非常適合我的工作流程,特別是當我使用Visual Studio時。

但我是一個Bazaar迷。我喜歡它主要是用Python編寫的,我喜歡GUI對我來說非常漂亮和簡單,我喜歡它是跨平臺的。

所以我的願望是有可能的,我的問題是:Bazaar可以做/模擬git的行爲嗎?如果是這樣,怎麼樣?

+0

這個:http://stackoverflow.com/questions/1645672/local-branches-with-bazaar/1910439#1910439可以幫助這裏。 – VonC 2010-07-19 19:33:11

+0

我曾經看過那個 - 只是試了一下。除非我錯過了一些東西,它不會改變目錄中的內容 - 只允許你克隆我已經可以做的分支,所以吶喊不停。 – 2010-07-19 21:26:49

回答

3

我在Bazaar中使用(重量級)結賬,所以我不確定這對你而言是否完全相同,但是你應該可以使用switch命令執行此操作。例如:

mkdir source-repo 
bzr init-repo --no-trees source-repo 
bzr init source-repo/trunk 
bzr co source-repo/trunk workdir 
cd workdir 
# Hack hack hack 
bzr add 
bzr ci -m "Done some stuff" 
# Now create a branch and change the working directory files to match it 
bzr switch -b my-new-branch 
# We're now working on a checkout of ../source-repo/my-new-branch 
# Hack hack hack 
bzr add 
bzr ci -m "Working on the branch" 
# Now go back to the trunk (no -b as we're not creating the branch) 
bzr switch trunk 
# Working directory files now match the trunk branch 
# Hack hack hack 
bzr add 
bzr ci -m "Changes to trunk" 
# Merge in the changes from my-new-branch 
bzr merge ../source-repo/my-new-branch 
bzr ci -m "Merged my-new-branch" 

當然,您也可以使用分支的絕對路徑,但相對的路徑可以節省大量的輸入。不幸的是,合併命令需要一個完整的路徑。

這是你要找的東西嗎?

+0

完美!正是我在找什麼。另一個小問題 - 你知道除了'rm -rf ../ source-repo/my-new-branch'之外還有其他的方法來刪除分支嗎? – 2010-07-20 13:15:45

+0

不適用:當我真的需要刪除一個分支時,我傾向於使用'rm -rf'。鑑於分支僅存儲更改(其餘代碼和歷史記錄位於共享存儲庫:本例中爲source-repo/.bzr),它們佔用的空間非常小,我傾向於將它們留在那裏。如果你想清理目錄結構,你總是可以在子目錄或前綴中組織它們。 – DrAl 2010-07-20 13:45:12