SVN使用知识总结

一. SVN和Git区别

SVN : 集中式的版本控制工具
Git : 分布式的版本控制工具

二. SVN介绍

SVN最基本的命令使用及使用场景

要记得账号密码及SVN地址

  • checkout : 下载代码, 只需要做一次
  • commit : 提交代码到服务器, 至少下班前提交一次可运行版本
  • update : 更新服务器的最新代码, 至少上班前更新一次

三. SVN服务器搭建及配置(了解)

  1. 端口号
    http: 80 一般使用http即可。 一般只能在公司内部访问
    https: 443

  2. 服务器配置: 需要一个仓库, 然后创建一个用户, 最后给仓库配置权限

  3. 如何虚拟机搭建的服务器在mac中也能访问, (1. 网络模式是桥接模式, 2. 确保TCP/IP自动获取ip)

  4. 如果想要获取IP : 点击开始 --> 运行 --> 输入cmd --> ipconfig --> 确保前三位号段跟mac是一致的。

四. 常见UNIX命令行的使用(掌握)

  1. pwd :查看当前目录
  2. cat :在命令行中查看文件内容
  3. 显示和隐藏系统隐藏文件
显示隐藏文件:defaults write com.apple.finder AppleShowAllFiles YES
隐藏隐藏文件:defaults write com.apple.finder AppleShowAllFiles NO

运行完毕后需要重启finder,才能生效

五. SVN基本操作(掌握, 难点)

一. 模拟单人开发 -->唐僧

  1. cd 到唐僧目录下
  2. 下载代码: svn checkout http://192.168.26.120/svn/QQ/ --username=tangseng --password=123
  3. cd 到QQ目录下(QQ目录才是SVN管理的目录), 如果没有进入到正确的目录, 将来可能就会报错 --> 千万别忘
  4. 创建文件: (使用一个文件模拟一个项目) touch Person.h
  5. 查看状态: svn status / 比较的是本地版本库和服务器的版本库的区别, 如果文件一致, 比较不出来东西
  6. 添加文件到本地版本库: svn add Person.h
  7. 提交文件到远程服务器: svn commit -m "增加了Person.h" / 注意: -m 一定要写, 否则将来无法区分每个版本干了什么事. ""双引号的内容也要写, 而且要写的有意义, 因为将来就是根据注释来区分版本.
  8. 修改文件: 打开Person.h, 随便改内容
  9. 查看状态: svn status
  10. 同步代码 : svn update 就可以将服务器最新的代码同步过来

  1. 帮助命令: svn help 查看所有的命令
  2. 查看日志: svn log 查看之前提交的日志信息
  3. 删除文件: svn delete Car.h (如果是直接右键垃圾桶, update就回来了)
  4. 告诉本地版本库, 已经解决了冲突文件: svn resolved Car.h
  5. 版本回退(丢弃尚未提交的代码): svn revert Car.h

模拟多人开发 --> 其他人的操作
参考上面的单人开发步骤, checkout一次后, 不断提交/更新即可

二. 文件状态解释:

  • ? : 文件在SVN的目录下, 但是没有被本地的版本库管理 ---> 需要add
  • A : 文件在SVN的目录下, 已经被本地的版本库管理 ---> 需要commit
  • M : 文件在SVN的目录下, 已经被本地的版本库管理, 文件已经被修改 --> 需要commit
  • D : 本地的版本库已经删除了文件, 但是没有提交给服务器 ---> 需要commit
  • U : 文件被更新了(之前本地已经有了这个文件)
  • C : 文件发生了冲突

三. 简写操作

  1. svn co : co --> checkout
  2. svn st : st --> status
  3. svn ci : ci --> commit * 可以不用写"", 但是要保证注释的文字的文字没有空格
  4. svn up : up --> update

四. 常见错误

  1. is not a working copy : 这不是工作区的拷贝空间, 进错目录了, 可以使用pwd查看当前目录是否正确
  2. is out of date : 文件过期了, 代表着文件发生了冲突. 需要update一下
  3. xcrun: error: active developer path ("/Applications/Xcode 2.app/Contents/Developer") does not exist, use xcode-select --switch path/to/Xcode.app to specify the Xcode that you wish to use for command line developer tools (or see man xcode-select)
    **如果出现类似的错误, 或者下载xcode, 那么选中xcode--> 偏好设置-->locations--> command line tools 做个选择即可

五. 注意事项

  1. svn是mac自带的工具, 自带的版本是1.7
  2. 多提交多更新, 规范使用的话,应该先更新, 再提交. 可以减少冲突
  3. 已经是服务器的最新版本, 然后自己修改了某些文件, 再次更新, 不会覆盖掉自己刚写的代码

六. 解决代码冲突(掌握, 重点, 难点)

  1. 冲突的定义: 不同的人, 修改了同一个文件, 同一行的代码, 那么此文件就发生了冲突

  2. 冲突可能发生地方: Appdelegate, MainViewController, SB/Xib, 公用的类

  3. 冲突发生时如何处理
    Conflict discovered in '/Users/JackMeng/Desktop/SVN演练/coder01/QQ/person.h'.

  • (p) postpone : 推迟处理, 将来由程序员自己来处理冲突
  • (mc) mine-conflict : 使用我的代码, 覆盖掉其他人的代码 --> 文件已经被修改了, 需要提交
  • (tc) theirs-conflict : 使用其他人的(服务器最新的), 丢弃掉自己的代码
  • (df) diff-full : 展示不同
  • (e) edit : 在命令行中编辑文件
  • (s) show all options: 显示所有选项

<<<<<<< .mine 到 ======= 之间: 代表自己写的代码
======= 到 >>>>>>> .r6 之间: 服务器的代码(其他人的代码)

<<<<<<< .mine
@property (nonatomic, copy) NSString *rice2; // 唐僧增加了米饭2属性
@property (nonatomic, copy) NSString *rice3; // 唐僧增加了米饭3属性
=======
@property (nonatomic, copy) NSString *rice2; // 唐僧增加了米饭2属性
@property (nonatomic, copy) NSString *peach; // 悟空增加了桃子属性
>>>>>>> .r6
  1. 建议一般情况遇到冲突, 选postpone
    1. 输入p
    2. 删除掉特殊符号(< = >), 然后自己调整代码
    3. 需要告诉本地版本库, 已经解决了冲突: svn resolved Car.h
    4. 提交修改的代码

七. 使用第三方图形化工具(掌握, 重点)

小技巧, 拷贝网址后, 再次点击Cornerstone会自动将网址填入正确的位置

  1. 工具使用的步骤:

    1. 首先需要使用账户密码以及ip来登录远程仓库
    2. 使用checkout命名来下载代码
    3. 按照需求, 使用界面上的不同按钮即可
  2. 工具解决代码冲突

    1. 删除掉特殊符号(< = >), 然后自己调整代码
    2. 需要告诉本地版本库, 已经解决了冲突:点击工具下方的resolve按钮即可
    3. 提交修改的代码
  3. 忽略文件的问题:
    Xcode在创建时, 有些文件是记录用户的状态(缓存文件), 这些文件是可以忽略的.
    包括了用户当前打开的是哪个文件/文件夹的折叠状态/用户打的调试断点, 等等

  4. 哪些文件可以忽略: .xcuserstate / data文件夹内东西都可以忽略.

  5. 如何使用工具删除忽略文件:

    1. 选中文件夹/文件, 右键 --> delete , 删除之后再提交
    2. 文件只要发生更改, 会再次生成, 选中之后 --> ignore, 忽略后再提交

八. 使用Xcode集成SVN(掌握, 重点)

  1. Xcode如何checkout

    1. 通过xcode --> preferences ---> Accounts界面 (繁琐,不推荐)
    2. xcode的欢迎界面, 选择最底下的checkout选项, 输入完整的地址, 然后输入账户名和密码, 并且选择的时SVN控制方式, 确定即可
    3. 选中xcode, 找到顶部的source Control --> 选择checkout即可
  2. 两个快捷键

    1. 提交 : com + opi + c
    2. 更新 : com + opi + x
  3. Xcode解决代码冲突

    1. 先update, 只要文件发生了冲突, 会出现一个选择界面, 想要解决冲突, 那么应该看情况选择下方的四个小按钮. 选择完成, 点击update
    2. 提交解决冲突后的文件即可
  4. XcodeSB/Xib冲突, 不要发生SB和Xib的冲突.

  5. 如何避免冲突的

    1. 做好分模块开发的操作
    2. 勤沟通, 提交说好, 一个人改的时候, 别的不要动.
    3. 及时将不需要提交的代码丢弃修改

九. SVN目录结构

  1. trunk : 主干, 一般都在此目录下工作
  2. brangches: 分支, 一般用于修复bug, 或者开发新功能 (SVN中不常用)
  3. tags : 备份用的, 可以将发布到AppStore的版本做备份, 方便将来查找修改等
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容