SVN常用功能

很多时候, 在linux环境下使用svn命令:

通常在上线之后,需要提交的代码都是通过补丁,然后使用SVN来提交。SVN常用命令:
svn revert file/path
svn diff  当打了补丁之后,可以使用该命令查看是否打上。
svn commit -m filename --username user  打了补丁之后,在执行之前要确认是否有新增的文件。
svn add new file 新文件,首先需要add. 然后才commit.   很多时候打patch提交会生成一些新的文件,上次报错就是因为没有打上svn add。

不常用命令:
svn update
svn help
svn login username 注意,daodao不仅要求登陆的时候使用username, 还需要在commit的时候指定--username。如果commit不指定username,默认是webadmin或root. 这是完全禁止的。

-------------------------------------------------------------------------------------------

 

一.tag,branch在项目中的使用

一般项目下面包含了trunk,tag,branch三个目录.

tag与branch的关系是tag的代码与branch同步,但是tag里面的代码不检出开发. 只有branch里面的代码检出开发.

一般的branch的开发流程:

1.将当前最新的branch version:6.0.0-patch2->copy to 6.0.0-patch3. 

2.在6.0.0-patch3基础上修改相应的代码.

3.修改完代码后,修改pom.xml,比如将之前version:6.0.0-patch2->6.0.0-patch3,相应的scm地址也要修改(虽然这些该分支暂时还没有上传,这些scm地址还不是有效,但是不影响)

<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<name>bizAdmin</name>
<groupId>***</groupId>
<artifactId>***-admin</artifactId>
<version>6.0.0-patch3</version>
<packaging>war</packaging>
<parent>
<groupId>***</groupId>
<artifactId>bizpom</artifactId>
<version>5.0.0</version>
</parent>
<description>Customer Service System</description>
<url>http://admin.cpc.***.com</url>
<inceptionYear>2008</inceptionYear>
<scm>
<connection>
scm:svn:http://*.*.*.*/svn/admincpc/branches/***-admin-6.0.0-patch3
</connection>
<developerConnection>
scm:svn:http:////*.*.*.*/svn/admincpc/branches/***-admin-6.0.0-patch3
</developerConnection>
<tag>HEAD</tag>
<url>
scm:svn:http:////*.*.*.*/svn/admincpc/branches/***-admin-6.0.0-patch3
</url>
</scm>
....
<!--如果该次branch的修改还涉及到依赖的底层项目,dependency里面的version也需要相应的更新成指定的版本号-->
<dependency>
<groupId>****</groupId>
<artifactId>***-common</artifactId>
<version>6.0.0-patch3</version>

<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</exclusion>
<exclusion>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
</exclusion>
<exclusion>
<groupId>struts</groupId>
<artifactId>struts</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.xerces</groupId>
<artifactId>xerces</artifactId>
</exclusion>
</exclusions>
</dependency>
...

4.将项目提交到当前的branch上

5.使用小乌龟repo browser查看项目地址, 比如http://192.168.41.8/svn/admincpc

在branches里面选择patch2右键copy to... 输入http://192.168.41.8/svn/admincpc/branches/****-admin-6.0.0-patch3,  svn会自动的建立相应的目录,并将patch2修改后的代码copy到里面. checkout path3的代码开发.开发完成后.

6.选择该branch 右键copy to... 输入http://192.168.41.8/svn/admincpc/tags/****-admin-6.0.0-patch3

这样就保证了tag里面的版本与branch里面的版本代码一致. OP只关心tag里面的版本. 会检查并部署.

7.修改trunk里面的代码(这个是当前项目的要求, 其实可以merge)

同时需要发送指定格式的邮件通知运维,

包括代码提交后的svn版本号. 代码的地址.

change**到文件系统. change**里面说明了详细的功能实现,负责人等.

------------------------------------------------------------------------------------------

如果要开发一个新的工程,可以先将仓库里的某个版本的项目导出到本地.按工程结构修改成自己需要的样子,然后重新定义工程名,scm地址,右键share project->svn->输入上传的路径, http://192.168.41.8/svn/autoaudit/trunk/(一般需要运维先建立相应的repository比如autoaudit).  注意,操作的结果还没有把本地的工程全部提交到svn服务器上,只是和SVN的地址建立了关联,工程里面产生了.svn目录. 将工程中除了.project, .settings, target, .classpath之外的文件全部添加并提交.

 

二. Relocate or Switch

修改了SVN服务器的地址之后, 针对已有的项目可以利用小乌龟的relocate重现定位即可.

在eclipse里面, 对于新打的分支,不需要将旧的分支删除, 再将新的checkout. 只需要在工程上右键 switch branch到已经建好的新的分支地址即可. 这样减少大量的配置工作.

posted @ 2011-06-08 18:45  highriver  阅读(1642)  评论(0编辑  收藏  举报