问题描述
我已经开始在SVN信息库中工作.我已经使用hg clone
将其子文件夹克隆到本地的Hg存储库中.
I've began work in an SVN repository. I've cloned a subfolder of it into a local Hg repo with hg clone
.
此后,我想与无权访问SVN信息库的同事共享此信息.我创建了一个私有的BitBucket存储库,我们有时会推送更改,因此不得不将其删除.
Afterwards, I wanted to share this with a colleague who does not have access to the SVN repository. I've created a private BitBucket repository, and we occasionally pushed the changes, and hence I had to pull them.
hgsubversion
对变更集做了一些令人讨厌的事情,例如更改其提交者(而且我相信甚至是哈希).当我尝试向BitBucket存储库推入和拉出时,我必须进行合并.
hgsubversion
does some nasty things to changesets, such as changing their committer (and I believe even the hash). When I tried pushing and pulling to the BitBucket repo, I had to do a merge.
由于我们挚爱的朋友abort: Sorry, can't find svn parent of a merge revision.
,现在我无法将更改推回Subversion存储库.
Now I am unable to push changes back into the Subversion repository due to our beloved friend, abort: Sorry, can't find svn parent of a merge revision.
.
如何与以svn为目标的Mercurial存储库一起拉取以BitBucket为目标的Mercurial存储库,同时又与hgsubversion
保持兼容(即,不导入合并修订版)?
How would one pull the BitBucket-targetting Mercurial repository with the svn-targetting Mercurial repository, while staying compatible with hgsubversion
(that is, without importing the merge revisions)?
当然会喜欢一些自动化的方法,但是,如果没有这种事情/简便的方法,我将不胜感激.
Some automated way to do this would be appreciated, of course, but if there is no such thing/easy way to do this, I'd be grateful for any solution.
我使用hgsubversion
,而不是hgsvn
;也就是hg clone svn://repo/url
所在的扩展名.不过,如有必要,我愿意进行切换.
I use hgsubversion
, not hgsvn
; that is, the extension in which one does hg clone svn://repo/url
. I am open to switching, though, if necessary.
推荐答案
在Subversion版本库上使用Mercurial时,您仍然必须像SVN一样思考,因此基本的Merurial工作流中的许多功能都不会工作.合并suvn仓库上的mercurial方式是不可能的.如果您将您的工作与拉出的svn分支合并,您将得到关于现在收到的消息的臭名昭著:(
When you use Mercurial on a subversion repository, you have to still think like SVN does, so a lot of features part of the basic mercurial workflow just won't work. Merging the way mercurial does it is impossible on a svn depot. If you have merged your work with the pulled svn branch, you'll get the infamous about message you're getting now :(
我建议您阅读durin42对此问题的回答.
I suggest you read durin42's answer to this question.
要摆脱当前的混乱局面,建议您从SVN存储库中结帐时创建一个补丁(或一系列补丁).从Subversion存储库中获取一个新的新副本,然后应用补丁.我不确定您是否可以从当前的存储库中执行此操作.您可以探索hg diff命令.
EDIT : To get out of your current mess, I suggest you create a patch (or a series of patches) from the point you checkout from the SVN repo. Get a new fresh copy from the subversion repository and apply the patch(es). I am not sure you'll be able to do it from your current repo. You could explore the hg diff command.
hg diff -g -r tip -r XXX > patch
其中XXX是您的原始SVN结帐(我尚未测试过).
with XXX being your original SVN checkout (I haven't tested it yet.)
这篇关于将汞变化提交回SVN的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!