将SVN Repo的一部分镜像到工作副本

时间:2014-11-17 12:15:34

标签: svn tortoisesvn

我拥有对第三方SVN仓库的只读访问权限,这些仓库不时会进行提交。我们称之为http://foo.com/svn

我想将此镜像到我控制的现有仓库中的子文件夹。我们称之为http://bar.com/svn/myfork

我将在我自己的项目分支上工作,但我仍然希望改变它们。

我想仅将第三方的更改镜像到我的工作副本,因此我可以在提交之前手动管理任何冲突。

我该怎么做?

  • svnadmin dump / load似乎想要使用整个回购。
  • svnrdump想要加载对repo的更改,而不是工作副本。
  • 我无法应用补丁,因为我的工作副本中的修订号与补丁中的修订号不匹配。
  • 手动复制文件会替换我的更改。

我正在使用Windows(svn和TortoiseSVN)。

1 个答案:

答案 0 :(得分:0)

据我所知,最接近此功能的是svn:externals;但是,它只存储一个亲戚,或者在这种情况下,是指向外部存储库的绝对URL指针。简而言之,文件不会存储在您的存储库中,并且对外部内容的任何提交尝试都将转到第三方存储库。

我已经存储了SVN中其他存储库的签出,我可以从第三方存储库中进行更改,并在第三方时将这些更改和我自己的更改提交到我自己的存储库(私有分支)可以通过git或mercurial访问存储库。我会检查第三方存储库到我的SVN工作目录并将所有内容提交到SVN,包括.hg / .git文件夹。这种方法毫无疑问有点hacky,对我有用,如果我正确理解你的问题,也会为你工作如果其中一个存储库不是 SVN。< / p>

如果无法使用git或mercurial访问foo并且无法更改bar的版本控制系统,我想知道它是否可能可以在具有不同环境的计算机上设置SVN的第二个副本 - 我在考虑Cygwin - 并让其中一个安装将版本控制文件存储在.svn中,一个存储在{ {1}}。我猜这将有效,因为Cygwin的_svn将在具有自己环境的类Unix文件夹树中单独安装。 (我刚试过它,它应该可以工作)。

步骤可能是:

  1. 使用svn和change Cygwin svn to use _svn folders安装cygwin(我在Cygwin中通过设置环境变量svn来尝试此操作,并且它有效 - 您必须在bash中设置环境变量只有不在Windows级别,否则Tortoise也会选择它)

  2. 使用Cygwin SVN_ASP_DOT_NET_HACK

  3. 将第三方存储库签入您的工作副本
  4. 提交第三方存储库文件,可选地将其svn文件夹包含到您的存储库(我会包含它)

  5. 您现在可以使用Cygwin _svn更新第三方存储库,并将第三方更改提交到您的存储库,此外还可以将您自己的更改提交到您自己的存储库。您也可以将更改提交回第三方存储库!

  6. 同一主题的另一个选项可能是设置第二个具有环境变量集的Windows帐户,并登录该帐户以初始检出第三方存储库并使用TSVN从中删除更新。

相关问题