1、代码托管
git,分布式版本管理工具(SVN是中心式,一崩俱崩)
github不能免费创建私库,gitlab可以免费创建私库
2、代码同步
有很多代码同步方法,如samba共享,expand工具,直接rz sz拷贝,mobaxterm拷贝,各有千秋,再推荐一种方法:
cygwin + rsync。
安装cygwin,勾选openssh和rsync,用来传输时使用。
可以从远程或者本地镜像保存整个目录树和文件系统
可以保持文件原来的权限、时间、所有者、组信息、软硬链接等等
无须特殊权限即可安装
快速:要比 scp (Secure Copy) 要快;第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,可以使用更少的带宽
安全:可以使用 scp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接
支持匿名传输,以方便进行网站镜像
一般用法:
rsync [OPTION]... SRC DEST SRC或DEST可为远程或本地
rsync [OPTION]... SRC [USER@]HOST:DEST
典型用例:rsync -azvh/avz SRC DEST --delete(删除目标比源多的文件) --exclude 排除的目录
我的用法:rsync -arvh --exclude=doc --exclude=bin --exclude=.svn /cygdrive/z/SVN_PROJECT/project1 xiaomng@192.168.2.3:/home/xiaoming/
3、svn
先检出整个目录:svn co --depth empty https://192.168.1.1/svn/project project就是你检出的最外层目录名字
再检出需要的文件:svn update --set-depth infinity project/src
svn log -v -l 4 显示最近的4条日志
svn log -v -r 961:1698
svn help log
svn log -r 5:19 按照时间顺序打印从版本号 5 到 19 的日志
svn log -r 19:5 按照时间逆序打印从版本号 5 到 19 的日志
svn log -r 8 显示版本号 8 的日志
4、Linux下查看与修改代码配置
4.1 ctags配置(跳转到函数定义)
最基本的配置:
终端输入如下命令:ctags -R . ,将在当前目录下生成文件 tags
然后打开源文件,光标定位到函数或者宏名上,按Ctrl + ],就可以跳转到该函数或者宏的定义处,要想退回来则使用Ctrl + o 或者 Ctrl + t ,
也可以直接在终端输入 vim -t 函数名,也可以查看函数定义。
4.2 cscope配置(查找函数调用、被调用)
~/.vimrc添加以下(已包含ctags的配置,加数据库的配置,数据库更新添加等等,所以非必须不需要了):
必须:
if has("cscope")
set cscopetag
set csto=1
set nocscopeverbose
if filereadable("cscope.out")
cs add cscope.out
elseif $CSCOPE_DB !=""
cs add $CSCOPE_DB
endif
set cscopeverbose
nmap <C-/>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-/>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-/>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-/>d :cs find d <C-R>=expand("<cword>")<CR><CR>
endif
非必须:
建立索引数据库:
首先进入源码目录, 在linux终端中输入以下命令以创建cscope数据库:
$ find ~/work/..Project/ -name "*.h" -o -name "*.cpp" > cscope.files
$ cscope -bkq -i cscope.files
如果是在windows环境中, 则换成如下命令:
dir /s /b *.cpp *.h > cscope.files
cscope -b -q -k -i cscope.files
然后, 用vim打开一个源文件(如: vim main.cpp),
打开后, 第一件事就是导入cscope数据库了:
:cs add /home/yourname/workpace/cscope.out /home/yourname/workpace
cscope数据库导入成功后, 就可以利用上面定义的快捷键进行相关的查找,
使用方法:
:cs find s ---- 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
:cs find g ---- 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
:cs find d ---- 查找本函数调用的函数:cs find c ---- 查找调用本函数的函数
:cs find t: ---- 查找指定的字符串
:cs find e ---- 查找egrep模式,相当于egrep功能,但查找速度快多了
:cs find f ---- 查找并打开文件,类似vim的find功能
:cs find i ---- 查找包含本文件的文
4.3 taglist(浏览文件中的所有函数、宏定义等,F8)
功能: 高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏等。安装就不需要了,简单配置一下就行了,但需要ctags的支持。
把plugin/taglist.vim复制到~/.vim/plugin目录下,
把doc/taglist.txt复制到~/.vim/doc目录下
.vimrc添加:
" 按F8按钮,在窗口的左侧出现taglist的窗口,像vc的左侧的workpace
nnoremap <silent> <F8> :TlistToggle<CR><CR>
" :Tlist 调用TagList
let Tlist_Show_One_File=0 " 只显示当前文件的tags
let Tlist_Exit_OnlyWindow=1 " 如果Taglist窗口是最后一个窗口则退出Vim
let Tlist_Use_Right_Window=1 " 在右侧窗口中显示
let Tlist_File_Fold_Auto_Close=1 " 自动折叠
使用说明:F8出现浏览窗口,
ctrl+ww 在列表和源文件中切换
ctrl + ] 查看函数定义
ctrl + o 返回上一级文件。
gf 查看头文件
gd 转到当前光标所指的局部变量的定义处。
* 转到当前光标所在单词的下一次出现的地方。
# 转到当前光标所在的单词的上一次出现的地方。
<CR> 跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o 在一个新打开的窗口中显示光标下tag
<Space> 显示光标下tag的原型定义
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
+ 打开一个折叠,同zoctags常用快捷键ctags常用快捷键
- 将tag折叠起来,同zc
* 打开所有的折叠,同zR
= 将所有tag折叠起来,同zM
[[ 跳到前一个文件
]] 跳到后一个文件
q 关闭taglist窗口