mygithug 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +8 -0
- data/.rspec +2 -0
- data/.travis.yml +18 -0
- data/Gemfile +4 -0
- data/LICENCE.txt +22 -0
- data/README.md +55 -0
- data/Rakefile +6 -0
- data/bin/mygithug +4 -0
- data/levels/add.rb +30 -0
- data/levels/alias_lg.rb +55 -0
- data/levels/alias_st.rb +22 -0
- data/levels/bisect/.githug/COMMIT_EDITMSG +1 -0
- data/levels/bisect/.githug/HEAD +1 -0
- data/levels/bisect/.githug/ORIG_HEAD +1 -0
- data/levels/bisect/.githug/config +7 -0
- data/levels/bisect/.githug/description +1 -0
- data/levels/bisect/.githug/gitk.cache +3 -0
- data/levels/bisect/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/bisect/.githug/hooks/commit-msg.sample +24 -0
- data/levels/bisect/.githug/hooks/post-commit.sample +8 -0
- data/levels/bisect/.githug/hooks/post-receive.sample +15 -0
- data/levels/bisect/.githug/hooks/post-update.sample +8 -0
- data/levels/bisect/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/bisect/.githug/hooks/pre-commit.sample +46 -0
- data/levels/bisect/.githug/hooks/pre-rebase.sample +172 -0
- data/levels/bisect/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/bisect/.githug/hooks/update.sample +128 -0
- data/levels/bisect/.githug/index +0 -0
- data/levels/bisect/.githug/info/exclude +6 -0
- data/levels/bisect/.githug/info/refs +9 -0
- data/levels/bisect/.githug/logs/HEAD +21 -0
- data/levels/bisect/.githug/logs/refs/heads/master +21 -0
- data/levels/bisect/.githug/objects/info/packs +2 -0
- data/levels/bisect/.githug/objects/pack/pack-59fab357f3158a9640633de6a3326ed79a2b4fe6.idx +0 -0
- data/levels/bisect/.githug/objects/pack/pack-59fab357f3158a9640633de6a3326ed79a2b4fe6.pack +0 -0
- data/levels/bisect/.githug/packed-refs +10 -0
- data/levels/bisect/makefile +2 -0
- data/levels/bisect/prog.rb +3 -0
- data/levels/bisect/test.rb +4 -0
- data/levels/bisect.rb +15 -0
- data/levels/blame/.githug/COMMIT_EDITMSG +1 -0
- data/levels/blame/.githug/HEAD +1 -0
- data/levels/blame/.githug/config +5 -0
- data/levels/blame/.githug/description +1 -0
- data/levels/blame/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/blame/.githug/hooks/commit-msg.sample +24 -0
- data/levels/blame/.githug/hooks/post-commit.sample +8 -0
- data/levels/blame/.githug/hooks/post-receive.sample +15 -0
- data/levels/blame/.githug/hooks/post-update.sample +8 -0
- data/levels/blame/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/blame/.githug/hooks/pre-commit.sample +46 -0
- data/levels/blame/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/blame/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/blame/.githug/hooks/update.sample +128 -0
- data/levels/blame/.githug/index +0 -0
- data/levels/blame/.githug/info/exclude +6 -0
- data/levels/blame/.githug/logs/HEAD +5 -0
- data/levels/blame/.githug/logs/refs/heads/master +5 -0
- data/levels/blame/.githug/objects/00/d6bf5341b263ccaf32e7973be55126eb30a343 +0 -0
- data/levels/blame/.githug/objects/05/07c26fed4d111a8344763be9af68af90f0ecf2 +0 -0
- data/levels/blame/.githug/objects/09/4094808dc6dc336c93c8602190a9e5f7bd6a11 +2 -0
- data/levels/blame/.githug/objects/21/15d78864000292628872941b14521f90187eed +0 -0
- data/levels/blame/.githug/objects/31/11dda1f5b08d50ac44b99acabfa54f1e6e72b0 +2 -0
- data/levels/blame/.githug/objects/50/8db115ba34a0e4e8667653aebe0265bb4f7e80 +0 -0
- data/levels/blame/.githug/objects/5e/8863df752e3b7f2150df7c78f12bef6f1ff00e +0 -0
- data/levels/blame/.githug/objects/67/788a4b90180c7588d7bd0ad8032957b0f429ba +0 -0
- data/levels/blame/.githug/objects/70/d00535a3a25b0ac1736dd3d306d6271e5427ed +0 -0
- data/levels/blame/.githug/objects/97/bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 +1 -0
- data/levels/blame/.githug/objects/ab/08819ba3ffaeba17d4f870dc3a458a904519f4 +0 -0
- data/levels/blame/.githug/objects/be/96fe46de646f6a5c728f90cc884aef96fa1d6f +0 -0
- data/levels/blame/.githug/objects/cd/9c6b9ab1a6f56cccc69b6aa661f1d67ba5fb46 +0 -0
- data/levels/blame/.githug/objects/dd/df1d8ebd60eec169c15a5b23cb49a58d2ed5a0 +4 -0
- data/levels/blame/.githug/objects/ff/d39c2dbfd94bdbca06d48686e0cbda642f3de7 +1 -0
- data/levels/blame/.githug/refs/heads/master +1 -0
- data/levels/blame/config.rb +16 -0
- data/levels/blame.rb +15 -0
- data/levels/branch.rb +18 -0
- data/levels/branch_at.rb +25 -0
- data/levels/checkout.rb +18 -0
- data/levels/checkout_file.rb +25 -0
- data/levels/checkout_tag.rb +39 -0
- data/levels/checkout_tag_over_branch.rb +46 -0
- data/levels/cherry-pick/.githug/COMMIT_EDITMSG +1 -0
- data/levels/cherry-pick/.githug/HEAD +1 -0
- data/levels/cherry-pick/.githug/config +6 -0
- data/levels/cherry-pick/.githug/description +1 -0
- data/levels/cherry-pick/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/cherry-pick/.githug/hooks/commit-msg.sample +24 -0
- data/levels/cherry-pick/.githug/hooks/post-update.sample +8 -0
- data/levels/cherry-pick/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/cherry-pick/.githug/hooks/pre-commit.sample +50 -0
- data/levels/cherry-pick/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/cherry-pick/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/cherry-pick/.githug/hooks/update.sample +128 -0
- data/levels/cherry-pick/.githug/index +0 -0
- data/levels/cherry-pick/.githug/info/exclude +6 -0
- data/levels/cherry-pick/.githug/logs/HEAD +14 -0
- data/levels/cherry-pick/.githug/logs/refs/heads/master +4 -0
- data/levels/cherry-pick/.githug/logs/refs/heads/new-feature +6 -0
- data/levels/cherry-pick/.githug/objects/05/aa97588aff673dcf00e0e1b835d6ec6207a7d9 +0 -0
- data/levels/cherry-pick/.githug/objects/14/ad8f1413c40e0e5be6f6cbdec392a783c1d754 +0 -0
- data/levels/cherry-pick/.githug/objects/1b/912962174dd58fbbf1627ec816fa6672c70854 +0 -0
- data/levels/cherry-pick/.githug/objects/22/f99f3abfd02190a760388c8845c190247859fe +0 -0
- data/levels/cherry-pick/.githug/objects/23/2d266a78d5ef7196f1ede14972ccf7ee19e587 +0 -0
- data/levels/cherry-pick/.githug/objects/31/68bdc3ae7e0ab987dda238beab9c0582c7fc07 +0 -0
- data/levels/cherry-pick/.githug/objects/49/4fa3fc1c15986f9a950aba8607da591223614c +0 -0
- data/levels/cherry-pick/.githug/objects/4a/1961bce62840eaef9c4392fe5cc799e38c9b7b +0 -0
- data/levels/cherry-pick/.githug/objects/54/22c2405527c05c23b243b2535a97b6cefa1427 +0 -0
- data/levels/cherry-pick/.githug/objects/54/f3308533fd4400c94c4cd5827cd38036a67a76 +0 -0
- data/levels/cherry-pick/.githug/objects/58/a8c8edcfdd00c6d8cce9aada8f987a1677571f +0 -0
- data/levels/cherry-pick/.githug/objects/6e/dea632d9540e060bca97dda0897df2b7da0ec0 +2 -0
- data/levels/cherry-pick/.githug/objects/85/4e7ac38b3e8df02ea1480ec45aa9e7865f03d7 +0 -0
- data/levels/cherry-pick/.githug/objects/93/3a97260a11a5ee49bb8a4b7b097cb2fb38f85c +0 -0
- data/levels/cherry-pick/.githug/objects/9a/e59e88e6af362c069847e621b971bafff158ac +0 -0
- data/levels/cherry-pick/.githug/objects/a2/14badc644facc4722083aedf91d9339ffdffbf +0 -0
- data/levels/cherry-pick/.githug/objects/b3/0c6a965415df6aef5f2903f9892fa5481152fc +0 -0
- data/levels/cherry-pick/.githug/objects/c6/0c612734f25b9c989d954621491e9ca3c9e061 +0 -0
- data/levels/cherry-pick/.githug/objects/ca/32a6dac7b6f97975edbe19a4296c2ee7682f68 +0 -0
- data/levels/cherry-pick/.githug/objects/cf/d8ce38c22c5fe83cc04e23f94646464f20d990 +0 -0
- data/levels/cherry-pick/.githug/objects/d5/02e68bfe397140e4ac2a819b138545abca604e +0 -0
- data/levels/cherry-pick/.githug/objects/d5/123e58b37fd886dff2b96bfe5ec08a498192aa +0 -0
- data/levels/cherry-pick/.githug/objects/ea/2a47c19b85fc321e2737ddc49db3deeba3a1b5 +0 -0
- data/levels/cherry-pick/.githug/objects/ea/3dbcc5e2d2359698c3606b0ec44af9f76def54 +0 -0
- data/levels/cherry-pick/.githug/refs/heads/master +1 -0
- data/levels/cherry-pick/.githug/refs/heads/new-feature +1 -0
- data/levels/cherry-pick/README.md +2 -0
- data/levels/cherry-pick/hardcore-math.js +3 -0
- data/levels/cherry-pick/nokia.js +1 -0
- data/levels/cherry-pick.rb +19 -0
- data/levels/clone.rb +10 -0
- data/levels/clone_to_folder.rb +10 -0
- data/levels/commit.rb +17 -0
- data/levels/commit_amend.rb +23 -0
- data/levels/commit_in_future.rb +19 -0
- data/levels/config.rb +33 -0
- data/levels/conflict/.githug/COMMIT_EDITMSG +14 -0
- data/levels/conflict/.githug/HEAD +1 -0
- data/levels/conflict/.githug/config +5 -0
- data/levels/conflict/.githug/description +1 -0
- data/levels/conflict/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/conflict/.githug/hooks/commit-msg.sample +24 -0
- data/levels/conflict/.githug/hooks/post-update.sample +8 -0
- data/levels/conflict/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/conflict/.githug/hooks/pre-commit.sample +50 -0
- data/levels/conflict/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/conflict/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/conflict/.githug/hooks/update.sample +128 -0
- data/levels/conflict/.githug/index +0 -0
- data/levels/conflict/.githug/info/exclude +6 -0
- data/levels/conflict/.githug/logs/HEAD +12 -0
- data/levels/conflict/.githug/logs/refs/heads/master +4 -0
- data/levels/conflict/.githug/logs/refs/heads/mybranch +5 -0
- data/levels/conflict/.githug/objects/1d/b9aa5013e47f1482ec90323d926171a99c28af +0 -0
- data/levels/conflict/.githug/objects/25/b3f9c339430b35ae5822b2ef90e763284dc007 +0 -0
- data/levels/conflict/.githug/objects/2d/0d90051e320215f54f357e746c9838490557e7 +1 -0
- data/levels/conflict/.githug/objects/30/6868e3258be1f35ae43db71e3a6d7edf42ffe7 +0 -0
- data/levels/conflict/.githug/objects/30/cc28e66966109bb5bfbe96d6c817c367d2050a +0 -0
- data/levels/conflict/.githug/objects/38/21e4362c5a76db1112b46b9210670cd5bab482 +0 -0
- data/levels/conflict/.githug/objects/3c/b65bef44ae724ddf9e89640e7e2754dea1a47f +0 -0
- data/levels/conflict/.githug/objects/3d/7aec017559be2b61cab850dafdcb2b6212f1c3 +1 -0
- data/levels/conflict/.githug/objects/40/e20a455ac2731ad25c297b03aa543d7eedf6ab +0 -0
- data/levels/conflict/.githug/objects/44/30fd3f45c832e685350417600a9862c94d20f1 +0 -0
- data/levels/conflict/.githug/objects/46/677964e679f3e727356d0860c643a12a87902b +0 -0
- data/levels/conflict/.githug/objects/50/a127cb066eb903a6fa59d71802c10cb442fb3b +0 -0
- data/levels/conflict/.githug/objects/55/ad5af2a93afa778971e3d04faf20f6c368b6ba +0 -0
- data/levels/conflict/.githug/objects/6b/0c0b32bdca3af9beb831744cb755d6fdc7c7c0 +2 -0
- data/levels/conflict/.githug/objects/75/179304f4fab00613f08a9412b6cb0965bfa564 +2 -0
- data/levels/conflict/.githug/objects/7c/36daf29660ae4a2f09345427ef76f1d38f902f +0 -0
- data/levels/conflict/.githug/objects/88/e0473c9da347c6311f5f8eca8d256bf25402b6 +2 -0
- data/levels/conflict/.githug/objects/bd/c7bec8acae9b3eabf0a15b223a48211b7a89a1 +2 -0
- data/levels/conflict/.githug/objects/c7/97f979cf24ba148bf10d5e26f5d7402dd5f2e1 +0 -0
- data/levels/conflict/.githug/objects/da/ae380200ed6eeaafd926177018e8ff3009b988 +0 -0
- data/levels/conflict/.githug/refs/heads/master +1 -0
- data/levels/conflict/.githug/refs/heads/mybranch +1 -0
- data/levels/conflict/poem.txt +5 -0
- data/levels/conflict.rb +23 -0
- data/levels/congratulation.rb +10 -0
- data/levels/contribute.rb +25 -0
- data/levels/delete_branch/.githug/COMMIT_EDITMSG +1 -0
- data/levels/delete_branch/.githug/HEAD +1 -0
- data/levels/delete_branch/.githug/config +7 -0
- data/levels/delete_branch/.githug/description +1 -0
- data/levels/delete_branch/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/delete_branch/.githug/hooks/commit-msg.sample +24 -0
- data/levels/delete_branch/.githug/hooks/post-update.sample +8 -0
- data/levels/delete_branch/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/delete_branch/.githug/hooks/pre-commit.sample +49 -0
- data/levels/delete_branch/.githug/hooks/pre-push.sample +53 -0
- data/levels/delete_branch/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/delete_branch/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/delete_branch/.githug/hooks/update.sample +128 -0
- data/levels/delete_branch/.githug/index +0 -0
- data/levels/delete_branch/.githug/info/exclude +6 -0
- data/levels/delete_branch/.githug/logs/HEAD +4 -0
- data/levels/delete_branch/.githug/logs/refs/heads/delete_me +1 -0
- data/levels/delete_branch/.githug/logs/refs/heads/master +1 -0
- data/levels/delete_branch/.githug/objects/b6/0afe294eb3c200d646995c9e0234470157c1b0 +2 -0
- data/levels/delete_branch/.githug/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/levels/delete_branch/.githug/objects/e8/0ad49ace82167de62e498622d70377d913c79e +0 -0
- data/levels/delete_branch/.githug/refs/heads/delete_me +1 -0
- data/levels/delete_branch/.githug/refs/heads/master +1 -0
- data/levels/delete_branch/readme +0 -0
- data/levels/delete_branch.rb +15 -0
- data/levels/diff/.githug/COMMIT_EDITMSG +1 -0
- data/levels/diff/.githug/HEAD +1 -0
- data/levels/diff/.githug/config +5 -0
- data/levels/diff/.githug/description +1 -0
- data/levels/diff/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/diff/.githug/hooks/commit-msg.sample +24 -0
- data/levels/diff/.githug/hooks/post-commit.sample +8 -0
- data/levels/diff/.githug/hooks/post-receive.sample +15 -0
- data/levels/diff/.githug/hooks/post-update.sample +8 -0
- data/levels/diff/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/diff/.githug/hooks/pre-commit.sample +46 -0
- data/levels/diff/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/diff/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/diff/.githug/hooks/update.sample +128 -0
- data/levels/diff/.githug/index +0 -0
- data/levels/diff/.githug/info/exclude +6 -0
- data/levels/diff/.githug/logs/HEAD +1 -0
- data/levels/diff/.githug/logs/refs/heads/master +1 -0
- data/levels/diff/.githug/objects/1b/6582364621c92707b587409cedbc4f77fc0cee +0 -0
- data/levels/diff/.githug/objects/4f/703ca9bd25781b6758eeb3c42ed5348610ba6d +2 -0
- data/levels/diff/.githug/objects/dc/aa55e97af34402e84d5336da37abcccc23cba6 +3 -0
- data/levels/diff/.githug/refs/heads/master +1 -0
- data/levels/diff/app.rb +42 -0
- data/levels/diff.rb +16 -0
- data/levels/fetch.rb +71 -0
- data/levels/find_old_branch/.githug/COMMIT_EDITMSG +1 -0
- data/levels/find_old_branch/.githug/HEAD +1 -0
- data/levels/find_old_branch/.githug/ORIG_HEAD +1 -0
- data/levels/find_old_branch/.githug/config +6 -0
- data/levels/find_old_branch/.githug/description +1 -0
- data/levels/find_old_branch/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/find_old_branch/.githug/hooks/commit-msg.sample +24 -0
- data/levels/find_old_branch/.githug/hooks/post-commit.sample +8 -0
- data/levels/find_old_branch/.githug/hooks/post-receive.sample +15 -0
- data/levels/find_old_branch/.githug/hooks/post-update.sample +8 -0
- data/levels/find_old_branch/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/find_old_branch/.githug/hooks/pre-commit.sample +50 -0
- data/levels/find_old_branch/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/find_old_branch/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/find_old_branch/.githug/hooks/update.sample +128 -0
- data/levels/find_old_branch/.githug/index +0 -0
- data/levels/find_old_branch/.githug/info/exclude +7 -0
- data/levels/find_old_branch/.githug/logs/HEAD +7 -0
- data/levels/find_old_branch/.githug/logs/refs/heads/blowup_sun_for_ransom +1 -0
- data/levels/find_old_branch/.githug/logs/refs/heads/cure_common_cold +2 -0
- data/levels/find_old_branch/.githug/logs/refs/heads/kill_the_batman +4 -0
- data/levels/find_old_branch/.githug/logs/refs/heads/solve_world_hunger +2 -0
- data/levels/find_old_branch/.githug/objects/05/e9c01bd3c9264761dd0cde477400a2c3104642 +0 -0
- data/levels/find_old_branch/.githug/objects/1f/0a136ddd98f61934d15eb00444df32d8e8254b +0 -0
- data/levels/find_old_branch/.githug/objects/32/4336a8401afc8ca384eaafe6615c84d552dd2c +0 -0
- data/levels/find_old_branch/.githug/objects/50/72aab6bd73accec89ad3aa077f43aab8a5e507 +0 -0
- data/levels/find_old_branch/.githug/objects/5d/130caf89f1a4bba6a1fffe72c484f3ab659e08 +0 -0
- data/levels/find_old_branch/.githug/objects/68/76e5b41fb693190df76b1baef6ef98623b4f1a +0 -0
- data/levels/find_old_branch/.githug/objects/6a/7702145d1eb91c9f79583eabb984027b12e60c +0 -0
- data/levels/find_old_branch/.githug/objects/89/4a16d6f1a48224e9006b4a6f0fe3846da19bec +0 -0
- data/levels/find_old_branch/.githug/objects/b8/c67b45e5fe9e4b39ac7ade725673f7c90bdfc3 +0 -0
- data/levels/find_old_branch/.githug/objects/bf/76434bc7e7346c6fef5a98aee0f7cfc0788f34 +0 -0
- data/levels/find_old_branch/.githug/refs/heads/blowup_sun_for_ransom +1 -0
- data/levels/find_old_branch/.githug/refs/heads/cure_common_cold +1 -0
- data/levels/find_old_branch/.githug/refs/heads/kill_the_batman +1 -0
- data/levels/find_old_branch/.githug/refs/heads/solve_world_hunger +1 -0
- data/levels/find_old_branch/TODO +1 -0
- data/levels/find_old_branch/myfile.txt +1 -0
- data/levels/find_old_branch.rb +15 -0
- data/levels/grep/.githug/COMMIT_EDITMSG +1 -0
- data/levels/grep/.githug/HEAD +1 -0
- data/levels/grep/.githug/config +6 -0
- data/levels/grep/.githug/description +1 -0
- data/levels/grep/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/grep/.githug/hooks/commit-msg.sample +24 -0
- data/levels/grep/.githug/hooks/post-commit.sample +8 -0
- data/levels/grep/.githug/hooks/post-receive.sample +15 -0
- data/levels/grep/.githug/hooks/post-update.sample +8 -0
- data/levels/grep/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/grep/.githug/hooks/pre-commit.sample +46 -0
- data/levels/grep/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/grep/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/grep/.githug/hooks/update.sample +128 -0
- data/levels/grep/.githug/index +0 -0
- data/levels/grep/.githug/info/exclude +6 -0
- data/levels/grep/.githug/logs/HEAD +1 -0
- data/levels/grep/.githug/logs/refs/heads/master +1 -0
- data/levels/grep/.githug/objects/12/c702f8b25b6b528cf904670b854dba3eba0f45 +3 -0
- data/levels/grep/.githug/objects/6f/45753f4a16b69f5b2215f2dbe8245f073353cc +1 -0
- data/levels/grep/.githug/objects/a4/1fe0c342be5c9930328cbb4315acebbd9c94b2 +0 -0
- data/levels/grep/.githug/objects/d3/f53e82aa015d1eea3b06c3b62dfbacee83bbe1 +0 -0
- data/levels/grep/.githug/refs/heads/master +1 -0
- data/levels/grep/app.rb +45 -0
- data/levels/grep/config.rb +17 -0
- data/levels/grep.rb +14 -0
- data/levels/ignore.rb +42 -0
- data/levels/include.rb +21 -0
- data/levels/init.rb +10 -0
- data/levels/log.rb +22 -0
- data/levels/merge/.githug/COMMIT_EDITMSG +1 -0
- data/levels/merge/.githug/HEAD +1 -0
- data/levels/merge/.githug/config +6 -0
- data/levels/merge/.githug/description +1 -0
- data/levels/merge/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/merge/.githug/hooks/commit-msg.sample +24 -0
- data/levels/merge/.githug/hooks/post-commit.sample +8 -0
- data/levels/merge/.githug/hooks/post-receive.sample +15 -0
- data/levels/merge/.githug/hooks/post-update.sample +8 -0
- data/levels/merge/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/merge/.githug/hooks/pre-commit.sample +46 -0
- data/levels/merge/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/merge/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/merge/.githug/hooks/update.sample +128 -0
- data/levels/merge/.githug/index +0 -0
- data/levels/merge/.githug/info/exclude +6 -0
- data/levels/merge/.githug/logs/HEAD +4 -0
- data/levels/merge/.githug/logs/refs/heads/feature +2 -0
- data/levels/merge/.githug/logs/refs/heads/master +1 -0
- data/levels/merge/.githug/objects/ad/24149d789e59d4b5f9ce41cda90110ca0f98b7 +0 -0
- data/levels/merge/.githug/objects/ae/fde3a01f6e10d72fd4899ce14c8b2654d3eb45 +0 -0
- data/levels/merge/.githug/objects/cc/8ea5a233df119d025eb240b9470e1ca76a151c +0 -0
- data/levels/merge/.githug/objects/e1/2277fe88657a072f1c4eb7d9320e4e6a74ba95 +0 -0
- data/levels/merge/.githug/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/levels/merge/.githug/refs/heads/feature +1 -0
- data/levels/merge/.githug/refs/heads/master +1 -0
- data/levels/merge/file1 +0 -0
- data/levels/merge.rb +16 -0
- data/levels/merge_squash.rb +49 -0
- data/levels/number_of_files_committed.rb +51 -0
- data/levels/pull.rb +16 -0
- data/levels/pull_rebase.rb +49 -0
- data/levels/push.rb +67 -0
- data/levels/push_branch.rb +88 -0
- data/levels/push_tags.rb +63 -0
- data/levels/rebase/.githug/COMMIT_EDITMSG +1 -0
- data/levels/rebase/.githug/HEAD +1 -0
- data/levels/rebase/.githug/ORIG_HEAD +1 -0
- data/levels/rebase/.githug/config +7 -0
- data/levels/rebase/.githug/index +0 -0
- data/levels/rebase/.githug/logs/HEAD +13 -0
- data/levels/rebase/.githug/logs/refs/heads/feature +4 -0
- data/levels/rebase/.githug/logs/refs/heads/master +2 -0
- data/levels/rebase/.githug/objects/0c/d212c5b28da2e65ed4900712dd36c8adce48ad +0 -0
- data/levels/rebase/.githug/objects/44/19b972c0cd1b346ac90332aa7c5cc949589f78 +0 -0
- data/levels/rebase/.githug/objects/54/3b9bebdc6bd5c4b22136034a95dd097a57d3dd +0 -0
- data/levels/rebase/.githug/objects/81/78c76d627cade75005b40711b92f4177bc6cfc +0 -0
- data/levels/rebase/.githug/objects/98/205e9faf10cf33d2ef7c0f66e402540c62613a +2 -0
- data/levels/rebase/.githug/objects/a7/8bcab6232e9382a86436cdfcb2ed0391b1f0ac +4 -0
- data/levels/rebase/.githug/objects/b7/7313d7be366609dd2e77aa96d7fd73f4e27853 +0 -0
- data/levels/rebase/.githug/objects/b9/2d5d55d379cfb90b750e6472fc983f32ad9a71 +0 -0
- data/levels/rebase/.githug/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
- data/levels/rebase/.githug/objects/ed/0fdcf366b21b8984fb37ea34106978a2e5c5ba +0 -0
- data/levels/rebase/.githug/refs/heads/feature +1 -0
- data/levels/rebase/.githug/refs/heads/master +1 -0
- data/levels/rebase/README +1 -0
- data/levels/rebase.rb +16 -0
- data/levels/rebase_conflict.rb +55 -0
- data/levels/rebase_onto.rb +45 -0
- data/levels/remote.rb +16 -0
- data/levels/remote_add.rb +16 -0
- data/levels/remote_url.rb +17 -0
- data/levels/rename.rb +18 -0
- data/levels/rename_commit.rb +25 -0
- data/levels/reorder.rb +30 -0
- data/levels/repack.rb +19 -0
- data/levels/reset.rb +22 -0
- data/levels/reset_soft.rb +22 -0
- data/levels/restore.rb +28 -0
- data/levels/restructure.rb +40 -0
- data/levels/revert.rb +30 -0
- data/levels/rm.rb +20 -0
- data/levels/rm_cached.rb +18 -0
- data/levels/squash.rb +29 -0
- data/levels/stage_lines.rb +29 -0
- data/levels/stash/.githug/COMMIT_EDITMSG +1 -0
- data/levels/stash/.githug/HEAD +1 -0
- data/levels/stash/.githug/config +7 -0
- data/levels/stash/.githug/description +1 -0
- data/levels/stash/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/stash/.githug/hooks/commit-msg.sample +24 -0
- data/levels/stash/.githug/hooks/post-update.sample +8 -0
- data/levels/stash/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/stash/.githug/hooks/pre-commit.sample +50 -0
- data/levels/stash/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/stash/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/stash/.githug/hooks/update.sample +128 -0
- data/levels/stash/.githug/index +0 -0
- data/levels/stash/.githug/info/exclude +6 -0
- data/levels/stash/.githug/logs/HEAD +1 -0
- data/levels/stash/.githug/logs/refs/heads/master +1 -0
- data/levels/stash/.githug/objects/02/060592b31c9e12ffe1b282addf9537c5ef8e1f +0 -0
- data/levels/stash/.githug/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
- data/levels/stash/.githug/objects/7f/82d7e4fba66980af16da540e18d8955518cdc2 +0 -0
- data/levels/stash/.githug/objects/85/e560abcd7e3255dcd91982476e432f4d3d1b51 +0 -0
- data/levels/stash/.githug/refs/heads/master +1 -0
- data/levels/stash/lyrics.txt +13 -0
- data/levels/stash.rb +17 -0
- data/levels/status.rb +26 -0
- data/levels/submodule.rb +20 -0
- data/levels/tag.rb +18 -0
- data/levels/unstash/.githug/COMMIT_EDITMSG +1 -0
- data/levels/unstash/.githug/HEAD +1 -0
- data/levels/unstash/.githug/config +7 -0
- data/levels/unstash/.githug/description +1 -0
- data/levels/unstash/.githug/hooks/applypatch-msg.sample +15 -0
- data/levels/unstash/.githug/hooks/commit-msg.sample +24 -0
- data/levels/unstash/.githug/hooks/post-update.sample +8 -0
- data/levels/unstash/.githug/hooks/pre-applypatch.sample +14 -0
- data/levels/unstash/.githug/hooks/pre-commit.sample +50 -0
- data/levels/unstash/.githug/hooks/pre-rebase.sample +169 -0
- data/levels/unstash/.githug/hooks/prepare-commit-msg.sample +36 -0
- data/levels/unstash/.githug/hooks/update.sample +128 -0
- data/levels/unstash/.githug/index +0 -0
- data/levels/unstash/.githug/info/exclude +6 -0
- data/levels/unstash/.githug/logs/HEAD +1 -0
- data/levels/unstash/.githug/logs/refs/heads/master +1 -0
- data/levels/unstash/.githug/objects/02/060592b31c9e12ffe1b282addf9537c5ef8e1f +0 -0
- data/levels/unstash/.githug/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
- data/levels/unstash/.githug/objects/7f/82d7e4fba66980af16da540e18d8955518cdc2 +0 -0
- data/levels/unstash/.githug/objects/85/e560abcd7e3255dcd91982476e432f4d3d1b51 +0 -0
- data/levels/unstash/.githug/refs/heads/master +1 -0
- data/levels/unstash/lyrics.txt +13 -0
- data/levels/unstash.rb +22 -0
- data/lib/githug/cli.rb +121 -0
- data/lib/githug/extensions/grit/ruby1.9.rb +21 -0
- data/lib/githug/game.rb +57 -0
- data/lib/githug/level.rb +135 -0
- data/lib/githug/profile.rb +80 -0
- data/lib/githug/repository.rb +48 -0
- data/lib/githug/ui.rb +59 -0
- data/lib/githug/version.rb +3 -0
- data/lib/githug.rb +16 -0
- data/mygithug.gemspec +27 -0
- data/spec/githug/cli_spec.rb +133 -0
- data/spec/githug/game_spec.rb +96 -0
- data/spec/githug/level_spec.rb +159 -0
- data/spec/githug/profile_spec.rb +89 -0
- data/spec/githug/repository_spec.rb +97 -0
- data/spec/githug/ui_spec.rb +112 -0
- data/spec/githug_spec.rb +316 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/support/files/test_level.rb +16 -0
- metadata +549 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# An example hook script to blocks unannotated tags from entering.
|
|
4
|
+
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
|
|
5
|
+
#
|
|
6
|
+
# To enable this hook, rename this file to "update".
|
|
7
|
+
#
|
|
8
|
+
# Config
|
|
9
|
+
# ------
|
|
10
|
+
# hooks.allowunannotated
|
|
11
|
+
# This boolean sets whether unannotated tags will be allowed into the
|
|
12
|
+
# repository. By default they won't be.
|
|
13
|
+
# hooks.allowdeletetag
|
|
14
|
+
# This boolean sets whether deleting tags will be allowed in the
|
|
15
|
+
# repository. By default they won't be.
|
|
16
|
+
# hooks.allowmodifytag
|
|
17
|
+
# This boolean sets whether a tag may be modified after creation. By default
|
|
18
|
+
# it won't be.
|
|
19
|
+
# hooks.allowdeletebranch
|
|
20
|
+
# This boolean sets whether deleting branches will be allowed in the
|
|
21
|
+
# repository. By default they won't be.
|
|
22
|
+
# hooks.denycreatebranch
|
|
23
|
+
# This boolean sets whether remotely creating branches will be denied
|
|
24
|
+
# in the repository. By default this is allowed.
|
|
25
|
+
#
|
|
26
|
+
|
|
27
|
+
# --- Command line
|
|
28
|
+
refname="$1"
|
|
29
|
+
oldrev="$2"
|
|
30
|
+
newrev="$3"
|
|
31
|
+
|
|
32
|
+
# --- Safety check
|
|
33
|
+
if [ -z "$GIT_DIR" ]; then
|
|
34
|
+
echo "Don't run this script from the command line." >&2
|
|
35
|
+
echo " (if you want, you could supply GIT_DIR then run" >&2
|
|
36
|
+
echo " $0 <ref> <oldrev> <newrev>)" >&2
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
|
|
41
|
+
echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# --- Config
|
|
46
|
+
allowunannotated=$(git config --bool hooks.allowunannotated)
|
|
47
|
+
allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
|
|
48
|
+
denycreatebranch=$(git config --bool hooks.denycreatebranch)
|
|
49
|
+
allowdeletetag=$(git config --bool hooks.allowdeletetag)
|
|
50
|
+
allowmodifytag=$(git config --bool hooks.allowmodifytag)
|
|
51
|
+
|
|
52
|
+
# check for no description
|
|
53
|
+
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
|
|
54
|
+
case "$projectdesc" in
|
|
55
|
+
"Unnamed repository"* | "")
|
|
56
|
+
echo "*** Project description file hasn't been set" >&2
|
|
57
|
+
exit 1
|
|
58
|
+
;;
|
|
59
|
+
esac
|
|
60
|
+
|
|
61
|
+
# --- Check types
|
|
62
|
+
# if $newrev is 0000...0000, it's a commit to delete a ref.
|
|
63
|
+
zero="0000000000000000000000000000000000000000"
|
|
64
|
+
if [ "$newrev" = "$zero" ]; then
|
|
65
|
+
newrev_type=delete
|
|
66
|
+
else
|
|
67
|
+
newrev_type=$(git cat-file -t $newrev)
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
case "$refname","$newrev_type" in
|
|
71
|
+
refs/tags/*,commit)
|
|
72
|
+
# un-annotated tag
|
|
73
|
+
short_refname=${refname##refs/tags/}
|
|
74
|
+
if [ "$allowunannotated" != "true" ]; then
|
|
75
|
+
echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
|
|
76
|
+
echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
;;
|
|
80
|
+
refs/tags/*,delete)
|
|
81
|
+
# delete tag
|
|
82
|
+
if [ "$allowdeletetag" != "true" ]; then
|
|
83
|
+
echo "*** Deleting a tag is not allowed in this repository" >&2
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
;;
|
|
87
|
+
refs/tags/*,tag)
|
|
88
|
+
# annotated tag
|
|
89
|
+
if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
|
|
90
|
+
then
|
|
91
|
+
echo "*** Tag '$refname' already exists." >&2
|
|
92
|
+
echo "*** Modifying a tag is not allowed in this repository." >&2
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
;;
|
|
96
|
+
refs/heads/*,commit)
|
|
97
|
+
# branch
|
|
98
|
+
if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
|
|
99
|
+
echo "*** Creating a branch is not allowed in this repository" >&2
|
|
100
|
+
exit 1
|
|
101
|
+
fi
|
|
102
|
+
;;
|
|
103
|
+
refs/heads/*,delete)
|
|
104
|
+
# delete branch
|
|
105
|
+
if [ "$allowdeletebranch" != "true" ]; then
|
|
106
|
+
echo "*** Deleting a branch is not allowed in this repository" >&2
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
;;
|
|
110
|
+
refs/remotes/*,commit)
|
|
111
|
+
# tracking branch
|
|
112
|
+
;;
|
|
113
|
+
refs/remotes/*,delete)
|
|
114
|
+
# delete tracking branch
|
|
115
|
+
if [ "$allowdeletebranch" != "true" ]; then
|
|
116
|
+
echo "*** Deleting a tracking branch is not allowed in this repository" >&2
|
|
117
|
+
exit 1
|
|
118
|
+
fi
|
|
119
|
+
;;
|
|
120
|
+
*)
|
|
121
|
+
# Anything else (is there anything else?)
|
|
122
|
+
echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
|
|
123
|
+
exit 1
|
|
124
|
+
;;
|
|
125
|
+
esac
|
|
126
|
+
|
|
127
|
+
# --- Finished
|
|
128
|
+
exit 0
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 5e8863df752e3b7f2150df7c78f12bef6f1ff00e Gary Rennie <webmaster@gazler.com> 1331247924 +0000 commit (initial): added config with name
|
|
2
|
+
5e8863df752e3b7f2150df7c78f12bef6f1ff00e 094094808dc6dc336c93c8602190a9e5f7bd6a11 Spider Man <spidey-sense@tingling.com> 1331247978 +0000 commit: added options
|
|
3
|
+
094094808dc6dc336c93c8602190a9e5f7bd6a11 70d00535a3a25b0ac1736dd3d306d6271e5427ed Bruce Banner <hulk@smash.com> 1331248061 +0000 commit: added password
|
|
4
|
+
70d00535a3a25b0ac1736dd3d306d6271e5427ed 97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 Spider Man <spidey-sense@tingling.com> 1331248095 +0000 commit: added more options
|
|
5
|
+
97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 ffd39c2dbfd94bdbca06d48686e0cbda642f3de7 Gary Rennie <webmaster@gazler.com> 1331248138 +0000 commit: added more options (no really)
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
0000000000000000000000000000000000000000 5e8863df752e3b7f2150df7c78f12bef6f1ff00e Gary Rennie <webmaster@gazler.com> 1331247924 +0000 commit (initial): added config with name
|
|
2
|
+
5e8863df752e3b7f2150df7c78f12bef6f1ff00e 094094808dc6dc336c93c8602190a9e5f7bd6a11 Spider Man <spidey-sense@tingling.com> 1331247978 +0000 commit: added options
|
|
3
|
+
094094808dc6dc336c93c8602190a9e5f7bd6a11 70d00535a3a25b0ac1736dd3d306d6271e5427ed Bruce Banner <hulk@smash.com> 1331248061 +0000 commit: added password
|
|
4
|
+
70d00535a3a25b0ac1736dd3d306d6271e5427ed 97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 Spider Man <spidey-sense@tingling.com> 1331248095 +0000 commit: added more options
|
|
5
|
+
97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2 ffd39c2dbfd94bdbca06d48686e0cbda642f3de7 Gary Rennie <webmaster@gazler.com> 1331248138 +0000 commit: added more options (no really)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
x��Kj1D��S��$t��`L.�UN����i�(�>��((���-u��lͩ7U`"'!Fo�{�1p�4�uL? )U��ܴt(�θl2��B�x#�x��r��������6�����_��C��Z�ϡϥnW c�m���<@p���c�߇)���V�B��Z�1�n�K�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
x��MJD1�]��t$�t`ܹ��NG�$C&"�������Ž�}���ix�|�ڠ�!搲���ٸ����1��Ґ6!.�53�X|��t �is���/Vo91[E?���q�Oim8�J�t�2���ʽ^�8g�G�^�Z���fيr���~�{o7xn��q�O�dbO[
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ffd39c2dbfd94bdbca06d48686e0cbda642f3de7
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Config
|
|
2
|
+
attr_accessor :name, :password
|
|
3
|
+
def initialize(name, password = nil, options = {})
|
|
4
|
+
@name = name
|
|
5
|
+
@password = password || "i<3evil"
|
|
6
|
+
|
|
7
|
+
if options[:downcase]
|
|
8
|
+
@name.downcase!
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
if options[:upcase]
|
|
12
|
+
@name.upcase!
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
data/levels/blame.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
difficulty 2
|
|
2
|
+
description "Someone has put a password inside the file `config.rb` find out who it was."
|
|
3
|
+
|
|
4
|
+
setup do
|
|
5
|
+
init_from_level
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
solution do
|
|
9
|
+
offender = repo.commit("97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2").author.name
|
|
10
|
+
request("Who made the commit with the password?").downcase == offender.downcase
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
hint do
|
|
14
|
+
puts "You want to research the `git blame` command."
|
|
15
|
+
end
|
data/levels/branch.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
difficulty 1
|
|
2
|
+
description "You want to work on a piece of code that has the potential to break things, create the branch test_code."
|
|
3
|
+
|
|
4
|
+
setup do
|
|
5
|
+
repo.init
|
|
6
|
+
FileUtils.touch("README")
|
|
7
|
+
repo.add "README"
|
|
8
|
+
repo.commit_all("Initial commit")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
solution do
|
|
12
|
+
repo.branches.map(&:name).include?("test_code")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
hint do
|
|
16
|
+
puts "`git branch` is what you want to investigate."
|
|
17
|
+
end
|
|
18
|
+
|
data/levels/branch_at.rb
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
difficulty 3
|
|
2
|
+
description "You forgot to branch at the previous commit and made a commit on top of it. Create branch test_branch at the commit before the last."
|
|
3
|
+
|
|
4
|
+
setup do
|
|
5
|
+
repo.init
|
|
6
|
+
FileUtils.touch("file1")
|
|
7
|
+
repo.add("file1")
|
|
8
|
+
repo.commit_all("Adding file1")
|
|
9
|
+
File.open("file1", 'w') { |f| f.write("content") }
|
|
10
|
+
repo.add("file1")
|
|
11
|
+
repo.commit_all("Updating file1")
|
|
12
|
+
File.open("file1", 'a') { |f| f.write("\nAdding some more text") }
|
|
13
|
+
repo.add("file1")
|
|
14
|
+
repo.commit_all("Updating file1 again")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
solution do
|
|
18
|
+
return false unless repo.branches.map(&:name).include?("test_branch")
|
|
19
|
+
repo.commits("test_branch").each { |commit| return false if commit.message == "Updating file1 again" }
|
|
20
|
+
true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
hint do
|
|
24
|
+
puts "Just like creating a branch, but you have to pass an extra argument."
|
|
25
|
+
end
|
data/levels/checkout.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
difficulty 2
|
|
2
|
+
description "Create and switch to a new branch called my_branch. You will need to create a branch like you did in the previous level."
|
|
3
|
+
|
|
4
|
+
setup do
|
|
5
|
+
repo.init
|
|
6
|
+
FileUtils.touch("README")
|
|
7
|
+
repo.add("README")
|
|
8
|
+
repo.commit_all("initial commit")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
solution do
|
|
12
|
+
return false unless repo.head.name == "my_branch"
|
|
13
|
+
true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
hint do
|
|
17
|
+
puts "Try looking up `git checkout` and `git branch`."
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
difficulty 3
|
|
2
|
+
|
|
3
|
+
description "A file has been modified, but you don't want to keep the modification. Checkout the `config.rb` file from the last commit."
|
|
4
|
+
|
|
5
|
+
setup do
|
|
6
|
+
repo.init
|
|
7
|
+
File.open("config.rb", "w") do |file|
|
|
8
|
+
file.puts("This is the initial config file")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
repo.add("config.rb")
|
|
12
|
+
repo.commit_all("Added initial config file")
|
|
13
|
+
|
|
14
|
+
File.open("config.rb", "a") do |file|
|
|
15
|
+
file.puts("These are changed you don't want to keep!")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
solution do
|
|
20
|
+
repo.status.files["config.rb"].type != "M" && repo.commits.length == 1
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
hint do
|
|
24
|
+
puts "You will need to do some research on the checkout command for this one."
|
|
25
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
difficulty 2
|
|
2
|
+
|
|
3
|
+
description "You need to fix a bug in the version 1.2 of your app. Checkout the tag `v1.2`."
|
|
4
|
+
|
|
5
|
+
setup do
|
|
6
|
+
repo.init
|
|
7
|
+
FileUtils.touch("app.rb")
|
|
8
|
+
repo.add("app.rb")
|
|
9
|
+
repo.commit_all("Initial commit")
|
|
10
|
+
|
|
11
|
+
`echo "Some code" >> app.rb`
|
|
12
|
+
repo.add("app.rb")
|
|
13
|
+
repo.commit_all("Some changes")
|
|
14
|
+
repo.git.tag( { 'f' => true }, "v1.0" )
|
|
15
|
+
|
|
16
|
+
`echo "Buggy code" >> app.rb`
|
|
17
|
+
repo.add("app.rb")
|
|
18
|
+
repo.commit_all("Some more changes")
|
|
19
|
+
repo.git.tag( { 'f' => true }, "v1.2" )
|
|
20
|
+
|
|
21
|
+
`echo "More code" >> app.rb`
|
|
22
|
+
repo.add("app.rb")
|
|
23
|
+
repo.commit_all("Yet more changes")
|
|
24
|
+
|
|
25
|
+
`echo "Some more code" >> app.rb`
|
|
26
|
+
repo.add("app.rb")
|
|
27
|
+
repo.commit_all("Changes galore")
|
|
28
|
+
repo.git.tag( { 'f' => true }, "v1.5" )
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
solution do
|
|
32
|
+
return false unless repo.commits.length == 5
|
|
33
|
+
return false unless `git show HEAD --format=%s` =~ /Some more changes/
|
|
34
|
+
true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
hint do
|
|
38
|
+
puts "There's no big difference between checking out a branch and checking out a tag."
|
|
39
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
difficulty 2
|
|
2
|
+
|
|
3
|
+
description "You need to fix a bug in the version 1.2 of your app. Checkout the tag `v1.2` (Note: There is also a branch named `v1.2`)."
|
|
4
|
+
|
|
5
|
+
setup do
|
|
6
|
+
repo.init
|
|
7
|
+
FileUtils.touch("app.rb")
|
|
8
|
+
repo.add("app.rb")
|
|
9
|
+
repo.commit_all("Initial commit")
|
|
10
|
+
|
|
11
|
+
`echo "Some code" >> app.rb`
|
|
12
|
+
repo.add("app.rb")
|
|
13
|
+
repo.commit_all("Some changes")
|
|
14
|
+
repo.git.tag( { 'f' => true }, "v1.0" )
|
|
15
|
+
|
|
16
|
+
`echo "Buggy code" >> app.rb`
|
|
17
|
+
repo.add("app.rb")
|
|
18
|
+
repo.commit_all("Some more changes")
|
|
19
|
+
repo.git.tag( { 'f' => true }, "v1.2" )
|
|
20
|
+
|
|
21
|
+
`echo "More code" >> app.rb`
|
|
22
|
+
repo.add("app.rb")
|
|
23
|
+
repo.commit_all("Yet more changes")
|
|
24
|
+
|
|
25
|
+
`echo "Some more code" >> app.rb`
|
|
26
|
+
repo.add("app.rb")
|
|
27
|
+
repo.commit_all("Changes galore")
|
|
28
|
+
repo.git.tag( { 'f' => true }, "v1.5" )
|
|
29
|
+
|
|
30
|
+
repo.git.native :checkout, {"b" => true}, 'v1.2'
|
|
31
|
+
File.open("file3", 'w') { |f| f << "some feature\n" }
|
|
32
|
+
repo.add "file3"
|
|
33
|
+
repo.commit_all "Developing new features"
|
|
34
|
+
|
|
35
|
+
repo.git.native :checkout, {}, 'master'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
solution do
|
|
39
|
+
return false unless repo.commits.length == 5
|
|
40
|
+
return false unless `git show HEAD --format=%s` =~ /Some more changes/
|
|
41
|
+
true
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
hint do
|
|
45
|
+
puts "You should think about specifying you're after the tag named `v1.2` (think `tags/`)."
|
|
46
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
some small fixes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ref: refs/heads/master
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Unnamed repository; edit this file 'description' to name the repository.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# An example hook script to check the commit log message taken by
|
|
4
|
+
# applypatch from an e-mail message.
|
|
5
|
+
#
|
|
6
|
+
# The hook should exit with non-zero status after issuing an
|
|
7
|
+
# appropriate message if it wants to stop the commit. The hook is
|
|
8
|
+
# allowed to edit the commit message file.
|
|
9
|
+
#
|
|
10
|
+
# To enable this hook, rename this file to "applypatch-msg".
|
|
11
|
+
|
|
12
|
+
. git-sh-setup
|
|
13
|
+
test -x "$GIT_DIR/hooks/commit-msg" &&
|
|
14
|
+
exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
|
|
15
|
+
:
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# An example hook script to check the commit log message.
|
|
4
|
+
# Called by "git commit" with one argument, the name of the file
|
|
5
|
+
# that has the commit message. The hook should exit with non-zero
|
|
6
|
+
# status after issuing an appropriate message if it wants to stop the
|
|
7
|
+
# commit. The hook is allowed to edit the commit message file.
|
|
8
|
+
#
|
|
9
|
+
# To enable this hook, rename this file to "commit-msg".
|
|
10
|
+
|
|
11
|
+
# Uncomment the below to add a Signed-off-by line to the message.
|
|
12
|
+
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
|
|
13
|
+
# hook is more suited to it.
|
|
14
|
+
#
|
|
15
|
+
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
|
|
16
|
+
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
|
|
17
|
+
|
|
18
|
+
# This example catches duplicate Signed-off-by lines.
|
|
19
|
+
|
|
20
|
+
test "" = "$(grep '^Signed-off-by: ' "$1" |
|
|
21
|
+
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
|
|
22
|
+
echo >&2 Duplicate Signed-off-by lines.
|
|
23
|
+
exit 1
|
|
24
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# An example hook script to verify what is about to be committed
|
|
4
|
+
# by applypatch from an e-mail message.
|
|
5
|
+
#
|
|
6
|
+
# The hook should exit with non-zero status after issuing an
|
|
7
|
+
# appropriate message if it wants to stop the commit.
|
|
8
|
+
#
|
|
9
|
+
# To enable this hook, rename this file to "pre-applypatch".
|
|
10
|
+
|
|
11
|
+
. git-sh-setup
|
|
12
|
+
test -x "$GIT_DIR/hooks/pre-commit" &&
|
|
13
|
+
exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
|
|
14
|
+
:
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
#
|
|
3
|
+
# An example hook script to verify what is about to be committed.
|
|
4
|
+
# Called by "git commit" with no arguments. The hook should
|
|
5
|
+
# exit with non-zero status after issuing an appropriate message if
|
|
6
|
+
# it wants to stop the commit.
|
|
7
|
+
#
|
|
8
|
+
# To enable this hook, rename this file to "pre-commit".
|
|
9
|
+
|
|
10
|
+
if git rev-parse --verify HEAD >/dev/null 2>&1
|
|
11
|
+
then
|
|
12
|
+
against=HEAD
|
|
13
|
+
else
|
|
14
|
+
# Initial commit: diff against an empty tree object
|
|
15
|
+
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# If you want to allow non-ascii filenames set this variable to true.
|
|
19
|
+
allownonascii=$(git config hooks.allownonascii)
|
|
20
|
+
|
|
21
|
+
# Redirect output to stderr.
|
|
22
|
+
exec 1>&2
|
|
23
|
+
|
|
24
|
+
# Cross platform projects tend to avoid non-ascii filenames; prevent
|
|
25
|
+
# them from being added to the repository. We exploit the fact that the
|
|
26
|
+
# printable range starts at the space character and ends with tilde.
|
|
27
|
+
if [ "$allownonascii" != "true" ] &&
|
|
28
|
+
# Note that the use of brackets around a tr range is ok here, (it's
|
|
29
|
+
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
|
30
|
+
# the square bracket bytes happen to fall in the designated range.
|
|
31
|
+
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
|
32
|
+
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
|
33
|
+
then
|
|
34
|
+
echo "Error: Attempt to add a non-ascii file name."
|
|
35
|
+
echo
|
|
36
|
+
echo "This can cause problems if you want to work"
|
|
37
|
+
echo "with people on other platforms."
|
|
38
|
+
echo
|
|
39
|
+
echo "To be portable it is advisable to rename the file ..."
|
|
40
|
+
echo
|
|
41
|
+
echo "If you know what you are doing you can disable this"
|
|
42
|
+
echo "check using:"
|
|
43
|
+
echo
|
|
44
|
+
echo " git config hooks.allownonascii true"
|
|
45
|
+
echo
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# If there are whitespace errors, print the offending file names and fail.
|
|
50
|
+
exec git diff-index --check --cached $against --
|