前言 {#前言}
讲解 SVN 从创建到结束的完整流程是怎样的,包括创建 SVN 仓库,checkout检出代码,提交代码,更新代码等。
创建仓库 {#创建仓库}
仓库是开发者存储他们代码的中心,仓库里不仅存储了提交的文件,还需要存储每次的修改变动记录,也就是要维护文件的每次修改记录。
我们使用svnadmin create xxx
来创建一个仓库,这个只需要做一次。
检出 Checkout {#检出-Checkout}
检出就是把服务器上的代码下载到自己电脑上,我们电脑上的这份拷贝内容称之为工作空间,是每个开发人员自己的工作目录,在这里你可以对代码进行修改,之后可以把自己的改动提交到服务端。
通常这个操作也只需要一次,后续都是update操作,除非你的工作目录被破坏了,你可以删除目录重新checkout。
更新 Update {#更新-Update}
更新是把服务器上的代码同步到本地,如果有其他开发者提交了代码,这个操作之后我们就获取到了他提交的代码。
日常开发中,我们应该经常 update 下代码,及时同步别人的修改内容。
如果长时间不更新,可能会跟服务器上的代码差异很大,这时候更新产生冲突的可能性就大了很多,而且累计更新很多东西时,你解决冲突也是比较麻烦的,你需要从一堆变动中了解如何合并才是正确的。
修改代码 {#修改代码}
在检出代码后,我们就可以在自己电脑上开发功能、修改代码了。
修改也分为很多种,添加新文件我们称之为add,另外还有删除 remove,修改 modify。
新添加的文件/目录刚开始时补属于版本管理中的部分的,我们需要通过add操作把这些文件加入版本管理。
在本地删除文件/目录后,只是在我们的工作目录删除了,我们需要把这个删除变动提交到 SVN 服务端,这样文件才是真的从版本库删除了,这样其他人更新的时候才会同步删除那个文件。
检查变动 {#检查变动}
当你改动你工作目录的代码后,你本地的代码就跟服务器上的产生了差异,在提交代码前进行一下改动检查是非常有必要的。
我们可以点击 TortoiseSVN 的提交,在提交窗口会列出来变动的文件列表,双击具体的文件就可以展示差异diff了。
这样我们可以确认下自己的改动是否正确,有时候不小心改动到了一些不相关的代码,这个检查方式能很好的帮你发现问题。
丢弃修改 {#丢弃修改}
假设你提交检查diff时,发现某个文件的改动是错误的,我们想要撤销改动怎么办呢?直接右键选择 revert 就可以撤销本地修改了。
撤销本地修改后回到了修改前的样子。
解决冲突 {#解决冲突}
多人工作时,产生冲突有时候是难免的,多个人同时修改了同个文件的同一行,这种时候 SVN 就不知道到底谁的修改是正确的了,需要我们手动的去解决冲突。
日常多更新代码,多提交自己的变动到服务端,保持本地代码尽量跟其他人的是同步的,就不那么容易产生冲突了。
提交代码 {#提交代码}
在提交前进行变动的检查,查看diff前面已经说过了,是很有必要的。
等这些工作完成后,我们就可以把代码提交到 SVN 服务端了,SVN服务端是只有一个中心的,提交后大家都能更新到你的代码。
Git是分布式的,它的代码提交实际上只是提交到了自己本地的仓库,还需要push后才会推到服务端,其他人才能更新到他的代码,操作流程上比 SVN 复杂很多。