2010-12-11 46 views
3

我認爲我的變更集可能發生了不好的事情。'bzr update'擦除了我所有的本地提交。幫幫我!

爲了記錄,我使用過git,hg和svn以前的一般成功。我對bzr的理解不夠完整。

這裏是我(Windows XP中):

1)使用的bzr的svn籤創建一個文件夾。稱它穩定
2)從我用於開發的分支中分支出的文件夾。稱之爲開發

我的計劃是在開發分支上使用commit --local來跟蹤更改,並且它正在工作。

然後,我做了'bzr更新'(因爲它在我嘗試推送時抱怨)。當時,stable有一個更老的代碼副本。那麼,現在的開發具有相同的舊版本。 'bzr log'顯示我的本地提交沒有任何證據!

有人可以向我解釋發生了什麼事,我能做些什麼來恢復我的舊代碼?

回答

5

好的,我找到了。經過一番瘋狂的搜索之後,我在查看這個其他的stackoverflow問題後發現了密碼字「dead head」: Some code was lost after doing bzr commit --local, bzr pull, bzr commit

但是,他們提出的解決方案並不適合我。做什麼工作,被發現在 http://chrismarinos.com/don-t-loose-your-head-with-bazaar/

最終的答案是要找到使用頭--all版本ID,然後用拉得讓所有的修訂:

bzr heads --all 
bzr pull --overwrite -r revid:<revision-id> 

我所有的代碼是回,現在備份了3到4次。

+1

哦,最優秀的;很高興你找到答案。還是要考慮搞清楚一種複製的方法,一個錯誤報告,或許稍微改變你的工作方式,以減少這種事情再次發生的可能性。我覺得最好是讓事故/錯誤不可能發生,儘管缺點是我可能通過不信任我使用的所有軟件並以防止它們混亂的方式工作來隱藏我的核心工具(包括'bzr')中的錯誤... – 2010-12-11 00:33:48

+0

我確實會提交一份有關這方面的錯誤報告,「bzr update」可能會造成破壞性的東西似乎很荒謬。 – 2010-12-11 00:39:26

+0

'bzr heads --dead' should be too too。 – bialix 2010-12-11 21:22:52

5

老實說,我不能說怎麼說都不會發生,它老老實實的樣子,這將是該行爲的(聽起來非常災難性的錯誤),除非你不喜歡的東西bzr pull --overwritebzr pull衝突都已解決後做了bzr revert

首先看看你是否可以可靠地複製這個問題。不管這是否可能,但是,file a bug report against bzr以便可以跟蹤此問題。此外,在執行之前的任何其他操作之前,請備份您在這些分支中擁有的數據。如果您一直在共享存儲庫中工作,請備份所有內容。如果需要這種激烈的努力,那麼它可用於法醫恢復。不過,要獲得更多的幫助,你必須與Bazaar開發者合作。在FreeNode的IRC網絡的#bzr房間裏閒逛以尋求幫助可能會有幫助。正如通常尋求IRC支持一樣,耐心是關鍵,即使你現在處境非常緊急。他們可能會給你一些關於如何挖掘這些提交的Python代碼或指令,他們也可能會告訴你如何找出發生的事情。

這就是說,我這樣做的時候通常會做的是我有一個未綁定的「上游」分支,然後是我工作的任何分支。當我完成我的更改時,我將從上游,將我的分支合併到生成的樹中,然後再推回去。例如:

$ bzr init-repo project; cd project 
$ bzr branch bzr+ssh://example.org/srv/bzr/project/trunk trunk 
$ bzr branch trunk my-feature-branch 
$ cd my-feature-branch 
... work, commit; work, commit; ... 
$ cd ../trunk 
$ bzr pull 
$ bzr merge ../my-feature-branch 
... resolve any merge conflicts here, if any ... 
$ bzr ci -m 'Merge in my-feature-branch' 
$ bzr push :parent 

這樣做也可以使您的工作與upsteam分支保持分離,直到您準備合併並推送它爲止。它確保您的本地分支永遠不會被覆蓋的機會。

+0

我正在標記我提交的答案是正確的,以幫助任何有同樣問題的人在這個問題上磕磕絆絆,但是我提出了這個問題,希望這些人也能閱讀。 – 2010-12-11 00:42:26