ā§.ā§§ā§Ļ āĻāĻŋāĻ āĻā§āϞāϏ – āĻāĻŋāĻ āĻĻāĻŋāϝāĻŧā§ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ
āĻāĻŋāĻ āĻĻāĻŋāϝāĻŧā§ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ
āĻāĻžāϰā§āĻļāύ āĻāύā§āĻā§āϰā§āϞā§āϰ āĻāύā§āϝ āĻāĻŋāĻā§āϰ āĻŽā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϞā§āĻ, āĻāϰ āĻāĻŋāĻā§ āĻāĻŽāĻžāύā§āĻĄ āĻāĻā§ āϝā§āĻā§āϞ⧠āĻĄāĻŋāĻŦāĻžāĻ āĻāϰāϤ⧠āĻ āϰā§āĻĨāĻžā§ āϏā§āϰā§āϏ āĻā§āĻĄā§āϰ āĻā§āϞ āĻā§āĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ āϝā§āĻšā§āϤ⧠āĻāĻŋāĻ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻĒā§āϰāĻžāϝāĻŧ āϏāĻŦāϧāϰāύā§āϰ āĻāύā§āĻā§āύā§āĻ āϏāĻžāĻŽāϞāĻžāύā§āϰ āĻāύā§āϝ, āϤāĻžāĻ āĻāϰ āĻā§āϞāĻā§āϞā§āĻ āĻŦā§āĻļ āϏāϰā§āĻŦāĻāύā§āύāĨ¤ āϏā§āĻā§āϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŋāĻā§āϰ āĻāĻŽāĻŋāĻā§āϰ āϤāĻžāϞāĻŋāĻāĻž āĻĨā§āĻā§ āϏāĻšāĻā§ āĻā§āĻĄā§āϰ āĻŦāĻžāĻ āĻŦāĻž āĻā§āϞ āĻā§āĻāĻā§ āĻŦā§āϰ āĻāϰāĻž āϝāĻžā§āĨ¤
āĻĢāĻžāĻāϞ āĻāύā§āĻā§āĻļāύ (File Annotation)
āϝāĻĻāĻŋ āĻā§āĻĄā§ āĻāĻŽāϰāĻž āĻā§āύ⧠āĻŦāĻžāĻ āĻā§āĻāĻā§ āĻĒāĻžāĻ āĻāĻŦāĻ āĻāĻžāύāϤ⧠āĻāĻžāĻ, āĻāĻāύ āĻŦāĻž āĻā§āύ āϏā§āĻ āĻā§āϞāĻāĻŋāϰ āϏā§āϤā§āϰāĻĒāĻžāϤ āĻšāϞā§, āĻĢāĻžāĻāϞ āĻāύā§āĻā§āĻļāύ āϏā§āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻž āĻāĻžāϞ⧠āĻĒāĻĻā§āϧāϤāĻŋāĨ¤ āϝā§āĻā§āύ⧠āĻĢāĻžāĻāϞā§āϰ āϝā§āĻā§āύ⧠āϞāĻžāĻāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāϰā§āĻŦāĻļā§āώ āĻā§āύ āĻāĻŽāĻŋāĻāĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšā§ā§āĻāĻŋāϞ āϤāĻž āĻĻā§āĻāĻž āϝāĻžāĻŦā§ āĻāĻāĻž āĻĻāĻŋā§ā§āĨ¤ āϏā§āϤāϰāĻžāĻ āĻā§āĻĄā§āϰ āĻā§āĻĨāĻžāĻ āϝāĻĻāĻŋ āĻā§āϞ āĻĒāĻžāĻā§āĻž āϝāĻžā§, āϤāĻāύ git blame āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻžāϞāĻžāϞā§, āϏā§āĻ āϞāĻžāĻāύāĻāĻŋ āϤā§āϰāĻŋāϰ āĻāύā§āϝ āĻā§āύ āĻāĻŽāĻŋāĻāĻāĻž āĻĻāĻžāϝāĻŧā§ āĻāĻŋāϞ, āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāύ āĻāϰ⧠āĻĢāĻžāĻāϞ⧠āϏā§āĻāĻž āĻāĻŋāĻšā§āύāĻŋāϤ (annotation) āĻāϰ⧠āĻĻāĻŋāĻŦā§āĨ¤
āĻāĻāĻžāύ⧠āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāĻŋāϏāĻžāĻŦā§, git blame āĻĻāĻŋā§ā§ Makefile āĻĢāĻžāĻāϞāĻāĻŋāϤ⧠(āĻāĻĒ-āϞā§āĻā§āϞ āϞāĻŋāύāĻžāĻā§āϏ āĻāĻžāϰā§āύā§āϞā§āϰ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ), āĻā§āύ āϞāĻžāĻāύā§āϰ āĻāύā§āϝ āĻā§āύ āĻāĻŽāĻŋāĻ āĻ āĻāĻŽāĻŋāĻ-āϰāĻā§āĻŋāϤāĻž āĻĻāĻžāϝāĻŧā§, āϤāĻž āĻŦā§āϰ āĻāϰ⧠āĻĻāĻŋāĻā§āĻā§āĨ¤ āϏā§āĻ āϏāĻžāĻĨā§ āĻāĻŽāĻžāύā§āĻĄā§ -L  āĻ āĻĒāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻĢāĻžāĻāϞā§āϰ āĻļā§āϧ⧠69 āĻĨā§āĻā§ 82 – āĻāĻ āϞāĻžāĻāύ āύāĻŽā§āĻŦāϰāĻā§āϞā§āϰ āĻāύā§āϝ āĻāĻāĻāĻĒā§āĻ āϏā§āĻŽāĻŋāϤ āĻāϰ⧠āĻĻā§ā§āĻž āϝāĻžāĻā§āĻā§:
$ git blame -L 69,82 Makefile
b8b0618cf6fab (Cheng Renquan 2009-05-26 16:03:07 +0800 69) ifeq ("$(origin V)", "command line")
b8b0618cf6fab (Cheng Renquan 2009-05-26 16:03:07 +0800 70) KBUILD_VERBOSE = $(V)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 71) endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 72) ifndef KBUILD_VERBOSE
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 73) KBUILD_VERBOSE = 0
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 74) endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 75)
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 76) ifeq ($(KBUILD_VERBOSE),1)
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 77) quiet =
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 78) Q =
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 79) else
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 80) quiet=quiet_
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 81) Q = @
066b7ed955808 (Michal Marek 2014-07-04 14:29:30 +0200 82) endif
āĻā§ā§āĻžāϞ āĻāϰāĻŋ, āĻāĻāĻāĻĒā§āĻā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϞāĻžāĻāύā§, āĻĒā§āϰāĻĨāĻŽ āĻ āĻāĻļāĻāĻŋ āĻāĻŽāĻŋāĻ-āĻšā§āϝāĻžāĻļā§āϰ (sha-1) āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻ āĻāĻļāĨ¤ āĻāĻ āĻāĻŽāĻŋāĻāĻāĻŋ āĻĢāĻžāĻāϞā§āϰ āϏā§āĻ āϞāĻžāĻāύāĻāĻŋāĻā§ āĻļā§āώāĻŦāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āĻāĻŋāϞā§āĨ¤ āĻĒāϰā§āϰ āĻĻā§āĻāĻŋ āĻ āĻāĻļ āĻšāϞ āĻāĻŽāĻŋāĻ āϰāĻā§āĻŋāϤāĻžāϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻāĻŽāĻŋāĻā§āϰ āϤāĻžāϰāĻŋāĻ-āϏāĻŽā§, āϝā§āĻāĻž āĻĻāĻŋā§ā§ āϏāĻšāĻā§āĻ āĻāĻžāύāĻž āϝāĻžāĻŦā§ – āĻā§ āĻāĻāύ āϏā§āĻ āϞāĻžāĻāύāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āĻāĻŋāϞā§āĨ¤ āϤāĻžāϰāĻĒāϰā§āϰ āĻ āĻāĻļā§ āĻĻā§āĻāĻžāĻā§āĻā§ āϞāĻžāĻāύ āύāĻŽā§āĻŦāϰ āĻāĻŦāĻ āĻĢāĻžāĻāϞ⧠āĻāĻ āϞāĻžāĻāύā§āϰ āĻāύā§āĻā§āύā§āĻāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ ^1da177e4c3f4 āĻāĻŽāĻŋāĻ āϞāĻžāĻāύāĻā§āϞāĻŋ āĻā§ā§āĻžāϞ āĻāϰāĻŋāĨ¤ āĻāĻāĻžāύ⧠āĻļā§āϰā§āϤ⧠^ āĻāĻŋāĻšā§āύ āĻĻāĻŋā§ā§ āĻŦā§āĻāĻžāĻā§āĻā§ – āĻĢāĻžāĻāϞā§āϰ āĻāĻ āϞāĻžāĻāύāĻā§āϞā§, āĻāĻ āĻāĻŋāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āϏāϰā§āĻŦāĻĒā§āϰāĻĨāĻŽ āĻāĻŽāĻŋāĻā§ āĻĒā§āϰāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ āĻāĻŦāĻ āϤāĻāύ āĻĨā§āĻā§āĻ āĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āϰāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻžāύ⧠āϝāĻĻāĻŋāĻ ^ āĻāĻŋāĻšā§āύā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻāĻā§ āĻŦāĻŋāĻā§āϰāĻžāύā§āϤāĻŋāĻāϰ, āĻāĻžāϰāĻŖ āĻāĻŽāϰāĻž āĻĻā§āĻā§āĻāĻŋ, āĻāĻāĻž āĻĻāĻŋā§ā§ āĻāĻŋāĻ āĻ āύā§āϤāϤ āϤāĻŋāύāĻāĻŋ āĻāĻĒāĻžā§ā§ āĻāĻŽāĻŋāĻ-āĻšā§āϝāĻžāĻļā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻŋāĻā§āϰ āĻāϰā§āĻāĻāĻŋ āĻāĻŽā§āĻāĻžāϰ āĻŦā§āϝāĻžāĻĒāĻžāϰ āĻšāϞ, āĻāĻāĻŋ āĻĢāĻžāĻāϞā§āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§ āϏāϰāĻžāϏāϰāĻŋ āϞāĻŋāĻĒāĻŋāĻŦāĻĻā§āϧ āύāĻž āĻāϰā§, āϏā§āύā§āϝāĻžāĻĒāĻļāĻāĻā§āϞāĻŋ āϞāĻŋāĻĒāĻŋāĻŦāĻĻā§āϧ āĻāϰ⧠āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠āύāĻžāĻŽā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻā§ āĻšā§ā§āĻā§ āϤāĻž āĻŦā§āϰ āĻāϰā§āĨ¤ āϤāĻžāϤ⧠āϝ⧠āϏā§āĻŦāĻŋāϧāĻžāĻāĻž āĻšā§ – āĻĢāĻžāĻāϞ āĻĨā§āĻā§ āĻĢāĻžāĻāϞ⧠āĻā§āĻĄā§āϰ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻšāϞā§, āϏā§āĻ āĻāϤāĻŋāĻŦāĻŋāϧāĻŋāĻā§āϞā§āĻ āĻŦā§āϰ āĻāϰ⧠āĻĢā§āϞāĻž āϝāĻžā§āĨ¤ āĻāĻ āĻŦā§āϝāĻžāĻĒāĻžāϰāĻā§āϞ⧠āĻāĻŽāϰāĻž āĻĻā§āĻāϤ⧠āĻĒāĻžāϰāĻŦā§ git blame āĻāĻŽāĻžāύā§āĻĄā§ -C āĻ āĻĒāĻļāύāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻĢāĻžāĻāϞāĻāĻŋāĻā§ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰā§, āĻāϤ⧠āĻĨāĻžāĻāĻž āĻā§āĻĄā§āϰ āĻā§āύ⧠āĻ āĻāĻļ, āĻ āύā§āϝ āĻā§āύ⧠āĻĢāĻžāĻāϞ āĻĨā§āĻā§ āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϤāĻž āĻŦā§āĻāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āϧāϰāĻž āϝāĻžāĻ GITServerHandler.m āĻĢāĻžāĻāϞāĻāĻŋāϰ āĻāύā§āĻā§āύā§āĻ āĻāĻžāĻ āĻāϰ⧠āĻāĻāĻžāϧāĻŋāĻ āĻĢāĻžāĻāϞ⧠āύā§ā§āĻž āĻšā§ā§āĻā§, āϝāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻšāϞ GITPackUpload.m āĨ¤ āĻāĻāύ git blame -C āĻāĻŽāĻžāύā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, GITPackUpload.m āĻĢāĻžāĻāϞā§āϰ āĻā§āĻĄā§āϰ āĻā§āύ āĻ āĻāĻļāĻā§āϞ⧠āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāϏā§āĻā§, āϤāĻž āĻĻā§āĻāĻž āϝāĻžāĻŦā§āĻ
$ git blame -C -L 141,153 GITPackUpload.m
f344f58d GITServerHandler.m (Scott 2009-01-04 141)
f344f58d GITServerHandler.m (Scott 2009-01-04 142) - (void) gatherObjectShasFromC
f344f58d GITServerHandler.m (Scott 2009-01-04 143) {
70befddd GITServerHandler.m (Scott 2009-03-22 144) //NSLog(@"GATHER COMMI
ad11ac80 GITPackUpload.m (Scott 2009-03-24 145)
ad11ac80 GITPackUpload.m (Scott 2009-03-24 146) NSString *parentSha;
ad11ac80 GITPackUpload.m (Scott 2009-03-24 147) GITCommit *commit = [g
ad11ac80 GITPackUpload.m (Scott 2009-03-24 148)
ad11ac80 GITPackUpload.m (Scott 2009-03-24 149) //NSLog(@"GATHER COMMI
ad11ac80 GITPackUpload.m (Scott 2009-03-24 150)
56ef2caf GITServerHandler.m (Scott 2009-01-05 151) if(commit) {
56ef2caf GITServerHandler.m (Scott 2009-01-05 152) [refDict setOb
56ef2caf GITServerHandler.m (Scott 2009-01-05 153)
āĻāĻ āĻŦā§āĻļ āĻĻāϰāĻāĻžāϰā§āĨ¤ āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ āĻāĻŋāύā§āϤāĻž āĻāϰāϞā§, āύāϤā§āύ āĻĢāĻžāĻāϞ⧠āĻā§āĻĄ āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻāϰāĻž āĻāĻŽāĻŋāĻāĻāĻžāĻ āĻĒāĻžāĻā§āĻžāϰ āĻāĻĨāĻž āĻāĻŋāϞ āĻŽā§āϞ āĻāĻŽāĻŋāĻ āĻšāĻŋāϏāĻžāĻŦā§āĨ¤ āĻāĻžāϰāĻŖ āύāϤā§āύā§āύ āĻĢāĻžāĻāϞāĻāĻŋāϤ⧠āϏā§āĻ āϞāĻžāĻāύāĻā§āϞāĻŋ āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏā§āĻĒāϰā§āĻļ āĻāϰāĻž āĻšā§ā§āĻā§āĨ¤ āĻāĻŋāύā§āϤ⧠āĻāĻŋāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāύāĻžāĻŦā§ āϏā§āĻ āĻŽā§āϞ āĻāĻŽāĻŋāĻāĻāĻžāĻ, āϝāĻāύ āϏā§āĻ āϞāĻžāĻāύāĻā§āϞāĻŋ āĻĒā§āϰāĻĨāĻŽ āϞā§āĻāĻž āĻšā§ā§āĻā§, āĻāĻŽāύāĻāĻŋ āϝāĻĻāĻŋāĻ āϏā§āĻā§āϞ⧠āĻāĻā§ āĻ āύā§āϝ āĻĢāĻžāĻāϞ⧠āĻāĻŋāϞāĨ¤
āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻ āύā§āϏāύā§āϧāĻžāύ
āĻĢāĻžāĻāϞ āĻāύā§āĻā§āĻļāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§ āϝāĻāύ āĻāĻŽāϰāĻž āĻāĻžāύāĻŦā§ āϝ⧠āĻā§āĻĄā§ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻā§āĻĨāĻžāϝāĻŧāĨ¤ āĻāĻŋāύā§āϤ⧠āϧāϰāĻž āϝāĻžāĻ, āĻāĻŽāϰāĻž āĻāĻžāύāĻŋ āύāĻž āĻā§āύ āϏāĻŽāϏā§āϝāĻž āĻšāĻā§āĻā§āĨ¤ āĻāϰ āĻā§āĻĄāĻāĻŋ āĻļā§āώāĻŦāĻžāϰ āϝāĻāύ āĻāĻžāĻ āĻāϰā§āĻāĻŋāϞā§, āϤāĻžāϰāĻĒāϰ āĻĨā§āĻā§ āĻšā§āϤ āĻĄāĻāύāĻāĻžāύā§āĻ āĻāĻŋāĻāĻŦāĻž āĻļ’āĻāĻžāύā§āĻ āĻāĻŽāĻŋāĻ āĻšāϝāĻŧā§ āĻā§āĻā§āĨ¤ āĻāĻā§āώā§āϤā§āϰ⧠git bisect āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻžāĻ āϞāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤ bisect āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻāĻŽāĻŋāĻāĻā§āϞā§āϰ āĻāϤāĻŋāĻšāĻžāϏ⧠āĻāĻāĻāĻŋ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻ āύā§āϏāύā§āϧāĻžāύ āĻāĻžāϞāĻžā§, āϝāĻžāϤ⧠āϤāĻžāĻĄāĻŧāĻžāϤāĻžāĻĄāĻŧāĻŋ āϏāύāĻžāĻā§āϤ āĻāϰāĻž āϝāĻžā§ āϝā§, āĻā§āύ āĻāĻŽāĻŋāĻ āĻĨā§āĻā§ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻĻā§āĻāĻž āĻĻāĻŋā§ā§āĻāĻŋāϞā§āĨ¤
āϧāϰāĻž āϝāĻžāĻ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻā§āĻĄā§āϰ āϰāĻŋāϞāĻŋāĻ āĻĻā§ā§āĻž āĻšā§ā§āĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻŽāύ āĻāĻŋāĻā§ āĻŦāĻžāĻ āϰāĻŋāĻĒā§āϰā§āĻ āĻāϏāĻā§ āϝāĻž āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻāĻāĻā§ āύāĻž, āĻāĻŦāĻ āĻŦā§āϰ āĻāϰāĻž āϝāĻžāĻā§āĻā§ āύāĻž āϝāĻž āĻā§āύ āĻāĻŽāύāĻāĻŋ āĻšāĻā§āĻā§āĨ¤ āĻļā§āϧ⧠āϏāĻŽāϏā§āϝāĻžāĻāĻž āϝ⧠āĻšāĻā§āĻā§ āϏā§āĻāĻž āĻŦā§āĻāĻž āϝāĻžāĻā§āĻā§āĨ¤ bisect āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āĻā§āύ āĻāĻŽāĻŋāĻā§āϰ āĻāĻžāϰāύ⧠āĻŦāĻžāĻāĻāĻž āĻšāĻā§āĻā§, āϏā§āĻāĻž āĻā§āĻāĻāĻž āϝāĻžāĻŦā§āĨ¤ āĻĒā§āϰāĻĨāĻŽā§ git bisect start āĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋā§ā§ āĻĒā§āϰāĻā§āϰāĻŋā§āĻžāĻāĻŋ āĻļā§āϰ⧠āĻāϰāĻŋāĨ¤ āϤāĻžāϰāĻĒāϰ git bisect bad āĻĻāĻŋā§ā§ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻāĻžāύāĻžāĻ āϝ⧠āĻŦāϰā§āϤāĻŽāĻžāύ āĻāĻŽāĻŋāĻāĻāĻžā§ āĻŦāĻžāĻ āĻāĻā§āĨ¤ āϤāĻžāϰāĻĒāϰ⧠āĻļā§āώ āϝ⧠āĻāĻŽāĻŋāĻāĻā§āϞ⧠āĻŦāĻžāĻāĻŽā§āĻā§āϤ āĻāĻŋāϞ, āϏā§āϰāĻāĻŽ āĻāĻāĻāĻŋ āĻāĻŽāĻŋāĻā§āϰ āĻšā§āϝāĻžāĻļ āĻŦāĻž āĻā§āϝāĻžāĻ āĻĻāĻŋā§ā§ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻāĻžāύāĻžāĻ āϝ⧠āĻāĻāύ āĻā§āĻĄāĻāĻŋ āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§āĻāĻŋāϞā§āĨ¤Â āĻāĻāĻžāϰ āĻāĻŽāĻžāύā§āĻĄ āĻšāĻā§āĻā§āĻ git bisect good <good_commit>
$ git bisect start
$ git bisect bad
$ git bisect good v1.0
Bisecting: 6 revisions left to test after this
[ecb6e1bc347ccecc5f9350d878ce677feb13d3b2] Error handling on repo
āĻāĻĒāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖā§ āĻāĻŋāĻ āĻŦā§āϰ āĻāϰā§āĻā§ āϝā§, āĻāĻžāϞ⧠āĻ āĻāĻžāϰāĻžāĻĒ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āĻāĻŽāĻŋāĻā§āϰ āĻŽāĻžāĻāĻāĻžāύ⧠āĻāϰ⧠āĻĒā§āϰāĻžā§ ā§§ā§¨ āĻāĻŋ āĻāĻŽāĻŋāĻ āĻāϏā§āĻā§ āĻāĻŦāĻ āĻāĻĻā§āϰ āĻŽāĻžāĻāĻžāĻŽāĻžāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻŽāĻŋāĻāĻā§ āϏāĻā§āϰāĻŋā§ (checkout) āĻāϰ⧠āĻĻāĻŋā§ā§āĻā§ āϝāĻžāϤ⧠āĻŦāĻžāĻāĻāĻŋ āĻāĻāĻžāύ⧠āĻāĻā§ āĻāĻŋāύāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āĻĻā§āĻāĻž āϝāĻžā§āĨ¤ āϝāĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻĒāϰā§āĻā§āώāĻžā§ āĻŦāĻžāĻāĻāĻŋ āĻāĻŦāĻžāϰ āĻĒāĻžāĻā§āĻž āϝāĻžā§, āϤāĻžāĻšāϞ⧠āĻŦā§āĻāĻž āĻā§āϞ – āϏāĻā§āϰāĻŋā§ āĻāϰāĻž āĻŽāĻžāĻā§āϰ āĻāĻŽāĻŋāĻāĻāĻž āĻŦāĻž āϤāĻžāϰāĻ āĻāĻā§āϰ āĻā§āύ āĻāĻāĻāĻž āĻāĻŽāĻŋāĻā§ āĻŦāĻžāĻāĻāĻžāϰ āϏā§āϤā§āϰāĻĒāĻžāϤ āĻšā§āĨ¤ āϧāϰāĻž āϝāĻžāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻĒāϰā§āĻā§āώāĻžā§ āĻŦāĻžāĻāĻāĻž āĻĒāĻžāĻā§āĻž āϝāĻžā§āύāĻŋ, āĻ āϰā§āĻĨāĻžā§ āϏāĻā§āϰāĻŋā§ āĻāϰāĻž āĻāĻŽāĻŋāĻāĻāĻžāϰ āĻĒāϰā§āϰ āĻā§āύ⧠āĻāĻŽāĻŋāĻā§ āĻŦāĻžāĻāĻāĻžāϰ āϏā§āϤā§āϰāĻĒāĻžāϤ āĻšā§ā§āĻā§āĨ¤ āĻŦāϰā§āϤāĻŽāĻžāύ āϏāĻā§āϰāĻŋā§ āĻāĻŽāĻŋāĻāĻāĻž āϝ⧠āĻŦāĻžāĻāĻŽā§āĻā§āϤ āϏā§āĻāĻž āϏā§āĻāĻž āĻāĻŽāϰāĻž āĻāĻāύ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āĻāĻžāύāĻŋā§ā§ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰāĻŋ git bisect good āϞāĻŋāĻā§āĨ¤ āĻāϤ⧠āϏāĻŋāϏā§āĻā§āĻŽ āĻĒāϰā§āϰ āĻā§āύ āĻāĻŽāĻŋāĻā§ āĻŦāĻžāĻ āĻā§āĻāĻāϤ⧠āϤā§āĻĒāϰ āĻšāĻŦā§:
$ git bisect good
Bisecting: 3 revisions left to test after this
[b047b02ea83310a70fd603dc8cd7a6cd13d15c04] Secure this thing
āĻāĻāύ āĻāĻŦāĻžāϰ āĻ āύā§āϝ āĻāĻāĻāĻŋ āĻāĻŽāĻŋāĻ āϏāĻā§āϰāĻŋā§ (checkout) āĻšāϞā§, āϝāĻž āĻāĻāĻā§ āĻāĻā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻāĻŽāĻŋāĻ āĻāĻŦāĻ āĻļā§āϰā§āϤ⧠āĻāĻžāϰāĻžāĻĒ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āĻāĻŽāĻŋāĻā§āϰ āĻŽāĻžāĻāĻžāĻŽāĻžāĻāĻŋāĨ¤ āĻāĻŦāĻžāϰ āĻĒāϰā§āĻā§āώāĻž āĻāĻžāϞāĻžāĻ āϝāĻž āĻŦāĻžāĻāĻāĻž āĻāĻā§ āĻāĻŋāύāĻžāĨ¤ āϧāϰāĻž āϝāĻžāĻ āĻāĻŦāĻžāϰ āĻŦāĻžāĻāĻāĻž āĻĒāĻžāĻā§āĻž āĻā§āϞāĨ¤ āϤāĻžāĻ āϏāĻŋāϏā§āĻā§āĻŽāĻā§ āϏā§āĻāĻž āĻāĻžāύāĻžāĻ git bisect bad āĻāĻŽāĻžāύā§āĻĄāĻāĻž āĻĻāĻŋā§ā§āĻ
$ git bisect bad
Bisecting: 1 revisions left to test after this
[f71ce38690acf49c1f3c9bea38e09d82a5ce6014] Drop exceptions table
āĻāĻŦāĻžāϰ āϧāϰāĻž āϝāĻžāĻ āĻāĻ āĻāĻŽāĻŋāĻāĻāĻžā§ āĻŦāĻžāĻ āĻĒāĻžāĻā§āĻž āϝāĻžā§āύāĻŋāĨ¤ āϏā§āĻāĻž āĻāĻŋāĻāĻā§ git bisect good āĻĻāĻŋā§ā§ āĻāĻžāύāĻžāĻāĨ¤ āĻāĻāύ āĻāĻŋāĻā§āϰ āĻāĻžāĻā§ āϏā§āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϤāĻĨā§āϝ āĻāĻā§ āϝ⧠āĻ āĻŋāĻ āĻāĻāύ āĻŦāĻž āĻā§āύ āĻāĻŽāĻŋāĻā§ āĻŦāĻžāĻāĻāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻāϏā§āĻāĻŋāϞāĨ¤ āĻāĻŋāĻ āϏā§āĻ āĻāĻŽāĻŋāĻā§āϰ āĻšā§āϝāĻžāĻļ, āĻā§āύ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§ā§āĻāĻŋāϞ⧠– āĻāϏāĻŦ āϏāĻš āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āϤāĻĨā§āϝ āĻāĻāĻāĻĒā§āĻā§ āĻĻā§āĻāĻžāĻŦā§āĻ
$ git bisect good
b047b02ea83310a70fd603dc8cd7a6cd13d15c04 is first bad commit
commit b047b02ea83310a70fd603dc8cd7a6cd13d15c04
Author: PJ Hyett
Date: Tue Jan 27 14:48:32 2009 -0800
Secure this thing
:040000 040000 40ee3e7821b895e52c1695092db9bdc4c61d1730
f24d3c6ebcfc639b1a3814550e62d60b8e68a8e4 M config
āĻāĻžāĻ āĻļā§āώ⧠āĻāĻŦāĻžāϰ āĻā§ā§āĻžāϞ āĻāϰ⧠git bisect reset āĻĻāĻŋā§ā§ (āĻŦāĻžāĻāύāĻžāϰāĻŋ āϏāĻžāϰā§āĻ āĻļā§āϰā§āϰ) āĻĒā§āϰā§āĻŦā§āϰ āĻ āĻŦāϏā§āĻĨāĻžā§ āĻĢāĻŋāϰ⧠āϝāĻžāĻāĨ¤ āύā§āϤ⧠āĻ āύā§āĻ āĻāĻŋāĻā§ āĻ āĻŋāĻāĻŽāϤ āĻāĻžāĻ āĻāϰāĻŦā§ āύāĻžāĻ
$ git bisect reset
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻā§āϞ āϝāĻž āĻāϝāĻŧā§āĻ āĻŽāĻŋāύāĻŋāĻā§āϰ āĻŽāϧā§āϝ⧠āĻāϝāĻŧā§āĻāĻļ āĻāĻŽāĻŋāĻ āĻā§āĻ āĻāϰ⧠āĻŦāĻžāĻā§āϰ āϏā§āϤā§āϰāĻĒāĻžāϤ āĻšāĻā§āĻž āĻāĻŽāĻŋāĻāĻāĻžāĻā§ āĻŦā§āϰ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ git bisect āĻāϰ āĻāĻ āĻĒā§āϰ⧠āĻŦā§āϝāĻžāĻĒāĻžāϰāĻāĻžāĻā§ āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§ āĻāϰ⧠āĻĢā§āϞāĻž āϝāĻžāĻŦā§ āϝāĻĻāĻŋ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻā§āϏā§āĻ-āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϞā§āĻāĻž āĻšā§ āϝā§āĻāĻž exit 0 āĻāϰāĻŦā§ āϝāĻĻāĻŋ āϏāĻā§āϰāĻŋā§ āĻāĻŽāĻŋāĻ āĻŦāĻžāĻāĻŽā§āĻā§āϤ āĻšā§ āĻāϰ non-zero exit āĻāϰāĻŦā§ āϝāĻĻāĻŋ āĻŦāĻžāĻ āĻĨāĻžāĻā§āĨ¤ āĻāĻžāĻāϞ⧠bisect start āĻĻāĻŋā§ā§ āĻāĻāĻāϏāĻžāĻĨā§ āĻļā§āϰā§āϤā§Â āĻāĻžāϰāĻžāĻĒ āĻ āĻāĻžāϞ⧠āĻāĻŽāĻŋāĻāĻāĻž āĻāĻŋāĻāĻā§ āĻĻā§āĻāĻŋā§ā§ āĻĻā§ā§āĻž āϝāĻžā§āĨ¤ āĻĒā§āϰāĻĨāĻŽāĻāĻž āĻŽāĻžāύāĻāĻž āĻāĻžāϰāĻžāĻĒ āĻāĻŽāĻŋāĻā§āϰ āĻ āĻĻā§āĻŦāĻŋāϤā§ā§āĻāĻž āĻāĻžāϞ āĻāĻŽāĻŋāĻā§āϰāĻ
$ git bisect start HEAD v1.0
$ git bisect run test-error.sh
āĻāĻāĻžāĻŦā§ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ test-error.sh āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻāĻŋ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻā§āĻ-āĻāĻāĻ āĻāϰāĻž āĻāĻŽāĻŋāĻā§āϰ āĻāĻĒāϰ āĻāϞ⧠āϝāϤāĻā§āώāĻŖ āύāĻž āĻāĻŋāĻ āĻĒā§āϰāĻĨāĻŽ āĻŦāĻžāĻāϝā§āĻā§āϤ āĻāĻŽāĻŋāĻāĻāĻž āĻā§āĻāĻā§ āĻĒāĻžāϝāĻŧāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ make āĻŦāĻž make tests āĻāϰ āĻŽāϤ āĻāĻŋāĻā§ āĻāĻāĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻā§āϏā§āĻ āĻāĻžāϞāĻžāύā§āϰ āĻāύā§āϝāĨ¤