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