城续缘(五)

事情发生的时候,并没有那么神秘。只不过是指头敲击在键盘上而已,却裂开了,出现了奇怪的符号。没有其他可能性,必然是这个结果,也只好接受了。就这样一点一点,逐渐变的密集起来。但总觉得不够,所以不停的延续着,直到诞生了最古老的传说。那个故事是这样的,如果看到了A,那么下一个是B。结局不会有人猜到,因此无法写出来,好吧。

蛋疼的NDK

最近在ndk下面编译某个lib,可惜这个lib用到了神棍的boost中的regex,恰好regex不仅仅是头文件是需要编译的,而且还是很旧的boost版本。于是乎折腾了半天boost在ndk下面的编译。主要是和jam这个令人发狂的语言打交道(有时间我一定专门出来吐槽),最后即将崩溃的时候,灵光乍现搞定了这坨玩意儿,编译出了静态库。

本以为接下来天下太平,link完毕之后又出现运行时错误。折腾了两个晚上,第一晚搞明白了ndk中的g++是把wchar_t当做4字节处理的,第二晚搞明白了这样做的原因:

google你是在坑爹啊!!!!尼玛wchar_t相关的函数根本没实现啊!!!!运行时各种诡异啊!!!!你们这帮家伙在想神马啊!!!!

参考一下两个链接中的内容就知道我有多想抽他们了:

http://code.google.com/p/android/issues/detail?id=4780

http://www.crystax.net/trac/ticket/25#

不让用就搞得明显点嘛,编译通过之后搞各种trick是怎么回事啊,ndk二等公民的身份彰显无疑……这下彻底傻x了,等吧。

尝试Git中

今儿终于成功把一个svn的项目迁移到了git上。之所以用git不用svn是因为这个项目文件太琐碎,托管项目的服务器走svn实在太慢了。昨天恰好发现它已经提供了git支持,于是乎就决定尝试一下。话说加了新feature为什么没有给我邮件通知啊,这家做SCM的太低调了。当然,我最终没用hg的原因也很简单,因为没有hg嘛……= =b

由于我用svn用的比较随意,大部分时间是当一个文件管理工具来用的,所以转移到git的时候被branch这个东西搞了半天,怎么也想不通要如何映射到git上。仔细琢磨了一下,发现git和svn在概念上是有本质上的区别的,很多文章用类比的方法来讲svn迁移到git是不合适的。譬如svn是可以单独checkout某个目录,而git如果想clone就必须全部搞下来。例如我总觉得svn的repo建起来比较麻烦,所以经常在trunk下同时搞着几个独立的project,这时候就很难直接把svn整个映射到git中。

而且git的强项不单单是分布式管理,还有强大的branch,所以按照svn的思路来用git也纯属蛋疼,没什么实质意义。因此我考虑比较合适的映射方式不是用git-svn把branch, trunk神马的直接搞成git的branch和master,而是需要先分析一下svn中的项目构成,逐个目录的建立git repo。例如原先我可能在trunk中放了好几个project,foo1和foo2,那么我觉得比较合适的方法是各搞一个git repo来管理。

全部搞定之后,托管服务器的SSH Public Key一直不生效,搞了大半天。最后终于成功push,平均速度达到80k/s,相当给力。