Subversion 常用命令手册

wakeup

贡献于2012-12-10

字数:3884 关键词: Subversion 版本控制系统 手册

 Subversion常用命令 2009-9-18 1. 版本库 2 2. 版本模型 2 3. SVN安装 2 4. 客户端配置 2 5. 查看svn帮助 3 6. 创建版本库 3 7. 启动svn 3 8. 建立版本库目录结构 3 9. 导入版本库 3 10. 签出一份代码到本地并作为工作区 3 11. 导出一份代码但不作为工作 4 12. 基本工作周期 4 13. 查看当前目录状态 4 14. 更新最新程序到本地拷贝目录 4 15. 锁定文件 4 16. 修改文件或目录 4 17. 撤销某些修改 5 18. 解除锁定 5 19. 提交修改 5 20. 查看当前目录信息 5 21. 显示历史日志 5 22. 切换版本库IP地址 6 23. 镜像库的配置 6 同步错误一 6 同步错误二 7 1. 版本库 Subversion是集中式信息共享系统。版本库是subversion的核心部分,是数据的中央仓库,以典型的文件树结构来保存信息。任意数量的客户端连接到subversion库,来读取、修改这些文件。客户端通过写数据将信息分享给别人,通过读数据获取别人共享的信息。 2. 版本模型 版本管理系统的核心是实现写作编辑和数据共享。锁定——修改——解锁机制:一段时间内只允许一个用户修改,修改前先锁定文件,修改后解除锁定。 3. SVN安装 从http://subversion.tigris.org/下载subversion安装包,及相关工具包。不同版本安装会稍有差异,以subversion1.5.4为例,需要下载apr-0.9.17.tgz、 apr-util-0.9.15.tgz、subversion-1.5.4.tgz,按照INSTALL说明依次安装,也可参考如下步骤安装: a. 超户身份进入apr-0.9.17,依次执行./configure; make; make install; b. 超户身份进入apr-util-0.9.15,依次执行./configure -with-apr=/usr/local/apr; make; make install; c. 超户身份进入subversion-1.5.4,依次执行./configure -with-apr=/usr/local/apr -with-apr-util=/usr/local/apr; make; make install; 4. 客户端配置 进入.subversion,修改config,启用store-passwords = no,启用enable-auto-props = yes,启用[auto-props],并增加一行:* = svn:needs-lock=x。这样checkout的文件为只读的,lock后为可写。 5. 查看svn帮助 svn help svn的所有命令都可以通过帮助信息查看得到。 6. 创建版本库 svnadmin create repos_path 例: /home/d5000/: svnadmin create d5000_src /home/d5000/: 7. 启动svn /home/d5000/: svnserve –d –r src_svn 8. 建立版本库目录结构 一般建立如下结构: repos |--project----| |--------trunk |--------branches |--------tags 9. 导入版本库 svn import src_path URL 例: /home/d5000:svn import src svn://192.168.200.1/repos/d5000/trunk/ 10. 签出一份代码到本地并作为工作区 svn checkout URL path 若需要签出最新代码,例: /home/d5000/: svn checkout svn://192.168.200.3/repos/d5000/trunk src 若需要签出指定版本的代码,例: /home/d5000/: svn checkout –r 10 svn://192.168.200.1/src/ src 根据提示依次输入用户名和密码即可。 11. 导出一份代码但不作为工作 svn export URL path 12. 基本工作周期 查看状态——更新版本到本地——锁定——修改——提交——查看状态 13. 查看当前目录状态 svn status 14. 更新最新程序到本地拷贝目录 svn update 若更新指定版本程序:svn update –r 版本号 15. 锁定文件 svn lock 如:svn lock main.cpp 16. 修改文件或目录 添加文件时,可以直接使用操作系统命令来添加或删除文件,subversion会自动监视到文件的变化,最后只需提交修改即可。 a) 添加文件或目录 svn add b) 删除文件或目录 svn delete c) 拷贝文件或目录 svn copy d) 移动文件或目录 svn move 新建文件 修改文件 删除文件 直接通过操作系统命令或工具操作即可,提交时svn会识别出具体是哪种操作。 新建目录 如新建dir目录,使用命令svn mkdir dir。 修改目录名 如修改目录dir为linux,则使用命令svn move dir linux。 删除目录 如删除目录dir,则使用命令svn delete dir。 拷贝目录 如拷贝目录linux一份命名为linux2,则使用命令svn copy linux linux2。 移动目录 移动目录需要转换为先拷贝,再删除,因此如将目录dir移动到linux目录下,则使用命令: svn copy dir linux svn delete dir 17. 撤销某些修改 svn revert 如撤销对main.cpp的修改 svn revert main.cpp 18. 解除锁定 svn unlock 若对某文件锁定后,发现本来并不需要修改,则需要解除锁定。 如:svn unlock main.cpp 若对文件做了些修改,但发现本来并不需要修改,此时做如下操作: 先撤销对文件的修改,再解除锁定。如撤销对文件main.cpp的修改: svn revert main.cpp svn unlock main.cpp 19. 提交修改 svn commit 如提交对main.cpp的修改: svn commit main.cpp” –m “modify 提交修改后,先前锁定的文件自动被解除锁。 20. 查看当前目录信息 查看当前工作目录从哪版本库签出的及其完整路径信息等 svn info 21. 显示历史日志 若显示当前目录下所有文件的日志,则使用命令svn log, 若显示指定文件main.cpp的日志,则使用命令svn log main.cpp. r18 | lbl | 2009-07-28 19:42:57 +0800 (二, 28 7月 2009) | 1 line 若显示一段版本的信息,使用参数-r,如查看版本2-8之间的信息,则使用命令svn log –r 2:8 main.cpp 22. 切换版本库IP地址 svn switch –relocate from_url to_url svn switch --relocate svn://80.10.40.13/repos/d5000/trunk/src svn://10.0.0.4/repos/d5000/trunk/src 23. 镜像库的配置 步骤: 1、 创建镜像库,并创建专有的用户syncuser和密码syncpass; 2、 修改事件钩子pre-revprop-change #!/bin/sh USER=”$3” if [ “$USER” = “syncuser” ] ;then exit 0 ; fi echo “Only the syncuser user may change reversion properties”>&2 exit 1 3、 修改事件钩子start-commit #!/bin/sh USER=”$2” if [ “$USER” = “syncuser” ]; then exit 0; fi echo “Only the syncuser user may commit new reversions”>&2 exit 1 4、 在目标版本库上注册源版本库 svnsync initialize DEST_URL SOURCE_URL –username syncuser –password synpass 5、 同步源版本到目标版本 a) 定时同步:定时执行如下脚本svnsync synchronize DEST_URL –username syncuser –syncpass syncpass。 b) 在源版本库中修改post-commit脚本,增加svnsync synchronize DEST_URL –username syncuser –syncpass syncpass一行。 同步错误一 svnsync: Path ' ' not present的解决办法: 原因:已同步的版本被修改的 解决办法:修改并运行如下脚本 #!/bin/sh i=0 while [ $i -lt 1848 ] #根据实际情况将1848替换为当前镜像库的最大版本号 do svnsync copy-revprops svn://localhost $i i=`expr $i + 1` done 再做同步。 同步错误二 Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02' svnsync: Couldn't get lock on destination repos after 10 attempts 这个时候可能属性被锁了,删掉属性: svn propdel svn:sync-lock --revprop  -r0  file:///home/backup/svn/svnsync/SMP 删除成功后,再试一遍基本就可以了。 如果反复操作都是同样错误的话,有可能是你的svn安装的有问题,重新安装一遍就好了,俺就是这样。

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ]
1 人已下载

下载文档

相关文档