Chinaunix首页 | 论坛 | 博客
  • 博客访问: 360592
  • 博文数量: 112
  • 博客积分: 5245
  • 博客等级: 大校
  • 技术积分: 1120
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 09:20
个人简介

静下来,定好方向,好好干。

文章分类
文章存档

2017年(1)

2012年(1)

2011年(5)

2010年(6)

2009年(16)

2008年(59)

2007年(24)

我的朋友

分类: 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   可显示更多命令信息

阅读(901) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~