From 4f534189f45f0dcab1315f27b9cd0ecb9b1600aa Mon Sep 17 00:00:00 2001 From: ipmsteven Date: Fri, 12 Dec 2014 23:50:18 -0800 Subject: [PATCH] add rebase level --- levels/rebase.rb | 16 ++++++++++++++++ levels/rebase/.githug/COMMIT_EDITMSG | 1 + levels/rebase/.githug/HEAD | 1 + levels/rebase/.githug/ORIG_HEAD | 1 + levels/rebase/.githug/config | 7 +++++++ levels/rebase/.githug/index | Bin 0 -> 104 bytes levels/rebase/.githug/logs/HEAD | 13 +++++++++++++ levels/rebase/.githug/logs/refs/heads/feature | 4 ++++ levels/rebase/.githug/logs/refs/heads/master | 2 ++ .../0c/d212c5b28da2e65ed4900712dd36c8adce48ad | Bin 0 -> 62 bytes .../44/19b972c0cd1b346ac90332aa7c5cc949589f78 | Bin 0 -> 163 bytes .../54/3b9bebdc6bd5c4b22136034a95dd097a57d3dd | Bin 0 -> 51 bytes .../81/78c76d627cade75005b40711b92f4177bc6cfc | Bin 0 -> 22 bytes .../98/205e9faf10cf33d2ef7c0f66e402540c62613a | 2 ++ .../a7/8bcab6232e9382a86436cdfcb2ed0391b1f0ac | 4 ++++ .../b7/7313d7be366609dd2e77aa96d7fd73f4e27853 | Bin 0 -> 51 bytes .../b9/2d5d55d379cfb90b750e6472fc983f32ad9a71 | Bin 0 -> 82 bytes .../e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 | Bin 0 -> 15 bytes .../ed/0fdcf366b21b8984fb37ea34106978a2e5c5ba | Bin 0 -> 160 bytes levels/rebase/.githug/refs/heads/feature | 1 + levels/rebase/.githug/refs/heads/master | 1 + levels/rebase/README | 1 + lib/githug/level.rb | 2 +- spec/githug_spec.rb | 8 +++++++- 24 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 levels/rebase.rb create mode 100644 levels/rebase/.githug/COMMIT_EDITMSG create mode 100644 levels/rebase/.githug/HEAD create mode 100644 levels/rebase/.githug/ORIG_HEAD create mode 100644 levels/rebase/.githug/config create mode 100644 levels/rebase/.githug/index create mode 100644 levels/rebase/.githug/logs/HEAD create mode 100644 levels/rebase/.githug/logs/refs/heads/feature create mode 100644 levels/rebase/.githug/logs/refs/heads/master create mode 100644 levels/rebase/.githug/objects/0c/d212c5b28da2e65ed4900712dd36c8adce48ad create mode 100644 levels/rebase/.githug/objects/44/19b972c0cd1b346ac90332aa7c5cc949589f78 create mode 100644 levels/rebase/.githug/objects/54/3b9bebdc6bd5c4b22136034a95dd097a57d3dd create mode 100644 levels/rebase/.githug/objects/81/78c76d627cade75005b40711b92f4177bc6cfc create mode 100644 levels/rebase/.githug/objects/98/205e9faf10cf33d2ef7c0f66e402540c62613a create mode 100644 levels/rebase/.githug/objects/a7/8bcab6232e9382a86436cdfcb2ed0391b1f0ac create mode 100644 levels/rebase/.githug/objects/b7/7313d7be366609dd2e77aa96d7fd73f4e27853 create mode 100644 levels/rebase/.githug/objects/b9/2d5d55d379cfb90b750e6472fc983f32ad9a71 create mode 100644 levels/rebase/.githug/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 create mode 100644 levels/rebase/.githug/objects/ed/0fdcf366b21b8984fb37ea34106978a2e5c5ba create mode 100644 levels/rebase/.githug/refs/heads/feature create mode 100644 levels/rebase/.githug/refs/heads/master create mode 100644 levels/rebase/README diff --git a/levels/rebase.rb b/levels/rebase.rb new file mode 100644 index 00000000..f1eb80bc --- /dev/null +++ b/levels/rebase.rb @@ -0,0 +1,16 @@ +difficulty 2 + +description "We are using a git rebase workflow and the feature branch is ready to go into master. Let's rebase the master branch into our feature branch." + +setup do + init_from_level +end + +solution do + return repo.commits('feature').last.id_abbrev != "ed0fdcf" && + repo.commits("feature").map(&:message) == ['add feature','add content','init commit'] +end + +hint do + puts "You want to research the `git rebase` command" +end diff --git a/levels/rebase/.githug/COMMIT_EDITMSG b/levels/rebase/.githug/COMMIT_EDITMSG new file mode 100644 index 00000000..1dfacb1f --- /dev/null +++ b/levels/rebase/.githug/COMMIT_EDITMSG @@ -0,0 +1 @@ +add content diff --git a/levels/rebase/.githug/HEAD b/levels/rebase/.githug/HEAD new file mode 100644 index 00000000..cb089cd8 --- /dev/null +++ b/levels/rebase/.githug/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/levels/rebase/.githug/ORIG_HEAD b/levels/rebase/.githug/ORIG_HEAD new file mode 100644 index 00000000..4437587c --- /dev/null +++ b/levels/rebase/.githug/ORIG_HEAD @@ -0,0 +1 @@ +4419b972c0cd1b346ac90332aa7c5cc949589f78 diff --git a/levels/rebase/.githug/config b/levels/rebase/.githug/config new file mode 100644 index 00000000..6c9406b7 --- /dev/null +++ b/levels/rebase/.githug/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/levels/rebase/.githug/index b/levels/rebase/.githug/index new file mode 100644 index 0000000000000000000000000000000000000000..88fea9e78ace52557a50425e210902afc7202977 GIT binary patch literal 104 zcmZ?q402{*U|<4b#*nU+tw5RqMl%A%85gQ^F)%bP0ZM-bN{Ik5dt=4%+@zYd&jVPu tunX?gcP!tN^M`>g$koxs*A=8cPJPoK)osaa;1{q?-D*X8_Ca9tZ#c literal 0 HcmV?d00001 diff --git a/levels/rebase/.githug/logs/HEAD b/levels/rebase/.githug/logs/HEAD new file mode 100644 index 00000000..24857b28 --- /dev/null +++ b/levels/rebase/.githug/logs/HEAD @@ -0,0 +1,13 @@ +0000000000000000000000000000000000000000 a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ipmsteven 1418373185 -0800 commit (initial): init commit +a78bcab6232e9382a86436cdfcb2ed0391b1f0ac a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ipmsteven 1418373194 -0800 checkout: moving from master to feature +a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ed0fdcf366b21b8984fb37ea34106978a2e5c5ba ipmsteven 1418373239 -0800 commit: add feature +ed0fdcf366b21b8984fb37ea34106978a2e5c5ba a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ipmsteven 1418373246 -0800 checkout: moving from feature to master +a78bcab6232e9382a86436cdfcb2ed0391b1f0ac 98205e9faf10cf33d2ef7c0f66e402540c62613a ipmsteven 1418373270 -0800 commit: add content +98205e9faf10cf33d2ef7c0f66e402540c62613a ed0fdcf366b21b8984fb37ea34106978a2e5c5ba ipmsteven 1418373282 -0800 checkout: moving from master to feature +ed0fdcf366b21b8984fb37ea34106978a2e5c5ba 98205e9faf10cf33d2ef7c0f66e402540c62613a ipmsteven 1418373314 -0800 rebase: checkout master +98205e9faf10cf33d2ef7c0f66e402540c62613a 4419b972c0cd1b346ac90332aa7c5cc949589f78 ipmsteven 1418373314 -0800 rebase: add feature +4419b972c0cd1b346ac90332aa7c5cc949589f78 4419b972c0cd1b346ac90332aa7c5cc949589f78 ipmsteven 1418373314 -0800 rebase finished: returning to refs/heads/feature +4419b972c0cd1b346ac90332aa7c5cc949589f78 98205e9faf10cf33d2ef7c0f66e402540c62613a ipmsteven 1418373423 -0800 checkout: moving from feature to master +98205e9faf10cf33d2ef7c0f66e402540c62613a 4419b972c0cd1b346ac90332aa7c5cc949589f78 ipmsteven 1418373435 -0800 checkout: moving from master to feature +4419b972c0cd1b346ac90332aa7c5cc949589f78 ed0fdcf366b21b8984fb37ea34106978a2e5c5ba ipmsteven 1418373492 -0800 reset: moving to ed0fdcf +ed0fdcf366b21b8984fb37ea34106978a2e5c5ba 98205e9faf10cf33d2ef7c0f66e402540c62613a ipmsteven 1418373509 -0800 checkout: moving from feature to master diff --git a/levels/rebase/.githug/logs/refs/heads/feature b/levels/rebase/.githug/logs/refs/heads/feature new file mode 100644 index 00000000..4367f707 --- /dev/null +++ b/levels/rebase/.githug/logs/refs/heads/feature @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000 a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ipmsteven 1418373194 -0800 branch: Created from HEAD +a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ed0fdcf366b21b8984fb37ea34106978a2e5c5ba ipmsteven 1418373239 -0800 commit: add feature +ed0fdcf366b21b8984fb37ea34106978a2e5c5ba 4419b972c0cd1b346ac90332aa7c5cc949589f78 ipmsteven 1418373314 -0800 rebase finished: refs/heads/feature onto 98205e9faf10cf33d2ef7c0f66e402540c62613a +4419b972c0cd1b346ac90332aa7c5cc949589f78 ed0fdcf366b21b8984fb37ea34106978a2e5c5ba ipmsteven 1418373492 -0800 reset: moving to ed0fdcf diff --git a/levels/rebase/.githug/logs/refs/heads/master b/levels/rebase/.githug/logs/refs/heads/master new file mode 100644 index 00000000..ce91feef --- /dev/null +++ b/levels/rebase/.githug/logs/refs/heads/master @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 a78bcab6232e9382a86436cdfcb2ed0391b1f0ac ipmsteven 1418373185 -0800 commit (initial): init commit +a78bcab6232e9382a86436cdfcb2ed0391b1f0ac 98205e9faf10cf33d2ef7c0f66e402540c62613a ipmsteven 1418373270 -0800 commit: add content diff --git a/levels/rebase/.githug/objects/0c/d212c5b28da2e65ed4900712dd36c8adce48ad b/levels/rebase/.githug/objects/0c/d212c5b28da2e65ed4900712dd36c8adce48ad new file mode 100644 index 0000000000000000000000000000000000000000..6c01b6ebae1e2d5b0c005bbbef9f153250495796 GIT binary patch literal 62 zcmV-E0Kxxw0V^p=O;s?nWH2-^Ff%bx2y%6F@pWZ*Huur&O&6~@dv|NDE04Ny=t)oT UM5v0i)Wnj~qExI(0ECtyhyhs}ivR!s literal 0 HcmV?d00001 diff --git a/levels/rebase/.githug/objects/44/19b972c0cd1b346ac90332aa7c5cc949589f78 b/levels/rebase/.githug/objects/44/19b972c0cd1b346ac90332aa7c5cc949589f78 new file mode 100644 index 0000000000000000000000000000000000000000..6e48ba1595594e7c981cb535ae6db843b00e338a GIT binary patch literal 163 zcmV;U09^lg0hNwh3c@fD0R7G>asg$tn@0m8US*r?YN4^EM#0-F=mq>57#Ntcv^I5% z1iQY8*fC=bHH1nj7acQm1d?-shS?AqAiIB40!vJ7D_A}Y#ubiC! R<%VmuD%>BNm^U|zNWCJtO>F=G literal 0 HcmV?d00001 diff --git a/levels/rebase/.githug/objects/54/3b9bebdc6bd5c4b22136034a95dd097a57d3dd b/levels/rebase/.githug/objects/54/3b9bebdc6bd5c4b22136034a95dd097a57d3dd new file mode 100644 index 0000000000000000000000000000000000000000..b57931d75171fe755b53dfc2a2b6a120fd8c9d23 GIT binary patch literal 51 zcmb +mE}R1Yf}]pVS FS1GNkdtT +i7`,;g{\\귢{ .+FG8K'픎'.6/#; \ No newline at end of file diff --git a/levels/rebase/.githug/objects/b7/7313d7be366609dd2e77aa96d7fd73f4e27853 b/levels/rebase/.githug/objects/b7/7313d7be366609dd2e77aa96d7fd73f4e27853 new file mode 100644 index 0000000000000000000000000000000000000000..c8c845c44a5704311e3526a26efaeb725f54713b GIT binary patch literal 51 zcmbvJ8D5K(9i02C?`d_>KL!Tg H&wM)p)fE*N literal 0 HcmV?d00001 diff --git a/levels/rebase/.githug/objects/b9/2d5d55d379cfb90b750e6472fc983f32ad9a71 b/levels/rebase/.githug/objects/b9/2d5d55d379cfb90b750e6472fc983f32ad9a71 new file mode 100644 index 0000000000000000000000000000000000000000..320c57f96e2cade1f775fd24bbd9a388a61e857e GIT binary patch literal 82 zcmV-Y0ImOc0V^p=O;s?nWH2-^Ff%bx2y%6F@pWZrtT>*VRI~PZ0P7ZZ!JYb!<$H4e oKvkrrCYF>Ir7}F5`)Ky2i`SgJyEWI9N8LE|q$hYH01JK}1h5h%IRF3v literal 0 HcmV?d00001 diff --git a/levels/rebase/.githug/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/levels/rebase/.githug/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 new file mode 100644 index 0000000000000000000000000000000000000000..711223894375fe1186ac5bfffdc48fb1fa1e65cc GIT binary patch literal 15 Wcmbm;2^f=k{Pu-A+ O9hKU?srdr%I7#WFBTVf8 literal 0 HcmV?d00001 diff --git a/levels/rebase/.githug/refs/heads/feature b/levels/rebase/.githug/refs/heads/feature new file mode 100644 index 00000000..769db485 --- /dev/null +++ b/levels/rebase/.githug/refs/heads/feature @@ -0,0 +1 @@ +ed0fdcf366b21b8984fb37ea34106978a2e5c5ba diff --git a/levels/rebase/.githug/refs/heads/master b/levels/rebase/.githug/refs/heads/master new file mode 100644 index 00000000..0ecab675 --- /dev/null +++ b/levels/rebase/.githug/refs/heads/master @@ -0,0 +1 @@ +98205e9faf10cf33d2ef7c0f66e402540c62613a diff --git a/levels/rebase/README b/levels/rebase/README new file mode 100644 index 00000000..8178c76d --- /dev/null +++ b/levels/rebase/README @@ -0,0 +1 @@ +readme diff --git a/lib/githug/level.rb b/lib/githug/level.rb index a6511f3f..45b98225 100644 --- a/lib/githug/level.rb +++ b/lib/githug/level.rb @@ -9,7 +9,7 @@ class Level "commit_in_future", "reset", "reset_soft", "checkout_file", "remote", "remote_url", "pull", "remote_add", "push", "diff", "blame", "branch", "checkout", "checkout_tag", "checkout_tag_over_branch", "branch_at", - "delete_branch", "push_branch", "merge", "fetch", "repack", "cherry-pick", + "delete_branch", "push_branch", "merge", "fetch", "rebase", "repack", "cherry-pick", "grep", "rename_commit", "squash", "merge_squash", "reorder", "bisect", "stage_lines", "find_old_branch", "revert", "restore", "conflict", "contribute"] diff --git a/spec/githug_spec.rb b/spec/githug_spec.rb index f1acd5d5..071e8665 100644 --- a/spec/githug_spec.rb +++ b/spec/githug_spec.rb @@ -68,7 +68,7 @@ def skip_level `echo "*.swp" >> .gitignore` `githug`.should be_solved end - + it "solves the include level" do `echo "*.a\n!lib.a" >> .gitignore` `githug`.should be_solved @@ -231,6 +231,12 @@ def skip_level `githug`.should be_solved end + it "solves the rebase level" do + `git checkout feature` + `git rebase master` + `githug`.should be_solved + end + it "solves the repack level" do `git repack -d` `githug`.should be_solved