【问题标题】:How to manage Open Source SVN projects in your own SVN [closed]如何在您自己的 SVN 中管理开源 SVN 项目 [关闭]
【发布时间】:2011-12-30 22:25:35
【问题描述】:

我使用像 FastMM 这样的开源库。

我从https://fastmm.svn.sourceforge.net/svnroot/fastmm查看它

然后想把它添加到我自己的SVN服务器https://project.svn.company.com/

但由于文件已经从https://fastmm.svn.sourceforge.net/svnroot/fastmm 签出,因此无法将它们添加到我自己的 SVN。

我想要两个:

  1. 我在我的 SVN https://project.svn.company.com/987654324@中编译所需的文件

  2. 必须能够从https://fastmm.svn.sourceforge.net轻松更新开源库

推荐的处理方法是什么?

附:服务器是SVN,客户端是TortoiseSVN

【问题讨论】:

    标签: svn open-source tortoisesvn projects


    【解决方案1】:

    您可以使用外部依赖项,当您更新其他 subversion 存储库时,该依赖项会自动更新。

    一个简单的 Tortoise 教程(这是 TortoiseSVN 1.7,但过程与旧版本的 TortoiseSVN 非常相似):

    在资源管理器中,右键单击您的颠覆工作副本文件夹,然后选择 TortoiseSVN > 属性

    选择新的>外部

    添加一个新的外部,放入您希望将其签出到的本地路径、存储库 url 和修订版。

    点击确定几次/关闭任何乌龟对话框,然后在您的存储库上进行更新。如果一切设置正确,您的本地存储库和您链接到的其他存储库。您可能必须在进行更新之前提交属性更改。

    您可以随时通过与上述类似的方法修改/删除外部文件(而不是选择新建,选择编辑/删除)。

    【讨论】:

    • 此方法是否还支持对其他存储库的“本地”更改?我的意思是,对外部项目文件的更改会提交到主项目存储库吗?它是否提供了处理从上游合并的方法..?我从来没有使用过 Tortoise,只是命令行或 eclipse 客户端,但我想应该也有办法通过命令行来做到这一点..
    • 是的,您可以通过任何方式修改外部仓库,就像普通仓库一样(因此,如果您有权提交,则可以)。你只是告诉 SVN 一个 repo 依赖于另一个。 Externals 不是乌龟独有的东西,它是一种 SVN 功能。
    • 是的,但是(如果我理解正确的话)请求是“将本地更改提交到远程源(无写权限)到本地存储库”。在 git 中,你可以这样做并且它有一些管理“分叉”与上游合并的工具;在 SVN 中,我不知道任何直接的方法来做到这一点(它是 git beauty... :))
    • 从他的问题看来,他想从远程仓库更新,而不是提交。乌龟提供了一个合并工具,也可以创建补丁。一般来说,除非您获得许可(出于充分的理由),否则我使用的任何源代码控制软件都不允许您对存储库进行更改。可以分支/标记到另一个 repo 并在 SVN 中合并回来,但您确实需要外部 repo 的写入权限才能合并。
    • 是的,我的意思当然不是“未经许可提交”,而只是“从上游分叉然后边距更改到本地存储库”。
    【解决方案2】:

    AFAIK,没有直接的方法可以做到这一点;唯一的方法似乎是手动导出文件+合并新版本的库。

    为此,您必须使用export 命令而不是checkout,该命令从存储库中导出文件而不存储任何信息;从而允许您将它们视为普通文件,复制到另一个 svn 项目中,等等。

    (或者,只需从库源代码树中删除所有名为 .svn 的目录)。

    然后,使用一些工具手动将签出的库源与您的本地版本合并。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多