repository 仓库、源代码库、版本库。位于服务器上,一般存放一个项目,团队共用。
checkout 提取、检出。从仓库copy一个副本到本地。
update 更新。从服务器获取更新,将本地的这个副本更新到指定的版本(默认是最新的版本)。
revert 恢复、还原。相当于Ctrl+Z。
diff 查看更改的详细信息。
commit 提交。修改完成后,要将项目提交给仓库,大家就可以看到你的修改了。如果两个程序员同时修改了同一个文件, 服务器会合并(merge)这两个程序员的改动。实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认修改。
branch 分支。希望开发进程分开成两条不同的线路时,可以建立一个分支,分支其实就是 trunk 版(主干线)的一个copy版,不过分支也是具有版本控制功能的,而且是和主干线相互独立的,分支开发完毕后,通过 merge(合并)功能,将分支合并到 trunk 上来,从而合并为一个项目。
tag 标签,给某一个具体版本起一个有意义的名字。主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布等,它往往代表一个可以固定的完整的版本,比如tag v2.0
SVN的特点:
- 版本历史。能够保留全部版本记录,对文件、目录的增、删、改、重命名等操作都保存在版本历史记录当中。
- 原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。
- 对于二进制文件,只保存和上一个版本不同之处,节省了空间。
- 优化了数据库访问,使得一些操作不必访问数据库就可以做到,减少了很多不必要的和数据库主机之间的网络流量。
服务器操作的步骤:
1、新建一个版本库
2、添加开发小组的成员
可查看所有版本的更改信息、下载某个版本。
本地操作步骤:
1、将项目发布至版本库(服务器)
如果是本地服务器,点击右边的".."即可选择版本库对应的文件夹。
如果是远程服务器: svn:// 远程主机的IP地址或域名地址:端口号/版本库名 缺省端口号时使用默认的。
2、从服务器下载项目
在要存储项目的位置,单击右键,(下载的项目默认存储到此文件夹里,也可以后面自己选择存储位置,不影响)
3、下载项目后,自己可以修改项目,与此同时,别人可能会提交自己的修改到服务器,我们update一下,就可以将别人提交的修改同步到本地。
对项目单击右键:
上面的是更新整个项目,我们可以只对某个文件、某个文件夹单击右键,这样只更新该文件、文件夹。
是更新到最新版本。我们也可以更新到指定的版本:
4、我们修改完成后,需要把修改后的项目提交到服务器。
对项目单击右键
上面是提交了整个项目的修改。我们可以只单击某个文件、文件夹,这样只提交这个文件、文件夹的修改。
删除了某些文件、文件夹后,要提交才会同步到服务器。missing,表示该文件已被删除,要勾选才会在服务器同步删除此文件。
如果新建了某个文件、文件夹,而此文件、文件夹在以前的版本中没有,可以按照上面的方式随整个项目一起提交修改。如果只想提交新建的部分:
对新建的文件、文件夹单击右键
5、查看不同版本的更改
对要查看的文件、文件夹单击右键
6、版本回退
如果这个项目、文件、文件夹被改废了,或者想回退到某个版本、某个节点:
对要回退的项目、文件、文件夹单击右键
Revert是回退到上一次Commit时的状态。
7、如果想增加一些新功能,或者要避免损坏原来的版本,可以新建一个分支(branch),在分支上开发。可以在某个文件、文件夹、整个项目上新建分支。
分支创建完成后,并不会生成新的文件、文件夹来保存新的分支。
8、创建新分支后,原来的分支默认为trunk(主干、主分支)。
切换到该分支后,该文件/文件夹就是该分支的文件/文件夹,进行开发即可。
8、分支开发完成后,需要把分支合并到主干(trunk)。
至此合并已完成,commit到服务器。查看版本:主干v7,分支v8,已经合并为v9。 主干是单独的一列。
工作大体流程:
第一天开始开发时,checkout检出副本到本地。
之后每天开始工作之前,我们总是update更新一下,获取同事做的更改。
之后我们自己在本地做一些修改、开发。
完成后commit提交给服务器。