2016-01-20 51 views
2

我使用TortoiseHg與SVN存儲庫使用hgsubversion擴展。使用hgsubversion推拉無需手動卸載步驟

我喜歡用hg pull --rebase當我拉,以反映什麼SVN不上svn update。因爲我使用的是hgsubversion,所以在推動之前我需要重新設置,所以我不妨一步完成。

此外,hg push將自動內部做一個rebase,這是沒有辦法解決的。

我的困難是hg rebase將拒絕工作,如果我有任何未提交的更改。所以推或從SVN拉我總是需要hg shelve第一,然後記得做hg unshelve後。這可能會變得非常煩人,我總是會忘記。

理想我想告訴TortoiseHg爲我自動做到這一點,但我會滿足於一個命令行別名。我試圖在我的配置文件as suggested here中加入一個別名svnpull = !hg shelve && hg pull --rebase && hg unshelve,但我收到一個錯誤「user:abort:expected expected」,而不是被要求輸入密碼。每次我與中央存儲庫進行交互時,我能做些什麼來避免手動擱置/擱置步驟?

不能實際上提交我的本地更改,只是避免推動當地的變化,因爲hgsubversion doesn't respect the secret phasehgsubversion doesn't support designating a revision to push。所以不幸的是,this similar question的答案都不適用於我。無論如何,我需要手動步驟來安排我的「僅限本地」更改集始終處於提示狀態。

+0

它是基於http的SVN存儲庫嗎? –

+0

是的,它是基於http的。 – Ben

回答

2

修改它的解決方案是使用存儲庫掛鉤。我將這添加到我的.hg/hgrc配置文件中:

[hooks] 
pre-pull = hg shelve 
post-pull = hg unshelve 
pre-push = hg shelve 
post-push = hg unshelve 
0

不要手動輸入密碼,用鑰匙圈(可疑的在Windows上)或使用從我的本地HG-回購遠程SVN-後端在project's .hgrc

樣品[auth]部分自動執行它

[auth] 
assembla.prefix = https://subversion.assembla.com 
assembla.username = USER 
assembla.password = PASSWORD 

並輸入不再需要的密碼

另一個想法:你沒有立即推動你的WIP,是嗎?你只需要把它放在「其他」工作之上,對嗎?您可以這種情況下提交,重訂,並繼續使用相同的tip工作,與commit --amend

+0

我真的不想用純文本保存我的密碼,所以我不喜歡以這種方式使用[auth]部分。而且我主要想要進行一些永遠不會被提交的本地更改,例如關閉生成文件中的編譯器優化以進行調試。 – Ben