SVN导入外部项目到本项目版本库
Posted by twcai in Programming on May 27, 2011
为什么需要导入外部项目到本项目版本库
在项目开发的过程中我们很可能会遇到这种情况:我们手头开发的项目可能要用到其他项目的内容。
最容易想到的办法是从其他项目的版本库里取出那部分内容,拷贝并添加到本项目的版本库中。但如果我们要令其他项目那过来的那部分内容保持最新,就是一个非常繁琐的工作了。
有没有高效的办法
如果本项目的版本库自动取得被引用的外部项目的更新,例如每次”svn update”或者”svn checkout”都可以去外部项目的版本库取得最新的内容,那实在是非常方便。我们可以通过Subversion的外部定义功能来实现这个目的。外部定义是一组本地文件路径和URL的映射,使svn可以取得外部版本库的文件到本地路径。
主要要用到以下几个svn指令
svn propset svn:externals PROJECT_NAME svn propedit svn:externals PROJECT_NAME svn propget svn:externals PROJECT_NAME
前两个指令都可以用来设置对应PROJECT_NAME的svn:externals属性,一般推荐用第二个。svn:externals的属性列表指定项目中模块的相对路径,版本信息和对应的URL。
例如:
third-party/foo svn://example.com/repos/foo third-party/bar -r 1234 svn://example.com/repos/bar
Subversion 1.5及以上的版本也支持以下的格式:
http://example.com/foo third-party/foo
-r 1234 http://example.com/bar third-party/bar
第三个指令则可以查询项目的外部定义的属性列表。
Perl脚本查Google字典
这个Perl脚本其实并不能算我的原创,是师傅Perl帝拿出来分享的。本来拿的是iciba的翻译,我另外改了一个上Google字典拿翻译的版本。
要修改的原因:
1. Google字典的英中字典,有双语解释;
2. Google字典的例句和相关短语这些资源要丰富的多,可以帮助理解单词使用的语境,写英文材料时非常有用;
3. 我习惯用Google字典,我一个G粉。
为什么要用一个脚本查单词?对于命令行控来说,离开当前工作终端,开个网页查单词是很痛苦的事情,他们甚至根本不想让手离开主键盘区!有这样的一个脚本,然后扔进/user/bin/,就不用大费周章的移动手臂了。
这个脚本用LWP::UserAgent抓取网页,HTML::TokeParser解析网页,获取单词的翻译。
脚本实现了一个抓取和解析google字典的类,整体的逻辑在en2chs函数中:
1. 生成网址
2. 用LWP取得结果网页
3. 解析网页
_parse_html找到翻译信息所在的代码块——一个id叫“pr-root”的标签,然后主要的体力活就全都扔给_get_close_mean啦。
要通过html标签来定位自己想要的内容,还真是个蛮累人的事情。但是Chrome的Deveploper Tools让事情简单了很多,实在是让人心神舒畅啊。
Not Going Anywhere
晚上8点,紫金港后门的腐败街80%的店都已经打烊了,小摊更是一个都不见了。
平常在腐败街正中间摆摊的那个烤猪蹄的老板,曾经以赚点钱回家过年为理由,把他的烤猪蹄们身价提高30%,虽然遭受了众人的抵制仍然可以很屌的吐槽:爱买不买。现在看来,他真顺利揣着钱,穿着纸尿裤回家过年去了。
晚上在Google Reader上看到这么一条调查成果“每天晚上8点到10点在做什么决定你是否能够成功”,看完我继续刷Google Reader,校内,豆瓣,各种刷刷到11点,开始检查我为今年写的计划。介于前几天开始读Memcached 1.4.5的源代码,算是又开始了2011计划里的又一项条目。
不过春节厦门旅游的事情也基本上潮吹告吹了,因为特么的从温岭到厦门的火车票,当天中午就卖光光了!真特么坑爹啊!!
唉,不说不开心的事情啦,不如顺便分享一下这个用来管理自己计划的工具—Springpad。
官方对这个工具的介绍是“一个免费帮助你记忆,分类管理你的各种东东的应用”。猛击这里,你就能看到一个技术宅为他的2011定的计划。你要是觉得他根本没有去做这些事嘛,太没理想,又或者太装逼,都可以在这里吐槽他!
最初发现这个东东是在Teddy君的日志Make it a better chrome。我看到截图中有个图标长着一根挺萌的黑色小箭头,于是去Chrome Web Store里找到她体验了一把,还真挺好用。
这里就不放链接了,请自行Google。如果你正在用Chrome,把他拖到你Chrome的App列表里面吧,灰常得心应手的说。嗯哼~
MMIE
前两年跨年时,我留了两小坨东西在自己的博客上。
2009刚开始的时候,我是个憧憬美好淫生人生决心投身奋斗的学习青年。
2010的元旦,我居然能听着Jay的歌,在茅坑里内牛。
所以说写博客是个好事情,看看自己的过去,会有各种欢乐。
回想一下过去的十二个月,前一半时间基本是被毕设和找工作折腾。
最后一个学期,我粗略的翻阅了Beginning Linux Programming和Windows核心编程,记了半本A4大小的笔记本,也算是学了一点点win下和linux下的程序开发,于是给OJ留下一个半成品的对战评判系统。
然后花了点心思搞定丢失的一个学分,忐忑的毕业了。
照理说,大学的最后一个学期不会只有这两样事情,然而当时或不安或淡然,或失望或期待,现在想来都已经模糊了。最清晰的印象原来是一直在重复的事情:每天背着笔记本来往于寝室实验室,翻着大部头的书坐在屏幕前写着代码。
下半年,我终于从毕业的压力中解脱出来。每天上上班,平时玩一玩,也不知道自己忙了些什么,就老觉得时间怎么都不够,所以这本该在跨年时出现的日志,才这么姗姗来迟。
尽管这样,我还是发现自己喜欢上了一个姑娘(虽然不那么及时)。这姑娘笑起来的时候老可爱了,又当知心姐姐又能讲冷笑话,卖萌撒娇捂脸什么的样样精通,甚至于,还有点geek的基因。要是能追上这姑娘,我得高兴成啥样?!
好啦,来制定一下今年的目标吧:
1. 给自己买了5本非技术的书,要认认真真读完。
2. 计划以后每年去一到两个地方旅游,看时间吧,今年暂定春节去厦门看看。
3. 既然当了QA了,就要做好。从Perl帝手里接过来的事情一定不能干砸了,好好学学automation test。
4. 用动态编程语言(Perl, Python神马的)写一个有意思的东东。
5. 找一个C/C++开发的产品,读懂代码。
6. 要抓机会锻炼*nix environment programming,各读一本OO和设计的书。
7. 不要再装逼,至少要学着由内而外的装。
8. 经常让自己看看上面这些都做了没。
于是,这篇总结就这样了。你要知道,回忆神马的,总是很辛苦的。











