update whats-new-git-2-1

This commit is contained in:
Jerry Lee
2014-09-07 15:36:50 +08:00
parent 7f29d35421
commit 18a23746b7

View File

@@ -5,7 +5,7 @@
`git` `2.0.0`发布2个半月后`2.1.0`作为小版本更新,带来了一大波令人兴奋的新特性。
完整的发布说明文档可以在这里[查看](https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.1.0.txt)
完整的发布说明文档可以在[这里](https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.1.0.txt)查看
如果你对`git`社区接触不多,会觉得发布说明文档说明有些太简明了。
这篇文章是我对这次发布中觉得令人兴奋的方面所做的评注。
@@ -190,7 +190,7 @@ stash-parent-3.0.0
..
```
不对啊!`2.10.0``2.3.0`之后发的,所以缺省的`tag`排序不对的。
有问题啊!`2.10.0``2.3.0`之后发的,所以缺省的`tag`排序不对的。
`git` `2.0.0`开始,可以用`--sort`选项可以正确按数据版本排序:
```bash
@@ -227,6 +227,43 @@ $ git config --global tag.sort version:refname
> 新加了`git verify-commit`命令用于检查有签名提交的`GPG`签名,使用方式和`git verify-tag`检查签名的`tag`类似。
如果你要用提交签名来认证提交的作者,`verify-commit`命令大大简化了核实签名操作。不再需要自己写个脚本去分析`git log --show-signature`
只要简单把要核实签名的那些提交传给`git verify-commit`
有可能你没有用签名提交(在`Atlassian`我们没有用),因为这们做需要有`Key`管理和开发额外麻烦的操作。
对于多数项目,一般签名的`Tag`是在方便和安全之间一个更好的平衡。
如果你想知道为什么有项目会使用签名提交Mike Gerwitz讲了一个在假设场景下[`git`的恐怖故事](http://mikegerwitz.com/papers/git-horror-story),这个场景下签名提交是非常有用的。
所以如果你在特别敏感的企业工作,可能要把它加入到工作流中。
更多的性能加速
------------------
`git` `2.1.0`也带来了一个不错的性能提升。
> 引入了使用2个文件一个基础文件和一个相应的增量文件的试验性格式来表示索引
当要重写只有小部分工作树变化的大索引时这样可能减少I/O消耗。
复述一下意思是:如果你的提交有大量文件修改时,运行`git add`可能会更快。
我本地的任何增量操作,`git add`已经像闪电一样快了,所以我测看不出和测试的`git`版本之间有什么大的性能变化。
有意思的是,第一次的`add`大量文件时好像快了一点。
做了个快糙猛的性能测试,我试着暂存所有在`JIRA`代码库从`JIRA 5``JIRA 6`的修改。
```bash
$ git checkout jira-v6.0
$ git reset jira-v5.0
$ time git add --all
```
`git` `2.0.3`平均使用2.44秒。而`git` `2.1.0`平均使用2.18秒 ——
节省超过10%的时间注意由于实验条件这是个很不准确的测试添加14500+个文件到索引中节省了1/4秒所以在日常`git`使用中不会看到大的变化。
关于新索引格式可以在[索引格式文件](https://code.google.com/p/git-core/source/browse/Documentation/technical/index-format.txt)中可以了解更多。
> 缺省开启了`core.preloadindex`配置项,以充分利用现代平台的多核。
不错!之前我没有开启这个功能,但升级到`2.1.0`后性能变化很显著。
再做一个快糙猛的测试,运行`git status`显示之前我用的从`JIRA 5``JIRA 6`的暂存修改。
显示暂存的14500+个文件,`git` `2.0.3`平均使用4.94秒。而`git` `2.1.0`平均使用3.99秒 ——
节省了多达19%的时间。如果你使用了自定义的`shell`提示符,在每次提示符显示时检查工作拷贝中是否有未提交的修改,
这个性能就非常有用!当索引很大时,觉得`bash`反应快了一些。
等等,还有还有!
------------------