1. 源代码管理工具
用处: 管理代码中出现的各种问题
常见问题:
1>错误操作,不能返回之前状态
2>版本备份,浪费时间/空间
3>因版本备份过多,引发的混乱,不宜找到想要的版本
4>代码冲突:如多人操作统一文件;这是团队开发中常见的问题
5>权限控制:无法对源代码进行精确的权限控制
6>追究责任,开发中出现问题,BUG 等问题,不能追到问题出于谁之手
作用:
1>追踪到项目从诞生到定安的过程
2>记录一个项目的所有内容变化
3>方便查询任一个版本的修订情况
只要我们进入公司,无论单人还是团队合作都必须使用源代码管理工具
优点:
使用简单,不会增加工作负担
不会对工作造成任何损害
是一个合格程序员必须掌握的技能
分类:
1> CVS 鼻祖 1990, 不再使用,不多做介绍
2> SVN Subversion 集中式 版本控制之王
现今国内使用较多
3> GIT 一种分布式代码管理工具
开源项目使用都在使用
SVN
1>基本操作:
checkout 从服务器上的所有代码文件下载到本地; 本次操作一般只使用一次,也就是进入公司的开始
update 将服务器上的修改后的代码文件更新到本地, 更新的是被修改后的文件,上班前 update 前一天的整合后的代码
commit 将个人的修改后的代码文件提交给服务器(只提交修改后的) 每天下班班之前,commit 一个可运新版本
在提交之前已经有人提交会报一个 out of date的错误,我们提交文件必须是自己修改之前的版本, 解决方法: 将服务器上更新的文件再 update 一次, 再进行整合
版本控制策略:
拷贝—修改—拷贝
其他策略: (VSS)加锁—修改—解锁,一个人下载后,锁定服务器,其他人不能访问,只有解锁后这才能使用
2>服务器端配置搭建
安装软件—>创建代码仓库—>访问权限设置—用户和分组—>使用 URL 访问服务器代码仓库
服务器:
用于存储客户端上传的代码
可以在 windows 上安装 Visual SVN Server
大部分情况下,公司上班人员不必搭建
3>客户端使用
上传本地的源代码到服务器,或更新服务器代码到本地,保持代码同步
使用命令行, versions, cornerstone
UNIX 常用指令
-- help 帮助, 查看所有相关的命令
pwd 查看文件路径
ls 查看文件夹中所有的文件
ls -a 查看隐藏文件夹
ls -la 查看所有文件
tab键自动补全文件名,只能补全所写名字是唯一的
touch 创建文件
open 查看文件
cat 查看文件内容
more 查看文件更多的内容
SVN 常用指令
svn checkout :下载服务器的代码到本地 (简写svn co)
svn commit :将改动的文件提交到服务器(简写svn ci)
svn update :更新服务器的代码到本地 (简写svn up)
svn add :向本地的版本控制库中添加新文件
svn delete、svn remove :从本地的版本控制库中删除文件(简写svn del、svn rm)
svn move :移动文件或者目录或文件更名
svn mkdir :创建纳入版本控制下的新目录
svn revert :撤销之前的一切修改
svn merge :将两个版本之间的差异合并到当前文件
svn info :查看文件的详细信息
svn diff :查看不同版本的区别
svn log :查看日志信息
svn list :列出版本库下的文件和目录列表
svn status :查看文件状态(简写svn st)
svn help :获取帮助信息(比如svn help ci)
svn lock :加锁
svn unlock :解锁
将项目下载至本地
svn checkout URL [PATH]
svn co URL [PATH]
注意:这里的中括号[ ]代表可选(可以省略)
示例
svn checkout https://192.168.1.10/svn/WeiXin/ /Users/lnj/Documents/workspace
蓝色代表的是:代码仓库的远程地址
橙色代表的是:将代码下载到本地的哪个路径
如果省略橙色的路径,就下载到命令行当前所在的路径
如果多个用户要连接服务器,我们可以使用下面命令来添加用户
svn checkout URL - -username=用户名 - - password=密码
如果要上传多个文件,可以在文件后面加空格,再跟文件名
提交
将改动过的文件提交至服务器
svn commit -m "注释" [PATH]
svn ci -m "注释" [PATH]
注意:一定要养成写注释的良好习惯
示例
svn commit -m “修改了User.m文件” /Users/lnj/Desktop/workspace/WeiXin/branches/User.m
橙色代表的是:提交哪个文件到服务器
如果省略橙色的路径,就将命令行所在路径中所有改动过的文件提交到服务器
添加新的文件
提交一个新建的文件到服务器,需要2个步骤
添加新建的文件到本地的版本控制库中:svn add
提交刚才的添加操作到服务器:svn commit
如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误
is not a working copy
向本地的版本控制库中添加一个新文件
svn add PATH
示例
svn add /Users/lnj/Desktop/workspace/WeiXin/branches/User.m
橙色代表的是:添加哪个文件到版本控制库中
删除
删除服务器上的某个文件,需要做2个步骤
将文件从本地的版本控制库中移除:svn delete 、svn remove
提交刚才的删除操作到服务器:svn commit
将文件从本地的版本控制库中移除
svn delete PATH
示例
svn delete /Users/lnj/Desktop/workspace/Weixin/branches/User.m
橙色代表的是:将哪个文件从版本控制库中移除
当我们中有人删掉了其中的一个文件,如果不上传一下,服务器中的文件依然存在,因为删除的是本地文件
更新
将服务器的最新代码更新到本地
svn update [PATH]
示例
svn update /Users/lnj/Desktop/workspace/WeiXin/branches/User.m
橙色代表的是:更新哪个文件的内容
如果省略橙色的路径,就更新命令行所在路径的所有内容
将文件恢复至某个版本
svn update -r 版本号 [PATH]
我们在这里一般配合 svn log 一起使用,log 命令可以查看我们之前提交过的各个版本信息,以及我们的注释,很好的帮助我们找到自己想要的版本
SVN 的反悔操作
1>没有提交到服务器:
没有提交到服务器使用 revert 可以有效, 一旦提交到服务revert 就没有效果
2>修改后并且提交到服务器
使用 update和版本号进行恢复
在反悔之前还可以查看修改的日志信息
日志信息有很大帮助,显示修改时间,修改的地方
解决源代码冲突
多个人修改同一份代码造成的
是用自己的代码解决冲突 mc
使用服务器代码解决冲突 tc
手动解决代码冲突 p : 会备份服务器上的冲突文件
解决问题
再看文件夹
此时可以提交代码
在公司使用SVN 的一般流程
去公司上班第一天,我们要从公司的服务器上将代码下载到电脑上,使用
svn checkout
在工作中发现,某个早已存在的旧文件有问题,修改一下,然后提交到服务器,我们使用
svn commit
,经理说要添一点功能啊什么的,提交一个自己新建的文件到服务器的时候
svn add 和 svn commit配合使用
哎呀,这个文件太老了可以不用了—删除,然后同步到服务器上,这时候使用
svn delete 和 svn commit 配合使用
团队合作开发中,每个同事每天都将完成自己的任务及时更新到服务器,我们要将其他同事提交的新代码更新到自己电脑上
svn update
哎呀呀,这一点不小心写错了或者那一点不小心删错了,想撤销所写的东西(还好没有提交到服务器)
svn revert 一旦提交到服务revert 命令就没有效果
不小心写错了很多东西 or 不小心删错了,想撤销所写的东西(但已经把修改提交到服务器)怎么破????,没关系,我们使用
svn update -r 版本号
SVN 目录规范
正规项目的SVN目录结构一般有3个文件夹
trunk:主干,当前开发项目的主目录
branches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中
tags:标记目录,通常作为重大版本的备份
SVN 的使用注意事项
.svn这个隐藏目录记录着非常关键的信息
千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作
经常更新:降低冲突的可能性
提交前需在本机测试通过:降低将问题代码传到版本库
提交时一定写备注(注释):方便其他员工查看和自己以后回顾
对于不需要提交的文件不要提交到版本库
提示
每次修改之前最好先更新
每天下班前提交当天运行通过的代码
每天上班第一件事情更新前一天的代码