淘淘商城第8讲——向SVN服务器提交代码

回顾一下之前所新建的SVN仓库

在上一讲中,我们一起学习了如何来安装SVN服务器并且新建了一个名称为taotao-javaee的空的仓库,如下图所示。
在这里插入图片描述
从上图中我们可以清楚地看到taotao-javaee仓库下有三个空的文件夹,它们分别是branches、tags以及trunk,你不仅就要问了,这三个文件夹分别代表什么意思呢?下面我就来告诉大家,如有讲得不好的地方,还请指出,大家可以一起讨论。

branches

branches文件夹代表的是分支。如何理解分支这一概念呢?举个例子,我们在开发项目时往往会分版本,比如1.0、2.0之类的,当我们开发完1.0版本之后,往往就要拉一个分支出来,这时主干继续开发2.0版本。但是1.0版本上线之后肯定会遇到一些bug,遇到bug我们肯定要处理啊,那么我们在哪儿进行处理呢?答案是在分支上,因为主干上的代码加入了很多新特性,还未经过详细测试,不稳定性比较高,而分支上的代码是旧的代码,并没有加入新特性,因此改动起来更简单也更稳定些。当然了,在分支上改完之后,肯定要把分支上修改的代码合并到主干上来,因为我们不能让1.0版本的bug在2.0版本再重现。如果修复的是1.0版本的bug,那么修改完之后新建版本应该是1.1、1.2、1.3等等。

tags

tags文件夹代表的是标签,它主要是记录一些关键时间点,比如某个版本发布的时间,某个大的bug修改的版本等,我们在tags做下标记,这样方便我们根据标签找回我们想要的以前某个版本的代码。

trunk

trunk文件夹代表的是主干,它是我们平时开发所在的目录,也就是说在正常情况下,我们开发的代码应放在主干这儿。

主干的代码始终是最新的,版本也是不稳定的,需要经过多轮测试才能验收通过,这时再新建分支,然后接着开发新的版本。

你有可能对于这句话,不是那么的很明了,接下来,希望通过我比较通俗的话语可以让你理解得更加的深刻。举个例子,比方说我们开发一个项目,就拿淘淘商城这个项目来说,该淘淘商城项目有不同的版本进行迭代,例如taotao v1.0taotao v2.0taotao v3.0、······,这些不同的版本是主干上的版本。当我们开发出来taotao v1.0这个版本之后,就得发布一版。接下来,我们就要继续开发taotao v2.0这个版本了,这个时候我们依然是在主干上进行开发的。那么好了,现在taotao v1.0这个版本有bug了,改不改呢?那当然得改了,改的时候,能在主干上改吗?答案是不能。这个时候,主干已经开发完taotao v2.0这里面的功能了,你即便是在taotao v2.0这个主干上改完了,你也不能进行发布。因为taotao v2.0增加了一些新的功能,可能都还没有进行测试,这个时候,你再重新发布,那就肯定会包含一些有问题的功能点,所以,你不能在主干这儿改。

taotao v1.0这个版本一旦发布了之后,你就应该建一个分支(branches),然后主干继续向前开发。如果分支这里面有bug,那么就在分支里面进行修改,这样势必就会出现taotao v1.1taotao v1.2taotao v1.3等这些小版本号。在分支里面改完bug之后,要不要合并到主干呢?这肯定要合并到主干,因为你都知道有bug了,难道主干就不改了吗?难道你还能把这个bug带到taotao v2.0版本中吗?所以你得把分支里面修改的内容合并到主干,这样保证我们主干里面的内容是最新的。我们主干一旦把taotao v2.0这个版本开发完,并且测试完之后,再为该版本建一个分支,接着继续开发taotao v2.0这个版本。

由于我们现在还处于开发项目的过程中,所以我们应该把代码上传到trunk主干之上。

上传代码

要向SVN服务器上传代码,首先我们需要知道上传的地址,如何获取要上传的地址呢?很简单,方法是在trunk文件夹上右键,再在其子菜单中点击Copy URL to Clipboard,如下图所示。
在这里插入图片描述
粘贴我们刚才复制的URL到记事本上,你便可以看到https://liayun:8443/svn/taotao-javaee/trunk这样的一个URL,它是以https开头的,也就是安全模式,https默认的端口号是433,如果本地有进程占用了433端口请先关掉那个进程。

上传代码秉承先独立后依赖的原则。比方说,taotao-parent就是个独立的工程,它并没有依赖任何别的工程,因此我们便先上传它,然后taotao-common工程只依赖了taotao-parent,而其他工程都依赖于它,因此第二个便上传taotao-common工程,接着taotao-manager工程依赖于taotao-common,因此我们第三个便上传taotao-manager工程,这里值得说明的是,由于taotao-manager是个聚合工程,它聚合了下面四个子工程,因此我们只需要上传taotao-manager工程即可,不用再单独上传它下面的四个子工程。最后我们上传taotao-manager-web工程。

上传taotao-parent工程的代码

第一步,我们在taotao-parent工程上右键,然后在其子菜单中选择Team,接着再在其子菜单中点击Share Project...,如下图所示。
在这里插入图片描述
第二步,弹出如下窗口,并在窗口中选择SVN,然后点击Next按钮。
在这里插入图片描述
第三步,我们可以看到如下图所示的窗口,在该窗口中,我们选择使用默认的创建新的资源库位置,然后点击Next按钮。
在这里插入图片描述
第四步,我们会看到如下图所示的窗口,然后在URL一栏中输入我们上面复制过来的URL,然后点击Next按钮。
在这里插入图片描述
第五步,在弹出的如下窗口中,我们使用默认配置即可,然后点击Finish按钮。
在这里插入图片描述
第六步,此时,会弹出如下窗口,让我们输入SVN的用户名和密码,输入完之后,记得勾选保存密码前面的框框,然后点击OK按钮。
在这里插入图片描述
第七步,此时我们会看到如下图所示的窗口,点击Yes按钮即可。
在这里插入图片描述
第八步,此时,我们会进入同步视图,在同步视图中我们可以看到本地和服务端的差异。
在这里插入图片描述
第九步,我们在上传文件前需要先排除不需要上传的文件,比如.settings文件,我们就不能上传到服务端,因为每一个人的本地的配置都有一个.settings,并且都不一样,如果你传上去,别人一更新,那么你的.settings就会覆盖他本地,可能就造成这个工程坏了,各种各样奇怪的问题都会随之出现,所以最好不要把.settings传上去,也就是说这个时候.settings就需要被忽略。

那么如何忽略该文件呢?我们可以在其上右键,并在右键菜单中点击添加至svn:ignore(D),如下图所示。
在这里插入图片描述
然后,我们会看到如下图所示的窗口,点击OK按钮即可。
在这里插入图片描述
接着,我们就可以看到我们的taotao-parent工程已经没有.settings文件了。
在这里插入图片描述
以上这种方式只针对当前文件有效。其实,忽略某些文件还有另外一种方式,即配置忽略规则,这种方式更好一点。

那么如何来配置忽略规则呢?首先,点击Eclipse菜单栏中的Window菜单,在其下拉列表中选择Preferences,如下图所示。
在这里插入图片描述
然后,弹出如下窗口,并在该窗口的左侧找到Team,在Team下有一项Ignored Resources,我们点击它,在右侧可以看到当前默认添加的忽略的资源,还可以看到,其中并没有忽略.settings文件和.project文件,因此我们需要把这两个加到这里面来。
在这里插入图片描述
接着,我们点击Add Pattern...按钮,会弹出添加忽略格式的窗口,我们在输入框中输入.settings,然后点击OK按钮,如下图所示。
在这里插入图片描述
添加完.settings之后,我们再来添加.project,这时我们可以看到在忽略的资源当中已经有我们刚才输入的.settings和.project了,紧接着,依次点击ApplyOK按钮。
在这里插入图片描述
最后,忽略完.settings和.project这两个文件之后,我们可以看到工程下已经没有他俩了,而且这样做,以后其它项目在提交的时候也会自动忽略掉.settings和.project这俩文件。
在这里插入图片描述
第十步,我们开始把taotao-parent工程的代码上传到服务器。首先右键taotao-parent工程,然后在其子菜单中点击提交(C),如下图所示。
在这里插入图片描述
正式提交前需要写下提交的内容,如下图所示,然后点击OK按钮。
在这里插入图片描述
提交完taotao-parent工程的代码之后,我们来看下SVN服务器上是否已经有我们刚才上传的工程了,刷新一下trunk文件夹,发现它下面确实出现了taotao-parent工程了,这已然说明taotao-parent工程的代码上传成功了!
在这里插入图片描述