热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

svn服务器文档同步,SVN服务器搭建、备份及多服务器同步方案(Windows)

2017年12月16日Git,SVNStandardViews:2,360虽然Git比SVN强大,已经统治了代码管理领域,但Git是具有一定门槛的&#x

2017年12月16日Git, SVN Standard

Views:

2,360

虽然Git比SVN强大,已经统治了代码管理领域,但Git是具有一定门槛的,对非开发者来说并不那么友好。相对来说,SVN虽然功能没那么强悍,但是服务端搭建简单、客户端操作门槛低,文件管理对大多数普通用户来说已经够用,因此还是有一定的生存空间的。

一、安装服务端

首先安装VisualSVN Server,没什么好讲的因为都是无脑下一步,顶多改下仓库根目录和端口号。至于HTTP还是HTTPS,看个人喜好吧。

安装完之后从开始菜单找到VisualSVN Server Manager,里面可以增删仓库、管理用户、用户组及访问权限。

670e530cd2897060f29e1ebe88d1a47b.png

这就算搭建好了,新建一个仓库和一个用户,再在仓库上分配Read/Write权限给该用户即可。

然后就可以通过地址:http://ip/svn/仓库名  访问仓库了。

客户端小乌龟的使用不在本文描述范围,网上都说烂了。

二、备份方案

网上有很多种备份方案,各种脚本、步骤,搞得很复杂。我只推荐以下方案,快速、简单、暴力!

备份:

svnadmin hotcopy E:\SVN\Repositories\xxx E:\backup\xxx

还原(可直接用VisualSvn import):

svnadmin hotcopy E:\backup\xxx E:\SVN\Repositories\xxx

对多个仓库备份可分别执行。

三、多服务器同步方案

本文以一台主服务器一台备份服务器为例。

1、假设你已经在主服务器有了一个仓库A,并且已经运行了很久,想复制到备份服务器。最好两台服务器上都建一个备份用户,给予读写权限,用相同账号密码,方便。

2、使用hotcopy进行备份,并将其拷贝到备份服务器的任意临时文件夹(非必须,只是不拷贝的话第一次直接进行同步的话会非常慢)

3、在备份服务器创建A的同名仓库

4、如有Hotcopy备份,用它覆盖该仓库的所有文件;

5、改Hook -> Pre-revp-change值为以下内容:

echo "Changing revision pp other than svn:log is prohibited" >&2

exit 0

cb51dc44a41025ca061c94d3b52dc3b4.png

6、打开命令行工具,初始化A仓库

//替换为你自己的仓库路径

svnsync init file:///E:\Repositories\A http://主服务器/svn/A --username 账号 --password 密码

//如果你是用hotcopy覆盖的,用下面的这个

svnsync --allow-non-empty init file:///E:\Repositories\A http://主服务器/svn/A --username 账号 --password 密码

71b95fe2fbd6670fe888ca8754c686e1.png

成功后执行以下代码进行同步,到此备份结束,以后要手动同步都只执行它:

svnsync sync file:///E:\Repositories\A

5b6872f375f3290a3291140bd16573ab.png

注意这个命令是一次性的,每次想同步都要执行一次。如有多个仓库直接写个批处理.bat就好。

7、当然,如果备份服务器想实时同步,需要在主服务器上改Hook post-commit:

svnsync sync --non-interactive http://备份仓库地址/svn/备份仓库路径 --username 账号 --password 密码

收工。



推荐阅读
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文介绍如何在QT框架中使用QWebSocket和QTcpSocket实现SSL加密通信,涵盖单向认证设置。单向认证常见于Web通信场景,其中客户端验证服务端证书,而服务端不验证客户端证书。 ... [详细]
  • 本文详细探讨了HTTP 500内部服务器错误的成因、解决方案及其在Web开发中的影响。通过对具体案例的分析,帮助读者理解并解决此类问题。 ... [详细]
author-avatar
生活是多么美好888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有