静下来,定好方向,好好干。
分类: LINUX
2007-11-09 13:02:37
两大风格:
GNU编程风格-> 要点:
函数开头的左花括号在最左边,其他的左括号避免放到最左边;
函数名的起始字符也要在最左边;
每个程序开头都要有一段注释说明其功能;
函数的注释:功能,参数类型,含义,返回值;
while,if尽量带上括号;
避免在if中赋值;
结构的声明和typedef,结构变量定义尽可能不放一起;
全局变量要注释;
全局变量和函数,避免采用简单的名字,小写字母加下划线构成;
局部变量命名要简短;
kernel编程风格-> 要点:
缩进格式是tab,缺省是8字符;
函数长度不应超过2屏(24*2);函数局部变量不应超过10个;
将开始的大括号放在一行的最后,函数定义除外;
结束的大括号通常单独位于一行,下列情况除外:
do {
}while();
if () {
}else if () {
}else{
}
indent工具:
indent -gnu style.c -o style_gnu.c //变成gnu风格
indent -kr -i8 style.c -o style_kernel.c //变成内核风格
diff:
输出格式:nomal格式, -c上下输出格式, -y并排输出格式, -u统一输出格式
diff file1 file2 的输出:
<表示第一个文件file1
>表示第二个文件file2
? file1要如何变成file2呢:
ndm 表示file1的n行删除,后面的部分加到file2的m行后面;
ncm 表示file1的n行改成file2的m行那样;
nam 表示file1的n行后面的部分添加到file2的m行后面;
上下输出格式说明:
- file1需要删除的
! file1需要更改的
+ file1需要添加的
统一输出格式说明:
- file1中需要删除的
+ file1中需要添加的
@@ -n,m +p,q @@
该比较块中,file1从n行开始,共m行,file2从p行开始,共q行;
一些选项:
-q only report whether differ
-b ignore space change,but can detect the difference of no space to have space
-w ignore all spaces
-B ignore blank lines
-r enter subdir to diff
常用的命令格式:
diff -urN dir1 dir2 > dir.patch 产生patch的diff应采用统一格式u选项;
diff3 [option] file_chg1 file_org file_chg2 > newfile
将前后2个文件与当中的原始文件比较,输出结果.
-m选项可以合并文件,对于同一处的不同修改则报告冲突,显示为:<<<<||||====>>>>
patch [options] < patchfile
选项:
-p num 剥离前num个目录进行patch
-d dir 先进入dir目录,再patch
-R 逆向还原
如:
diff -u hello.c lohhe.c > hello.patch
patch -p0 < hello.patch
patch -R -p0 < hello.patch
diff -urN doc1 doc2 > doc.patch
rm doc2 -rf
patch -p0 < doc.patch
or
patch -d doc1 -p1 < doc.patch
subversion
产生背景->lock-modify-unlock机制的弊病:
无法并行开发;如果修改同一文件的不同部分,不需要加锁;如果2人同时修改2个依赖的文件,则不可同步了.
svn采用copy-modify-merge机制
安装:sudo aptitude install subversion
创建respository:
svnadmin create ~/respos
启动网络服务器:
svnserve -d 以daemon的方式启动服务,默认端口3690,不需要root权限
修改配置文件:
vi ~/respos/conf/svnserve.conf
[gerneral]
password-db = passwd 表示用户帐号文件是~/respos/conf/passwd
vi ~/respos/conf/passwd
[users]
harry = harrysecret 注意都要顶格写,行首不空;
marry = marrysecret
导入项目文件:
svn import -m "initial import." local_prj_dir
svn import project_dir
...enter nano, input some description word, ^o save, ^x quit.
password for 'PC_user':
username: 'SVN_user'
password for 'SVN_user':
建立工作站:checkout
svn checkout svn://127.0.0.1/home/username/respos/svn_prj_dir/ local_prj_dir
svn commit 提示服务器上的内容有被他人commit过,commit不成功
svn update 从服务器下载最新内容,并与自己的修改合并,若有冲突,会提示,需先解决
svn resolved file 告诉svn冲突已经解决,然后可以commit了
svn commit 发出更新服务器上的内容
svn status 显示本地工作目录的文件状态
svn add file 将file文件,目录,符号连接,加入respository
svn delete file
svn copy file1 file2
svn move file2 file3
svn commit 将修改同步到服务器
svn revert file1 撤销本地修改,恢复到update时候的状态
svn log 显示所有nano信息
svn diff --revision 3:5 比较版本3和5
svn update --revision 3 整个目录退回到版本3
svn help 可显示更多命令信息