一、服务端
1、安装Subversion及TortoiseSVN
把svn-win32-1.8.3解压缩至E盘根目录,安装TortoiseSVN至E盘根目录。
将E:\svn-win32-1.8.3\bin添加到环境变量Path
2、创建版本库
新建文件夹E:\VersionLib作为版本库目录,创建一个项目版本目录TestSVN,对其右击->TortoiseSVN ->Createrepository here,即此项目目录为E:\VersionLib\TestSVN。
3、配置用户及权限
打开E:\VersionLib\TestSVN\conf\svnserve.conf,并将其中的
[general]
anon-access = none #匿名访问控制
auth-access = write #认证用户的权限
password-db = passwd #用户名密码存放文件
realm = My First Repository #版本库根目录名称
前面的 # 号去掉,然后去掉他前面的空格。保存。这里的意思是:anon-access 指匿名访问的权限,可以是read,write,none,默认为read,这个建议配为none;auth-access 指认证用户的权限,可以是read,write,none,默认为write;password-db 指密码数据库的路径,去掉前面的,存的是认证用户的用户名和密码,username=passwd。
修改 passwd 文件,去掉 [users] 前面的 #, 否则 svn 只能以匿名用户登录,客户端不会出现登录窗口,除非你的 anon 不为 none, 否则将返回一个错误。
添加用户名和密码 username=password
4、运行SVN服务器
A、对于单个代码版本库
启动命令svnserve -d -rE:\VersionLib\TestSVN --listen-host 172.16.100.25,其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接用svn:// 172.16.100.25来访问了。
B、对于多个代码版本库
若版本库里有两个项目E:\VersionLib\supmax800和E:\VersionLib\supmax2000,则输入命令svnserve –d –rE:\VersionLib –listen-host 172.16.100.25。
中分别Chekout更新
我们可以用 ps aux|grep svnserv 来查看是否存在 svnserve 进程。
C、创建成为系统服务
sc create svnservebinPath= "/"D:/Program Files/Subversion/bin/svnserve.exe/"--service --root D:/服务根目录" displayname= "SubversionRepository" depend= Tcpip start= auto
5、初始化导入
将桌面文件夹SP右击->TortoiseSVN->Import…,输入地址E:\VersionLib\TestSVN,写好备注信息,点击OK。右击文件夹-> TortoiseSVN ->Repo-browser可以浏览导入的文件。
6、修改日志记录及邮件通知功能配置
解压UnxUpdates.zip和blat311_32.full.zip,将两者的所有.exe可执行文件复制到E:\svn-win32-1.8.3\bin下,即在拥有了Linux下部分shell命令。
将下面批处理脚本复制到post-commit.bat里面,然后把post-commit.bat放入SVN版本库的hooks下面。
@echo on
rem 获取hooks目录和版本库目录
set REPOS=%1
set REV=%2
rem 产生随机数,作为日志的文件名
set RD=%RANDOM%
rem 你的邮件的用户名(mail_user)和密码(pass)
set mail_user=swair_fang
set passwd=xxxxxx
svnlook info %REPOS% >C:\SVNmail\INFO_%RD%.txt
svnlook changed %REPOS% > C:\SVNmail\CHG_%RD%.txt
sed -e "1"p -n C:\SVNmail\INFO_%RD%.txt > C:\SVNmail\temp.txt&&for/f %%i in (C:\SVNmail\temp.txt) do set
user=%%i
sed -e "2"p -n C:\SVNmail\INFO_%RD%.txt > C:\SVNmail\temp.txt&&for/f %%i in (C:\SVNmail\temp.txt) do set
dtime=%%i
sed -e "4"p -n C:\SVNmail\INFO_%RD%.txt > C:\SVNmail\temp.txt&&for /f"tokens=*" %%i in (C:\SVNmail\temp.txt)
do set LOG_MSG=%%i
echo Dear Sir/Madom: >> C:\SVNmail\MSG_%RD%.txt
echo 当前提交的版本号是:%REV% >>C:\SVNmail\MSG_%RD%.txt
echo 提交时间:%date:~0,10% %time:~0,8% >>C:\SVNmail\MSG_%RD%.txt
echo 提交日志:%LOG_MSG% >> C:\SVNmail\MSG_%RD%.txt
echo =============最新内容============= >>C:\SVNmail\MSG_%RD%.txt
type C:\%SVNmaillib%\CHG_%RD%.txt >>C:\SVNmail\MSG_%RD%.txt
echo ================================================ >> C:\SVNmail\MSG_%RD%.txt
echo %user% >> C:\SVNmail\MSG_%RD%.txt
echo %dtime% >>C:\SVNmail\MSG_%RD%.txt
type C:\SVNmail\scm.txt>> C:\SVNmail\MSG_%RD%.txt
blat C:\SVNmail\MSG_%RD%.txt -to swair@qq.com -cc swair@qq.com-base64 -charset Gb2312 -subject "SVN库当前提交情况
,提交者:%user%SVN当前版本号:%REV%" -serversmtp.126.com -f swair_fang@126.com -u%mail_user% -pw %passwd%
注意:新建C:\svnemail目录作为版本库修改日志,-to是收件人,-cc是抄送人。在svnemail文件夹里面手动新建一个scm.txt文件。
二、客户端
1、客户端基本操作
客户端安装好TortoiseSVN。在任意目录建个空目录Test,右击->SVN Checkout,输入地址svn://172.16.100.25,然后输入用户名密码,点击OK,便可得到一份Copy。
修改里面任意文件后,右击修改过的文件->SVN Commit…就把修改后的文件提交到了版本库。点击SVN Update…就把版本库中的文件更新到本文件目录中。
在修改后的文件上右击->TortoiseSVN->ShowLog就可以看到文件的修改日志,选中不同条目右击->Compare with working copy就可以比较版本之间的区别。
2、指定项目版本下载
右击你的文件夹,右击->TortoiseSVN->Update torevision…,选择Update Depth栏目中Choose items…,然后对要下载的版本打勾,点击OK即可。