[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'