在IC设计中的svn使用经验总结
来源:互联网 发布:剑三苍云脸型数据 编辑:程序博客网 时间:2024/05/20 12:46
- svn权限
- svn分支
- 项目中遇到的问题总结
- svn内容太大怎么解
- svn的trunk经常不稳定怎么解
- 疑问
- svn使用者未及时提交代码至trunk分支怎么办
- 提交代码至trunk后在trunk里仿真不通过怎么办
- 别人发现bug后自己更新代码要在对方branches里提交尽量不在trunk里直接更新避免trunk不稳定
以下仅用于个人建议。
svn权限
- svn用户
- svn目录各层次
两者在svn工具里权限设置及其方便简单。
经验:
- 权限设置太细。svn管理会太繁琐;svn使用者遇到项目设计问题很难debug。
- 极其敏感的公共文件,设置可写权限即可。
svn分支
- trunk
- tags
- branches
这三个基本够用了。
项目中遇到的问题总结
基本原则:
- svn使用者,尽量不受权限束缚。可以灵活处理各种项目问题,以避免出问题,只能求助svn管理员。
- svn tags必须保证稳定性。方便项目设计的回顾。
- svn分支,做到最简单直接有效。svn制定的规则越多,管理越混乱。
svn内容太大,怎么解?
svn内容太大,危害就是svn up、svn co、svn st的过程缓慢。
解决思路:
非常稳定的设计(比如购买的IP),放在trunk目录以外。
例如:- project
- trunk
- tags
- branches
- stableVerilog
- stableVerification
- project
svn使用者第一次需要checkout整个目录。
svn co svn://192.168.1.1/project project
- svn使用者第二次以及之后的svn操作,比如svn update project/trunk。不需要再svn up project。解决svn内容太大导致svn up太慢的弊端。
svn的trunk经常不稳定,怎么解?
项目更新,都在trunk分支上。但是不能保证每个人提交的内容,在trunk下都能稳定跑项目仿真。
思想,仍然是使用分支merge操作。
解决思路:
- svn tags的意义,更多是为了提供一个正式版本,为了FPGA仿真、R0signoff、R1signoff等。
- svn tags还有一个重要意义,比如每周打一次tag。以便trunk跑不通的时候,知道系统项目的哪个版本是最近稳定的。tag的名称,可以是日期+版本号的形式。
例如;
svn cp svn://192.168.1.1/project/trunk svn://192.168.1.1/project/tags/20170909_r211
- trunk版本,只有打tag的时候,才是有意义的。trunk版本是大家共同维护的主干分支,所有代码都要及时提交至这个主干分支里;不必强求,每周打tag之前把自己代码全部提交,不可能做到,只求自己代码稳定时,就更新至trunk分支里。
- svn使用者,仿真使用的不是trunk最新版,是在branches里。同时,是基于最近稳定的tag版本。
例如;
svn cp svn://192.168.1.1/project/tags/20170909_r211 svn://192.168.1.1/project/branches/qilei/20170909_r211
- svn merge命令是正规方法(之后再讲这个操作流程)。有些人会陌生恐惧,其实多做几次就理解消化成习惯了。当然,还有最原始的办法可以推荐。
例如;当svn://192.168.1.1/project/branches/qilei/20170909_r211,该分支提交完成(重点,已提交),并顺利通过仿真后,
#检查自己的修改与trunk分支的代码区别,参数-q,只会报告不同的代码。svn diff svn://192.168.1.1/project/branches/qilei/20170909_r211 svn://192.168.1.1/project/trunk -q#更新trunk版本至最新版svn up project/trunk#把自己负责的代码,拷贝到svn cp project/branches/qilei/20170909_r211/xxx.v project/trunk/xxx.v#最后,在project/trunk里查看所有更改svn diff xxx.v#本着对自己对他人负责的态度,跑一遍project/trunk的仿真;然后提交至trunk分支,顺便提交一个系统最近稳定的tag版本svn ci xxx.v -m "commit my code to trunk"svn cp svn://192.168.1.1/project/trunk svn://192.168.1.1/project/tags/20170909_r258#至此,已经完成一个循环svn cp svn://192.168.1.1/project/tags/20170909_r258 svn://192.168.1.1/project/branches/qilei/20170909_r258
疑问?
svn使用者未及时提交代码至trunk分支,怎么办?
svn使用者在分支branches仿真稳定后,就应该提交至trunk;如果trunk仿真通过,branches就使用最新的环境。这个过程如上介绍,没什么复杂和时间花费。
提交代码至trunk后,在trunk里仿真不通过,怎么办?
找错误负责人,赶紧debug。
因为提交的流程,可知trunk版本,是较为稳定的。因为每个人是仿真后提交的,所以错误都是容易马上解决的。
即便一时难以解决,自己仍然可以使用原始branches分支,继续维护代码。
别人发现bug后。自己更新代码,要在对方branches里提交。尽量不在trunk里直接更新,避免trunk不稳定。
阅读全文
0 0
- 在IC设计中的svn使用经验总结
- IC项目中svn使用经验总结
- ic设计经验总结
- svn使用经验总结
- 芯片设计(IC)中的验证
- svn在idea中的使用
- svn在eclipse中的使用
- IC卡应用中的安全设计考虑
- IC设计中的功耗分析的流程
- ic设计流程与使用工具介绍
- IC设计
- SVN 在项目开发中的使用
- 关于SVN在Eclipse中的使用
- SVN工具在Studio中的使用
- SVN在Android studio中的使用
- SVN安装与在eclipse中的使用
- Linux环境SVN命令行使用经验总结
- Linux环境SVN命令行使用经验总结
- 自定义分区partitioner实现数据分区存储
- Directions Reduction -- 5 kyu
- 最近忙着校招,总结一下
- 88. Merge Sorted Array
- docker基础知识-组件介绍
- 在IC设计中的svn使用经验总结
- wireshark分析TCP数据包
- 面向对象特性-继承
- docker学习——zookeeper集群安装
- Mutex Linux
- EBS添加新OU大体要设置的地方
- Nginx + Memcached 实现Session共享的负载均衡
- Hibernate的list()方法出来的结果重复
- System.arraycopy()方法详解