首先,我们下载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此时已经在你的电脑里准备就绪,下面将介绍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,赋予匿名用户写的操作。如图:
首先,启动服务: svnserve –d –r k:\repository,该命令含义为让SVN将此目录作为仓库,并侦听客户端的请求。其中-d的作用为后台模式,而-r的作用为指定服务器的仓库路径。
建立新的命令提示符,执行mkdir命令在svn创建一个test的虚拟目录: svn mkdir svn://localhost/test1 –F k:\log.txt 如图
接着,创建一个test目录,里面新建一个text1.txt文件。:
命令行转到test目录,执行import命令,将test上传到svn服务器。
下面讲述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下的操作.
下面将介绍在windows下进行svn操作。
为了安全着想,一般不允许匿名用户。所以将repository\conf目录下的svnserve.conf文件的anon-access = read和anon-access = write加上#注释掉,并将password-db = passwd前面的#去掉。意思为使同目录下的passwd文件生效。
在同目录下的passwd文件里创建用户:qishan = qishan123 其中等号左边是用户名,右边是密码。
注意:在一次登录后,SVN会将我们的登录信息保存起来存放在硬盘上的文件中,其存放位置为:C:\Documents and Settings\[你的登录系统用户名] \Application Data\Subversion,如果想要删除该信息,只需要将该目录中的auth文件夹删除即可。
安装TortoiseSVN http://tortoisesvn.tigris.org 的下载地址如下:http://tortoisesvn.net/downloads
import命令
安装成功后,新建一个文件夹,里面建一个文件,在次文件夹点击鼠标右键,出现TortoiseSVN的命令菜单,然后选择import命令。将该目录导入服务器中。纳入svn的管理之下。
宿儒服务器地址及其说明
import成功!
checkout命令
新建一个文件夹test4,点击鼠标右键,选择checklou
输入要checkout的目录。
绿色图标表示文件版本和svn服务器版本一致.
修改text2.txt文件,保存后图标变成红色,表示与服务器版本不一致.
若确认修改,使svn服务器版本的文件和你所修改的文件一直,则需要commit命令
commit成功,图标又变成绿色,说明svn服务器里文件的版本已经更新为和你所修改的一致。
当别人提交修改后的text2.txt后.你原先checkout的是图标变成红色。
如果你想更新至svn服务器最新的版本。这个时候用update命令。
注意:此时应该在text2.txt所在的文件夹鼠标右键点击svn update
此时图标将变回绿色,说明你的文件版本和服务器最新版本一致。
这个时候有个地方需要注意的是,如果你修改文件后,没有commit,但是想回复以前的版本,这个时候不能用update,只能删掉这个文件,重新checkout你想要的版本。
最后讲述add命令
在checkout的文件夹里新建一个文件。
执行add命令:
此时图标变成蓝色,说明此文件是新增的文件,但还没在服务器里面更新。
若要是svn服务器更新次文件,则对次文件执行commit命令。然后文件图标变成绿色。
我的eclipse版本是Version: 3.4.2。本身没有内置对sub的支持,需要去下载svn插件。
在http://subclipse.tigris.org找到符合自己eclipse版本的插件的下载地址。
我下载的是site-1.4.8.zip。
然后在eclipse下安装SVN插件。(SVN下载页面也有安装的图解教程。不过我这个版本的和它的稍有不同。)
点击ADD Site。
点击 Archive。选择下载的压缩包。
还有另外一种更方便的安装方法。svnclipse网页上给出了Eclipse update site URL: http://subclipse.tigris.org/update_1.6.x
我们直接在这里把link输入,eclipse就会帮我们下载和安装。(由于我已经安装了,所以它提示已存在完全一样的插件)
安装成功后,重启eclipse。查看是否有Preferences->Team->SVN,有则说明安装成功。
新建一个项目。
新建一个类,写上一些代码。
在eclipse中打开SVN视图
在左边新建一个资源库位置
回到JAVAEE视图,将项目import到服务器服务器上:鼠标右键点击项目->Team->Share Project
选择SVN
使用刚才定位的仓库
在SVN视图里可以看到,项目已经导入
首先说下为什么我们需要用到分支-合并。比如项目demo下有两个小组,svn下有一个trunk版。由于客户需求突然变化,导致项目需要做较大改动,此时项目组决定由小组1继续完成原来正进行到一半的工作【某个模块】,小组2进行新需求的开发。那么此时,我们就可以为小组2建立一个分支,分支其实就是trunk版【主干线】的一个copy版,不过分支也是具有版本控制功能的,而且是和主干线相互独立的,当然,到最后我们可以通过【合并】功能,将分支合并到trunk上来,从而最后合并为一个项目。
下面是在eclipse下使用subeclipse插件详细使用过程:
首先建立一个工程,名字叫Facebook
1.建立分支,为新的分支指定访问URL:Facebook3[注释不要忘了]
2.建立好分之后,使用“切换”功能切换到分支下进行开发。
我新建了一个FB3.html的文件并在分支下进行提交。
3.切换回trunk版【即URL为Facebook的版本】
你会发现trunk版里并没有出现我们刚刚提交的FB3.html,因为FB3.html是属于分支的,接下来我们要做的就是“合并”,通过合并,我们可以将分支下进行的更改合并到trunk版里。
下面是合并的主要配置:
起始路径:trunk版的路径【若需要把trunk版的改动合并到分支则相反】
目标路径:从哪里获取改动【这里是分支路径】
你可以使用指定的版本号,这里采用最新修订版。
4.点击合并,你会发现trunk版下新增了一个文件FB3.html
这样我们就将分支下所做的改动合并到了trunk版里。
值得注意的是:
1.在建立分支的时候最好添加注释。
2.进行合并前最好保证两个版本都是干净的【即没有未提交或者冲突的文件存在】
3.合并时的目标路径:需要把谁的改动合并到其他版本就填谁的URL。
整个过程的SVN命令行输出如下:
7、
上一篇写了在eclipse里如何把project imp
这个是上次在eclipse里import后的项目截图:
发现出现了问号,意思是unversioned。我们执行commit命令。右击项目-》Team-》提交
提交后,项目右下方的小图标变成黄色的小瓶子,说明eclipse里面项目的版本和服务器里面项目的版本一致。如图:
既然是版本控制,那仅仅在一个eclipse里面测试svn是没有意义的。所以我在本机安装了第二个eclipse模仿同个工作组的其他用户。
第一个eclipse简称为A,第二个eclipse简称为B。
如图,现在B建立svn服务器连接。
然后把svn服务器里面A上传的项目checkout到B上。
切换到javaee试图,发现项目已经checkout成功。
在B里添加一行代码,commit
这时候我们看A,它还没提示版本出现不同,但是代码还是原来那个。
这时候我们可以主动去比较A里面的HelloWorld文件和版本库的最新文件。
现在版本库的HelloWorld文件多了一行代码:
此时我们在A里面执行update命令,将A的项目更新到和版本库一致。
我们再修改A里面的HelloWorld,执行commit命令
然后我们在B里面修改HelloWorld.大家注意,此时B里面的HelloWorld并没有update到A的修改.
执行commit命令
提示commit失败,所以我们只能先update.执行update命令:
我们会发现,多出了一些代码.其中.mine表示是我们自己修改的,版本库里面并没有的代码,我们只能手动删掉这些提示,如图:
再执行commit命令.
此时还是提示错误,再看一下文件,会发现多出了三个文件.
执行Team->标记为解决,消除这三个文件.
再次执行commit命令,终于成功了.
此时,我们可以把HelloWorld作为稳定文件,对其进行锁定.Team->锁定
此时,图标变成灰色的勾.
在解锁之前,不能再对其进行任何的修改操作.
我们对A惊醒update的操作.
若要将文件恢复到update之前的版本,先将HelloWorld解锁,然后Team->还原
若要将HelloWorld恢复到以前提交的版本,右键点击文件,replace with->Local History
选择我们需要的版本,可以查看两者的代码,然后replace
大家去eclipse的工作目录会发现,svn版本控制的项目子目录下都会有一个.svn的隐藏文件夹,如果我们要导出没有.svn的文件夹的项目,可以在项目里Team->导出
到此,eclipse下运行svn的基本命令已经讲完.