Wiki source for svn
=====SVN: Subversion=====
SVN是用来取代CVS的版本控制工具
====svn on Windows====
===Client===
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], 用法跟TortoiseCVS差不多,与Explorer集成,用起来很方便,这里就不多说了:)
===Server===
SVN的Server有Standalone和与Apache结合两种方式,由于后一种需要Apache2,所以我用的是Standalone方式。
1) 首先,下载[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 官方命令行工具]]并安装;
1) 在本机上建立一个目录作为所有repo的根目录,我用的是D:\svnroot
1) 在根目录上建立repo的子目录,比如D:\svnroot\project1
1) 进入D:\svnroot\project1目录,使用TortoiseSVN的"Create Repository here..."功能,选择Berkeley DB,会在这里创建repo
1) 进入创建好的conf目录(D:\svnroot\project1\conf),修改passwd和svnserve.conf文件,都是类似于ini的语法
1) 都好了后就可以在命令行运行"svnserve -d -r D:/svnroot"来启动server了,其中-d表示daemon方式运行,-r表示以d:\svnroot作为根目录
1) 如果想要作为系统服务,可以用第三方软件,我用的是FireDaemon Lite 1.6,现在官方已经不提供免费的Lite版本了,[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe 这里可以下载]]
这里需要注意的是:
- passwd里面是用明文存密码,而且貌似只有用apache才能存hash,这点有很多人骂,而且svn也不提供类似于CVS for NT提供的"cvs passwd"命令
==== SVN on console ====
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
==== SVN repo的后台更改 ====
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
%%
svnadmin create /path/to/new/repo --fs-type fsfs(or bdb)
%%
1) dump老repo并load到新的里面去,使用这个命令:
%%
svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo
%%
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了
SVN是用来取代CVS的版本控制工具
====svn on Windows====
===Client===
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], 用法跟TortoiseCVS差不多,与Explorer集成,用起来很方便,这里就不多说了:)
===Server===
SVN的Server有Standalone和与Apache结合两种方式,由于后一种需要Apache2,所以我用的是Standalone方式。
1) 首先,下载[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 官方命令行工具]]并安装;
1) 在本机上建立一个目录作为所有repo的根目录,我用的是D:\svnroot
1) 在根目录上建立repo的子目录,比如D:\svnroot\project1
1) 进入D:\svnroot\project1目录,使用TortoiseSVN的"Create Repository here..."功能,选择Berkeley DB,会在这里创建repo
1) 进入创建好的conf目录(D:\svnroot\project1\conf),修改passwd和svnserve.conf文件,都是类似于ini的语法
1) 都好了后就可以在命令行运行"svnserve -d -r D:/svnroot"来启动server了,其中-d表示daemon方式运行,-r表示以d:\svnroot作为根目录
1) 如果想要作为系统服务,可以用第三方软件,我用的是FireDaemon Lite 1.6,现在官方已经不提供免费的Lite版本了,[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe 这里可以下载]]
这里需要注意的是:
- passwd里面是用明文存密码,而且貌似只有用apache才能存hash,这点有很多人骂,而且svn也不提供类似于CVS for NT提供的"cvs passwd"命令
==== SVN on console ====
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
==== SVN repo的后台更改 ====
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
%%
svnadmin create /path/to/new/repo --fs-type fsfs(or bdb)
%%
1) dump老repo并load到新的里面去,使用这个命令:
%%
svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo
%%
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了