Tips zh

From Apache OpenOffice Wiki
Revision as of 11:05, 12 August 2007 by Zhangxiaofei (Talk | contribs)

Jump to: navigation, search

Tips_en

获取OO.o的CVS帐户

下面是获取CVS服务器上传帐户的流程,(ooo-build帐户使用不同的方式)。issue i#7270#说明了就此提交issue的流程。帐户设置好之后,需要用类似下面的命令tunnel到CVS服务器上:

ssh -f -2 -P -L 2401:localhost:2401 tunnel@openoffice.org sleep 1400 < /dev/null > /dev/null

然后需要修改你的CVSROOT,将其指向你本地的机器,因为这是tunnel的终点:

:pserver:mmeeks@localhost:/cvs

你的帐户名和密码 - 和你在SourceCast系统里用来提交bug等等的相同。登录,然后……你很快就会发现需要把你的CVS设置移到新服务器上,为了不重复checkout而浪费带宽,应当这样做:

bin/re-root /path/to/checkout ":pserver:<account-name-here>@localhost:/cvs"

当然,要提交东西,你还需要各种项目权限 - 并且要和官僚主义斗争。

使用patch和diff

patch和diff是很棒的工具,但人们给出的数据经常杂乱而难于整理,使得它们无法工作。下面的窍门教你对付杂乱的数据。

生成diff文件时,请对你checkout的文件版本使用 diff -upN。

后面的选项代表:

-u

生成包含上下文的diff文件。

更有利于patch的审阅人理解它的目的并把它加到也同时在变化的代码中。

-P

显示每个修改位于哪个C函数中。

-N

新文件,将缺少的文件当作空文件处理。

可以有效地把新文件的内容包括在diff文件中,否则会漏掉它们。

  • 当你对后果不很确定时,先运行patch --dry-run,这样可以显示patch的结果,但并不真正patch[对于具*有复杂的内部依赖关系的patch这可能会得到虚假的结果,但仍然很有用]。
  • 大多情况下使用patch -p0;0强调了从被diff的文件的路径头部去掉了0个路径元素。
  • 当你弄乱了,比如只应用了半个patch,想要转回clean的文件的时候,可以删除文件并使用cvs update,或者使用'-R'选项重新patch来消除上一次的结果。
  • 有时对包含了很多空白增减的模块使用diff会使patch非常难于阅读;用'-w'选项来(cvs) diff 可以让这容易些。

对ooo-build提交一个patch之前,先在根目录使用make patch.apply测试一下,注意。保存两份代码非常值得 - 一份hack过的,一份原始的。

Make clean

在build/src680目录使用dmake clean就可以了。或者在ooo-build里使用rm -Rf build。

CVS设置

为了更有效地利用网络带宽,应默认生成正确的diff文件,并坚持这一习惯,在你的~/.cvsrc里使用以下命令。

cvs -z3 -q
diff -upN
update -dP
checkout -P
status -v

给build增加头文件

给OO.o build添加头文件向来以繁杂著称。要在external/下添加头文件,先确定你把它们添加到了external/prj/d.lst中,这样在build的时候它们才会被拷贝到sover/680/unxlngi4.pro/inc/external 目录下。

寻找hack的位置

你想要定位/修改的地方往往和某些GUI元素有关。所以,在LXR's的text search里查找一些足够特别的字符串;这可以找到与这个字符串有关的标识符;例如SID_AUTOFORMAT,或者FN_NUM_BULLET_ON等等。找到之后,对它再进行查找,就可以找到用途[或者一串对其它东西的定义]。对于例如菜单/工具栏按钮,功能部分通常在一个case语句中,比如case SID_AUTOFORMAT: ...

添加一个UNO接口

这可能比你想像的更复杂些。

  • 添加一个IDL文件offapi/com/sun/star/wherever/Foo.idl。
  • 如果wherever不是一个新路径,把Fool.idl添加到wherever/makefile.mk的IDLFILES里。
  • 如果wherever是一个新路径,修改offapi/util/makefile.mk,在其中引用相关的TARGET.db,prolly whatever.db
  • 如果wherever是一个新路径,应对offapi/prj/d.lst和build.lst做正确的修改。

这可以使你定义的类型的信息build和install到types.rdb里。但这只是一部分:offuh模块build并install我们(在C++里)需要的的.hdl/hpp文件,所以如果wherever是一个新路径,我们也需要更新offuh/prj/d.lst来安装这些文件。

最后,检查types.rdb,看install set里是否包含了你定义的类型,使用regview types.rdb/ | grep 'whatever' -i就可以做到这点。如果发现没有,应当手动从solver里拷贝types.rdb。

创建一个新的顶级模块

这里讲述了关于把外部的代码引入OOo build环境中的技术细节。如何在CWS里控制新模块的过程在这篇CWS-HowTo里有讲解。

找出你使用的OOo是什么版本

打开关于对话框(帮助菜单的最后一项),按住<Ctrl>键,然后依次按S D T键。开始滚动时第一行(紧靠OK按钮下面)给出了内部的里程碑号码和build ID。

扩展阅读

Personal tools