Win7配置SVN详细步骤(服务器和客户端)
1 下载并安装服务器端SVN
下载地址:http://subversion.apache.org/packages.html, 根据操作系统下载相应版本(Setup-Subversion).默认安装目录可为: D:\Program Files\Subversion
2 下载并安装客户端SVN
下载地址: http://tortoisesvn.net/downloads.html 根据操作系统下载相应版本(TortoiseSVN).默认安装目录可为: D:\Program Files\TortoiseSVN
3 创建SVN库
在D盘创建文件夹MySVN(可自由命名),打开文件夹à右键TortoiseSvnàCreate Repository Here
4 修改SVN库配置及新增用户
Repository创建完毕后会在目录下生成若干个文件和文件夹,conf目录是用来设置管理的目录;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录, 用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
打开/conf/目录,
一般情况下,我们将通过验证用户/密码方式来允许客户端的操作。
打开conf文件下的svnserve.conf文件,按图中所标的对12行,20行进行修改(将访问模式设为用户密码访问),相关含义见文件中的说明:
打开svnserve.conf找到一下两句:
# [general]
# password-db = passwd
去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件
同样打开passwd文件,将
# [users]
# harry = harryssecret
# sally = sallyssecret
Joklin=Joklin
Jal=Jal
开头的空格也要去掉
这几行的开头#字符去掉,这是设置用户,一行一个,存储格式为“用户名 = 密码”,如可插入一行:admin = admin888,即为系统添加一个用户名为admin,密码为admin888的用户
关于authz的分组以及各组权限设定例子:
内部分组:
[groups]
admin=Joklin,Jal
#管理者adminsvn
Non=non
对各个目录进行权限设定
[/]
Joklin=rw
Jal=rw
*=r
[/public]
*=rw
5 启动SVN服务
在D:\Program Files\Subversion\bin(SVN服务器端安装目录)文件夹下新建svnSetup.bat,内容为:
sc create svnserve binpath= "D:\Program Files\Subversion\bin\svnserve.exe --service -r d:\MySVN" depend= Tcpip start= auto
sc start svnserve
pause
其中: binpath为SVN服务器端目录; d:\MySVN为SVN库目录
运行后(或以管理员身份运行),会新创建一个服务名为:svnserver,可通过运行services.msc查看,将其设置自动运行(有时候需要重启电脑)
6 安装VS Studio Svn插件
插件主要有两种:
1. VisualSVN(需购买): http://www.visualsvn.com/visualsvn/
2. TortoiseSVN(开源免费,但需先注册才能下载): http://ankhsvn.open.collab.net/
7 问题
1. 目标机器积极拒绝: 很大原因是[步骤5]的问题,请先确认是否有svnverver服务存在,并且已自动启动.
CentOS:
yum install subversion (SVN服务器)
配合类似花生壳之类的域名软件可实现动态域名远程连接,具体方法为:
1 在花生壳网注册账号
2 在路由器上的动态DNS上登录花生壳账号
3 在路由器的虚拟服务器(或DMZ区)上将你的服务器的IP(内网)设定为DMZ服务器
4 设置端口映射,SVN端口一般为3690,映射外部网络使用3690访问内网时,转接到DMZ服务器即可
创建版本库:
终端输入:svnadmin create [路径]
该路径可以是相对路径,例如,当前在home/user/svn/目录下,输入svnadmin create myproject,则该版本库会被创建在home/user/svn/目录下,新建一个文件夹名为myproject,其中便是版本库的文件了。
将文件导入版本库:
终端输入:svn import [源路径] [目标版本库路径] -m [日志信息]
源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录(反正我试验是这样的),例如版本库的目录是:home/user/svn/myproject/。则应该这样写:file:///home/user/svn/myproject/
例如将当前目录导入版本库myproject:
svn import . file:///home/user/svn/myproject -m "导入文件"
启动:
svnserve -d -r /home/user/svn/myproject -m ‘导入文件’
目录同步:
从版本库导出:
导入后原文件并未被纳入版本管理,若想获得受版本控制的文件,就需要从版本库导出
终端输入:svn co [版本库路径] [导出目标路径]
例如将myproject库中的文件导出到当前目录:svn co file:///home/user/svn/myproject .
#!/bin/sh
export LANG="zh_CN.UTF-8"
svn update /media/htdocs/ --username admin --password admin
如果文件夹是空的,
可以先checkout文件夹,修改post-commit chmod 755
启动,提交即可
如果文件夹内有内容
先把文件夹内容复制出来,然后清空文件夹,,接着修改post-commit chmod 755
import被复制的文件,,,checkout到指定文件夹,即可达到同步