【问题标题】:Is there a way I can redirect the commits to the master copy of SVN , while my SVN is pointed to the mirror(read only) copy有没有办法可以将提交重定向到 SVN 的主副本,而我的 SVN 指向镜像(只读)副本
【发布时间】:2019-05-08 10:34:37
【问题描述】:

我已经为我们现有的 repo 设置了一个镜像,它可以同步。 但据我了解,镜像副本的更改只能由 svnsync 进行。

因此计划是让所有用户指向镜像仓库,但提交需要指向主仓库。但我不能要求用户每次必须提交或结帐时在此 repo 之间切换。

那么有没有一种方法,无论是在客户端还是在服务器端挂钩脚本中,我都可以将提交重定向到主仓库

repos 不使用 Apache 提供服务,所以我认为 SVNMasterURI 或那些解决方案不起作用,我们使用 svn 协议而不是 http 或 https

【问题讨论】:

  • 你知道钩子(在服务器端)吗?
  • 是的,但是我可以阻止用户提交到 repo,我不能重定向到不同的 repo ryt??

标签: svn tortoisesvn


【解决方案1】:

前言

  1. 您尝试在 DVCS 样式中使用 CVCS-system。这是 The Bad Idea (tm) 的共同点,因为它忽略了“自己创业”的原则
  2. 您添加了额外的复杂层(repo-mirror),而没有可见的额外有用层(镜像“只是存在”,只会让您头疼)

无论如何,您有一些解决方案s,或多或少丑陋和/或原生

Level0:基础设施不做任何改变

  • 准备、发布、教最终用户使用自定义命令(任何名称)而不是普通的 svn ci。该脚本必须在幕后执行所有切换,例如

    svn relocate $MAINREPO

    svn ci -m $1

    svn relocate $MIRRORREPO

  • 尝试使用服务器端预提交钩子拦截所有数据(只是想法,没有准备好使用的代码)

Level1:用户端的变化

如果您有 DVCS 任务,则可以使用 DVCS 客户端。最著名和提到的是 Git 和 Mercurial,它们都可以轻松地使用远程 SVN 存储库,但是 HG 不能使用来自单个本地的两个 SVN 存储库(AFAIK),而 Git 可以。你必须安装、配置、教用户使用 Git,毕竟他们会从 $MIRRORREPO 中“获取”,但会“推送”到 $MAINREPO

Level2:完全迁移到 DVCS

全部替换为 Mercurial(repos 和用户工具),将两条路径添加到 clents 的配置中,从 $MIRRORREPO 拉取,推送到 $MAINREPO

【讨论】:

  • 太棒了!!我有为 Toroise 客户端编写的预提交钩子脚本来来回重定位,但不幸的是我必须为每个路径进行配置。有没有办法让所有提交都有一个通用的钩子脚本!
猜你喜欢
  • 2023-04-04
  • 2011-01-11
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
相关资源
最近更新 更多