镜像两个可写 SVN 存储库之间的子文件夹

2024-03-19

我正在尝试处理涉及我公司的 SVN 服务器的情况。我们将所有重要代码保存在锁定服务器中(我们将其称为“开发”服务器)。有些文件需要由公司网络外部的用户编辑,因此我们有另一个 SVN 服务器(“全局”服务器),它可以在防火墙外部访问,并且包含那些包含外部所需文件的目录的副本。如果重要的话,全局服务器的文件夹结构是开发服务器的子集(即它只是一些选择的文件/目录,但都具有相同的相对路径等)。我已经包含了一个简短的解释why如果您想阅读它,我们会尝试在帖子的末尾执行此操作,但请相信我,它必须在两个单独的服务器上完成。

乍一看,svnsync似乎非常适合这项工作,但它有一个不幸的问题,即要求它是唯一修改目标存储库的东西。显然,这行不通,因为我们的开发存储库被大量使用。

在我看来,有两种解决方案,但都不是好的解决方案。我希望有人可以帮助我调整其中一个,或者更好地提供替代方案。

  1. 我的第一个想法是在开发服务器中使用外部,但这有一些问题。最值得注意的是,外部将遵循头部修订(我们不想将其设置为特定修订,因为这会破坏要点),因此,如果我们提取旧版本的开发存储库,外部定义仍将指向到全局存储库的负责人,而不是到我们旧版本时的全局存储库的样子 - 因此我们将无法仅通过检查旧版本来重新创建旧版本。
  2. 另一个解决方案是让 cron 作业定期从全局存储库导出最新版本,并将这些更改的文件覆盖到开发存储库的工作副本上,然后提交更改。可能这个覆盖并提交步骤将使用svn_load_dirs.plSVN自带的脚本。理想情况下,这将作为全局存储库上的提交后挂钩来完成,但同样出于防火墙原因,全局服务器无法访问开发服务器,因此它必须由防火墙内的计算机(可能是开发服务器计算机本身)执行。这种方法的缺点是:开发服务器可能会在 cron 作业的时间间隔内过时,并且如果有人不小心向开发服务器提交了更改,他们的更改将被踩踏。 (顺便说一句,如果有人能想出一种双向同步的方法,那就太棒了!)

我目前倾向于选项 2,因为它似乎让我尽可能接近我所需要的,但它仍然是一个相当糟糕的选择。这本质上也是我们目前正在做的事情,由人类代替 cron 作业。我对这么长的帖子表示歉意。非常感谢您提供的任何帮助。

原因说明:我们需要这些共享文件存在于开发服务器目录层次结构中,因为它们是我们软件的必需部分,因此构建、测试等都必须拥有它们。我无法通过防火墙暴露开发服务器——我试图说服当权者,但失败了。我已经向决策者明确表示,为此使用两台独立的服务器并不是 SVN 的预期用途,并且可能会出现问题。为了帮助缓解我们预见到的一些问题,只有全局服务器是可写的。开发服务器的文件副本在概念上是只读的(仅当从全局服务器同步更改时才进行修改),但我认为我实际上无法使用 SVN 访问控制强制执行只读策略,因为其中的某些文件该目录结构不会存在于全局存储库中,因此需要在开发中可编辑,因此我不能盲目地将其设置为只读。在每个文件的基础上设置只读似乎无法维护,因为有数百个文件,并且经常添加和删除它们。


您可以尝试设置直写代理,以便公共存储库上的所有写入都会自动转发到私有服务器。

我从来没有这样做过,但是here http://svnbook.red-bean.com/en/1.5/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.writethruproxy有关该主题的一些文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

镜像两个可写 SVN 存储库之间的子文件夹 的相关文章

  • 贾瓦尔 (JNI) 不可用

    Windows 7 64 位 Eclipse Indigo SlickSVN 1 6 17 均已安装 并带有在 Windows 中输入的库的路径 为什么我收到消息 JAVAHL JNI Not available 以及为什么 Eclipse
  • 我的机器上的 svn.exe 在哪里?

    I have 乌龟svn安装在我的桌面上 我想使用执行一些任务命令行svn exe 但我找不到svn exe在我的机器上 我们是否需要安装其他东西才能获得svn exe命令 subversion 程序代码链接到 TortoiseSVN 二进
  • 将 git 与 svn 一起使用的好习惯

    Subversion 几年前就很流行 现在 git 也开始流行 越来越多的人想用 git 取代 Subversion 问题是很多项目都是基于 Subversion 的 所以问题是如何将 git 与 Subversion 一起使用 不要完全取
  • git-svn 期间“RA 层请求失败:REPORT 请求失败”

    我一直在尝试使用以下命令 Git 克隆 Google Code SVN 存储库 git svn clone stdlayout https wtorrent project googlecode com svn wtorrent git 它
  • 如何在 svn 存储库中本地忽略 .git 和 .gitignore?

    我有一个 SVN 工作副本 由 TortoiseSVN 管理 在该工作副本中 我使用 git 进行本地版本控制和分支 当然 我想隐藏svn的 git目录和 gitignore文件 但是 忽略它们意味着将属性添加到不再是本地的存储库中 我不希
  • 无法加载文件或程序集“SharpSvn”或其依赖项之一。尝试加载格式不正确的程序

    我刚刚在这里下载了 64 位版本的 SharpSVNthe link http sharpsvn open collab net files documents 180 5570 SSvn 1 7002 1998 x64 zip 当我运行我
  • 如何使用 git-svn 使 svn:external 保持最新?

    将我的存储库视为 SVN 存储库 我得到 svn co http myrepo foo trunk foo foo bar baz gt http myrepo baz trunk 将其视为 Git 存储库 我得到 git svn clon
  • 同步不经常更新的哈希图的最佳方式

    我有一个在应用程序中使用的 HashMap 数据是在应用程序初始加载期间从数据库填充的 然后它始终只是读取并且从不更新 会有多个线程不断地读取数据 由于数据永远不会更新 因此我们目前不使用任何同步 仅使用 HashMap 我们现在定义的方式
  • 无法将 Visual Studio 项目中的多个文件提交到 subversion

    几周以来 我在使用 Subversion 时遇到了一些问题 当我尝试从 Visual Studio 2017 项目提交文件时 有些文件无法提交到我的 Visual SVN 服务器 准确地说 项目文件夹中的所有文件 如 cs config c
  • Python Subversion 包装器库

    在颠覆的文档 http svnbook red bean com en 1 7 svn developer usingapi html svn developer usingapi otherlangs有一个从 Python 使用 Subv
  • TortoiseSVN 不允许我添加任何文件

    我正在尝试使用 TortoiseSVN 1 8 1 将文件添加到 SVN 存储库 我右键单击这些文件并选择 TortoiseSVN gt Add 然后 我选择弹出窗口中的所有文件 然后单击 确定 单击 确定 后 会弹出另一个对话框 所有文件
  • 清理 Subversion 存储库的最佳方法是什么?

    我有一个不断增长的存储库 其中包含十几个我使用 TortoiseSVN 维护的项目 因为我对此完全陌生 还不知道其来龙去脉 我保存存储库的空间有限 因此我想备份它 然后删除一些旧版本 例如 如果一个项目的版本为 50 我只想保留 50 49
  • svn:修订版本中不存在路径

    我想在颠覆中创建标签 在命令行上我尝试了以下操作 svn复制http myserver mycompany com 8080 svn SVN Main trunk http myserver mycompany com 8080 svn S
  • 进程间并发文件写入

    我需要将不同进程的日志数据写入单个文件 我正在使用 Windows Mutex 它需要公共语言运行时支持 Mutex m gcnew Mutex false MyMutex m gt WaitOne File Open and Write
  • 使用 svn diff 时如何获取无上下文

    当我从命令行使用 svn diff 时 它会打印出已更改的行 以及前后 3 个未更改的行以获取上下文 我更喜欢只看到没有上下文的更改行 我无法确定任何命令行选项可以让我让它以这种方式运行 默认情况下 标准 diff 和 cvs diff 执
  • 如何查看提交修订后所做的更改并解析它以获取评论?

    我希望自动化一些与 SubVersion 相关的任务 所以我使用了 SharpSvn 不幸的是我找不到太多的文档 我希望能够在用户提交新修订后查看更改 以便我可以解析代码以获取特殊注释 然后将其上传到我的票证系统中 如果您只想浏览 Shar
  • 颠覆和混合修订:破坏构建的秘诀?

    在使用 TFS 一段时间后 我刚刚回到 subversion 一般来说我已经很退出了 有一件事情我记得不一样 我不记得能够从过时的工作副本中提交 或者也许我的记忆力让我无法理解 过时 的定义 我认为 过时 意味着自从我上次更新工作副本以来
  • 相当于“svn update -r”的 git 是什么?

    我是最近的 git 转换者 能够使用 git svn 将我的分支保留在本地而不干扰 svn 服务器真是太棒了 最新版本的代码中存在一个错误 我想确定一个它起作用的时间 以便我可以使用 git bisect 我找不到正确的命令来及时返回 谢谢
  • svn 强制迁移

    我正在考虑将我们的 svn 代码库迁移到 perforce 看看谷歌搜索结果 我确实找到了两个具有相同功能的工具 P4转换ftp ftp perforce com pub perforce tools p4convert docs inde
  • Maven 中不同配置文件的不同 SCM

    在我的项目中 我们必须使用 maben build number 插件来构造 jar 的最终名称 为此我们使用 SCN 的修订版 因此我们需要 SCM 但是我们在无法直接访问的受控环境和本地测试环境上有两个 SVN 因此对于我们的 poup

随机推荐