SVN使用教程

1、Eclipse3.2里配置svn的详细过程 

打开eclipse
1.点击help->
2.Software Updates->
3.Find and Install->
4.Search for new feature to install ->
5.New Remote Site->
6.Name:SubEclipse,URL:http://subclipse.tigris.org/update->
7.确定->
8.选择SubEclipse->
9.finish->
10.等待读取下载文件列表
11.选择subeclipse
12.next
13.I accept the .....next
14.finish
15.开始下载,漫长的等待过程...
16.Install al
17.安装完成后会提示是否重新启动eclipse,点击Yes
18.配置svn(svn://127.0.0.1)

2、SVN的安装及常用命令

SVN相信大家都有使用过或者听说过吧?它的好处我这里就不说了,网上介绍多的是。因为是版本控制,所以个人认为其设计的原理不需要懂得太多,只需要了解常识即可。小弟google了许久,也没找到一篇介绍快速入门的文章。无奈之下,看了几篇长篇大论,终于学了点点的皮毛。下面我将写一个svn快速入门系列,因为是快速入门,所以一般只讲操作。(这里有些内容都是参考 深入浅出系列之二_SubVersion)

    首先,我们下载svn安装文件,输入网址:http://subversion.tigris.org ,找到...more downloads...,然后找到windows那一块下载,注意,有两个版本Apache 2.0 or Apache 2.2 ,可以选择和你电脑里面apache服务器同样的版本下载。

    安装完成后,可在命令行输入svn --version查看是否安装成功,以及在系统变量里查看path是否增加了svn的安装目录。如下图:

    接着,在服务器端创立创库(repository)。a.手动在硬盘上创建一个文件夹。

   

    b.在命令行输入svnadmin create + 仓库目录。  创建版本库。如图:

SVN使用教程_第1张图片

    此时。仓库所在文件夹会多出几个文件,说明仓库创建成功。

    SVN此时已经在你的电脑里准备就绪,下面将介绍SVN的几个常用命令:import ,checkout,commit,update以及mkdir。

     在执行import,commit,update,mkdir的时候,svn需要记录操作日志,方法一:在系统环境变量增加一个SVN_EDITOR变量,该变量的值取为系统自带的记事本:notepad。方法二,建立一个log.txt,作为日志。(一般建议用方法二,所以我下面将用方法二)。

     为了便于在命令行下的操作,先设置svn为允许匿名帐号进行读写的操作:在仓库的conf目录下有一个文件svnserve.conf,用记事本打开,可以看到一行:#anon-access = read,意思为匿名用户有读的权限。将其前面的注释符#去掉。这一行即生效。再加上一行:anon-access = write,赋予匿名用户写的操作。如图:

SVN使用教程_第2张图片

    首先,启动服务: svnserve –d –r k:\repository,该命令含义为让SVN将此目录作为仓库,并侦听客户端的请求。其中-d的作用为后台模式,而-r的作用为指定服务器的仓库路径。

SVN使用教程_第3张图片

    建立新的命令提示符,执行mkdir命令在svn创建一个test的虚拟目录:  svn mkdir svn://localhost/test1 –F k:\log.txt   如图

  接着,创建一个test目录,里面新建一个text1.txt文件。:

    命令行转到test目录,执行import命令,将test上传到svn服务器。

SVN使用教程_第4张图片

   下面讲述checkout命令。

   首先新建一个文件夹test2,在命令行转到这个文件夹,执行:  svn checkout svn://localhost/test1。注意,check操作不需要写入log

 

   

   接着讲述commit命令.

   如图,更改checkout下来的text1.txt文件

 

在命令行执行commit命令:  svn commit text1.txt –F k:\log.txt

    最后讲述update命令:执行svm update text1.txt 取出text1.txt的最新版本。

到此.svn的基本命令讲完了,大家是不是觉得比较麻烦?没关系,下一篇将会介绍svn在windows下的操作.



3、windows下的操作

下面将介绍在windows下进行svn操作。

     为了安全着想,一般不允许匿名用户。所以将repository\conf目录下的svnserve.conf文件的anon-access = read和anon-access = write加上#注释掉,并将password-db = passwd前面的#去掉。意思为使同目录下的passwd文件生效。

SVN使用教程_第5张图片

    在同目录下的passwd文件里创建用户:qishan = qishan123   其中等号左边是用户名,右边是密码。

SVN使用教程_第6张图片

    注意:在一次登录后,SVN会将我们的登录信息保存起来存放在硬盘上的文件中,其存放位置为:C:\Documents and Settings\[你的登录系统用户名] \Application Data\Subversion,如果想要删除该信息,只需要将该目录中的auth文件夹删除即可。

    安装TortoiseSVN http://tortoisesvn.tigris.org   的下载地址如下:http://tortoisesvn.net/downloads

    import命令

    安装成功后,新建一个文件夹,里面建一个文件,在次文件夹点击鼠标右键,出现TortoiseSVN的命令菜单,然后选择import命令。将该目录导入服务器中。纳入svn的管理之下。

SVN使用教程_第7张图片

SVN使用教程_第8张图片

宿儒服务器地址及其说明

import成功!

checkout命令

新建一个文件夹test4,点击鼠标右键,选择checklou

输入要checkout的目录。

SVN使用教程_第9张图片

绿色图标表示文件版本和svn服务器版本一致.

SVN使用教程_第10张图片

修改text2.txt文件,保存后图标变成红色,表示与服务器版本不一致.

若确认修改,使svn服务器版本的文件和你所修改的文件一直,则需要commit命令

SVN使用教程_第11张图片

SVN使用教程_第12张图片

commit成功,图标又变成绿色,说明svn服务器里文件的版本已经更新为和你所修改的一致。

SVN使用教程_第13张图片

当别人提交修改后的text2.txt后.你原先checkout的是图标变成红色。

如果你想更新至svn服务器最新的版本。这个时候用update命令

注意:此时应该在text2.txt所在的文件夹鼠标右键点击svn update

此时图标将变回绿色,说明你的文件版本和服务器最新版本一致。

这个时候有个地方需要注意的是,如果你修改文件后,没有commit,但是想回复以前的版本,这个时候不能用update,只能删掉这个文件,重新checkout你想要的版本。

最后讲述add命令

在checkout的文件夹里新建一个文件。

执行add命令:

 

此时图标变成蓝色,说明此文件是新增的文件,但还没在服务器里面更新。

SVN使用教程_第14张图片

若要是svn服务器更新次文件,则对次文件执行commit命令。然后文件图标变成绿色。

 

SVN使用教程_第15张图片

SVN使用教程_第16张图片


4、SVN整合Eclipse

    我的eclipse版本是Version: 3.4.2。本身没有内置对sub的支持,需要去下载svn插件。

SVN使用教程_第17张图片

    在http://subclipse.tigris.org找到符合自己eclipse版本的插件的下载地址。

    我下载的是site-1.4.8.zip。

    然后在eclipse下安装SVN插件。(SVN下载页面也有安装的图解教程。不过我这个版本的和它的稍有不同。)

点击ADD Site。

SVN使用教程_第18张图片

点击 Archive。选择下载的压缩包。

SVN使用教程_第19张图片

还有另外一种更方便的安装方法。svnclipse网页上给出了Eclipse update site URL: http://subclipse.tigris.org/update_1.6.x

我们直接在这里把link输入,eclipse就会帮我们下载和安装。(由于我已经安装了,所以它提示已存在完全一样的插件)

SVN使用教程_第20张图片

安装成功后,重启eclipse。查看是否有Preferences->Team->SVN,有则说明安装成功。

新建一个项目。

SVN使用教程_第21张图片

新建一个类,写上一些代码。

SVN使用教程_第22张图片

在eclipse中打开SVN视图

SVN使用教程_第23张图片

在左边新建一个资源库位置

SVN使用教程_第24张图片

SVN使用教程_第25张图片

 

回到JAVAEE视图,将项目import到服务器服务器上:鼠标右键点击项目->Team->Share Project

SVN使用教程_第26张图片

选择SVN

SVN使用教程_第27张图片

使用刚才定位的仓库

SVN使用教程_第28张图片

在SVN视图里可以看到,项目已经导入

SVN使用教程_第29张图片



5、分支-合并:

首先说下为什么我们需要用到分支-合并。比如项目demo下有两个小组,svn下有一个trunk版。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版【主干线】的一个copy版,不过分支也是具有版本控制功能的,而且是和主干线相互独立的,当然,到最后我们可以通过【合并】功能,将分支合并到trunk上来,从而最后合并为一个项目。

下面是在eclipse下使用subeclipse插件详细使用过程:
首先建立一个工程,名字叫Facebook
1.建立分支,为新的分支指定访问URL:Facebook3[注释不要忘了]
SVN使用教程_第30张图片

SVN使用教程_第31张图片

SVN使用教程_第32张图片

2.建立好分之后,使用“切换”功能切换到分支下进行开发。
SVN使用教程_第33张图片

SVN使用教程_第34张图片
我新建了一个FB3.html的文件并在分支下进行提交。
SVN使用教程_第35张图片

SVN使用教程_第36张图片

3.切换回trunk版【即URL为Facebook的版本】
SVN使用教程_第37张图片
你会发现trunk版里并没有出现我们刚刚提交的FB3.html,因为FB3.html是属于分支的,接下来我们要做的就是“合并”,通过合并,我们可以将分支下进行的更改合并到trunk版里。
SVN使用教程_第38张图片

SVN使用教程_第39张图片

下面是合并的主要配置:
起始路径:trunk版的路径【若需要把trunk版的改动合并到分支则相反】
目标路径:从哪里获取改动【这里是分支路径】
你可以使用指定的版本号,这里采用最新修订版。

SVN使用教程_第40张图片

4.点击合并,你会发现trunk版下新增了一个文件FB3.html
这样我们就将分支下所做的改动合并到了trunk版里。


值得注意的是:
1.在建立分支的时候最好添加注释。
2.进行合并前最好保证两个版本都是干净的【即没有未提交或者冲突的文件存在】
3.合并时的目标路径:需要把谁的改动合并到其他版本就填谁的URL。


整个过程的SVN命令行输出如下:

Xml代码   收藏代码
  1. copy -rHEAD svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3  
  2. propset subclipse:tags "1538,Facebook2,/Facebook2,branch  
  3. 1540,Facebook3,/Facebook3,branch" E:/myeclipse/workspace/Facebook  
  4. switch svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3 E:/myeclipse/workspace/Facebook -rHEAD  
  5.     At revision 1541.  
  6. add -N E:\myeclipse\workspace\Facebook\WebRoot\FB3.html  
  7.     A         E:/myeclipse/workspace/Facebook/WebRoot/FB3.html  
  8. commit -m "" E:/myeclipse/workspace/Facebook/WebRoot/FB3.html  
  9.     Adding         E:/myeclipse/workspace/Facebook/WebRoot/FB3.html  
  10.     Transmitting file data ...  
  11.     Committed revision 1542.  
  12. switch svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook E:/myeclipse/workspace/Facebook -rHEAD  
  13.     D  E:/myeclipse/workspace/Facebook/WebRoot/FB3.html  
  14.     Updated to revision 1542.  
  15.     ===== File Statistics: =====  
  16.     Deleted: 1  
  17. merge svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook@HEAD svn://192.168.1.192/placii/staggingarea/xiangqi/Facebook3@HEAD E:/myeclipse/workspace/Facebook  
  18.     A  E:/myeclipse/workspace/Facebook/WebRoot/FB3.html  
  19.     Merge complete.  
  20.     ===== File Statistics: =====  
  21.     Added: 1  


希望本文能有所帮助。
其他参考资料:
http://www.iteye.com/wiki/subclipse/1626-subclipse-getting-started-guide-and-reference-c



===========================关于合并==========================
我在合并的时候发现,合并后文件被直接覆盖掉了,而没有出现本该出现的【冲突】,后来经过仔细研究发现,是操作问题。

SVN使用教程_第41张图片
假设我原来的项目是placii,建立了一个分支是placiiStore.现在需要将分支placiiStore合并到主干线上。那配置应该如图所示
1.【起始路径】:这里需要填分支的路径。
2.第一个修订号:建立分支时的版本号。在建立分支时候记录下svn的console
我的是
Xml代码   收藏代码
  1. copy -rHEAD svn://192.168.1.192/placii/trunk/code/server/source%20code/placii svn://192.168.1.192/placii/trunk/code/server/source%20code/placiiStore  
  2. propset subclipse:tags "1527,placiiStore,/source code/placiiStore,branch  
  3. 1549,placiiStore,/source%20code/placiiStore,branch" E:/myeclipse/workspace/placii  
  4. switch svn://192.168.1.192/placii/trunk/code/server/source code/placiiStore E:/myeclipse/workspace/placii -rHEAD  
  5.     At revision 1550.  

3.目标路径:这里使用起始路径。
4.目标版本号:使用最新版即 HEAD.

点击合并,如果有人在主干线版本上做了更改,而你再分支上也对这个文件作了更改,将会产生冲突。然后手动把冲突的代码合并一下,右键-标记为解决,这就达到我们的目的了。



7、

上一篇写了在eclipse里如何把project imp

ort到svn服务器里面,这篇将介绍在ecipse里执行svn的基本操作。

     这个是上次在eclipse里import后的项目截图:

SVN使用教程_第42张图片

    发现出现了问号,意思是unversioned。我们执行commit命令。右击项目-》Team-》提交

SVN使用教程_第43张图片

    提交后,项目右下方的小图标变成黄色的小瓶子,说明eclipse里面项目的版本和服务器里面项目的版本一致。如图:

    既然是版本控制,那仅仅在一个eclipse里面测试svn是没有意义的。所以我在本机安装了第二个eclipse模仿同个工作组的其他用户。

    第一个eclipse简称为A,第二个eclipse简称为B。

    如图,现在B建立svn服务器连接。

SVN使用教程_第44张图片

然后把svn服务器里面A上传的项目checkout到B上。

 

SVN使用教程_第45张图片

切换到javaee试图,发现项目已经checkout成功。

SVN使用教程_第46张图片

在B里添加一行代码,commit

SVN使用教程_第47张图片

这时候我们看A,它还没提示版本出现不同,但是代码还是原来那个。

SVN使用教程_第48张图片

这时候我们可以主动去比较A里面的HelloWorld文件和版本库的最新文件。

现在版本库的HelloWorld文件多了一行代码:

SVN使用教程_第49张图片

此时我们在A里面执行update命令,将A的项目更新到和版本库一致。

我们再修改A里面的HelloWorld,执行commit命令

SVN使用教程_第50张图片 

然后我们在B里面修改HelloWorld.大家注意,此时B里面的HelloWorld并没有update到A的修改.

SVN使用教程_第51张图片

执行commit命令

SVN使用教程_第52张图片

提示commit失败,所以我们只能先update.执行update命令:

SVN使用教程_第53张图片

我们会发现,多出了一些代码.其中.mine表示是我们自己修改的,版本库里面并没有的代码,我们只能手动删掉这些提示,如图:

再执行commit命令.

SVN使用教程_第54张图片

此时还是提示错误,再看一下文件,会发现多出了三个文件.

SVN使用教程_第55张图片

执行Team->标记为解决,消除这三个文件.

再次执行commit命令,终于成功了.

此时,我们可以把HelloWorld作为稳定文件,对其进行锁定.Team->锁定

SVN使用教程_第56张图片

此时,图标变成灰色的勾.

SVN使用教程_第57张图片

在解锁之前,不能再对其进行任何的修改操作.

我们对A惊醒update的操作.

若要将文件恢复到update之前的版本,先将HelloWorld解锁,然后Team->还原

SVN使用教程_第58张图片

若要将HelloWorld恢复到以前提交的版本,右键点击文件,replace with->Local History

选择我们需要的版本,可以查看两者的代码,然后replace

SVN使用教程_第59张图片

大家去eclipse的工作目录会发现,svn版本控制的项目子目录下都会有一个.svn的隐藏文件夹,如果我们要导出没有.svn的文件夹的项目,可以在项目里Team->导出

SVN使用教程_第60张图片

到此,eclipse下运行svn的基本命令已经讲完.


你可能感兴趣的:(SVN使用教程)