我已经将我的开发切换到了mercurial,但我仍然需要使用hgsubversion与subversion服务器交谈。对于subversion中已经存在的所有项目,我正在使用hg在本地运行。
我的问题是:创建最终将存在于subversion中的新项目的最佳工作流程是什么?
我试图用hg init启动一个新项目,然后推动subversion。但我只是迷路了,不能让它工作。我决定最好的工作流程是直接在subversion中创建项目,完全不知道mercurial的存在,然后用hgsubversion克隆。但我想知道有没有更好的方法。
不管它有什么价值,我们在subversion中使用的是经典的主干/标记/分支目录结构。其他开发人员仍在直接使用svn。
发布于 2013-01-09 03:43:25
我认为最好的工作流程是直接在subversion中创建项目,完全不知道mercurial的存在,然后使用hgsubversion进行克隆。
这不仅是最好的,而且只有一种可能。路径中添加了后来的扩展和Subversion存储库的初始化hg存储库将不能用于拉/推的
添加(回复@bigh_29的评论)
是的,从Mercurial中开始使用空的Subversion repo (只创建了默认的dirmap )也会给我带来意想不到和不可预测的结果。
初始状态:
使用TSVN (工具无关)
svn log file:///Z:/SVN
------------------------------------------------------------------------
r1 | Badger | 2013-01-09 12:00:10 +0600 (Ср, 09 янв 2013) | 1 line
Imported folder structure
------------------------------------------------------------------------
将存储库(从存储库根目录)克隆到Mercurial的
hg clone file:///Z:/SVN z:\HG
[r1] Badger: Imported folder structure
no changes found
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved(好的,Mercurial不跟踪空目录,所以我们没有什么可以存储在变更集中)
hg log -R z:\hg产生空输出
% hg add --repository Z:\HG Z:\HG\Intro.txt
[command completed successfully Wed Jan 09 12:17:31 2013]
% hg commit ...
Intro.txt
committed changeset 0:0a3fc4a9213d
[command completed successfully Wed Jan 09 12:17:31 2013]
% hg --repository Z:\HG push file:///Z:/SVN
pushing to file:///Z:/SVN
searching for changes
no changes found
[command completed successfully Wed Jan 09 12:18:02 2013]
“找不到任何变化”--坏消息,非常坏的消息。在Mercurial和上游Subversion中获得不同的历史记录
>hg log
changeset: 0:0a3fc4a9213d
summary: Added file
svn log file:///Z:/SVN
------------------------------------------------------------------------
r1 | Badger | 2013-01-09 12:00:10 +0600 (Ср, 09 янв 2013) | 1 line
Imported folder structure
------------------------------------------------------------------------>svn log file:///Z:/SVN
------------------------------------------------------------------------
r2 | Badger | 2013-01-09 12:22:38 +0600 (Ср, 09 янв 2013) | 1 line
Added main file
------------------------------------------------------------------------
r1 | Badger | 2013-01-09 12:00:10 +0600 (Ср, 09 янв 2013) | 1 line
Imported folder structure
------------------------------------------------------------------------
从SVN拉取
hg --repository Z:\HG fetch --verbose file:///Z:/SVN
pulling from file:///Z:/SVN
[r2] Badger: Added main file
A trunk/Topic.txt
Topic.txt
committed to "default" as fc8bf55ea98f
pulled 1 revisions
updating to 1:fc8bf55ea98f
resolving manifests
removing Intro.txt
getting Topic.txt
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
merging with 0:0a3fc4a9213d
resolving manifests
getting Intro.txt
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Intro.txt
new changeset 2:98c16d1829d8 merges remote changes with local

仍然无法推送(“对不起,找不到合并修订的svn父版本。”):我们的0在源上没有父版本
但是,如果我要在SVN中将文件添加到树中(空的.hgignore,无论如何它必须出现在Mercurial repo中)
> svn log file:///Z:/SVN -q -v
------------------------------------------------------------------------
r2 | Badger | 2013-01-09 13:44:47 +0600 (Ср, 09 янв 2013)
Changed paths:
A /trunk/.hgignore
------------------------------------------------------------------------
r1 | Badger | 2013-01-09 13:43:27 +0600 (Ср, 09 янв 2013)
Changed paths:
A /branches
A /tags
A /trunk
------------------------------------------------------------------------克隆之后,我得到了
>hg log
changeset: 0:71c7bc7bce68
tag: tip
user: Badger@1d57b098-00df-af47-a2e3-c1451e4b2f8d
date: Wed Jan 09 07:44:47 2013 +0000
summary: Added needed for successful cloning hgignore并添加|提交的文件被推送到Subversion,没有任何头疼
% hg --repository Z:\HG push file:///Z:/SVN
pushing to file:///Z:/SVN
searching for changes
[r3] Badger: File from Mercurial
pulled 1 revisions
nothing to rebase
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
svn log file:///Z:/SVN -q -v -r "HEAD"
------------------------------------------------------------------------
r3 | Badger | 2013-01-09 13:59:15 +0600 (Ср, 09 янв 2013)
Changed paths:
A /trunk/Test.txt
------------------------------------------------------------------------注意:I在测试使用具有SVN-origin的Mercurial分支时失败:在推送到Subversion后,保存在此分支中的已创建(已命名)分支变更集消失(变更集出现在主干中,而不是预期的/BRANCHNAME)
https://stackoverflow.com/questions/14219973
复制相似问题