中科因仑“3+1”工程特种兵精英论坛

标题: Eieye创作集--5.电工团伙文件同步神器SVN [打印本页]

作者: liliuyang    时间: 2016-4-24 12:00
标题: Eieye创作集--5.电工团伙文件同步神器SVN
Eieye是一款软硬件开源的高速智能摄像头模块,你可以快速的让Eieye学习识别特定目标,并且可以直接和类似Arduino这样的开发板连接,更多内容欢迎访问Eieye社区(eieye.88448.com)或微信公众号(Eieye)。
Eieye硬件方案设计初期有一个小插曲,当时我和Kira看了不少的芯片datasheet 并专门做了一些统计文档,由于是业余时间,我们每次都是工作到很晚,有一次我睡意朦胧的搞完了一个MCU性能统计的文档并用邮件发给了Kira,结果第二天他却说他收到了一堆乱码,我在邮箱里翻了半天找到原邮件,打开附件一看,确实应该是excel文件格式的问题,有不少乱码,就这样,一晚上的辛苦白搭了。这时候我想起了上学的时候实验室用的文件同步神器---TortoiseSVN。



SVN简单说就是让你的团队搭建一个文件库,所有文件都放在库里,这个库每个人都可以看见,同时每个文件多了一个时间维度,也就是库中记录了每个文件的版本,你可以随时查看文件的每个版本,也可以对文件做修改,只需要上传(commit)到库中,团队成员同步(update,get)文件的最新版本后,你们的文件就同步了。从此再也不用担心改了文件过两天记不起来改哪儿了,随便噪。



SVN的来头可不小,看似简洁的界面背后有着强大的用户群体,网上统计说多数开源软件都使用SVN作为代码库。SVN的资料在网上太多了,可以很容易得到(官网user manuel链接)。SVN大部分是搞软件的人用,周围的电工还不是很普及。
1.广域网中如何搭建SVN库?
Kira听说有这么神奇的工具后我们便急不可耐的搭建了文件库。我们遇到的第一个问题是我以前都是在局域网自己搭建文件库,局域网内的团队成员可以访问,但我和Kira在城市的两端,不在一个局域网,所以我们得找一个在广域网上的服务器,以便让两个人都可以访问。我们首先用了下牛逼哄哄的GITHUB,看着爽,当要传文件的时候各种苦逼,速度巨慢,Google在国内还是不行啊!(不要说番墙哈,番墙也是挺烦人的事儿)
接着我们找了一个国内免费的SVN托管网站,多实惠呢,结果用了几天发现人家虽然免费,但是空间特别小,服务器也是慢,更悲剧的是人家想付费都不行,想买好点的服务都不行。
还好,最后找到了这家SVNChina,主页看着好像网购网站,我们胆战心惊的付款以后,发现这个付费的确实好用,上传速度几百kB,各种舒爽,到现在用了两年了,从来没出过问题;就这样广域网的SVN服务器的问题解决了。



2.写Message真的有必要吗?
Kira刚开始用SVN的时候玩的非常High,每天更新很多东西,不过他不喜欢对每个版本写注释,也就是Message,我经常看到一长串的版本号,后面啥都没注释,也不知道他改了啥,我还专门打开看各处的改动(这里必须要表扬SVN强大的版本间比较功能);



还好后来估计是Kira也有点分不清版本的差别了,也开始写Message,我们的版本库才看着像点样子了。试想下下面的每个版本如果没有Message你会不会崩溃?



3.各种类型工程文件上传的一般原则
我们用了几个月的SVN后已经形成了使用习惯,但是当我们画原理图的时候发现了一个问题---Altium Designer工程里面这么多文件我到底应该上传多少才能让Kira也能顺利下载,编辑,上传,我再编辑呢?文件上传多了,比如把工程的临时文件也传到了库里面的话Kira在家下载下来,可能打开一次工程不作任何修改再关掉,工程文件就会显示已被修改,这样是不符合我们数据同步的原则的,这个没有做任何修改的工程可以作为一个新版本吗?相反的,如果我们上传的工程文件过少,这样应该就不会出现上面的问题,但是很有可能你的文件不完整造成队友同步下来的工程直接无法打开。
所以我们经过讨论和实践得到了一个方法,这个方法遵循“最小上传文件原则”,具体是的过程是:(1)当你不知道某种工程最小的文件集的时候,请将所有工程文件上传,然后打开一次工程,看哪些文件显示被修改过了,将这些文件全从库中删除。(2)删除一些明显不用存入库中的文件,比如工程备份文件夹(backup file)。(3)在一个空文件夹中下载该工程,看是否能打开。如果有问题请返回第一步。
下面共享Eieye电工团队Keil工程的SVN上传方法:



4.多人共同编辑的工程如何防止冲突
有时候来感觉了大家都争着去做事情,这时候问题又来了,你改我也改,如果同时改了同一个文件的话(conflict),以谁的文件为准呢?这时候我们可以使用SVN中的lock功能,也就是编辑前对文件加锁,这时候团队其他人员就不能编辑了,你编辑完了解锁即可。类似于软件中的“信号量”概念。



关于迭代
到15年六月底,SVN库已经迭代了520个版本,今天看着以前的点点滴滴,让我想起了习大大提到的:“靡不有初,鲜克有终”。前几天我还感觉和我没关系,但看到这些迭代后我感到任何事情都是无止境的,把事儿做完全了不容易,我们一定要让Eieye越来越好。与各位电工伙伴共勉。



原文链接:http://eieye.88448.com/viewthread.php?tid=113032&extra=


x













欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4