版本控制 - SVN

什么是源代码管理(版本控制)工具: 就是用来管理我们源代码的一个软件。

常见的源代码管理工具/软件:

1. CVS

  • 开启版本控制之门。1990年诞生,“远古时代”的主流源代码管理工具。

2. SVN —— 集中式(全称 Subversion)

  • 是集中式源代码管理工具。它是版本控制之王,它是CVS的接班人,速度比CVS快,功能比CVS强大,在国内使用最为普遍(70%-90%),源代码只有在公司才可以拿走,公司为了维护利益采用SVN。

3. GIT —— 分布式

  • 是分布式源代码管理工具。目前被越来越多的开源项目使用,在国外比较火,国内还没有大范围普及,不在公司也可以被随意把源代码拿走。

SVN

  1. 概念:

    • Repository 代码仓库,保存代码的仓库
    • Server 服务器,保存所有版本的代码仓库
    • Client 客户端,只保存当前用户的代码仓库
    • 用户名&密码 访问代码仓库需要使用自己的”用户名和密码”,从而可以区分出不同的人对代码做的修改
  2. 操作:

    • checkout 将服务器上最新的代码仓库下载到本地,”只需要做一次”
    • update 从服务器上将其他人所做的修改下载到本地,”每天上班必须要做的事情”
    • commit 将工作提交到服务器,”每天下班之前至少做一次”
  3. SVN服务器端的安装配置:

    • 使用源代码管理工具,实际上是服务器端在帮我们管理源代码。写完源代码后,把源代码托管到服务器上,服务器帮我们管理。当我们需要更新/提交源代码时,只需要去服务器里进行提交,在服务器里进行更新。
  4. 操作流程:

    • 项目经理初始化项目:项目经理先在服务器上创建一个代码仓库,然后程序员才能在这个代码仓库里共享代码。

    • 1> 把服务器仓库里全部代码下载到本地。这个操作一般是第一次做,以后每次只需更新一下即可。下载整个项目工程(只做一次): svn checkout 服务器地址 --username=用户名 --password=密码

      • 项目经理在本地初始化一个项目,即创建一个基础项目。初始化完项目后,需要把创建的项目提交到服务器上。以供其他人下载。
    • 2> 提交代码(常用):svn commit -m "注释/备注,即本次提交的描述,都提交了些什么内容”
    • 3> 下载/更新代码(常用):svn update
  5. SVN的使用环境
    要想利用SVN管理源代码,必须得有2套环境

    • SVN服务器:

      • 用于存储客户端上传的源代码
      • 可以在Windows上安装 Visual SVN Server 软件
      • 下载地址:http://www.visualsvn.com/server/download/

        大部分情况下,公司的开发人员不必亲自搭建SVN服务器,项目经理会搭建。

    • 客户端 :

      • 上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步 。可以在Mac上使用命令行、Versions、Cornerstone、Xcode图形化管理软件(这些软件的本质是集成了命令,是对命令进行了封装)

      开发人员就属于客户端这个角色

    • UNIX常用命令


    • 基本命令:

      cd 改变工作目录

      pwd 输出当前工作目录的绝对路径

      在UNIX中要执行什么命令,一定要知道自己当前所在的工作目录

      ​ ls 查看文件

      ​ ls -a 显示所有文件
      ​ ls -l 列表显示文件
      ​ ls -la 列表显示所有文件

      创建文件:touch main.m

      打开文件:open main.m

      连续查看文件内容:cat main.m

      分页查看文件内容(分页查看:内容太多会分页):more main.m

    • svn常用命令:

      注意错误提示:”is not a working copy”,必须在svn的工作目录下才能正确使用svn的命令

      查看svn有哪些命令:svn help

      查看文件的状态(判断文件是否已添加到代码仓库):svn status

      将新的文件添加到SVN本地代码仓库中:svn add main.m

      (用touch创建的文件,必须要写这条命令;如果是用Xcode创建的文件,Xcode会自动帮我们添加到本地仓库中,不需要再执行add命令)

      将本地仓库中的文件提交到服务器仓库中:svn commit -m “注释”
      解决冲突:svn resolved person.
      查看更新的版本日志:svn log

    • 本地文件状态说明:描述文件被添加、删除或其他修改


    ‘?’ :新建的文件还没有被添加到本地仓库管理里。svn不识别该文件,或者该文件被删除过, 或者该文件是新添加的文件还没有被本地代码仓库进进行管理。

    ‘A’ : 文件被添加到本地代码仓库,但是还未添加到服务器中(服务器的仓库还未管理该文件)文件已经被添加到本地仓库管理中(执行了svn add命令),但是还未添加到服务器中(服务器的仓库还未管理该文件)。

    ‘M’ : 本地文件被修改。该文件已经被本地仓库管理,并且服务器仓库也有该文件。该状态表示新修改了文件,修改的内容还没有被提交到服务器。

    ‘D’ : 被删除。该文件已经在本地进行了删除,但是还没有将删除操作共享给服务器。

    ’ ‘ : 没有修改

    ‘C’ : 冲突

    ‘I’ : 被忽略

    ‘R’ : 被替换

    ‘X’ : 外部定义创建的版本目录

    ‘!’ : 文件丢失或者不完整(不是通过svn命令删除的文件)

    ‘~’ : 受控文件被其他文件阻隔


新人加入公司一般要做什么事情:

  1. 配置电脑和开发的软件环境。
  2. 向项目经理要 SVN服务器的地址 、SVN账号、密码。(项目经理会去SVN服务器里配置一个user,然后把你加入到代码仓库的某一个组里面)
    获取公司项目代码:svn checkout 服务器地址 –username=用户名 –password=密码
  3. 需求文档(知道:功能有哪些、界面有哪些、怎么布局、详细需要做哪些需求,产品人员提需求)
  4. 接口文档(知道:怎么去服务端请求数据)
  5. 效果图 (界面布局的详细参数,设计来做)

命令总结

  1. 将服务器完整的代码下载到本地(只做一次)
    svn checkout 服务器地址 –username 用户名 –password 密码
  2. 将文件添加到svn本地仓库管理(只限用命令touch创建的文件,用Xcode创建的文件省略这一步)
    svn add 文件名
  3. 提交代码
    svn commit -m “提交的注释说明”
  4. 更新代码
    svn update

文件冲突:

  • 报错:…out of date:文件过期
  • 解决:

​ 把本地的代码更新到最新版本,再提交。
​ 再提交如果有冲突(conflict)需解决一下冲突问题,再提交就OK。

  • 什么情况下不能提交代码?

​ 当本地的版本号小于服务器的版本号时代码是不能提交。

  • 出现冲突时,终端会让你选择下一步的操作select:
    • (p) postpone:对比所有的冲突(会生成几个临时文件)。
    • (mc) mine-conflict:使用我的。当发生代码冲突的时候,使用我的代码。覆盖服务器代码。
    • (tc) theirs-conflict:使用对方的。当发生代码冲突的时候,使用服务器的代码。覆盖本地代码。

​ 注意:使用mc和tc总会覆盖一个人的代码。

  • 冲突代码对比:

    ​ <<<<<<<< .mine

    ​ 表示该位置是我的代码

    ​ =============

    ​ 该位置是服务器的代码

    ​ >>>>>>>> .r11

SVN版本回退

  • 思路一:
    • 本地回退到第6个版本:svn update -r 6
    • 然后对本地版本6进行少许编辑,目的是再提交使产生冲突。
    • 冲突后,选择使用我的代码(mc)以提交后覆盖服务端的代码。
    • 提交:svn commit -m “回退到第六个版本”
  • 思路二(推荐):
    • 本地回退到第6个版本的内容。合并命令:svn merge -r 11:6 main.m
    • (将文件mian.m的内容从 版本11的内容 回退到 版本6的内容)
    • 提交:svn commit -m “回退到第六个版本”

Cornerstone 图像化管理工具

  1. 添加一个远程仓库(可以通过图形化界面工具查看远程仓库里有哪些代码,之前我们是通过浏览器和服务器才能查看)
    点击Add Repository —》选择HTTP Server —》填写服务器地址、端口、路径、昵称、用户名、密码。

  2. 导出代码库到本地,点击checkout按钮下载整个仓库

  3. 本地目录下使用Xcode新建项目(注意:不要勾选 git,两套源代码管理同时存在会发生冲突)

  4. 提交代码(一般不用xcode来提交源代码,因为会提交一些无效的代码,如:记录、日志、路径配置等文件)

    注意:多个人不能同时修改storyboard,这样很容易出现冲突,不好修改。

如何上传静态库?

  • 打包成静态库(.a文件),可以把一些文件打包成.a静态库。(如,可以把所有的.m文件打包成静态库)

    如:svn add libRegex.a

  • 忽略一些不需要上传的文件:

    提交文件时需要忽略的文件有(提交的文件要都是别人用得着的文件):

  • xcode的配置文件:

    xcshareddata文件:记录了远程仓库的地址,每个人都有自己的远程仓库地址,你不需要把自己的地址共享给别人。

    xcuserdata文件:它里面包含了文件夹的打开结构/当前用户停留在哪一个文件中/用户打的断点。

    项目经理初始化项目时,需要删除一些不需要的文件(如配置文件、这些文件在开发中不需要每个人都提交),删除后,程序员在开发中提交代码时就会自动忽略掉这些不需要的文件。

SVN仓库目录结构:

  • trunk(主干目录:项目最新版本的开发目录,目前项目正在开发的版本,通常进入公司之后在该目录下开发)
  • tags(备份目录:做重大项目版本的备份,可以备份项目的某一个版本。一般存放已经上线的重大版本)
  • branches(分支目录:做旧版本修复。操作步骤:先把备份目录中的需要修复的版本项目拷贝到分支目录中,然后进行修复工作,修复完后再把修复的版本在tags目录下备份一份,最后把修复的版本和trunk主干目录下的最新版本进行合并)
    • 当历史版本发生重大bug或者有新需求时,需要在branches目录下进行开发。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值