Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与SVN支持的远程Mercurial回购合作_Svn_Mercurial_Workflow_Hgsubversion - Fatal编程技术网

与SVN支持的远程Mercurial回购合作

与SVN支持的远程Mercurial回购合作,svn,mercurial,workflow,hgsubversion,Svn,Mercurial,Workflow,Hgsubversion,我现在工作的公司正在使用SVN。这里有许多团队都有自己的项目存储库。这些存储库有时相互依赖(使用svn:external),例如使用核心团队repo的一些最终用户项目等等 我想和我的团队一起从SVN转到Mercurial。我希望像这样设置工作流 最初将我们当前的SVN回购克隆到Mercurial中,将其放到某个服务器上,并将其提供给团队成员(首次使用hg-serve) 团队成员只开始使用Mercural,不直接使用SVN提交、更新和签出。仅在根Mercurial回购中推/拉(在步骤1中设置) 最

我现在工作的公司正在使用SVN。这里有许多团队都有自己的项目存储库。这些存储库有时相互依赖(使用svn:external),例如使用核心团队repo的一些最终用户项目等等

我想和我的团队一起从SVN转到Mercurial。我希望像这样设置工作流

  • 最初将我们当前的SVN回购克隆到Mercurial中,将其放到某个服务器上,并将其提供给团队成员(首次使用
    hg-serve
  • 团队成员只开始使用Mercural,不直接使用SVN提交、更新和签出。仅在根Mercurial回购中推/拉(在步骤1中设置)
  • 最终(一些cron任务?)我们的Mercurial repo被同步到旧的SVN服务器,以允许其他团队访问我们的工作
  • 我想知道有没有可能进行这种设置? 我已经读过关于HgSubversion扩展的文章,但它不能给我第三步——上游同步到SVN,然后从远程团队成员那里更改到Mercurial

    我想知道有没有可能进行这种设置

    是的,但在不太明显的情况下可能会有一些问题,这些问题不能透明地(自动地)从hg转换为svn

    上游同步到SVN,然后远程团队成员更改到Mercurial

    hg推送,路径部分带有svn回购。但如上所述,它将不总是工作,可能需要在推送前手动重新设置底座

    我想知道有没有可能进行这种设置

    是的,但在不太明显的情况下可能会有一些问题,这些问题不能透明地(自动地)从hg转换为svn

    上游同步到SVN,然后远程团队成员更改到Mercurial


    hg推送,路径部分带有svn回购。但是如上所述,它不会一直工作,可能需要在推送之前手动重新设置基础。正如您所发现的,HgSubversion的主要限制是,在推送它到Subversion时,您需要线性化您的多变历史。这意味着你在变化多端的历史中不可能有分支机构,因此很难作为一个团队一起工作

    此外,当您推动Mercurial变更集时,HgSubversion将进行重基。假设您的团队在推送到TeamMercurial服务器之前仔细地重新确定了本地提交的基础。反复无常的历史是这样的:

    ... r10 --- a1 --- a2 --- b1 --- b2 --- b3
    
    在那里,Alice和Bob在推送变更集之前重新设置了变更集的基础。当您与Subversion同步时,您会得到:

    ... r10 --- a1 --- a2 --- b1 --- b2 --- b3
           \
            r11 --- r12
    
    HgSubversion现在将在
    [r12]
    之上重新设置Mercurial变更集的基础:

    ... r10 --- r11 --- r12 --- a1' --- a2' --- b1' --- b2' --- b3'
    
    Alice和Bob仍然有原始的未重定基调的变更集,没有素数。因此,他们需要在退出TeamMercurial服务器之前脱光衣服。这样的工作流程需要非常小心才能实现

    我曾经为客户机设置了一个更简单的工作流:我们没有在Subversion修订版之上重新设置Mercurial变更集,而是将文件的当前版本提交给Subversion。这意味着我们不会在Subversion存储库中保存完整的Mercurial历史。另一方面,我们可以很容易地处理合并之类的事情


    在上面的示例中,SVN服务器将从
    b3
    获得一个
    r13
    以及Mercurial存储库的状态。
    r13
    修订版将非常大:它包含在
    a1
    b3
    中所做的所有更改。如果仍在使用Subversion的用户希望看到单独的更改,那么他们必须查看Mercurial服务器-我们在Subversion中输入的提交消息有指向Mercurial的
    hgweb
    中单独更改集的链接,因此很容易跳到那里。

    正如您所发现的,HgSubversion的主要限制是,在将其推到Subversion时,您需要线性化您的多变历史。这意味着你在变化多端的历史中不可能有分支机构,因此很难作为一个团队一起工作

    此外,当您推动Mercurial变更集时,HgSubversion将进行重基。假设您的团队在推送到TeamMercurial服务器之前仔细地重新确定了本地提交的基础。反复无常的历史是这样的:

    ... r10 --- a1 --- a2 --- b1 --- b2 --- b3
    
    在那里,Alice和Bob在推送变更集之前重新设置了变更集的基础。当您与Subversion同步时,您会得到:

    ... r10 --- a1 --- a2 --- b1 --- b2 --- b3
           \
            r11 --- r12
    
    HgSubversion现在将在
    [r12]
    之上重新设置Mercurial变更集的基础:

    ... r10 --- r11 --- r12 --- a1' --- a2' --- b1' --- b2' --- b3'
    
    Alice和Bob仍然有原始的未重定基调的变更集,没有素数。因此,他们需要在退出TeamMercurial服务器之前脱光衣服。这样的工作流程需要非常小心才能实现

    我曾经为客户机设置了一个更简单的工作流:我们没有在Subversion修订版之上重新设置Mercurial变更集,而是将文件的当前版本提交给Subversion。这意味着我们不会在Subversion存储库中保存完整的Mercurial历史。另一方面,我们可以很容易地处理合并之类的事情


    在上面的示例中,SVN服务器将从
    b3
    获得一个
    r13
    以及Mercurial存储库的状态。
    r13
    修订版将非常大:它包含在
    a1
    b3
    中所做的所有更改。如果仍在使用Subversion的用户希望看到单独的更改,那么他们必须查看Mercurial服务器-我们在Subversion中输入的提交消息链接到Mercurial的
    hgweb
    中的单独更改集,因此很容易跳到那里。

    是的,我同意。HgSubversion工作流不适合团队(即使对于个人来说也相当不舒服)。如果SVN丢失提交历史记录并不令人反感,那么最好只将快照提交给SVN(例如,在cron作业上或每次推送代码时)。Martin,Laurens-是的,在移动之后在SVN中丢失提交历史记录