Mercurial更新似乎覆盖了本地文件

时间:2014-02-26 22:57:49

标签: mercurial

我一直在努力掌握使用Mercurial来跟踪对我的本地Galaxy实例所做的更改。我有一个测试服务器(本地笔记本电脑)和一个开发服务器(集群)来测试我投入生产之前的东西。我从dev开始推送到bitbucket repo,然后从bitbucket拉到我的测试服务器。现在我正试图让事情走向另一个方向。 我使用Eclipse Mercurial插件从测试推送到bb。现在我从dev中尝试以下内容:

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

我认为这会将我在测试时所做的更改与我在dev服务器上的当前工作目录合并。我开始从开发方面开始工作,但很明显,dev上的一些文件被更新完全覆盖了。我惊慌失措并试图摆脱它:

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

我真的不知道在这种情况下该做什么,因为我不想剥离或退出拉动,以便记录或删除我在测试服务器上所做的所有艰苦工作当我从dev推到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,然后拉到dev,但该文件在dev中被完全删除。 每次安装软件时都必须以不同方式设置此job_conf.xml文件,因此我在测试服务器上设置文件时更改了文件。我可能已将其删除,然后将其从job_conf.xml.sample文件中复制(将其重命名为job_conf.xml) - 我不确定这是否会搞砸。

我很感激对此行为的任何建议/启示!

1 个答案:

答案 0 :(得分:0)

如果您在部署时需要更改文件,则它们不应位于Mercurial中,或者它们应位于非实时名称下。否则,当你拉动它时会被Mercurial中的内容覆盖。

你可以在不同的分支上进行单独的配置,并从“trunk”合并核心更改,但你必须小心这一点,这可能是更值得的工作。我有一个开发环境,这样做。我将我的开源分支合并到我的专有分支。我只需要小心地朝正确的方向进行合并。