这是小樱桃新员工的必读文章,在此,我们分享给大家,希望对大家有用。也欢迎大家批评。
欢迎加入小樱桃。不管你是刚刚走出象牙塔,还是有多年的深资工作经历,都请认真读一遍这篇文章。该文章包含我们写代码的一些习惯和规范。记住下面这些:
好的代码规范是写代码的根本,不管你以前有什么背景和习惯,请与我们保持同样的风格,当然,我们永远欢迎新的改进建议。
.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 --rebasegit branch -b your-new-branch-namegit commit -m 'fix ....git push,一般会生成一个链接,把该链接复制到浏览器可以快速提Pull Request一般来说按Ctrl+Z或Cmd+Z就可以回退,再保存一次就可以了。
此外,遇到问题,可以到 Google上搜索,其次是 https://cn.bing.com/ ,再次者是百度。搜出来的文章,一般像简书、知乎、RUNOOB上的文章一般质量比较高一些。
当你能把你学到的知识,能给别人讲会时,你就真的学会了。
最后,别忘了持续更新优化本文档。