工作必备基础 - 仓库与开发者

  • 作者:KK

  • 发表日期:2015.12.27


代码仓库跟小俩口的关系

不管他们结不结婚,反正我把他们给结了!走,下图↓↓↓↓↓

如上图所示,无非就是一个开发人员提交文件到代码仓库,其他同事从代码仓库更新文件下来的行为。而这个代码仓库在我们这个教学演示中,它就是E:\测试代码仓库文件夹

实际工作中,代码仓库不会存在你电脑上,而是放在一台内网公共服务器中,但只要你和这个仓库在同一个内网的网段中,就可以下载这个仓库的内容

其实SVN是一个CS模式的软件,代码仓库就是SVN服务器,开发者就在SVN的客户端,我们的一切文件增删改查都是基于与SVN服务器的通讯下进行的,只是在这里,我们依然抽象地说服务器就是仓库

我们现在学习中使用的这款TortoiseSVN其实主要是客户端的多,它也能创建一个服务端,只是它的服务端功能实际上我也没在工作中使用过,因为我在工作中是使用Linux的SVN服务器的

一些历史

你了解以上概念后,相信也就清楚了为什么SVN适合用在项目开发中,特别是多人合作时,至少比你们自己互相手动传文件方便得多是吧?另外有个历史你也应该稍微了解一下,代码管理其实以前就有一个流行的软件叫CVS,但使用过程中发现了好些不足,所以有人决心开发了SVN来取代它。而如今,其实还有人开发东西来取代SVN,只是暂时未能完全取代,那个东西叫Git。至少SVN是足够普通项目管理需要的,CVS就像古时候的马车,SVN就像现在的普通汽车,Git就好像是电动车一样,我想大概这么比喻应该没错吧?


获取外网的代码仓库内容

我们也与互联网相通,于是,互联网上的SVN仓库我们也可以下载,只要有仓库地址就好了

我这里提供apache项目的一部分内容SVN仓库地址(有点长哦):

http://svn.apache.org/repos/asf/accumulo/site/trunk/maven-site/accumulo-core/xref/org/apache/accumulo/core/security

你可以试着创建E:\apache目录,再在里面右键选择"SVN 检出",填写这个地址然后确定检出

由于这是一个大项目,文件数可能会很多,你现在应该看到更新列表持续不断地被刷新,所以需要耐心等待它下载这个仓库的所有文件直到完毕

之所以我们前面学习取出仓库资料时一下子就成功,是因为我们的仓库是新建的,空空如也,但如果你入职了一家公司,他们一般都有了SVN仓库,并且开发了好一些阶段,肯定不是空的啦,所以那时候你也会需要等待一些时间来待它下载完代码的了


检出子目录

上面我们将检出了

http://svn.apache.org/repos/asf/accumulo/site/trunk/maven-site/accumulo-core/xref/org/apache/accumulo/core/security

这个地址,检出后可以看到里面有一些文件和子目录,比如有个tokens的子目录啦,你进去可以看到一些html文件,然后你试着再创建一个目录去检出

http://svn.apache.org/repos/asf/accumulo/site/trunk/maven-site/accumulo-core/xref/org/apache/accumulo/core/security/tokens

这个地址,注意是在原来的地址后面添加了/tokens,然后就发现,检出的目录就只有tokens这个目录的文件而已,没有之前外面那些文件了,这就是检出子目录


这个仓库地址怎么是个网址?

是的,它真是一个网址,你放浏览器上还真能看到网页!

其实SVN的仓库地址不一定只有一种形态的,有网址形态,也有其它形态,比如我们之前的file:///E:/测试代码仓库,以后你还会接触到svn://xxx.xxx.xxx.xxx/...的形态呢

但无论怎样,反正它们都是一个地址的概念,表示了网络上的某一个资源,最终还不只是一串字符而已吗?你反正想办法搞到一串正确的,可以检出不报错的字符串,那这就是一个有效的SVN仓库地址咯


其实仓库是有权限设置的

刚才我们检出了apache项目的一部分SVN内容,如果你是一个多动症孩纸,肯定会想着能不能改一下它的文件内容,试试吧,随便找个文件随便修改一下它的内容,然后提交……

哈哈,被提示提交失败了是吧?

因为别人的代码仓库设置了权限,没有经过他们认证的开发者是禁止提交的,但拥有只读权限,所以我们能检出/下载文件,但不能提交/上载

但我们这里学习SVN的话,本地这个测试仓库暂时就不设置什么权限了,所以小明和小红都能随意修改提交里面的程序文件