`
56553655
  • 浏览: 203015 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

肖芳城:svn命令小集

阅读更多

一、 基本概念

版本库:服务器上的文件目录
工作拷贝:svn co分支到你本地的文件夹目录
工作副本:co到本地的目录下的每个文件夹里的.svn文件夹。记录了"帮助 Subversion 识别哪些文件做过修改,哪些文件相对于别人的工作已经过期"的信息。

二、SVN版本比对原理

通过.svn与版本库比对。
".svn"文件夹下记录2个信息:
1、是当前用户co下分支的版本号,
2、是记录用户本地修改的最后时间戳。
通过以上2个信息,版本库能识别不同的状态,从而给予或限制用户做什么类型的操作。
	
当出现版本库中该分支已经有人提交代码(即版本库中该分支的版本更新),并且本地自己有修改,此时,如果用户提交,版本库先比较用户本地工作拷贝.svn中的版本和版本库版本,同时比较时间。她将需要用户先svn up,然后看看是否有冲突,没冲突再svn ci。

三、svn常用命令

以rate应用为例,实际说明操作。
1、svn cp
svn cp http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100810_7368_2 http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV -m"xfc cp"
【注】:该动作已经由aone接手操作。
2、svn co(svn checkout)
svn co http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV rate (【注】:自定义目录,本地目录)
3、svn st
!       biz/remark/src/java/com/alibaba/china/rate/biz/remark/service/impl/RemarkServiceImpl.java
D       biz/remark/src/java/com/alibaba/china/rate/biz/remark/service/impl/RemarkTempServiceImpl.java
?       biz/remark/src/java/com/alibaba/china/rate/biz/remark/util/MyTestUtil.java
A       biz/remark/src/java/com/alibaba/china/rate/biz/remark/util/MyTestUtil2.java
X       deploy/jboss_server
M       web/remark/src/java/com/alibaba/china/rate/remark/web/action/ListsAction.java
?       bundle/war/src/webroot/META-INF/autoconf/log4j.xml.r250274
?       bundle/war/src/webroot/META-INF/autoconf/log4j.xml.mine
?       bundle/war/src/webroot/META-INF/autoconf/log4j.xml.r250702
C       bundle/war/src/webroot/META-INF/autoconf/log4j.xml
【注】:
"!"表示:本地执行了"rm -rf",但是未执行"svn del"的状态。
"?"表示:本地新加了一个文件,但是未执行"svn add"的状态。
"A"表示:本地新加了一个文件,且执行了"svn add"的状态。
"X"表示:执行了"svn external"的状态。
"D"表示:本地执行了"rm -rf",且执行了"svn del"的状态。
"M"表示:本地修改了该文件时的状态。
"C"表示:冲突状态,是重点关注状态之一。
产生的场景:A\B两个开发修改同一处代码,其中A开发已经提交,B开发在svn up的时候,就会出现conflict的提示,需要用解决冲突后,svn resolved下,具体见svn resolved。

4、svn up
【注】:当出现多个开发在同一个项目中开发同一个应用分支时,提交代码前都需要先做一次"svn up",保证合并最新代码,同时解决本地冲突。

5、svn info
【注】:一般用于获取当前分支url。
6、svn diff
M       web/remark/src/java/com/alibaba/china/rate/remark/web/action/ListsAction.java
【注】:以上这个""状态的文件,想看它相对你最新一次co的版本修改了那些,可以使用:
svn diff web/remark/src/java/com/alibaba/china/rate/remark/web/action/ListsAction.java
"-"是本地删除的行。
"+"是本地增加的行。
7、svn revert
【注】:当你发现某个你修改的文件你不想修改了,怎么办:svn revert。
svn revert web/remark/src/java/com/alibaba/china/rate/remark/web/action/ListsAction.java
然后svn st下,你会发现改文件M状态已经没了。
8、svn resovled
【注】:如上面3(svn st),当出现"svn up"下来的文件和本地的有冲突(即出现C状态)的时候,冲入如何解决呢?
a,打开文件:vi bundle/war/src/webroot/META-INF/autoconf/log4j.xml
b,你会发现有这么3个标识:
<<<<<<< .mine
=======
>>>>>>> .r250702
另外还有3个文件:
?       bundle/war/src/webroot/META-INF/autoconf/log4j.xml.r250274
?       bundle/war/src/webroot/META-INF/autoconf/log4j.xml.mine
?       bundle/war/src/webroot/META-INF/autoconf/log4j.xml.r250702
	
以上意思是:"<<<<<<< .mine""======="之间的是你本地添加到内容。"======="">>>>>>> .r250702"部分的就是svn up下来的内容。
c,捞出修改这部分代码的开发,跟他一起确认如何解决冲突。
d,当确认了解决方案,解决了冲突,就删除类似以上那3个标识。
最后:svn resovled bundle/war/src/webroot/META-INF/autoconf/log4j.xml
冲突解决。你会发现上面的3个文件不翼而飞了。
9、svn ci
【注】:提交本地修改代码到服务器。
svn ci -m"modify remark log4j conf."
10、svn log
【注】:显示提交的日志信息
默认,显示该分支的所有相关版本提交日志。
如果只想显示自己打的分支,提交的日志情况,可以使用"—stop-on-copy"即可(stop前是2个"-")。
11、svn merge
【注】:合并分支。需要将老的修改合并到最新打出来的分支。
【注】:恢复旧版本。
当新打一条分支:
svn cp http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/trunk http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV2 -m"xfc cp"

现在要将老分支(http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV)的修改合并到新分支(http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV2)上,步骤如下:
(1)co下新分支。
svn co http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/trunk http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV2 ratenew
(2)查看老分支提交日志。
svn log --stop-on-copy http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV
------------------------------------------------------------------------
r250702 | fangcheng.xiaofc | 2010-08-17 20:38:19 +0800 (二, 17  8月 2010) | 1 line

xfc ci
------------------------------------------------------------------------
r250272 | fangcheng.xiaofc | 2010-08-17 10:14:33 +0800 (二, 17  8月 2010) | 1 line

xfc cp
以上"r250272"版本是本分支最老的版本号,最新版本可用"HEAD"表示。
(3)合并老分支对应版本到新分支。
xfc@xfc:~/ratenew/20100817_xfc_DEV2$ svn merge --dry-run -r250272:HEAD http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV
--- Merging r250273 through r250724 into '.':
U    bundle/war/src/webroot/META-INF/autoconf/log4j.xml
"--dry-run"是假合并,并没有真正合并分支修改到新分支,如果要真做,删除该参数。

恢复旧版本,只要把版本次序倒过来:
svn merge HEAD :-r250272 http://svn.alibaba-inc.com/repos/ali_cn/olps/rate/branches/20100817_xfc_DEV
svn merge的原理是比对版本差异,然后把差异的内容应用、合并到本地工作拷贝中。高版本:低版本,相当于"相对于高版本,低版本删除或者修改了那些内容"

四、乌龟的使用

乌龟通常方便用于svn ignore和svn external这2个属性的设置上。


 
右键点击"deploy"的"show properties"可以查看到:


 
点击"new","edit"可以新增,修改svn属性。

  • 大小: 42.1 KB
  • 大小: 89.8 KB
分享到:
评论

相关推荐

    svn命令大全.docx

    例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 二、add 命令 add 命令用于将文件添加到版本库中。语法:svn add file 例如:svn add test.php(添加 test.php) svn add *.php(添加当前目录下...

    svn在linux下的使用(svn命令)

    例如:svn checkout svn://192.168.1.1/pro/domain 2. 往版本库中添加新的文件 svn add 命令用于将新的文件添加到版本库中。例如:svn add test.php(添加 test.php)svn add *.php(添加当前目录下所有的 php ...

    svn linux下命令详解

    例如:svn checkout svn://192.168.1.1/pro/domain。 2. 往版本库中添加新的文件 svn add 命令用于将文件添加到版本库中。该命令的基本语法为:svn add &lt;文件名&gt;。例如:svn add test.php(添加 test.php 文件),...

    SVN常用命令集合及简单用法

    1. 检出文件:svn checkout path(path 是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 这条命令用于从 SVN 服务器上检出文件到本地目录。 2. 添加新文件:svn add file 例如:...

    linux系统下svn服务器操作命令

    1. 将文件 checkout 到本地目录:svn checkout path(path 是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2. 往版本库中添加新的文件:svn add file 例如:svn add test.php...

    jenkins上传scn插件:svn publisher plugin

    jenkins上传scn插件:svn publisher plugin jenkins上传scn插件:svn publisher plugin

    转svn-E170001报错的原因以及解决方案.docx

    svn-E170001报错是指在使用Jenkins配置svn拉取项目时出现的一种错误,错误信息为svn: E170001。该错误的出现是由于svn账户名和密码没有权限所导致的。 svn-E170001报错的原因: 1. svn账户名和密码没有权限:svn...

    linux下svn基本命令.pdf

    例如:svn checkout svn://192.168.100.249/server 简写:svn co 这条命令将服务器上的文件检出到本地目录中,以便进行后续的修改和提交。 2. 将文件添加到版本库 svn add file 例如:svn add test.c (添加 ...

    SVN报错:Error Updating changes:svn:E155037的解决方案

    在使用Subversion (SVN) 进行版本控制时,可能会遇到各种错误,其中之一就是"Error Updating changes: svn:E155037"。这个错误通常表明在执行SVN操作时发生了问题,可能是由于文件或目录的锁、冲突或其他内部数据库...

    linux下svn常用命令

    1、 将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn: // 192.168 . 1.1 / pro / domain 简写:svn co 2、 往版本库中添加新的文件 svn add file 例如:svn add test....

    linux下的 svn命令

    例如:`svn checkout svn://192.168.1.1/pro/domain`。 2. **添加(Add)**: `svn add` 用于将新文件或目录添加到版本控制。如:`svn add test.php` 添加单个文件,`svn add *.php` 添加当前目录下所有PHP文件。 3. ...

    ubuntu SVN命令大全

    - URL 映射:`svn switch --relocate svn://192.168.1.1/pro/domain svn://192.168.1.1/pro/newdomain` **功能说明**: - `svn switch` 命令用于将工作副本切换到一个新的 URL 或进行 URL 映射。 - 当切换到新 URL ...

    版本控制器:SVN---使用说明

    版本控制器:SVN---使用说明 版本控制器:SVN是一种开源的版本控制系统,旨在解决软件开发过程中的代码管理问题。本文将对 SVN 的使用进行详细的解释,并提供实用的操作指南。 1. 版本控制的必要性 在软件开发...

    linux下SVN命令全解

    svn checkout svn://192.168.1.1/pro/domain ``` 2. **Add**: `svn add` 用于将新文件或目录添加到版本控制中。如: ``` svn add test.php svn add *.php ``` 3. **Commit**: `svn commit` 或 `svn ci` ...

    svn具体操作步骤

    svn checkout svn://localhost/itcast F:\develop\workroom\user 这将从itcast仓库中检出项目到F:\develop\workroom\user目录下。 2. svn add 命令 svn add 命令用于将文件添加到仓库中,例如: svn add a.txt ...

    linux下的svn命令操作大全借鉴.pdf

    使用 `svn checkout` 命令可以将文件从版本库 checkout 到本地目录中,例如:`svn checkout svn://192.168.1.1/pro/domain`,简写为 `svn co`。 2. 往版本库中添加新的文件 使用 `svn add` 命令可以将新的文件添加...

    svn命令大全

    **示例**: `svn checkout svn://192.168.1.1/pro/domain` **简写**: `svn co` **解释**: 这条命令用于将远程版本库中的文件或目录Checkout到本地目录。当你第一次从版本库获取文件或目录时,可以使用此命令。 ####...

    svn命令操作手册大全

    **SVN 命令操作手册大全** **一、Svnadmin 概述** Svnadmin 是 Subversion(简称 SVN)中的一个管理工具,用于创建、维护和操作 SVN 仓库。它提供了对仓库的底层控制,允许管理员执行如创建、备份、恢复等高级操作...

Global site tag (gtag.js) - Google Analytics