如何将svn url重定向到另一个域?

dum*_*uch 5 svn dns tortoisesvn redirect svn-externals

背景:DynDNS现在已开始要求每月登录一次以保持其免费帐户处于活动状态(以前您只需每月更新一次IP地址).我相信我迟早会忘记这样做并失去我的帐户.

我使用mysvn.dyndns.org来访问服务器上的subversion存储库,该服务器也可以通过svn.mydomain.com访问(截至目前).不幸的是,大多数项目也指的是也位于mysvn.dyndns.org的外部,我真的不想通过所有项目(> 100)并改变外部,因为这可能需要几个小时而且容易出错.

有没有办法配置Windows或subversion/TortoiseSVN客户端将一个域重定向到另一个域?

例如:

https://mysvn.dyndns.org/svn/blablub

应重定向到

https://svn.mydomain.com/svn/blablub

我知道我可以向主机添加一个条目以重定向到一个IP地址,但我更希望重定向到一个域名.

Laz*_*ger 5

你(真的)问过2个相关的问题:

  • 我可以重定向somename.domain.comanothername.somedomain.com吗?
  • SVN客户端可以使用旧名称,但是使用新主机?

答案很简短

  • 没有

更长的版本

对于将旧主机名重定向到新的主机名并且可以使用至少两个变体(具有相同的最终结果)

  • 在DNS级别和CNAME记录中,它将新名称替换为新名称:

somename.domain.com. IN CNAME anothername.somedomain.com

根据somename的请求,将回答来自anothername的数据

  • 在Apache的配置主机位置somename你可以添加重定向到另一个名称Apache的

但是:它只能在浏览器级别上运行 - 当您尝试将此重定向位置用作任何Subversion命令的目标时,您将收到错误"存储库已移动,请重新定位",您必须将所有旧资源重新定位到新URL.

对你而言好消息

所有外部定义都在源代码库中写为svn-properties,您可以获取这些外部列表(带有值)并使用新值进行更新,并且此操作(理论上)可以自动执行

svn propget -R svn:externals . > FILE 获取外部的工作副本的根目录

svn propset svn:externals --target FILE 用于批量定义新的外部


dum*_*uch 0

显然没有像我想象的那么简单的解决方案。我最终编写了一个基于 Version Insight 源代码的小型 Delphi 程序,该程序更改签出到给定目录的子目录中的所有项目的外部并提交这些更改。然后我使用 svn relocate 命令来重新定位项目本身。

@rem calls svn relocate for all directories
@echo off

for /d %%i in (*) do call :HandleDir %%i
pause
goto :eof

:HandleDir
echo *** handling dir %1

svn relocate --ignore-externals https://mysvn.dyndns.org/svn/ https://svn.mydomain.com/svn/ %1
goto :eof
Run Code Online (Sandbox Code Playgroud)