如何将项目的分支放入本地SVN存储库? 我想在本地SVN存储库中拥有一个开源项目的副本 我希望将更改提交到我的存储库,但不提交到开源项目的中央存储库 我希望看到来自开源项目存储库的更新并查看它们

如何将项目的分支放入本地SVN存储库? 我想在本地SVN存储库中拥有一个开源项目的副本 我希望将更改提交到我的存储库,但不提交到开源项目的中央存储库 我希望看到来自开源项目存储库的更新并查看它们,svn,version-control,replication,mirroring,subversive,Svn,Version Control,Replication,Mirroring,Subversive,如果我喜欢这些更改,我希望将它们放到本地存储库中 我可以采取哪些方式来满足这些要求 哪条路最好?为什么 开源项目的SVN历史记录是否会在我的存储库中以这些方式保持可用 提前感谢。我不认为只有SVN才能实现这一目标。您需要的是某种分散的版本控制系统,如Git或Mercurial 我不知道你是否已经和他们中的一个合作过,但是你可以用这两个达成你想要的 以下是我的想法的一些步骤(从一个多变的角度来看,但这与Git完全相同): 初始化mercurial存储库(hg Init位于空目录中) 签出svn存

如果我喜欢这些更改,我希望将它们放到本地存储库中

  • 我可以采取哪些方式来满足这些要求

  • 哪条路最好?为什么
  • 开源项目的SVN历史记录是否会在我的存储库中以这些方式保持可用


    提前感谢。

    我不认为只有SVN才能实现这一目标。您需要的是某种分散的版本控制系统,如Git或Mercurial

    我不知道你是否已经和他们中的一个合作过,但是你可以用这两个达成你想要的

    以下是我的想法的一些步骤(从一个多变的角度来看,但这与Git完全相同):

  • 初始化mercurial存储库(
    hg Init
    位于空目录中)
  • 签出svn存储库
  • 将所有文件添加到mercurial存储库(
    hg addremove
  • 将更改提交到mercurial存储库(
    hg Commit-m“initial Commit”
  • 将mercurial存储库克隆到其他地方(
    hg Clone/path/to/myrepo.
    在空目录中)
  • 您现在可以在这个mercurial克隆中工作并在其中提交。但是,绝对不要将更改推送到原始mercurial存储库中,这一点非常重要

    要更新SVN存储库,请执行以下步骤:

  • 在SVN签出中:
    SVN更新
  • 仍然在SVN checkount
    hg addremove中;hg commit-m“svn更新”
  • 在workind目录中(mercurial clone):
    hg pull;汞合并;hg commit-m“合并svn更新”
  • 要使其工作,工作目录必须是干净的,即所有更改必须已提交

    基本上,我们正在做的是使用Mercurial作为SVN存储库的某种代理。您可以提交到本地Mercurial克隆,而无需修改原始源,仍然可以从SVN进行更新,然后将这些更改合并到本地Mercurial克隆中

    我不知道如何用Git重现这些步骤,但我知道这也是可能的。如果你认识任何一个DVC,你甚至可以选择其他DVC

    我完全同意这个解决方案有点复杂,但我从未找到一个更简单的方法来实现这一点。我这样工作了9个月,使用CVS存储库作为源,从来没有遇到过问题

    但是,如果您从未听说过dvcs、git或mercurial,我强烈建议您阅读一些文档,因为这些步骤非常复杂,而且可能会很快出错

    希望这有帮助

    编辑:

    您也可以使用,但您将无法查看和选择要导入存储库的修改

    您必须在具有以下内容的目录上设置svn:externals属性:

    svn propedit externals adirectory
    
    它将打开一个编辑器,允许您编辑
    a目录
    的外部内容。在这里,您可以为要在此目录中签出的每个外部存储库添加一行,如下所示(对于每行):

    下次进行更新时,svn存储库将在给定目录中进行检查,并显示完整的历史记录


    (我已经很久没有使用svn:externals了,可能有些解释是错误的,但这可能足以说明问题的全貌)

    看看这个StackOverflow主题并回答:我有一个与你的问题非常类似的问题,我将继续使用[bridge aluded to in the accepted Response]。另见

    主要方法优势:这样,您就可以始终使用SVN作为“后端”,即最终存储库

    我希望这有帮助。爱与和平,

    正如gbjbaanb所说,你必须使用并保持它的纯粹颠覆性

    您可以(必须)将一个小细节添加到手册中描述的工作流中:

    • 如果上游项目也由Subversion处理
    • 若您可以从自己服务器的位置访问项目的存储库
    您可以将部分上游回购(/trunk???)链接到回购的供应商分支(使用svn:externals)。这样你就可以

    • 监控上游活动(
      svn up
      svn log
    • 在自己的服务器上独立于上游主线
    • 使用通常的合并,将上游更改集成到代码中

    您好,您所寻求的是在正式回购协议中创建分支机构和与外部来源合作之间的中间环节。很难。分支简化了从主干进行的更新,但需要对repo进行写访问。使用外部设备可以简化主干更新,但会使提交更加困难。将回购协议导入本地回购协议会中断与官方回购协议的所有链接,但会为您的修改提供更多自由。感谢您的回答,但目前还不能选择另一个版本控制系统。也许我们将来会去一个新的,但不是现在。有没有办法满足这些需求的一部分?您可以查看一下svn externals(),但无法查看和选择包含哪些修改。我会很快修改我的答案。
    path/where/tocheckout    http://svn.example.com/repos/project