将Linux SVN仓库转换为Windows SVN仓库

4

我被委托找出我们当前的Linux SVN服务器是否可以迁移到MS Windows。

我已经找到并试用了一个名为VisualSVN Server的程序,它似乎可以做到我们需要的一切,但我不知道是否可能将当前的Linux代码库转换为在Windows服务器上运行。

我对整个SVN应用程序都很陌生,请温柔地回答我的问题 :)

谢谢,

C.


@Matt:如何在Linux/Apache SVN服务器和一堆Windows工作站之间实现“单点登录”,这些工作站的用户都在Windows域中,你有什么建议吗? - Didier Trosset
@Didier:mod_ldap: http://httpd.apache.org/docs/2.2/mod/mod_ldap.html - SirDarius
1
@Matt和@SirDarius:据我所知(并使用它!)Linux / Apache上的mod_ldap允许对Windows域控制器进行身份验证。 它可以正常工作,但不支持“单点登录”。你有更多的细节吗? - Didier Trosset
1
我不太明白你的意思,你应该开自己的问题 ;) - SirDarius
1
@Didier,你正在寻找mod_sspi - Nathan Kidd
@Nathan:mod_sspi 需要在 Windows 上运行 Apache SVN 服务器。(我希望我是错的...) - Didier Trosset
5个回答

10

我个人已成功在Windows平台上使用Linux创建的存储库,反之亦然。

从平台的角度来看,没有任何不兼容性。

但是,您仍应该注意每个平台上使用的Subversion软件版本,因为Subversion存储库格式随着时间的推移而发生了变化。

避免任何问题的最佳方法是对您的存储库进行完整的转储:

$ svnadmin dump /var/svn/repos > full.dump

并将其加载到目标服务器上:

C:\svn> svnadmin load newrepos < full.dump

请参考http://svnbook.red-bean.com/en/1.5/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate了解更多详情。


1
为了在 Windows 机器上加载它...您需要: 1.打开 VisualSVN Server 2.使用您想要的 (reponame) 创建新存储库 3.打开 cmd 4.导航到 c:\program files\VisualSVN Server\bin> 5.键入
svnadmin.exe load "c:\[path where you have assigned for your repositories]\(reponame)" < "c:\[path where the dump file is]\(reponame).dump

例如,如果我已经从Linux机器复制了(myrepo.dump)到我的“c:\ dump_files”,并且我已经为存储库位置分配了“c:\ new_svn”,那么命令应该在cmd中执行

c:\program files\VisualSVN Server\bin>svnadmin load "c:\new_svn\myrepo_new" < "c:\dump_files\myrepo.dump"

但首先请确保在VisualSVN服务器管理器中已创建myrepo_new。


1

你可以迁移FSFS repos,而无需进行任何操作(即使是BDB也只需要进行小的调整,只要CPU架构没有改变),但正如之前提到的,“安全”的方法是将其转储并重新加载。

我以前做过linux->windows的迁移,你应该清楚,如果使用默认的FSFS,则性能会受到严重影响。就许多文件/小文件而言,NTFS只是一个可怕的文件系统,在我的观察中,像'svn ls'这样的东西会导致性能下降一个数量级。最好先进行测试,看看您是否仍然满意。


Nathan在NTFS方面提出了一个很好的观点。如果你打算在Windows上运行Subversion仓库,请确保对repo进行转储和加载,并且务必在加载时打开分片。分片可在Subversion的1.5.x和1.6.x版本中使用。 - jgifford25
@jgifford25:当你有数十万个版本时,分片可以提高性能(不涉及资源管理器的可视性),但即使是较少的版本,NTFS对于任何文件操作(ACLS等)也非常缓慢。(我在Malcom Rowe首次实现分片时在Windows上测试了他的分片脚本)。 - Nathan Kidd

0

您必须确保防火墙处于关闭状态或者防火墙允许 SVN 流量通过。如果您仍然无法在 Windows 上访问在 Linux 中开发的 SVN 服务器,则请确保您不在 c:// 目录下,您必须切换到其他驱动器以进行检出操作。


0
从技术上讲,只要Linux服务器和Windows服务器使用相同的Subversion主版本(即1.6.x或1.5.x),您应该能够将每个存储库及其底层文件结构从Linux服务器复制到Windows服务器并无问题地使用它。
然而,最好的建议是遵循SirDarius的答案,在Linux服务器上转储每个存储库,并在Windows上重新加载它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接