zoukankan      html  css  js  c++  java
  • iOS-源代码管理工具(SVN)

    一、使用环境

    要想利用SVN管理源代码,必须得有2套环境
    服务器
    用于存储客户端上传的源代码
    可以在Windows上安装Visual SVN Server
    大部分情况下,公司的开发人员不必亲自搭建SVN服务器
     
    客户端
    上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
    可以在Mac上使用命令行、Versions、Cornerstone
    开发人员就属于客户端这个角色
     
    Visual SVN Server下载地址
    http://www.visualsvn.com/server/download/
     
     
    二、Visual SVN Server安装
     
     
     
     
     
     
     
     
     
    三、SVN 使用
     
    1.创建代码仓库
     
     
     
     
    2.添加用户
     
    3.设置权限
     
    4.访问SVN服务器
     
     
    三、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 :解锁
     
     
    四、命令使用
     
    1.检出
    将项目检出(下载) 至本地
    svn checkout URL  [PATH]
    svn co URL  [PATH]

    注意:这里的中括号[ ]代表可选(可以省略)

    示例

    svn checkout  https://192.168.1.106/svn/Weibo/ /Users/lnj/Documents/workspace

    蓝色代表的是:代码仓库的远程地址
    橙色代表的是:将代码下载到本地的哪个路径
    如果省略橙色的路径,就下载到命令行当前所在的路径
     
    2.提交
    将改动过的文件提交至服务器
    svn commit  -m "注释"  [PATH]
    svn ci  -m "注释"  [PATH]

    注意:一定要养成写注释的良好习惯

    示例

    svn commit  -m “修改了User.m文件” /Users/lnj/Desktop/workspace/Weibo/branches/User.m

    橙色代表的是:提交哪个文件到服务器
    如果省略橙色的路径,就将命令行所在路径中所有改动过的文件提交到服务器
     
    3.添加
    提交一个新建的文件到服务器,需要2个步骤
    添加新建的文件到本地的版本控制库中:svn add
    提交刚才的添加操作到服务器:svn commit
    如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误
    is not a working copy
     
    向本地的版本控制库中添加一个新文件
    svn add PATH
    示例

    vn add /Users/lnj/Desktop/workspace/Weibo/branches/User.m

    p橙色代表的是:添加哪个文件到版本控制库中
     
    4.删除
    删除服务器上的某个文件,需要做2个步骤
    将文件从本地的版本控制库中移除:svn delete 、svn remove
    提交刚才的删除操作到服务器:svn commit
     
    将文件从本地的版本控制库中移除
    svn delete PATH
     
    示例

    svn delete /Users/lnj/Desktop/workspace/Weibo/branches/User.m

    橙色代表的是:将哪个文件从版本控制库中移除
     
     
    5.更新
    将服务器的最新代码更新到本地
    svn update [PATH]
     
    示例

    svn update /Users/lnj/Desktop/workspace/Weibo/branches/User.m

    橙色代表的是:更新哪个文件的内容
    如果省略橙色的路径,就更新命令行所在路径的所有内容
     
    将文件恢复至某个版本
    svn update -r 版本号 [PATH]
     
    6.常见问题总结
    去到公司的第一天,下载公司的代码到电脑上
    svn checkout
     
    修改了某个早已存在的旧文件,然后提交到服务器
    svn commit
     
    提交一个自己新建的文件到服务器
    svn add à svn commit
     
    删除一个早已存在的旧文件,然后同步到服务器上
    svn delete à svn commit
     
    将其他同事提交的新代码更新到自己电脑上
    svn update
     
    不小心写错了很多东西,想撤销所写的东西(还未把修改提交到服务器)
    svn revert
     
    不小心删错了文件,想把文件恢复回来(还未把删除提交到服务器)
    svn revert
     
    不小心写错了很多东西,想撤销所写的东西(已经把修改提交到服务器)
    svn update -r 版本号
     
    不小心删错了文件,想把文件恢复回来(已经把删除提交到服务器)
    svn update -r 版本号
     
    注意
    .svn这个隐藏目录记录着非常关键的信息
    千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作
     
     
    五、图形界面工具
    在Mac上,也可以利用SVN图形界面工具来管理源代码,可以大大减小使用命令行的痛苦(有些操作使用命令行会比较繁琐,比如解决冲突)
    Cornerstone / Versions / Xcode
    大部分工作在Xcode中都可以完成
    Xcode对SVN的支持并不是非常友好,尤其新建文件夹时,在Xcode中非常容易出问题
     
    使用Xcode工作:先更新,再提交!
    Xcode中,最好不要多人同时修改一个Storyboard!
     
    1.Cornerstone添加管理仓库
     
     
    2.Xcode5-SVN配置
    1>添加SVN地址
    Xcode 5 is in Xcode > Preferences > Accounts > Repositories (menu on the left) > (+) Add Repository
     
     
     
     
    2>Xcode5-下载服务器代码
     
     
     
    目录规范
    正规项目的SVN目录结构一般有3个文件夹
    trunk:主干,当前开发项目的主目录
    branches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中
    tags:标记目录,通常作为重大版本的备份
     
     
    笔记
    复制代码
      1 01.    源代码管理工具概述(PPT)
      2 ================================================================================
      3 
      4 * 源代码管理工具的作用:
      5 # 能追踪一个项目从诞生一直到定案的过程
      6 # 记录一个项目的所有内容变化
      7 # 方便地查阅特定版本的修订情况
      8 
      9 * 如果是团队开发,使用源代码管理工具是强制性的!
     10 * 如果是单人开发,也强烈建议现在就开始使用源代码管理工具
     11 
     12 * 使用源代码管理工具
     13 # 由于使用简单,不会增加工作量
     14 # 不会对现有工作造成任何损害(坏的影响)
     15 # 是一位合格的软件开发人员必须掌握的技术
     16 
     17 02.    SVN介绍(PPT)
     18 ================================================================================
     19 
     20 SVN 是集中式源代码管理工具
     21 
     22 概念:
     23 1> Repository   代码仓库,保存代码的仓库
     24 2> Server       服务器,保存所有版本的代码仓库
     25 3> Client       客户端,只保存当前用户的代码仓库
     26 4> 用户名&密码   访问代码仓库需要使用自己的"用户名和密码",从而可以区分出不同的人对代码做的修改
     27 
     28 操作:
     29 1> checkout     将服务器上最新的代码仓库下载到本地,"只需要做一次"
     30 2> update       从服务器上将其他人所做的修改下载到本地,"每天上班必须要做的事情"
     31 3> commit       将工作提交到服务器,"每天下班之前至少做一次"
     32 
     33 03.    SVN服务器安装 Visual SVN Server
     34 ================================================================================
     35 提示:一般程序员是没有机会安装SVN服务器的,以下内容仅供了解服务器上的安装及配置过程
     36 
     37 * Visual SVN Server 是运行在windows操作系统上的,集成了Subversion和Apache
     38 * 傻瓜式安装一步到位,并提供了图形化界面,安装简单配置方便
     39 * 下载地址:http://www.visualsvn.com/server/download/
     40 
     41 1>  安装
     42 *   程序目录
     43 *   代码仓库目录
     44 
     45 2>  添加代码仓库"weibo"
     46 *   暂时不勾选默认结构(trunk, branches, tags)
     47 
     48 3>  添加用户
     49 *   为了方便后续的演练,每个用户的口令不要设置成一样
     50 #   用户名     口令
     51 #   manager   jingli
     52 #   zhangsan  zhang
     53 #   lisi      li
     54 
     55 4>  添加群组,通过群组可以一次性设置多个用户对代码仓库的访问权限,便于管理
     56 
     57 5>  设置权限演练
     58 *   选中项目的代码库,点击右键,选择"Properties"
     59 
     60 6>  协议
     61 *   https   端口 443
     62 *   http    端口 80
     63 
     64 7>  协议的修改
     65 *   选中"VisualSVN Server",点击鼠标右键,选择"Properties"
     66 *   选择"Network",勾选"Use secure connection"会使用https协议访问服务器的代码仓库
     67 
     68 补充:HTTPS = HTTP + SSL
     69 注意:有关https的概念暂时不要纠结,有一个印象就可以!后面课程安全部分会讲到!
     70 --------------------------------------------------------------------------------
     71 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer)是以安全为目标的HTTP通道,
     72 简单讲是HTTP的安全版
     73 
     74 HTTPS提供了身份验证与加密通讯方法,现在被广泛用于互联网上安全敏感的通讯,例如交易支付方面
     75 
     76 HTTPS的证书需要申请认证,这一认证是付费的,认证网站 http://cn.globalsign.com/
     77 
     78 8>  使用浏览器浏览代码仓库
     79 如果使用了https协议,在不同的浏览器中访问,显示效果会不太一样
     80 
     81 04.    SVN演练准备
     82 ================================================================================
     83 
     84 1>  显示隐藏文件夹
     85 # 显示隐藏文件
     86 $ defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
     87 # 不显示隐藏文件
     88 $ defaults write com.apple.finder AppleShowAllFiles No && killall Finder
     89 
     90 2>  在桌面上新建一个文件夹 "svn演练"
     91 依次建立以下三个目录
     92 #   经理
     93 #   张三
     94 #   李四
     95 
     96 05.    命令行准备
     97 ================================================================================
     98 
     99 熟悉命令行的目的:所有图形工具本质上都是对命令行的封装,理解命令行的操作,更有助于对图形工具的使用
    100 
    101 1>  SVN基本命令
    102 命令行格式:
    103 svn <subcommand> [options] [args]
    104 说明
    105 svn 子命令 [选项] [参数]
    106 
    107 提示:
    108 #   [中括号]中包含的内容是可选的
    109 #   (子命令缩写)
    110 
    111 2>  查看帮助信息
    112 
    113 $ svn help
    114 查看svn所有命令的帮助
    115 $ svn help 子命令
    116 
    117 3>  UNIX常用命令介绍(UNIX常用命令.m)
    复制代码
    复制代码
      1 01.    将服务器文件下载到本地
      2 ================================================================================
      3 
      4 # 切换工作目录
      5 $ cd 经理的工作目录
      6 # checkout服务器上的代码仓库
      7 $ svn co http://10.0.1.15/svn/weibo --username manager --password jingli
      8 
      9 提示:checkout(co)之后,本地代码库中会记录用户名和密码,后续操作不用再另行指定
     10 
     11 02.    经理添加文件
     12 ================================================================================
     13 
     14 * svn 常用命令
     15 --------------------------------------------------------------------------------
     16 # 查看本地代码库状态
     17 $ svn st
     18 错误提示:"is not a working copy",必须在svn的工作目录下才能正确使用svn的命令
     19 # 查看svn日志
     20 $ svn log
     21 # 查看某一个文件的日志
     22 $ svn log filename
     23 # 查看某一个文件某个版本的日志
     24 $ svn log filename@1
     25 
     26 * 创建文件
     27 --------------------------------------------------------------------------------
     28 # 切换到工作目录
     29 $ cd weibo
     30 # 创建文件
     31 $ touch main.c
     32 # 打开并编写文件内容
     33 $ open main.c
     34 
     35 * 将文件提交到服务器
     36 --------------------------------------------------------------------------------
     37 # 查看工作目录状态
     38 $ svn st
     39 # 将文件添加到本地版本库中
     40 $ svn add main.c
     41 # 将文件提交到服务器的版本库中
     42 $ svn ci -m "添加了main.c文件"
     43 
     44 "小结" - 添加文件的两个步骤
     45 --------------------------------------------------------------------------------
     46 1>  将新建的文件添加到本地代码库
     47 $ svn add main.c
     48 2>  将刚刚添加的文件提交到服务器
     49 $ svn ci -m "备注信息"
     50 
     51 注意:一定要养成写注释的良好习惯
     52 
     53 03.    团队成员加入
     54 ================================================================================
     55 
     56 1>  张三
     57 $ svn co http://10.0.1.15/svn/weibo --username=zhangsan --password=zhang
     58 2>  李四
     59 $ svn co http://10.0.1.15/svn/weibo --username=lisi --password=li
     60 
     61 "小结" 至此,一个项目的搭建工作就告一段落了
     62 1> 项目准备工作,通常由项目经理完成
     63 2> 程序员只需要把项目 co 到本地即可
     64 
     65 提示:新入职一家公司后,别忘记让经理分配 svn 的账号和密码
     66 
     67 04.    张三添加文件
     68 ================================================================================
     69 
     70 # 添加文件 Person.h Person.m
     71 $ touch Person.h Person.m
     72 # 修改 Person.h Person.m
     73 $ open Person.h
     74 $ open Person.m
     75 # 将 Person.h Person.m 添加到本地代码库
     76 $ svn add Person.*
     77 # 将内容提交到服务器
     78 $ svn ci -m "添加了Person类"
     79 
     80 05. 删除文件
     81 ================================================================================
     82 
     83 # 删除文件
     84 $ svn rm Person.h
     85 # 提交删除
     86 $ svn ci -m "删除了文件"
     87 
     88 注意:不要使用文件管理器直接删除文件
     89 
     90 06. 撤销修改
     91 ================================================================================
     92 $ svn revert Person.m
     93 
     94 07. 恢复到之前的某个版本
     95 ================================================================================
     96 $ svn up
     97 
     98 08. 冲突解决
     99 (p) postpone            对比
    100 (mc) mine-conflict      使用我的
    101 (tc) theirs-conflict    使用对方的
    复制代码
    复制代码
     1 svn st 显示的文件状态
     2 
     3 第1列状态说明:描述文件被添加、删除或其他修改
     4 --------------------------------------------------------------------------------
     5 ' ' 没有修改
     6 'A' 被添加到本地代码仓库
     7 'C' 冲突
     8 'D' 被删除
     9 'I' 被忽略
    10 'M' 被修改
    11 'R' 被替换
    12 'X' 外部定义创建的版本目录
    13 '?' 文件没有被添加到本地版本库内
    14 '!' 文件丢失或者不完整(不是通过svn命令删除的文件)
    15 '~' 受控文件被其他文件阻隔
    复制代码
    复制代码
     1 01.    安装CornerStone
     2 ================================================================================
     3 
     4 02. 具体操作
     5 ================================================================================
     6 1>  添加远程代码仓库
     7 2>  到处代码库到本地
     8 3>  在本地目录下使用Xcode新建项目
     9 注意:不要勾选 git,两套源代码管理同时存在会发生冲突
    10 
    11 4>  升级SVN版本库
    12 5>  退出Xcode
    13 6>  在CornerStone中忽略个人用户文件"xcuserdata",否则每次都要提交,非常繁琐!
    14 提示:xcuserdata目录中为保留用户上次打开的文件,调试设置的断点等信息
    15 
    16 7>  在CornerStone中提交项目
    17 
    18 8>  其他用户操作
    19 
    20 03.    SVN演练
    21 ================================================================================
    22 
    23 1>  修改文件
    24 2>  修改Storyboard
    25 3>  合并冲突(仅在两个人同时修改一行代码时,才会出现冲突)
    复制代码
     
    复制代码
      1 一次检出:
      2 》进入经历文件夹
      3 》输入svn checkout指令
      4 》输入电脑密码
      5 》输入用户名
      6 》输入密码
      7 》检出成功
      8 
      9 第二次检出:
     10 》进入小涛文件夹
     11 》输入svn checkout指令
     12 》检出成功
     13 
     14 只要输入过一次账号密码后, 终端会自动记录我们的密码
     15 
     16 通过指定的账号密码检出
     17 svn checkout http://192.168.15.155/svn/weibo/ --username=ls --password=ls
     18 
     19 
     20 SVN的本质是通过一个文件夹来管理源代码
     21 
     22 默认情况下, 用于管理源代码的文件夹是隐藏的, 这个隐藏文件夹的名称叫做.svn
     23 
     24 
     25 
     26 注意: 新建文件或文件夹之后如果直接提交(直接commit)会报如下错误:
     27 
     28 is not under version control
     29 
     30 该错误的含义是: 提示我们提交的文件没有纳入版本控制
     31 
     32 
     33 
     34 注意: 在提交代码时必须写上注释(认真写), 否则回报如下错误
     35 
     36 Could not use external editor to fetch log message;
     37 
     38 
     39 
     40 注意: svn add只会将文件添加到本地, 不会添加到服务器
     41 
     42 
     43 
     44 注意:如果说利用SVN管理源代码, 就不能直接在项目中删除源文件
     45 
     46 
     47 
     48 如果修改文件之后, 并且文件没有“提交“(commit) 想反悔,可以使用SVN的 revert指令让文件回到上一次提交时的状态
     49 
     50 
     51 update除了可以更新服务器最新的代码以外还可以更新到指定版本。
     52 
     53 每次提交代码之后, SVN的版本号都会自动加1. 正式因为版本每次会自动加1, 也就是说版本号是唯一的。 所以我们可以通过版本号更新到指定版本的代码
     54 
     55 
     56 
     57 版本控制器中最常见的两个问题:
     58 
     59 1.超时
     60 
     61 SVN    使用SVN有一个原则: 先更新再提交
     62 
     63 只有本地的版本号大于等于服务器的版本号时才能提交, 否则会报一个out of data错误;
     64 
     65 
     66 ls:R8
     67 
     68 manager :R11
     69 
     70 服务器: R11
     71 
     72 
     73 
     74 2.冲突:
     75 
     76 当多个人修改了同一个文件的同一行代码会导致冲突
     77 
     78 我: main.c  11行  123
     79 
     80 其它人: main.c 11行 abc
     81 
     82 其它人先提交了代码
     83 
     84 我再提交代码就会有冲突,
     85 
     86 Conflict discovered in, 提示我们如何解决问题
     87 
     88 (mc) mine-conflict,  代表用我们的代码替换服务器的代码。
     89 
     90 本地的代码只保留我们自己写的
     91 
     92 
     93 
     94 (tc) theirs-conflict, 代表用服务器代码替换我们的代码
     95 
     96 本地的代码只保留服务器的, 会自动删除我们的
     97 
     98 
     99 
    100 (p) postpone, 自己手动解决。
    101 
    102 本地文件中会同时保留服务器代码和本地代码
    103 
    104 会在本地创建3个备份
    105 
    106 main.c.mine 备课自己最新的代码
    107 
    108 main.c.r17 本地修改之前的版本
    109 
    110 main.c.r18 服务器最新版本
    111 
    112 <<<<<<<  到 ======中间存放的是我们自己修改的代码
    113 
    114 ======= 到  >>>>>>> 中间存放的是服务器最新的代码
    115 
    116 
    117 
    118 注意: 手动解决完冲突之后, 需要告诉SVN服务器我们已经解决冲突了, 这样才能保证数据的安全性和SVN的可靠性
    119 
    120 svn resolved 文件名称
    121 
    122 
    123 —————————
    124 
    125 注意: 在工具中Repositories中的仓库是服务器的仓库
    复制代码
  • 相关阅读:
    java RSA加密解密
    spring boot 错误处理机制
    Redis 服务常见的几个错误解决方案
    Nginx目录遍历功能时间相差8小时
    翻过大山越过海洋看到了什么
    【分享】分层明确高度定制化的 Python Flask MVC
    编程浪子客服系统开源啦
    快速搭建一个直播Demo
    免费为网站加上HTTPS
    Mac 下安装Fiddler抓包工具
  • 原文地址:https://www.cnblogs.com/Yishu/p/10237220.html
Copyright © 2011-2022 走看看