除贡献外,我们还要了解如何维护项目。
1 邮件补丁
邮件补丁是最常见的可持续工作方式,它有两种生成途径,推荐第二种。
- 由
git diff
或 Unix diff 命令生成,用git apply
命令应用。git apply
与 patch 命令几乎等效,前者的模糊匹配更加严格,如果不能全部应用,就全部撤销。在实际应用前,还可以通过命令git apply --check
检查补丁。而 patch 命令可能导致补丁文件被部分应用,使工作目录处在一个比较奇怪的状态。 - 由
git format-patch
命令生成,用git am
(am = apply mailbox) 命令应用。当无法顺利应用时,git am
会询问下一步操作,无非就是解决冲突,然后运行git am --resolved
继续应用下一个补丁。
发送邮件补丁之前必须配置以下条目:
$ git config --global sendemail.smtpencryption tls
$ git config --global sendemail.smtpserver smtp.gmail.com
$ git config --global sendemail.smtpserverport 587
$ git config --global sendemail.smtpuser chittleskuny@gmail.com
$ git config --global sendemail.smtppass ******
$ git config --global sendemail.suppresscc self # 不抄送自己
有些项目的目的地固定不变,可以直接写死。
$ git config sendemail.to pulseaudio-discuss@lists.freedesktop.org
$ git format-patch -C -n master..$dev_branch
$ git send-email --compose --no-chain-reply-to --suppress-from --to kernel@kernel.org 0001-*.patch
git send-email
命令发送的补丁邮件可另存为 mbox 格式的文件(一种在单文本中存储多封邮件的简单纯文本格式),以便在 git apply
中一并完成。
2 正式发布
贴标签,定版号,做简报,打包上传。
$ git tag -s v1.6.3 -m 'my signed 1.6.3 tag'
$ git describe master
v1.6.3-rc1-20-g8c5b85c
$ git shortlog --no-merges master 80941cd8..HEAD
$ git archive master --prefix='project/' | gzip > `git describe master`.tar.gz
$ git archive master --prefix='project/' --format=zip > `git describe master`.zip