代码管理工具-SVN-(1)


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-(1)


SVN 目录规范

正规项目的SVN目录结构一般有3个文件夹

trunk:主干,当前开发项目的主目录

branches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中

tags:标记目录,通常作为重大版本的备份


SVN 的使用注意事项

.svn这个隐藏目录记录着非常关键的信息

千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作

经常更新:降低冲突的可能性

提交前需在本机测试通过:降低将问题代码传到版本库

提交时一定写备注(注释):方便其他员工查看和自己以后回顾

对于不需要提交的文件不要提交到版本库


提示

每次修改之前最好先更新

每天下班前提交当天运行通过的代码

每天上班第一件事情更新前一天的代码




你可能感兴趣的:(SVN,指令,介绍和使用)