2014-02-26 90 views
1

我一直在努力掌握使用Mercurial跟蹤對本地Galaxy實例所做的更改。在投入生產之前,我有一臺測試服務器(本地筆記本電腦)和一臺開發服務器(集羣)來測試所有東西。我從開發推動到bitbucket回購,並從bitbucket拉到我的測試服務器。現在我試圖讓東西走向另一個方向。 我使用Eclipse Mercurial插件從測試推送到了bb。現在,我嘗試從開發如下:Mercurial更新似乎覆蓋本地文件

hg pull 
hg update 
hg resolve --all 
emacs .hgignore 
hg resolve -m .hgignore 
hg commit -m 'Helpful and informative message' 

我想,這將合併我已經開發服務器在我的當前工作目錄上測試所做的更改。我開始從開發人員那裏工作,但很明顯,開發中的一些文件被更新完全覆蓋。我慌了,並試圖擺脫它:

hg heads 
hg rollback 
hg incoming 
hg heads 
hg status 
hg incoming 
hg pull 

我真的不知道該怎麼在這種情況下做的,因爲我不希望以這樣的方式,這將是剝離或拉的退出記錄或移除我在測試服務器上所做的所有艱苦工作,當我從開發人員推送到bb時。我嘗試再次拉動:

hg update -C bf3924ee142c 
#Revert to a clean copy of my last working code 
146 files updated, 0 files merged, 0 files removed, 0 files unresolved 
less job_conf.xml 
#This is my most recent local copy and it looks correct 
hg merge 6dc34fa   
abort: nothing to merge (use 'hg update' or check 'hg heads') 
hg update 6dc34fa 
201 files updated, 0 files merged, 15 files removed, 0 files unresolved 
less job_conf.xml 
#Entirely replaced by the remote copy 

它重現相同的行爲,我的本地副本完全丟失。我嘗試從我的測試服務器上跟蹤文件中刪除文件,並推送到BB,然後拉到開發,但文件被完全刪除在開發。 每次安裝軟件時,必須對此job_conf.xml文件進行不同的設置,因此在我將其設置在測試服務器上時,我更改了該文件。我可能刪除了它,然後從job_conf.xml.sample文件中複製它(將其重命名爲job_conf.xml) - 我不確定這是否會導致問題。

我希望對此行爲有任何建議/啓示!

+0

我注意到你的第一部分命令中沒有'hg merge'。這是剪切和粘貼錯誤? 'hg pull'後的'hg heads'的輸出是什麼?在這一點上你應該有兩個頭(至少)。什麼是6dc34fa?根據上面的輸出,它似乎不是一個單獨的頭部。 –

+0

不是一個錯字 - 我沒有合併,然後(我認爲它說我更新後,更新)。我不記得當時的頭部輸出是什麼,但現在看來我只有一個。 6dc34fa是在BB提示之前的變更集 - 在我從追蹤中刪除文件之前。 – user1885897

+0

當你做拉時你有沒有修改任何文件?我不明白你爲什麼要做'hg resolve'命令。通常,只有在合併時發生衝突時纔會這樣做。 –

回答

0

如果您有需要在部署時更改的文件,那麼它們不應該在Mercurial中,或者它們應該處於非活動名稱下。否則,當你拉它時會被Mercurial中的內容覆蓋。

您可以在單獨的分支上單獨配置並從「trunk」合併核心更改,但您必須小心謹慎,這可能是值得的更多工作。我有一個開發環境可以做到這一點。我將我的開源分支合併到我的專有分支。我只需要小心地按照正確的方向進行合併。