Tips 2013-02-17

如果有需要把工程从Linux下面移植一份到Windows下,却又不熟悉Visual Studio的各种配置,那么用CMake来管理工程是一个不错的选择。从Makefile改写CMakeLists.txt并不麻烦,而且CMake可以自动生成VS的工程文件,很好用。 用 floor 和 ceil 这类函数最好先对参数做显示的类型转换,否则VS会报错。 isinf 和 isnan 能不能则不用,VS没有现成好用的对应版本。 关于把一份Git工程同步到SVN的版本库里去的方法,网上讨论的很多,比如这个: http://stackoverflow.com/questions/661018/pushing-an-existing-git-repository-to-svn 但是如果你的Git的工程已经有了悠久历史,那么在rebase那一步你可能会有非常多的conflicts要处理。一个小办法是每次出现了冲突都用这一行代码: $git checkout . –theirs && git add . && git rebase –continue 当然前提是当前目录下面没有不在git管理下的其他文件。这个虽然不解决根本问题,但是会方便很多。 总是有想要重构自己实验工程的想法,看起来工程的框架还是不太好。我总觉得好的框架应该是很容易修改的,现在每次想要往工程里新加一组实验就觉得有些代码碍手碍脚。如果不想有重复代码函数粒度就太小,而且接口复杂不可读,时间一长就看不出它们都是干什么的了。否则就有大段的重复代码,十分难看。如果把实验操作部分放到Bash脚本里面,移植又是一个问题。很少看到讲这种不大的工程怎么去搭框架的问题,苦于自己技术水平不够,想想真是头疼…

git submodules

刚刚知道的一个用法,记录一下。 git可以把另一个git工程作为子项目(submodule),如果项目很大的话可以把一些子项目独立出来,单独作为一些个git项目,最后再作为库提供给主工程使用。遵照这个做法正好也能培养个好习惯。 几个命令: $git submodule add git://github.com/chneukirchen/rack.git rack submodules由.gitmodules文件管理。内容如此: [submodule “rack”] path = rack url = git://github.com/chneukirchen/rack.git 如果你clone了一个有submodules的git工程,需要额外的操作来clone其中的submodules. $ git submodule init $ git submodule update 知道这么几个命令就可以试试了。 参考自:6.6 Git Tools – Submodules

gitignore

如果用git管理的工程文件结构比较复杂,可以新建一个.gitignore文件 $cat .gitignore *.o tmp* 用来忽略一些文件,比如上面的内容可以用来忽略以.o结尾的文件和tmp开头的路径。 今天发现还可以用惊叹号!来做白名单。 $cat .gitignore *.o tmp* !*.c 这样确保.c文件不被git忽略。 值得注意的是,.gitignore里条件是靠后优先的,写在后面会覆盖前面的效果。 比如当前目录下有 $ls . a.c a.o tmp.c 上面的.gitignore不会忽略掉tmp.c