Created
March 16, 2011 21:09
-
-
Save ktoso/873312 to your computer and use it in GitHub Desktop.
A simple showcase of how you can use git bisect and maven to find a commit that introduced a bug.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ktoso@dynames breakMe $ mvn org.apache.maven.plugins:maven-archetype-plugin:1.0-alpha-7:create -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DartifactId=bisectfun -DgroupId=pl.project13 | |
#......................... | |
ktoso@dynames breakMe $ ls | |
bisectfun mavenbisect.sh | |
ktoso@dynames breakMe $ cd bisectfun/ | |
ktoso@dynames bisectfun $ mkdir src/test/resources/ | |
ktoso@dynames bisectfun $ git init . | |
Initialized empty Git repository in /tmp/breakMe/bisectfun/.git/ | |
ktoso@dynames bisectfun $ git commit ^C | |
ktoso@dynames bisectfun $ vim .gitignore | |
ktoso@dynames bisectfun $ git add . | |
ktoso@dynames bisectfun $ git commit | |
[master (root-commit) 5b46510] Initial commit | |
4 files changed, 78 insertions(+), 0 deletions(-) | |
create mode 100644 .gitignore | |
create mode 100644 pom.xml | |
create mode 100644 src/main/java/pl/project13/App.java | |
create mode 100644 src/test/java/pl/project13/AppTest.java | |
******************************************************************************** | |
Git Achievement Unlocked! | |
Master Author (Level 10) | |
Made 2^Level commits using git commit. | |
******************************************************************************** | |
#......................... | |
ktoso@dynames bisectfun @ master $ mvn test | |
#......................... | |
[INFO] BUILD SUCCESSFUL | |
#......................... | |
ktoso@dynames bisectfun @ master $ git tag wasOkHere | |
ktoso@dynames bisectfun @ master $ for i in {1..50}; do fortune > src/test/resources/fortune$i; git add .; git commit -a -m 'some commit'; done; | |
[master 20ae1c1] some commit | |
1 files changed, 3 insertions(+), 0 deletions(-) | |
create mode 100644 src/test/resources/fortune1 | |
[master 64b779e] some commit | |
1 files changed, 15 insertions(+), 0 deletions(-) | |
create mode 100644 src/test/resources/fortune2 | |
#......................... | |
#......................... | |
#......................... | |
ktoso@dynames bisectfun @ master $ mvn clean test > /dev/null 2> /dev/null | |
ktoso@dynames bisectfun @ master $ echo $? | |
0 | |
ktoso@dynames bisectfun @ master $ echo "fail :D" >> src/test/java/pl/project13/AppTest.java | |
ktoso@dynames bisectfun @ master $ echo "fail :D" >> src/test/java/pl/project13/AppTest.java | |
ktoso@dynames bisectfun @ master $ echo "fail :D" >> src/test/java/pl/project13/AppTest.java | |
ktoso@dynames bisectfun @ master $ git add . | |
ktoso@dynames bisectfun @ master $ git commit | |
[master 09a58fb] let it crash | |
1 files changed, 3 insertions(+), 0 deletions(-) | |
ktoso@dynames bisectfun @ master $ for i in {1..50}; do fortune > src/test/resources/fortune$i; git add .; git commit -a -m 'some commit'; done; | |
[master f83cdae] some commit | |
1 files changed, 3 insertions(+), 3 deletions(-) | |
[master 725c5ce] some commit | |
1 files changed, 4 insertions(+), 15 deletions(-) | |
rewrite src/test/resources/fortune2 (100%) | |
#......................... | |
#......................... | |
#......................... | |
ktoso@dynames bisectfun @ master $ for i imvn clean test > /dev/null 2> /dev/null | |
ktoso@dynames bisectfun @ master $ echo $? | |
1 | |
ktoso@dynames bisectfun @ master $ echo '!!!!!!!!!!!!!!OH NO IT FAILS!!!!!!!!' | |
!!!!!!!!!!!!!!!!OH NO IT FAILS!!!!!!!! | |
ktoso@dynames bisectfun @ master $ git tag failsHere | |
ktoso@dynames bisectfun @ master $ git bisect start | |
ktoso@dynames bisectfun @ master $ git bisect bad failsHere | |
ktoso@dynames bisectfun @ master $ git bisect good wasOkHere | |
Bisecting: 50 revisions left to test after this (roughly 6 steps) | |
[ca199e0cbd19e498eabf6196036313e206b00a7f] some commit | |
ktoso@dynames bisectfun @ (no branch) $ git bisect run ../mavenbisect.sh | |
running ../mavenbisect.sh | |
Bisecting: 25 revisions left to test after this (roughly 5 steps) | |
[c8658db8e0c5df1d603a9a96ae7a04e71c4ba9d1] some commit | |
running ../mavenbisect.sh | |
Bisecting: 12 revisions left to test after this (roughly 4 steps) | |
[ddc2100ab90d0624df74e81f17d7ed7ea0fc9a61] some commit | |
running ../mavenbisect.sh | |
Bisecting: 5 revisions left to test after this (roughly 3 steps) | |
[31ba35661eecb7a96159e483954d315a63a3789d] some commit | |
running ../mavenbisect.sh | |
Bisecting: 2 revisions left to test after this (roughly 2 steps) | |
[725c5cec8803b1e62dd36a3b74fd8c52d42e807c] some commit | |
running ../mavenbisect.sh | |
Bisecting: 0 revisions left to test after this (roughly 1 step) | |
[f83cdaeb34072a6f9c9a63abf8bb8f2390b996de] some commit | |
running ../mavenbisect.sh | |
Bisecting: 0 revisions left to test after this (roughly 0 steps) | |
[09a58fbf2821c4f66c003a65f19f6ff99f5ee37d] let it crash | |
running ../mavenbisect.sh | |
09a58fbf2821c4f66c003a65f19f6ff99f5ee37d is the first bad commit | |
commit 09a58fbf2821c4f66c003a65f19f6ff99f5ee37d | |
Author: Konrad Malawski <[email protected]> | |
Date: Wed Mar 16 22:02:38 2011 +0100 | |
let it crash | |
:040000 040000 ef88527072e0b1532819a75f288a0e65a2737c6a 49083a7d820a731d5edad117a4af097bd9ffb444 M src | |
bisect run success | |
ktoso@dynames bisectfun @ (no branch) $ git show 09a58fbf2821c4f66c003a65f19f6ff99f5ee37d | |
commit 09a58fbf2821c4f66c003a65f19f6ff99f5ee37d | |
Author: Konrad Malawski <[email protected]> | |
Date: Wed Mar 16 22:02:38 2011 +0100 | |
let it crash | |
diff --git a/src/test/java/pl/project13/AppTest.java b/src/test/java/pl/project13/AppTest.java | |
index c6ffd44..b27c8b8 100644 | |
--- a/src/test/java/pl/project13/AppTest.java | |
+++ b/src/test/java/pl/project13/AppTest.java | |
@@ -36,3 +36,6 @@ public class AppTest | |
assertTrue( true ); | |
} | |
} | |
+fail :D | |
+fail :D | |
+fail :D | |
ktoso@dynames bisectfun @ (no branch) $ git bisect reset | |
Previous HEAD position was 09a58fb... let it crash | |
Switched to branch 'master' | |
ktoso@dynames bisectfun @ master $ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment