美文网首页
SVN代码管理

SVN代码管理

作者: coder_hong | 来源:发表于2016-05-21 23:58 被阅读134次

    必学命令 help 子命令

    cd path : 将当前路径切换到path路径
    pwd :查看当前所在路径
    ls (-a / -l / -G) : 查看当前文件夹下所有文件及文件夹
    touch filename1 filename2 : 创建一个或者多个文件
    rm filename : 删除文件
    open filename :打开文件
    cat filename :查看文件内容
    more filename :分页查看文件内容
    mkdir 文件夹名称 :创建一个文件夹
    mv oldFilePath newFilePath :移动文件(可借助此命令给文件重命名)
    

    补充

    . 代表当前文件路径
    .. 代表上级目录
    

    以 .开头的文件,代表隐藏文件

    显示隐藏文件
    defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
    不显示隐藏文件
    defaults write com.apple.finder AppleShowAllFiles No && killall Finder
    

    提示

    • 如果要使用当前目录中的文件名,输入到一半时,按TAB键能够补全

    个人开发操作

    • 从服务器下载一份完整代码到本地开始开发

    • svn checktout URL [path] —-username=用户名 —-password=密码

    • 修改文件提交

      • svn commit -m “注释”
    • 新建文件提交

      • svn add filename (将文件添加到本地版本控制进行管理
      • svn commit -m “注释”
      • 提交多有 svn add *
    • 删除文件提交
      一定不要直接手动删除文件

      • svn remove filename / svn delete filename 先从本地代码仓库管理中移除,然后删除
      • svn commit -m “注释” (提交,让服务器也删除对应文件)

    任何向服务器提交的操作,都要加注释 添加 -m参数

    常用命令补充

    • svn status
      查看当前工作空间内, 所有 有变化的文件 的状态
      如果执行此命令什么都没输出, 代表本地没有东西要提交
    • svn log
      查看当前版本的操作日志(什么人, 什么时间, 做了什么操作)

    常见状态

    ' ' 没有修改
    
    'A' 被添加到本地代码仓库
    
    'C' 冲突
    
    'D' 被删除(通过svn命令删除的文件)
    
    'I' 被忽略
    
    'M' 被修改
    
    'R' 被替换
    
    ‘G’ 被合并
    
    ‘U’ 已经更新
    
    ‘E’ 已经存在
    
    'X' 外部定义创建的版本目录
    
    '?' 文件没有被添加到本地版本库内
    
    '!' 文件丢失或者不完整(不是通过svn命令删除的文件)
    
    '' 受控文件被其他文件阻隔
    

    团队开发操作

    • 添加文件同步
    • 修改文件同步
    • 删除文件同步
    • 超时和冲突解决演练
    多人开发中最常遇到的问题: 超时和冲突
    超时
    • 超时: 当本地文件版本小于服务器文件版本时, 如果要提交本地文件,就会报 out of date 超时错误

    • 原因: SVN通过版本号管理每一个文件,如果一个文件被修改并提交到服务器,那么服务器上的对应文件版本号就会加1, 如果你的版本号小于服务器版本号,就说明,肯定有别人在后来又修改了那个文件

      • 大版本提交或合并到小版本,会把小版本内容覆盖
      • 大小版本不能提交到大版本
    • 超时解决方案: 针对于超时问题,对应的解决方案,就是先从服务器更新下最新版本, 保证本地版本号与服务器版本号一致,这是文件可以提交的前提

    • 冲突: 为了解决超时问题,只能更新.而在更新过程中,如果几个人修改了同一文件的同一行代码,此时就会产生冲突

    • 原因: 版本控制器不会那么智能, 去决定应该使用谁的代码作为最终代码,只能将选择权抛给用户,让用户解决

    (df) diff-full, (e) edit, (s) show all options:
    
    (p) postpone, // 延迟处理(待会我自己处理)
    
    (mc) mine-conflict, // 使用我的(本地的)
    
    (tc) theirs-conflict, // 使用服务器
    
    <<<<<<< .mine
    
    本地代码
    
    =======
    
    服务器代码
    
    
    svn resolved 文件名
    svn commit -m "解决冲突"
    

    SVN终端-版本回退

    • 做错了,想反悔到前面某个状态
    1. 修改了,但未提交的情况反悔
    方案1: (大力推荐)
    svn revert (作用:返回到上次提交后的状态)
    方案2: (不推荐)
    删除整个项目,重新checkout
    
    1. 修改了,并且提交了的情况反悔
    方案1: 大力推荐
    svn update (将本地代码更新到与服务器相同的版本)
    svn merge 文件名 -r 版本1:版本2
    (作用:把版本1 -> 版本2 的 diff 作用在当前版本)
    svn commit -m “本地和服务器都回退到某一指定版本”
    方案2:
    svn update -r 指定版本号(此时本地代码已经变化,但是服务器没有改变)
    修改部分文件
    svn update (此时会产生冲突, 选择使用自己的代码即可)
    再次提交代码
    方案3:(垃圾,最不推荐)
    手动保存需要回退的文件内容
    删除文件,提交到服务器
    重新添加文件,上传到服务器
    

    Cornerstone基本使用

    Xcode管理SVN

    演示静态库的提交
    • .a静态库文件,必须使用命令行手动添加到版本控制器中,然后提交
    怎样忽略文件
    • 过滤不需要上传的文件, 忽略文件(xcuserdata文件夹)

      • 文件打开状态

      • 断点信息

    • 文件夹关闭打开状态

    注意:projct setting文件不要忽略

    • 存放一些文件顺序和文件夹结构,文件引用等信息

    SVN目录规范

    • trunk :主干,当前开发项目的主目录
      我们之前更新代码,提交代码都是在这个文件夹进行操作

    • brannches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中。
      修复Bug,研发不确定的新功能都在这里做

    • tags:标记目录,通常作为重大版本的备份;
      如果有发布版本出现Bug,可以快速的找到对应版本的项目备份,然后开一个分支,进行Bug修复,用于与主干区分

      • 画图说明三个目录使用流程
      • 演示版本备份流程
      • 演示已发布版本bug解决流程

    相关文章

      网友评论

          本文标题:SVN代码管理

          本文链接:https://www.haomeiwen.com/subject/qpsorttx.html