您的位置:首页 > 其它

在IC设计中的svn使用经验总结

2017-09-09 22:05 127 查看
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

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不稳定。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svn