




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SVN的使用 黄显智 2011 04 18 LOGO 为了能更好的使用svn 特作此文 主题 搭建svn服务器和安装客户端软件怎样上传一个代码库svn的各个命令和功能 搭建svn服务器和安装客户端软件 1 安装服务端程序visualsvn server 2 1 1 msi 注意到了下面的thisproductincludesthefollowingcomponents Apache2 2 13 Subversion1 6 9Apache是世界使用排名第一的Web服务器软件 现在所用的版本是2 2 13版本 Subversion1 6 9是与Apache2 2 2 13相配的客户端软件版本号 虽然意思是这个产品包含了以下两个控件 Apache和Subversion 但实际上安装的visualsvn server 2 1 1 msi只有Apache 所以我们就不用再重新配置Apache 但要单独安装客户端软件subversion 另外发现 这里指定的客户端版本号为1 6 9 并不意会着不能用其他版本号 svn作为一个成熟的 先进的程序产品 它也能兼容各种版本 在使用中 它能向下兼容比1 6 9版本低的1 6 8版本 1 6 8版本是一个支持中文的版本 向上可以兼容最新的版本 所以使用svn不用担心版本兼容问题 选择你想要装的控件 第一种设置是应用最广泛的一种 我们公司用的也是这种设置 采用这种设置时 很多设置都是可视化操作 在安装时选择第一种就完事了 选择第二种的话 在以后进行库的创建 用户的添加等各种操作都是非可视化的 比较麻烦 配置服务端的目标路径 代码库所在路径和身份验证方式 一般要改动的是代码库的路径 最好不要采用默认 放在非系统盘的话 在系统崩溃后 代码库就不会被破坏 关于身份验证 svn提供两个选择 一个采用与windows系统一样的方式 一个是svn拥有的方式 采用svn自己本身的方式的话 用户要单独创建 权限也要单独分配 在用户少的时候 不会觉得有麻烦 但用户多的话这种方式就有点力不从心 对于svn提供这种可以与windows系统一样的身份验证配置 我们不得不赞一个 因为采用了这种配置后 由于windows用户在分配电脑装系统时就创建好了 所以采用后 svn就不用再创建用户了 这点 可能有些童鞋无法体会到它的便捷性 但我们只要想到假如要创建几百个帐号 甚至更多 为了管理上的 权限上的设置方便 然后在这么多的帐号上分组 设置不同的 复杂的访问权限 要做到准确无误的结果 这个会需要一个不小的工作量 这点 我们的IT部同事比较有心得体会 最后默认安装 服务端程序安装结束 2 安装客户端程序TortoiseSVN 1 6 8 19260 win32 svn 1 6 11 msi全部默认安装后 至此就可以开始用svn的功能了 1 上传前 要清理那些多余的目录 像build mainlcd等自动生成的目录 2 可能的话 清理那些自动生成的文件 有些自动生成的文件 一般都是时间戳有变化 这些就可以删掉 像 custom system GINWAVEXX XX PMWY BB目录下的emi文件 还有codegen自动生成的文件等 这一步在上传前 可能因为无法确定哪些文件是自动生成的 可以暂时不进行这一步操作 等上传完后 checkout一个代码下来 什么都不改就new一把就会发现有很多地方标红 红色标记 标红的文件就是自动生成的文件 这个时候再清理这些文件也不迟 这里可以讨论一下 是否有必要对工程进行清理呢 笔者观点是 非常有必要 并且是必须滴 在使用svn过程中 经常会出现很多文件提示被修改了 但这些文件不是被自己修改的 这种情况带来很多麻烦 1 导致整个工程都一直在提示有很多文件没有上传 这会分散你的注意力的 2 当你修改代码后要上传时 你会发现这些没有清理过的文件跟要上传的文件混在一起 使你要一一分清哪些是你要上传的文件 哪些是不用上传的文件 这会容易使你出错 导致你提交了不该提交的文件 该提交的却没有提交等问题 特别是在多人协作的工程中 假如你提交了不该提交的文件 或者提交错了的文件 或者没有提交要编译到的文件 会使他人编译不过等问题 想想 当一个人new一次到最后被告知有文件提交错了 得重新来这个多影响效率啊 这个时候排查问题就麻烦了 因为有可能是你没有清理多余的代码 而提交了不该提交的文件 从而无法确定问题的原因是否是你修改了代码而导致的 3 最常用的清理 checkout一个工程下来 什么都不改就直接new 发现那些文件变了 都可以清理 怎样上传一个代码库 3 当清理完后 有两种上传方式 一种是导入一个空的工程目录 然后再checkout这个空工程下来 接着往里面添加可以上传的文件 然后再提交 这种方式的优点是上传的工程可以直接用 不用再checkout下来 但速度很慢 另外一种方式是把所有工程文件直接导入 这种方式速度最快 也最值得推广 但上传后的工程文件因为没有svn了 所以想要在有svn的工程下工作就得重新下一个新的工程 导入的地址要规范 所有mtk的代码都放在mtk下的目录 并且也要放在相应的平台下面 如下图所示 由于设置了这样的权限 每个项目组的代码只有这个项目组的成员才有读写权限 所以只能往自己有权限的地址导入代码 比如项目七部只能往RD07的地址上传代码 不然得另外申请权限 这里说明下 为什么要这样设置权限 为什么不对所有软件工程师开发权限 因为每个人上传代码时都有传错的可能 所以这样设置时 当上传有错时 对其他人的影响就比较小 当权限设得太高和太低时都会有相应的矛盾 这里针对项目组设置权限算是取其中平衡吧 友情提示 由于svn上传时会自动对一些文件过滤 a o等文件 导致这些文件不能上传 所以要把这个过滤条件去掉 去掉设置如下 红色标记框就是要修改的地方 1 查看log功能主要有创建 添加 删除 提交4个修改记录操作 只要所有的操作都在有svn控制的代码上进行 那么在代码上所做的所有操作都可以跟踪到 svn的各个命令和功能 从这两图可以看到 开始到现在共有3000多个记录 Log的作用1 检查作用 针对整个工程 甚至所有文件 都可以完整的 清楚的知道谁 什么时候 在代码的哪里地方做了哪些修改 2 参考作用 某些问题 会有其他人遇到并改过 可以通过log查看他人是怎样修改的 3 记忆作用 会在不同的工程遇到一样的问题 或者做一样的设置等都可以查看log来达到快速修改目的 等等 2 下载代码功能下载代码有两个命令一个是1 svncheckout 在一个没有svn文件的地方单击右键 特别注意的是 在下图中的红色框内的地址最好不要手动写 可以通过svn浏览器中浏览得到 或者复制一个正确的地址 因为手动写的话 会容易写错 可能会遇到大小写不区分的错误 这样的话 在以后的代码修改中会有很大的麻烦 Svn对写权限时很严格的 是要区分大小写的 而读权限是不分大小写的 所以当下载地址因为没有大小写区分时 是可以下载代码 但不能提交的 这个后果大家可以想象到 当我们经过了几天的工作 修改了很多代码 这种情况多的是 我们可以更夸张一点 经过了长久的工作后 修改了很多的代码 到最后发现不能提交代码 竟然是在一个不能提交的代码上工作 是不是有一种杨白劳的感觉呢 虽然这时还会有办法补救 但在这个地方时还是要小心点 选好地址后 再写好下载代码所要放的地方 可以不手动写 svn会自动放在当前目录 然后选下载的版本号 如果不选定的话 svn会默认选最新的版本号 最后点ok就完成代码下载了 这个命令下载下来的代码 没有svn文件 假如在上面工作的话 就不会被提示代码被修改 删除 添加等操作 可能会有疑问 既然没有操作提示 干嘛还要这个命令的呢 相对于前个命令 这个命令下载代码时 速度更快 所要下的代码大小更小 一般会经常用在验证代码时 比如 要验证服务器上某一版代码是否有问题时 由于速度很快 所占空间很小 所以用export命令时 效率会很高 保存代码功能 commit命令 当修改完后代码 就上传到服务器保存 单击commit后 svn会把所有修改过的文件列出来 最后再次检查代码 双击要上传的文件 比较工具就会把修改的地方显示出来 查看代码是否写对 文件是否该上传 确定后点ok键就完成提交功能了 提交代码有几个要注意的地方1 代码要及时上传 不能等到修改完所有问题后再上传 这样对后期的代码维护工作带来麻烦的 上传后要验证 这个一般做法是 本机有同一个代码的两个工作目录 当其中一个上传后 另外一个目录就更新代码 然后检查编译是否通过 功能是否加对 假如没有验证通过的话 会影响到他人的更新 2 假如修改的代码很多 要分类别 bug类别 功能类别等 上传 分类别上传对以后的维护 查看就比较方便 3 每个类别 bug类别 功能类别等 的代码要单独上传 并且是一次上传 如果提交的文件很少 可以合到其他类别中一起提交 像这里从第3075版本到3077版本都是改同一个问题 增加在其他界面注册音乐播放键功能 所以这个增加播放键功能一次上传就可以了 这里分三次上传 显得冗余 像下图 添加添加 MMI EPOWER CHECK 功能时 涉及到多个文件 就是单独一次上传 简单明了 4 上传前要仔细检查代码 并且要写注释 像这个从版本3084到3103版本提交的 什么注释也没有写 不知道提交的是什么 这种不写注释的情况要禁止 注释信息要言简意赅 关键字提炼要符合log的信息 这对以后查看修改记录会有很大的帮助 比如我要查看关于 死机 log 假如所有的死机问题都提交并写相关log的话 就比较方便 如下图 4 添加 删除把新文件加入服务器保存 采用add命令 从服务器删除一个文件 采用Delete命令 add或delete后再执行commit命令 才能从服务器添加或删除一个文件 Svnadd一般在添加功能的时候会涉及到添加文件操作的 比如加入qq功能时 就会添加各种点c和点h文件 以及点lib库文件 每当把文件复制到工作工程时 就要立即add命令 不然等到添加功能完后再执行 由于文件分散在不同的文件夹 可能会记不清该添加到文件在哪个文件 从而导致漏掉一些文件Svndelete当要删掉一些文件时 得保证当前版本是最新的 最好是没有被修改过的 假如修改过 那就备份这个文件 然后删掉这个文件 重新下载这个文件 然后执行delete命令 修改过的文件 还没有上传到服务器保存 就直接删除掉上传 这样这个文件会漏掉了被修改过的记录 从而被提示有冲突 5 刷新命令cleanupSvn有三种提示视图图标1绿色视图图标 说明没有当前版本跟上一个版本一样 没有被修改过2红色视图图标 说明跟上一个版本比较 文件已经被修改过 3黄色视图图标 说明修改过的文件和服务器上的最新版本有冲突 这个情况一般是 当前版本不是最新的版本 然后在这个版本上修改 从而导致冲突 所以合并代码 修改代码 提交前 最好更新一下代码 可能由于很多文件的原因 系统没有刷新过来 一些视图图标显示不对 比如 有个文件已经跟服务器上的完全一样了 但它还显示的是红色图标 文件被修改 这时可以手动刷新 执行cleanup操作 6 其他非常用命令Updatetorevision更新到某个版本 发现在提交到服务器的文件中 有很大问题 但暂时还没有解决办法 而且上个版本是好的 这个可以用这个命令单独更新这个文件 这个文件就更新到上个版本时的状态 这个命令不仅可以用在单个文件 也可以用在某个文件夹 整个工程 Branch tag建立分支 有很多工程的代码都是在同一个基础代码分支出来的 对于这么多工程的代码的控制 可以采用分支来控制 选择其中一个工程的代码做基础代码 做代码库 其他工程的代码 如果差异很大的话 就可以从基础代码库分离出来 不用重新上传新的代码库 下面是一个例子T4是5309a的一套代码 svn上已经有个关于T4的代码库 现在要做一个T5的项目 T5跟T4有很大的不同 T5有全键盘 可以旋转 虽然这两个项目有很大的不同 但T5可以在t4上开发 所以T5不用再上传代码库 可以直接用t4的代码库分离一个出来 这样能省很多事 一选择分支的路径二选择版本号 根据需要从哪一版本分离出来都可以 三填写注释信息最后点ok按钮就完成一个分支的创建了 Switch和Relocate命令转换工作目录和重新定位工作目录当服务器上的库代码地址变换时 就要用这两个命令来关联本地代码和服务器的对应关系 这样本地代码在服务器库代码变换后 才能更新 提交 查看 Resolved和MergeResolved是用来解决大量的冲突的 一般没有那么多的冲突 少量冲突手动解决就好了 Merge用来合并的 有三种类型 1合并另外个工作目录的不同版本 2恢复到一个版本3合并两个不同的工作目录 7 怎样解决冲突和过滤掉无关文件解决冲突有两种方式一种是直接用svn的resolve 然后在比较工具里去掉冲突代码 二种是先拷贝冲突文件 然后删掉冲突文件 再更新下载一个最新文件下来 最后再在最新文件合并修改代码 第二种
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 威信安全员b证考试及答案
- 2025年环境大赛考试题及答案
- 2025一级建造师高分题库【考点提分】附答案详解
- 2025年特斯拉学习考试题及答案
- 2025年体育概论试卷模板及答案
- 导游资格考试通关考试题库有答案详解
- 2025计算机四级考试综合练习完整附答案详解
- 2025年度企业固定资产借款合同新版本(合同范本)
- 2025年四川省邛崃市中考数学考前冲刺试卷含答案详解【基础题】
- 2025年在建工程抵押担保借款合同样本
- 港区泊位码头工程施工组织设计(图文)
- 2023年全国职业院校技能大赛-融媒体内容策划与制作赛项规程
- 《水利工程施工监理规范》SL288-2014
- 胸外科讲课完整全套课件
- 产品知识培训-汽车悬架系统
- 维生素C在黄褐斑治疗中的作用
- 台球市场调研报告
- 【联合验收】房地产企业展示区联合验收考评表
- 糖尿病周围神经病变知多少课件
- 儿童肺炎支原体肺炎诊疗指南(2023年版)解读
- 多源数据融合技术-概述
评论
0/150
提交评论