使用HG Subversion将代码推送到SVN时的工作流程

10
这个问题与这个问题非常相似,但是我在按照解决方法时遇到了一些问题。 问题: 基本上,我有一个Subversion服务器和一个Mercurial本地客户端。扩展程序hg-subversion允许Mercurial充当Subversion客户端。这对我来说是理想的,因为我可以从我的Subversion开发分支创建无限的特性分支,并在需要的时候将它们合并。
由于Subversion的限制,我不能向Subversion存储库提交分支合并。事实上,我不需要提交每个分支合并,我只希望“默认”分支头被提交到SVN中。 拟议的解决方案: Harvey提出的一种解决方法是修改我的工作流程,包括使用hgsubversion clone的hg-only clone进行开发。
引用Harvey的话:

诀窍是要学会修改后的hg<->hgsubversion<->svn工作流程。一旦你“明白”了它是如何工作的,你就不会有任何麻烦了。你只需要输入更多命令。我实际上已经开始编写脚本,使这个过程(重复性)更容易。典型的流程:[在“hg”repo中]提交一堆更改;将它们推送到“hgsubversion”;[切换到“hgsubversion”]hg update(hgsubversion需要这个);将其推送到“svn”(在你推送后自动重新拉取并在本地删除你的changesets);[切换回“hg”]从“hgsubversion”拉取; hg strip旧的重复项,因为“hg”不是一个hgsubversion克隆,并且不知道自动去掉旧的changesets。

我遇到的问题: 我卡在从hgsubversion运行hg push到svn存储库的时候。我仍然收到错误消息,“abort: Sorry, can't find svn parent of a merge revision.”
承认我并不完全了解hgsubversion如何将revisions推送到svn。老实说,我想看到我本地副本的状态被推送到svn服务器。
帮忙?
2个回答

6

出于存档目的(以及为那些遇到相同问题的人提供帮助),我决定回答自己的问题。

我在另一个类似的问题中找到了答案,答案很简单,你不能这样做。如果这对您有帮助,请参考上面的链接并点赞Eric-Karl的回答。他提供了一种恢复的解决方案。


-1

使用HgSubversion知识

如果我理解问题正确,hgsubversion只会推送到您当前的修订版本。

例如,如果您已经完成了10、11、12,然后从开发分支合并了13。您可以:

hg up 12
hg push

由于它将执行rebase等操作,您最终会推送到12,然后更新到13,但对我来说可以工作。

新的hg功能

使用mercurial phases并将您不想要推送的修订标记为secret。当然,这也将阻止您向其他存储库推送。

使用公司政策

我们公司的另一个好处是,所有代码提交都必须有审核人和问题。如果某些内容不适用于svn(但在我们的团队/脚手架存储库中),那么我不会放入该信息,并且任何意外情况都会被预提交挂钩故障停止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接