SVN代码管理

必学命令 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解决流程
    原文作者:coder_hong
    原文地址: https://www.jianshu.com/p/e4b6a5062d39
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞