【php精品源码栏目提醒】:网学会员,鉴于大家对php精品源码十分关注,论文会员在此为大家搜集整理了“linux_ubuntu下svn命令使用指南 - 其它资料”一文,供大家参考学习!
Linux ubuntu 下 svn 的命令使用指南Svn 简介:Svn 的全名是 Subversion,它使用服务端—客户端的结构,当然服务端与客户端可以都运行在同一台服务器上。
在服务端是存放着所有受控制数据的 Subversion 仓库,另一端是 Subversion的客户端程序,管理着受控数据的一部分在本地的映射称为工作副本。
在这两端之间,是通过各种仓库存取层Repository Access,简称 RA的多条通道进行访问的。
这些通道中,可以通过不同的网络协议,例如 HTTP、SSH 等,或本地文件的方式来对仓库进行操作。
Subversion 是一种开放
源码的全新版本控制系统, 支持可在本地访问或通过网络访问的数据库和文件系统存储库。
不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion还增加了追踪移动和删除的能力。
此外,它支持非 ASCII 文本和二进制数据,所有这一切都使 Subversion 不仅对传统的编程任务非常有用,同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域.Subversion 的官方网站是:http://subversion.tigris.org/大部分的发行版都已经提供 Subversion 套件ubuntu 下安装 subversion 客户端:sudo apt-get install subversion使用 Subversion Subversion 一般使用两种后台服务模式:一种是其自己实现的 svnserve,可以通过 svn 协议访问,另一种是借助 mod_dav_svn 模块,由 Apache http 服务器来实现,然后通过 HTTP 或HTTPS 协议来访问。
1、通过 svn 协议访问 svn 协议 客户端若要通过 svn 协议访问仓库,必须在存放仓库的机器上运行 svnserve 服务程序。
启动该程序后,会监听在 3690 端口,以响应客户端的访问工作。
2、通过 HTTP 协议访问版本库 通过 HTTP 协议访问版本库是 Subversion 的亮点之一,这种方式具备许多 svnserve 服务器所没有的特性,使用上更加灵活。
以下是 svn 常用的一些命令,详细请看 http://www.subversion.org.cn/svnbook/1.1/index.html1、 将文件 checkout 到本地目录命令:checkout 或 co示例:I、svn co http://路径目录或文件的全路径 本地目录全路径 --username 用户名--password 密码II、svn co svn://路径目录或文件的全路径 本地目录全路径 --username 用户名--password 密码III、svn checkout http://路径目录或文件的全路径 本地目录全路径 --username 用户名IV、svn checkout svn://路径目录或文件的全路径 本地目录全路径 --username 用户名注意事项:1、如果不带--password 参数传输密码的话,会提示输入密码,建议不要用明文的--password 选项。
推荐使用示例 c、d,其执行之后会提示输入密码2、其中 username 与 password 前是两个短线,不是一个。
3、若不指定本地目录全路径,则检出到当前目录下。
例子:svn co svn://192.168.0.6/test /home/test --username xxxsvn co http://192.168.0.6/test/testapp --username xxxsvn checkout svn://192.168.0.6/ test /home/ test --username xxxsvn checkout http://192.168.0.3/test/testapp --username xxx2、添加新文件命令:svn addsvn add 文件名注:告诉 SVN 服务器要添加文件了,还要用 svn commint -m 真实的上传上去!例子:I、svn add test.c <- 添加 test.csvn commint -m “添加测试用 test.c“ test.phpII、svn add .c <- 添加当前目录下所有的 c 文件svn commint -m “添加测试用全部 c 文件“ .c3、导出导出一个干净的不带.svn 文件夹的目录命令:svn exportsvn export -r 版本号 http://路径目录或文件的全路径 本地目录全路径 --username用户名svn export -r 版本号 svn://路径目录或文件的全路径 本地目录全路径 --username用户名svn export 本地检出的即带有.svn 文件夹的目录全路径 要导出的本地目录全路径注:第一种从版本库导出干净工作目录树的形式是指定 URL, 如果指定了修订版本号,会导出相应的版本, 如果没有指定修订版本,则会导出最新的,导出到指定位置。
如果省略 本地目录全路径,URL 的最后一部分会作为本地目录的名字。
第二种形式是指定本地检出的目录全路径 到 要导出的本地目录全路径,所有的本地修改将会保留,但是不在版本控制下即没提交的新文件,因为.svn 文件夹里没有与之相关的信息记录的文件不会拷贝。
例子:svn export svn://192.168.0.3/ test /home/ test --username xxxsvn export http://192.168.0.3/test/testapp --username xxxsvn export /home/ test /home/ testbak4、将改动的文件提交到版本库命令:svn commint 或 svn cisvn commint -m “提交备注信息文本“ -N --no-unlock 文件名svn ci -m “提交备注信息文本“ -N --no-unlock 文件名svn commit -m LogMessage -N --no-unlock PATH如果选择了保持锁就使用–no-unlock 开关必须带上-m 参数,参数可以为空,但是必须写上-m例子:svn commint -m “提交当前目录下的全部在版本控制下的文件“ <- 注意这个表示全部文件svn commint -m “提交测试用 test.c“ test.csvn commint -m “提交测试用 test.c“ -N --no-unlock test.c <- 保持锁就用–no-unlock 开关svn ci -m “提交当前目录下的全部在版本控制下的文件“ <- 注意这个表示全部文件svn ci -m “提交测试用 test.c“ test.csvn ci -m “提交测试用 test.c“ -N --no-unlock test.c <- 保持锁就用–no-unlock 开关5、更新文件命令:svn update 或 svn upsvn update -r 修正版本 文件名svn update 文件名例子:svn update <- 后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本svn update -r 1300 test.c <- 将版本库中的文件 test.c 还原到修正版本(revision)1300svn update test.c <- 更新与版本库同步。
提交的时候提示过期冲突,需要先 update 修改文件,然后清除 svn resolved,最后再提交 commit。
6、删除文件命令:svn delete 或 svn del svn remove svn rmsvn delete svn://路径目录或文件的全路径 -m “删除备注信息文本”推荐如下操作:svn delete 文件名svn ci -m “删除备注信息文本”例子:svn delete svn://192.168.1.1/ trunk /main /test.c -m “删除测试文件 test.c”推荐如下操作:svn delete test.csvn ci -m “删除测试文件 test.c”svn delete path -m delete test fle 例如:svn delete svn://192.168.1.1/ trunk /main/test.c -m delete test file 或者直接 svn delete test.c 然后再 svn ci -m ‘delete test file‘推荐使用这种7、加锁/解锁命令:svn locksvn lock -m “加锁备注信息文本“ --force 文件名svn unlock 文件名 svn lock -m LockMessage --force PATH 例如:svn lock -m lock test file test.csvn unlock PATH例子:svn lock -m “锁信测试用 test.c 文件“ test.csvn unlock test.
php8、比较差异命令:svn diffsvn diff 文件名svn diff -r 修正版本号 m:修正版本号 n 文件名例子:svn diff test.
php<- 将修改的文件与基础版本比较svn diff -r 200:201 test.
php<- 对 修正版本号 200 和 修正版本号 201 比较差异 svn diff path将修改的文件与基础版本比较 例如:svn diff test.phpsvn diff -r m:n path对版本 m 和版本 n 比较差异 例如:svn diff -r 200:201 test.
php 简写:svn di9、将两个版本之间的差异合并到当前文件命令:svn merge svn merge -r m:n path 例如:svn merge -r 200:205 test.
php(将版本 200 与 205 之间的差异合并到当前文件但是一般都会产生冲突需要处理一下)10、查看文件或者目录状态命令:svn status 或 svn stsvn st 目录路径/名svn status 目录路径/名<- 目录下的文件和子目录的状态,正常状态不显示 【:不在 svn 的控制中; M:内容被修改;C:发生冲突; A:预定加入到版本库;K:被锁定】svn -v 目录路径/名svn status -v 目录路径/名<- 显示文件和子目录状态 【第一列保持相同,第二列显示工作版本号, 第三和第四列显示最后一次修改的版本号和修改人】注:svn status、svn diff 和 svn revert 这三条命令在没有网络的情况下也可以执行的, 原因是 svn 在本地的.svn 中保留了本地版本的原始拷贝。
1)svn status path(目录下的文件和子目录的状态正常状态不显示) 【:不在 svn 的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】 2)svn status -v path显示文件和子目录状态 第一列保持相同第二列显示工作版本号第三和第四列显示最后一次修改的版本号和修改人. 注:svn status、svn diff 和 svn revert 这三条命令在没有网络的情况下也可以执行的原因是svn 在本地的.svn 中保留了本地版本的原始拷贝.简写:svn st11、查看日志命令:svn logsvn log 文件名svn log path例子:svn log test.
php<- 显示这个文件的所有修改记录,及其版本号的变化12、查看文件详细信息命令:svn infosvn info 文件名 svn info path例子:svn info test.
php13、SVN 帮助命令:svn helpsvn help <- 全部功能选项svn help ci <- 具体功能的说明14、查看版本库下的文件和目录列表命令:svn list 或 svn lssvn list svn://路径目录或文件的全路径svn ls svn://路径目录或文件的全路径例子:svn list svn://192.168.0.3/testsvn ls svn://192.168.0.3/test <- 显示 svn://192.168.0.3/test 目录下的所有属于版本库的文件和目录15、创建纳入版本控制下的新目录命令:svn mkdirsvn mkdir 目录名svn mkdir -m 新增目录备注文本 http://目录全路径创建版本控制的目录.1、每一个以工作副本 PATH 指定的目录都会创建在本地端并且加入新增 调度以待下一次的提交.2、每个以 URL 指定的目录都会透过立即提交于仓库中创建.在这两个情况下所有的中间目录都必须事先存在.例子:svn mkdir newdirsvn mkdir -m Making a new dir. http://192.168.0.3/test/newdir注:添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”svn update注:如果手工在 checkout 出来的目录里创建了一个新文件夹 newsubdir, 再用 svn mkdir newsubdir 命令后,SVN 会提示: svn: 尝试用 “svn add”或 “svn add --non-recursive”代替? svn: 无法创建目录“hello”: 文件已经存在 此时,用如下命令解决: svn add --non-recursive newsubdir 在进入这个 newsubdir 文件夹,用 ls -a 查看它下面的全部目录与文件,会发现多了:.svn目录 再用 svn mkdir -m 添 hello 功能模块文件 svn://192.168.0.3/test/newdir/newsubdir 命令, SVN 提示: svn: File already exists: filesystem /data/svnroot/test/db transaction 4541-1 path /newdir/newsubdir 16、恢复本地修改 恢复原始未改变的工作副本文件命令:svn revertsvn revert --recursive 文件名注意: 本子命令不会存取网络,并且会解除冲突的状况。
但是它不会恢复被删除的目录。
例子:svn revert foo.c <- 丢弃对一个文件的修改svn revert --recursive . <-恢复一整个目录的文件,. 为当前目录17、代码库 URL 变更把工作拷贝更新到别的 URL命令:svn switch 或 svn swsvn switch http://目录全路径 本地目录全路径例子:svn switch http://192.163.0.3/test/456 . < - 原 为 123 的 分 支 当 前 所 在 目 录 分 支 到192.163.0.3/test/456svn switch sw: 更新工作副本至不同的 URL.用法: 1、switch URL PATH 2、switch –relocate FROM TO PATH...1、更新你的工作副本映射到一个新的 URL其行为跟“svn update”很像也会将 服务器上文件与本地文件合并.这是将工作副本对应到同一仓库中某个分支或者标记的 方法.2、改写工作副本的 URL 元数据以反映单纯的 URL 上的改变.当仓库的根 URL 变动 比如方案名或是主机名称变动但是工作副本仍旧对映到同一仓库的同一目录时使用 这个命令更新工作副本与仓库的对应关系.18、解决冲突 移除工作副本的目录或文件的“冲突”状态.命令:svn resolvedsvn resolved 本地目录全路径例子: svn updateC foo.cUpdated to revision 31.如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件: lsfoo.cfoo.c.minefoo.c.r30foo.c.r31当你解决了 foo.c 的冲突,并且准备提交,运行 svn resolved 让你的工作拷贝知道你已经完成了所有事情。
你可以仅仅删除冲突的文件并且提交,但是 svn resolved 除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的 相关文件然后让 PATH 可以再次提交.19、不 checkout 而查看输出特定文件或 URL 的内容命令:svn catsvn cat http://文件全路径svn cat 目标版本…如果指定了版本将从指定的版本开始查找.svn cat -r PREV filename filename PREV 是上一版本例子:svn cat http://192.168.0.3/test/readme.txt注:本文来源于网络,结合几篇网络资料整合而成,备份供自己以后查阅或需要之人下载使用
上一篇:
在线交友系统
下一篇:
感人的博士论文致谢词