Skip to content

Commit 1facb20

Browse files
committed
Merge pull request #255 from IceNature/chapter08
Sync 08-customizing-git
2 parents 97e2bd6 + 899c723 commit 1facb20

File tree

4 files changed

+11
-15
lines changed

4 files changed

+11
-15
lines changed

book/08-customizing-git/sections/attributes.asc

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ Git 属性能很好地解决此问题。
6363
我们现在就来设置它。
6464
我们会对 Git 进行配置,令其能够借助 `docx2txt` 程序将 Word 文档转为可读文本文件,这样不同的文件间就能够正确比较了。
6565

66-
首先,你需要安装 `docx2txt`;它可以从 http://docx2txt.sourceforge.net[] 下载。按照 `INSTALL` 文件的说明,把它放到你的可执行路径下。
66+
首先,你需要安装 `docx2txt`;它可以从 http://docx2txt.sourceforge.net[] 下载。
67+
按照 `INSTALL` 文件的说明,把它放到你的可执行路径下。
6768
接下来,你还需要写一个脚本把输出结果包装成 Git 支持的格式。
6869
在你的可执行路径下创建一个叫 `docx2txt` 文件,添加这些内容:
6970

@@ -105,7 +106,7 @@ index 0b013ca..ba25db5 100644
105106
Many people's version-control method of choice is to copy files into another directory (perhaps a time-stamped directory, if they're clever). This approach is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you're in and accidentally write to the wrong file or copy over files you don't mean to.
106107
----
107108

108-
Git 成功地挑出了我添加的那句话“Testing: 1, 2, 3.”,一字不差。
109+
Git 成功地挑出了我们添加的那句话“Testing: 1, 2, 3.”,一字不差。
109110
还算不上完美——格式上的变动显示不出来——但已经足够了。
110111

111112
你还能用这个方法比较图像文件。
@@ -155,7 +156,7 @@ Git 属性提供了两种方法来达到这一目的。
155156

156157
一种方法是,你可以把文件所对应数据对象的 SHA-1 校验和自动注入到文件中的 `$Id$` 字段。
157158
如果在一个或多个文件上设置了该属性,下次当你检出相关分支的时候,Git 会用相应数据对象的 SHA-1 值替换上述字段。
158-
注意,这不是提交对象的 SHA 校验和,而是数据对象本身的校验和:
159+
注意,这不是提交对象的 SHA-1 校验和,而是数据对象本身的校验和:
159160

160161
[source,console]
161162
----
@@ -279,11 +280,8 @@ test/ export-ignore
279280

280281
===== `export-subst`
281282

282-
When exporting files for deployment you can apply `git log`'s formatting and keyword-expansion processing to selected portions of files marked with the
283-
`export-subst` attribute.
284283
在导出文件进行部署的时候,你可以使用 `git log` 的格式化和关键字展开的处理,来选择被 `export-subst` 属性标记的部分文件。
285284

286-
For instance, if you want to include a file named `LAST_COMMIT` in your project, and have metadata about the last commit automatically injected into it when `git archive` runs, you can for example set up the file like this:
287285
举个例子,如果你想在项目中包含一个叫做 `LAST_COMMIT` 的文件,并在运行 `git archive` 的时候自动向它注入最新提交的元数据,可以像这样设置该文件:
288286

289287
[source,console]
@@ -340,7 +338,6 @@ Last commit: 312ccc8 by Jim Hill at Fri May 8 09:14:04 2015 -0700
340338
strips the surrounding `$Format:` and `$` markup from the output.
341339
----
342340

343-
The resulting archive is suitable for deployment work, but like any exported archive it isn't suitable for further development work.
344341
当前归档适用于当前的部署,但是不应该混用到以后的部署中。对 `export-subst` 的应用让我们可以避免这一点。
345342

346343
==== 合并策略

book/08-customizing-git/sections/config.asc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,11 @@ $ git config --global color.ui false
235235
这里我们以一个不错且免费的工具 —— Perforce 图形化合并工具(P4Merge) —— 来展示如何用一个外部的工具来合并和解决冲突。
236236

237237
P4Merge 可以在所有主流平台上运行,所以安装上应该没有什么困难。
238-
在这个例子中,我使用的路径名可以直接应用在 Mac 和 Linux 上;在 Windows 上,`/usr/local/bin` 需要被改为你的环境中可执行文件所在的目录路径。
238+
在这个例子中,我们使用的路径名可以直接应用在 Mac 和 Linux 上;在 Windows 上,`/usr/local/bin` 需要被改为你的环境中可执行文件所在的目录路径。
239239

240240
首先, 从 http://www.perforce.com/downloads/Perforce/[] 下载 P4Merge。
241241
接下来,你要编写一个全局包装脚本来运行你的命令。
242-
我会使用 Mac 上的路径来指定该脚本的位置,在其他系统上,它将是 `p4merge` 二进制文件所在的目录。
242+
我们会使用 Mac 上的路径来指定该脚本的位置,在其他系统上,它将是 `p4merge` 二进制文件所在的目录。
243243
创建一个名为 `extMerge` 的脚本包装 merge 命令,让它把参数转发给 p4merge 二进制文件:
244244

245245
[source,console]

book/08-customizing-git/sections/hooks.asc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
把一个正确命名且可执行的文件放入 Git 目录下的 `hooks` 子目录中,即可激活该钩子脚本。
1919
这样一来,它就能被 Git 调用。
20-
接下来,我会讲解常用的钩子脚本类型
20+
接下来,我们会讲解常用的钩子脚本类型
2121

2222
==== 客户端钩子
2323

@@ -47,7 +47,7 @@
4747

4848
`commit-msg` 钩子接收一个参数,此参数即上文提到的,存有当前提交信息的临时文件的路径。
4949
如果该钩子脚本以非零值退出,Git 将放弃提交,因此,可以用来在提交通过前验证项目状态或提交信息。
50-
在本章的最后一节,我将展示如何使用该钩子来核对提交信息是否遵循指定的模板
50+
在本章的最后一节,我们将展示如何使用该钩子来核对提交信息是否遵循指定的模板
5151

5252
`post-commit` 钩子在整个提交过程完成后运行。
5353
它不接收任何参数,但你可以很容易地通过运行 `git log -1 HEAD` 来获得最后一次的提交信息。

book/08-customizing-git/sections/policy.asc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ puts "(#{$refname}) (#{$oldrev[0,6]}) (#{$newrev[0,6]})"
4646

4747
把 `$newrev` 和 `$oldrev` 变量的值传给一个叫做 `git rev-list` 的 Git 底层命令,你可以获取所有提交的 SHA-1 值列表。
4848
`git rev-list` 基本类似 `git log` 命令,但它默认只输出 SHA-1 值而已,没有其他信息。
49-
所以要获取由一次提交到另一次提交之间的所有 SHA 值,可以像这样运行:
49+
所以要获取由一次提交到另一次提交之间的所有 SHA-1 值,可以像这样运行:
5050

5151
[source,console]
5252
----
@@ -58,7 +58,7 @@ dfa04c9ef3d5197182f13fb5b9b1fb7717d2222a
5858
17716ec0f1ff5c77eff40b7fe912f9f6cfd0e475
5959
----
6060

61-
你可以截取这些输出内容,循环遍历其中每一个 SHA 值,找出与之对应的提交信息,然后用正则表达式来测试该信息包含的内容。
61+
你可以截取这些输出内容,循环遍历其中每一个 SHA-1 值,找出与之对应的提交信息,然后用正则表达式来测试该信息包含的内容。
6262

6363
下一步要实现从每个提交中提取出提交信息。
6464
使用另一个叫做 `git cat-file` 的底层命令来获得原始的提交数据。
@@ -432,11 +432,10 @@ end
432432
[source,ruby]
433433
----
434434
`git rev-list ^#{sha}^@ refs/remotes/#{remote_ref}`
435-
.
436435
----
437436

438437
`SHA^@` 语法会被解析成该提交的所有父提交。
439-
该命令会列出在远程分支最新的提交中可达的,却在所有我们尝试推送的提交的 SHA 值的所有父提交中不可达的提交——也就是快进的提交。
438+
该命令会列出在远程分支最新的提交中可达的,却在所有我们尝试推送的提交的 SHA-1 值的所有父提交中不可达的提交——也就是快进的提交。
440439

441440
这个解决方案主要的问题在于它有可能很慢而且常常没有必要——只要你不用 `-f` 来强制推送,服务器就会自动给出警告并且拒绝接受推送。
442441
然而,这是个不错的练习,而且理论上能帮助你避免一次以后可能不得不回头修补的变基。

0 commit comments

Comments
 (0)