[TOC]

创建分支

svn copy http://../trunk http://../branches/v1 -m '注释'

查看最新创建的分支

svn ls http://../branches/ |tail -n 1

分支合并到主干

进入主干的工作副本

cd ~/dev
svn co http://../trunk cloud
cd cloud

确保工作副本是干净得,svn status查看没变化的文件。

预合并,在主干副本目录进行

svn merge --dry-run -r100:200 http://../branches/v1

将版本号100到200间的改动合并。

合并分支

svn merge -r100:200 http://../branches/v1

确认要合并的分支
查看状态

svn status

查看改动

svn diff

提交改动

svn ci -m '注释'

恢复历史版本

恢复就是反向合并

svn merge -r201:200 http://../trunk
svn ci -m '撤销某版本的改动'

SVN仓库的建立

仓库是一个版本管理中心,运行在svn的服务器端。一般在服务器上建立一个仓库后,然后我们把工程导入到svn的仓库中,完成仓库的初始化。

首先建立仓库:

svnadmin create /data/svn/repo1

这样会在repo1仓库中多出一个conf目录其中包含一些配置文件,需要依次去修改,比如把serve配置里的游客可读改成none等,给仓库命名。然后设置用户名以及密码。这里面是需要把一些注释去掉的。

然后启动svn服务器:

svnserve -d -r /data/svn --listen-port 9999

上面可以选择端口

这时虽然仓库建立了,但是还是空的,这时可以导入一个项目文件:

svn import /data/wwwroot/pro1 svn://localhost/pro1/trunk

把这个项目当做仓库的主干来用。

然后客户端进行修改提交,最后合到主干,可以在服务器端检出一份代码,然后把最新的主干代码导出到网站目录:

svn export svn://localhost/rep1/trunk /data/wwwroot/rep1
svn export -r12 svn://localhost/rep1/trunk /data/wwwroot/rep1

第二个是导出某个版本的例子。

设置目录或者文件忽略

比如data目录其实不必存在版本库中,可以彻底删除:

svn export svn://localhost/.../data /databak #给data存档,看需求了
rm -rf svn/rep1/.../data
svn del data #不要忘记这一步,删除或者新增都需要手动svn删除或新增
svn ci -m 'del data'

有一种情况是网站使用的目录就是svn的检出目录,这样就不能直接删除,要设置忽略,在上面的基础上:

mv databak /data/svn/rep1/.../
svn ps svn:ignore 'data'
svn ci -m ''

就是说设置忽略的时候,文件要先脱离版本库。

如果要恢复设置忽略:

svn propdel svn:ignore 'data'