这是小樱桃新员工的必读文章,在此,我们分享给大家,希望对大家有用。也欢迎大家批评。
欢迎加入小樱桃。不管你是刚刚走出象牙塔,还是有多年的深资工作经历,都请认真读一遍这篇文章。该文章包含我们写代码的一些习惯和规范。记住下面这些:
好的代码规范是写代码的根本,不管你以前有什么背景和习惯,请与我们保持同样的风格,当然,我们永远欢迎新的改进建议。
.vscode/settings
选择一种代码风格,以及使用.clang-format
进行代码格式化。Option(或Alt) + Shift + F
快捷键触发。Cmd(或Ctrl)+ Shift + P
,打开Open Settings(JSON)
,添加如下两行配置: "files.insertFinalNewline": true,
"files.trimFinalNewlines": true
也可以打开Open User Settings
,在Search Settings
中输入newline
,在找到的Insert Final Newline
和Trim Final Newline
处打钩。
在没有风格可参照的情况下,特别是在C语言的情况下,应按以下约定:
if
、else
、white
等与大括号之间要有空格,以与函数调用区分。git diff
看一下,确保每行最后不要留有空白(空格或Tab)。我们一般使用VSCode编辑器。编辑器相关的配置如./vscode
应该放到.gitignore
里面并不应该提交到项目仓库中。其它编辑器的配置也类似。
一般来说,如果编辑器有两个配置文件,一个配置文件是可以大家共享的,另一个是跟个人环境相关的。那这种情况下可以共享和可以放到仓库中。但跟个人相关的信息应该在单独的配置文件中并且需要忽略掉。
项目名称一般以“-
”分隔,在程序语言中一般转换为以“_
“分隔。如uni-x
项目在源代码中可能是uni_x
。有其它约定的除外(如FreeSWITCH的模块统一使用mod_xxx
)。
this_is_a_var
参照Go语言通用的命名规范。
参照ProtoBuffer通用的命名规范。
变量名用 Camel case,如 ThisIsAVar.
.erl 源文件的 Meta Data 按以下顺序
数据库使用 PostgreSQL。尽量使用 Rails 风格 的表名及字段定义。即,表名用复数,字段名示例如下:
id
user_id
created_at
updated_at
deleted_at
代码提交到我们的 Git 代码库中,如:
git clone git@git.xswitch.cn/xyt/freeswitch.git
git checkout -b new-feature-branch
edit
git diff
git commit
git diff --cached
git push
push
后会生成一个Url,把该Url复制粘贴到浏览器中可以直接提一个Pull Request。如果一个PR中代码Commit比较多而且反复修改比较多,可以进行squash
,将某些提交合并,以便更符合逻辑。如果分支离master
分支比较远,尽量rebase
到最新,并解决冲突。在自己的分支上提交可以push -f
,并且不需要重新提PR,当然如果该分支上有其它协作者要通知对方及时pull --rebase
,以免引起混乱。但是master分支永远不要push -f
,除非经过深入探讨。
如果你的分支离主分支比较远,这时候可能需要把主分支最新的内容合并进来。最好不要merge
,而是使用rebase
,如,在你的分支里:
git fetch origin
git rebase orign/master
git push # 或git push -f
如果你是在一个Fork后的仓库中工作,那么,remote
可能对应的不是origin
,也可能叫upstream
或者你自己起的其它名字。以upstream
为例,你应该这样做,在你的分支上:
git fetch upstream
git rebase upstream/master
# 解决可能的冲突
git push -f
负责代码合并的人需要掌握合并技巧,掌握直接合并、Rebase再合并以及Squash然后合并的区别。在实际应用中根据训练程序自己可以选择,目标是产生更“干净”的代码树。代码合并后应该在仓库中删除相关分支(需要时可重建)。
master
(或main
): 开发主分支,所有人一般在自己的分支上开发,并提PR,由专人Review并将阶段性成果merge
到master
分支fix-issue-xx
或add-xx-feature
等。SSH 或 Git 服务器需要你的 Public Key ,如果如下命令生成ed25519
格式的Key,这样生成的Key全短一些:
ssh-keygen -t ed25519
该命令会生成id_ed25519
(私钥)以及id_ed25519.pub
(公钥)。这叫不对称加密,小心保存好你自己的私钥(不要让任何人得到),可以把公钥共享给别人。
以下命令会生成 id_dsa
及 id_id_dsa.pub
,RSA格式:
ssh-keygen
在Windows 上使用 tortoise git 时可能需要在 pubkey 及 putty key 间转换。
参考:http://blog.csdn.net/zoucui/article/details/6135078
git help cherry
我的 .gitconfig
,供参考。
[alias]
last = log -1 HEAD
st = status
co = checkout
ci = commit
br = branch
df = diff
dfc = diff --cached
pr = pull --rebase
lg = log -p
who = shortlog -s --
[color]
status = auto
branch = auto
ui = auto
[master]
branch = always
[core]
whitespace = trailing-space,space-before-tab
execludes = /Users/seven/.gitexcludes
[apply]
whitespace = fix
.gitexcludes
.svn
下面是一个简单的Bash脚本可以方便的git add
多个文件。使用方法:将本脚本放到搜索路径下,如$HOME/bin
,执行git status
显示改动过的文件,然后复制需要添加的文件,执行7add.sh
,粘贴,回车,Ctrl+D
或Command+D
键退出。再运行git status
查看。
#!/bin/bash
t=`cat`
echo $t
for f in $t; do
if [ -f $f ]; then
echo $f
git add $f
fi
done
一般来说,我们遵循以下分支策略。
master
分支为生产分支,永远不要擅自push -f
。rebase
到master
分支,再提PR。push -f
,不需要删除PR重建。rebase
到master
,以避免合并时冲突过多。master
分支。git pull
,或git pull --rebase
git branch -b your-new-branch-name
git commit -m 'fix ....
git push
,一般会生成一个链接,把该链接复制到浏览器可以快速提Pull Request一般来说按Ctrl+Z或Cmd+Z就可以回退,再保存一次就可以了。
此外,遇到问题,可以到 Google上搜索,其次是 https://cn.bing.com/ ,再次者是百度。搜出来的文章,一般像简书、知乎、RUNOOB上的文章一般质量比较高一些。
当你能把你学到的知识,能给别人讲会时,你就真的学会了。
最后,别忘了持续更新优化本文档。