我们有几个站点,并且正在使用一个集中的 Subversion 存储库。
存储库很大,网络带宽意味着在站点之间获取资源需要几个小时。
你会建议什么?一种选择是开始使用 Git,但它可能非常昂贵。在主站点仍然有一个中央 SVN 存储库并在小站点安装 git 然后我们可以使用 git-svn 管道怎么样?
我们有几个站点,并且正在使用一个集中的 Subversion 存储库。
存储库很大,网络带宽意味着在站点之间获取资源需要几个小时。
你会建议什么?一种选择是开始使用 Git,但它可能非常昂贵。在主站点仍然有一个中央 SVN 存储库并在小站点安装 git 然后我们可以使用 git-svn 管道怎么样?
确保您使用的是 1.7+ 版本的 Subversion 服务器和客户端。1.7 版引入了某些性能改进,特别是对于 http(s):// 协议。
git-svn
使用标准的 SVN 协议,因此它不会修复与 Subversion 服务器通信的速度。
但是,由于大多数 Git 操作都是本地操作,因此用户必须很少与服务器交互。基本上,在这种情况下只有两个慢命令:git svn dcommit
和git svn fetch
.
考虑将SubGit用于您的 SVN 存储库。SubGit 在 SVN 和 Git 存储库之间执行服务器端同步,SVN 和 Git 端都保持可写。
安装 SubGit并设置 Git 服务器后,您可以使用纯 Git 来拉取和推送更改;在每个git push
SubGit 上将提交转换为 SVN 修订,并在每次svn commit
将提交的修订转换为 Git 提交。
请注意,在这种情况下,您使用的是 Git 协议,这可能会显着提高速度。
有关 SubGit 的更多详细信息,请参阅文档并与 git-svn 进行比较。
免责声明:SubGit 是商业软件;我是 SubGit 开发人员之一。
您可以尝试使用 VisualSVN Server 进行多站点存储库复制。
多站点存储库复制允许您在主站点上设置主存储库,并在其他远程位置安装多个从存储库。从属和主控之间的双向数据复制是透明和自动的,每个从属和主控都是可写的,从客户端的角度来看,它们充当常规的 Subversion 存储库。
如果您想坚持使用纯粹的 Subversion 工具链,请考虑执行以下操作:
您最终会得到一个位于中心位置的主存储库,以及位于每个站点的只读镜像副本。这些站点的用户将从他们的本地镜像中签出。
然后,您使用直写代理配置这些镜像,这会将提交推送回主存储库。
每次提交后,存储库会使用svnsync
该版本将该修订推送到镜像。
如果这仍然太慢,您可能需要查看WanDisco SVN MultiSite。