首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用hgsubversion、svn和mercurial创建新项目的正确方式是什么?

使用hgsubversion、svn和mercurial创建新项目的正确方式是什么?
EN

Stack Overflow用户
提问于 2013-01-09 00:48:26
回答 1查看 118关注 0票数 0

我已经将我的开发切换到了mercurial,但我仍然需要使用hgsubversion与subversion服务器交谈。对于subversion中已经存在的所有项目,我正在使用hg在本地运行。

我的问题是:创建最终将存在于subversion中的新项目的最佳工作流程是什么?

我试图用hg init启动一个新项目,然后推动subversion。但我只是迷路了,不能让它工作。我决定最好的工作流程是直接在subversion中创建项目,完全不知道mercurial的存在,然后用hgsubversion克隆。但我想知道有没有更好的方法。

不管它有什么价值,我们在subversion中使用的是经典的主干/标记/分支目录结构。其他开发人员仍在直接使用svn。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-09 03:43:25

我认为最好的工作流程是直接在subversion中创建项目,完全不知道mercurial的存在,然后使用hgsubversion进行克隆。

这不仅是最好的,而且只有一种可能。路径中添加了后来的扩展和Subversion存储库的初始化hg存储库将不能用于拉/推的

添加(回复@bigh_29的评论)

是的,从Mercurial中开始使用空的Subversion repo (只创建了默认的dirmap )也会给我带来意想不到和不可预测的结果。

初始状态:

使用TSVN (工具无关)

  • 创建本地(file:///) SVN-repo和树干/分支/标记树)

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

代码语言:javascript
复制
[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产生空输出

  • 常规工作流测试-添加、提交、推送(TortoiseHG最新版本)

% 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中获得不同的历史记录

代码语言:javascript
复制
>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 WC添加到Subversion,添加了

>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中)

代码语言:javascript
复制
> 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
------------------------------------------------------------------------

克隆之后,我得到了

代码语言:javascript
复制
>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,没有任何头疼

代码语言:javascript
复制
% 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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14219973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档