Vivasoft-logo

ā§­.ā§§ā§Ļ āĻ—āĻŋāϟ āϟ⧁āϞāϏ – āĻ—āĻŋāϟ āĻĻāĻŋāϝāĻŧ⧇ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚

āĻ—āĻŋāϟ āĻĻāĻŋāϝāĻŧ⧇ āĻĄāĻŋāĻŦāĻžāĻ—āĻŋāĻ‚

āĻ­āĻžāĻ°ā§āĻļāύ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ⧇āϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāĻŸā§‡āϰ āĻŽā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāϞ⧇āĻ“, āĻāϰ āĻ•āĻŋāϛ⧁ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āφāϛ⧇ āϝ⧇āϗ⧁āϞ⧋ āĻĄāĻŋāĻŦāĻžāĻ— āĻ•āϰāϤ⧇ āĻ…āĻ°ā§āĻĨāĻžā§Ž āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄā§‡āϰ āϭ⧁āϞ āϖ⧁āĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āĻ—āĻŋāϟ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻĒā§āϰāĻžāϝāĻŧ āϏāĻŦāϧāϰāύ⧇āϰ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āϏāĻžāĻŽāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āϤāĻžāχ āĻāϰ āϟ⧁āϞāϗ⧁āϞ⧋āĻ“ āĻŦ⧇āĻļ āϏāĻ°ā§āĻŦāϜāύ⧀āύāĨ¤ āϏ⧇āϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ—āĻŋāĻŸā§‡āϰ āĻ•āĻŽāĻŋāĻŸā§‡āϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻĨ⧇āϕ⧇ āϏāĻšāĻœā§‡ āϕ⧋āĻĄā§‡āϰ āĻŦāĻžāĻ— āĻŦāĻž āϭ⧁āϞ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤

āĻĢāĻžāχāϞ āĻāύ⧋āĻŸā§‡āĻļāύ (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 <pjhyett@example.com>
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 āĻāϰ āĻŽāϤ āĻ•āĻŋāϛ⧁ āĻāĻ•āϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻŸā§‡āĻ¸ā§āϟ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝāĨ¤