githug 0.4.8 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +7 -7
  3. data/Dockerfile +59 -0
  4. data/README.md +42 -2
  5. data/githug.gemspec +2 -3
  6. data/levels/add.rb +3 -2
  7. data/levels/bisect.rb +2 -1
  8. data/levels/blame.rb +3 -2
  9. data/levels/branch.rb +2 -1
  10. data/levels/branch_at.rb +3 -2
  11. data/levels/checkout.rb +2 -1
  12. data/levels/checkout_file.rb +2 -1
  13. data/levels/checkout_tag.rb +2 -0
  14. data/levels/checkout_tag_over_branch.rb +1 -0
  15. data/levels/cherry-pick.rb +4 -3
  16. data/levels/clone_to_folder.rb +1 -1
  17. data/levels/commit.rb +1 -0
  18. data/levels/commit_amend.rb +2 -1
  19. data/levels/commit_in_future.rb +2 -1
  20. data/levels/config.rb +2 -2
  21. data/levels/conflict.rb +1 -0
  22. data/levels/contribute.rb +1 -1
  23. data/levels/delete_branch.rb +3 -2
  24. data/levels/diff.rb +3 -2
  25. data/levels/fetch.rb +13 -13
  26. data/levels/find_old_branch.rb +2 -1
  27. data/levels/grep.rb +1 -0
  28. data/levels/ignore.rb +2 -1
  29. data/levels/include.rb +3 -2
  30. data/levels/init.rb +1 -1
  31. data/levels/log.rb +3 -2
  32. data/levels/merge.rb +4 -3
  33. data/levels/merge_squash.rb +1 -0
  34. data/levels/number_of_files_committed.rb +10 -9
  35. data/levels/pull.rb +1 -0
  36. data/levels/push.rb +3 -1
  37. data/levels/push_branch.rb +12 -11
  38. data/levels/push_tags.rb +2 -1
  39. data/levels/rebase.rb +1 -0
  40. data/levels/rebase_onto.rb +46 -0
  41. data/levels/remote.rb +3 -2
  42. data/levels/remote_add.rb +1 -0
  43. data/levels/remote_url.rb +2 -1
  44. data/levels/rename.rb +1 -0
  45. data/levels/rename_commit.rb +2 -1
  46. data/levels/reorder.rb +1 -0
  47. data/levels/repack.rb +1 -0
  48. data/levels/reset.rb +2 -1
  49. data/levels/reset_soft.rb +1 -0
  50. data/levels/restore.rb +3 -2
  51. data/levels/restructure.rb +3 -1
  52. data/levels/revert.rb +2 -2
  53. data/levels/rm.rb +6 -3
  54. data/levels/rm_cached.rb +3 -2
  55. data/levels/squash.rb +2 -1
  56. data/levels/stage_lines.rb +2 -1
  57. data/levels/stash.rb +2 -1
  58. data/levels/status.rb +2 -1
  59. data/levels/submodule.rb +10 -9
  60. data/levels/tag.rb +1 -0
  61. data/lib/githug/cli.rb +9 -3
  62. data/lib/githug/level.rb +1 -1
  63. data/lib/githug/version.rb +1 -1
  64. data/lib/githug.rb +1 -0
  65. data/spec/githug/cli_spec.rb +12 -0
  66. data/spec/githug/profile_spec.rb +1 -1
  67. data/spec/githug_spec.rb +6 -0
  68. metadata +21 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0669db6aa142549b3fc2ef14253d22be30dd8a26
4
- data.tar.gz: a72898cba48c26849715f2ae2a8774fe7760757b
2
+ SHA256:
3
+ metadata.gz: 1a61d7135f677a3cf9505492d8ec9914fd1fb245accf70e2a16b11f6164a53ea
4
+ data.tar.gz: be924975c33f0d6695586e495747cdc49ecedb77ae25ea89de91d386a8a925dc
5
5
  SHA512:
6
- metadata.gz: 221cd4042f23132f2dc79126a5f555f97664560314e83f1374d450840104fc7de7072c7b641c16dc54771236073e6772a6abbbe3dbe770158d5f3262bd666144
7
- data.tar.gz: eb7c00c6ceab4ee18609153d84234b7876e9fc3302f57ede7877561eec0eb346223847884080146a96d52cd19327e299369e64610929a336ebb5b77820324a3a
6
+ metadata.gz: 3b3f4971ab4e041195e23ff567213c10765d518c1eb0886484d708e92761741bd7974b905f4660604e4fca4dfedfbf1b159381e64c3f8d9b1bc0e0198601c66b
7
+ data.tar.gz: 87d1f7b45360770818033c51ef243954d19a02266bcf0834d98688deed263586d426b0f6f4015d96c1e20f3111a1474f56f3500ce1cc830c858ef6a731e0ea76
data/.travis.yml CHANGED
@@ -1,11 +1,11 @@
1
1
  language: ruby
2
-
2
+ dist: focal
3
3
  rvm:
4
- - 1.8.7
5
- - 1.9.2
6
- - 1.9.3
7
- - 2.0.0
8
- - 2.1
4
+ - 2.4.10
5
+ - 2.5.9
6
+ - 2.6.8
7
+ - 2.7.4
8
+ - 3.0.1
9
9
  - ruby-head
10
10
 
11
11
  matrix:
@@ -13,6 +13,6 @@ matrix:
13
13
  - rvm: ruby-head
14
14
 
15
15
  before_install:
16
- - gem update --system 2.1.11
16
+ - gem update --system
17
17
  - git config --global user.email 'user@example.com'
18
18
  - git config --global user.name 'Test User'
data/Dockerfile ADDED
@@ -0,0 +1,59 @@
1
+ FROM ruby:slim
2
+
3
+ LABEL org.opencontainers.image.authors="diraneyya@ip.rwth-aachen.de"
4
+
5
+ # This is in order to have the man pages during exercises
6
+ RUN sed -i '/path-exclude \/usr\/share\/man/d' /etc/dpkg/dpkg.cfg.d/docker
7
+ RUN sed -i '/path-exclude \/usr\/share\/groff/d' /etc/dpkg/dpkg.cfg.d/docker
8
+ RUN apt update && apt install -y man git && apt install --reinstall coreutils
9
+
10
+ # The DATA_PATH is used for the deliverables, or the submissible
11
+ # content for the classroom activity.
12
+ ENV DATA_PATH="/data"
13
+ # The REPO_PATH is where the original or the teacher's forked repo
14
+ # resides inside the container.
15
+ ENV REPO_PATH="/root/githug"
16
+ # The LEVEL_PATH is where the current challenge resides and where
17
+ # students should navigate prior to attemping to use the `githug`
18
+ # commands.
19
+ ENV LEVEL_PATH="/git_hug"
20
+ ENV GITHUG_GITCONF="/root/.gitconfig"
21
+ ENV GITHUG_PROFILE="$LEVEL_PATH/.profile.yml"
22
+ ENV GITHUG_HISTORY_OUTPUT="$DATA_PATH/history.txt"
23
+ ENV GITHUG_PROFILE_OUTPUT="$DATA_PATH/profile.yml"
24
+ ENV GITHUG_GITCONF_OUTPUT="$DATA_PATH/gitconfig"
25
+
26
+ RUN mkdir -p $DATA_PATH
27
+ ADD . $REPO_PATH
28
+ WORKDIR $REPO_PATH
29
+ RUN gem build
30
+ RUN gem install *.gem
31
+
32
+ WORKDIR /
33
+ RUN echo "y" | $GEM_HOME/bin/githug
34
+ RUN cp $GITHUG_PROFILE $GITHUG_PROFILE_OUTPUT
35
+
36
+ WORKDIR $LEVEL_PATH
37
+
38
+ # The bash login script in below clears the history and restores
39
+ # progress using the contents of the $GITHUG_PROFILE_OUTPUT file.
40
+ RUN printf "history -c\nHISTSIZE= \nHISTFILESIZE= \n\
41
+ echo '--- NEW SESSION ---' >> $GITHUG_HISTORY_OUTPUT \n\
42
+ if ! [ -e $GITHUG_PROFILE_OUTPUT ]; then \n\
43
+ echo 'ERROR: Corrupt level progress data. Exiting.' \n\
44
+ echo '>>> CORRUPT DATA <<<' >> $GITHUG_HISTORY_OUTPUT \n\
45
+ exit 1; fi \n\
46
+ cp $GITHUG_GITCONF_OUTPUT $GITHUG_GITCONF \n\
47
+ mkdir -p $LEVEL_PATH && cp $GITHUG_PROFILE_OUTPUT $GITHUG_PROFILE \n\
48
+ export PATH=\"\$GEM_HOME/bin:\$PATH\" \n\
49
+ cd $LEVEL_PATH && githug reset \n\
50
+ echo -e '\nIMPORTANT: everything you type in this container is \
51
+ recorded to assist in the grading process.' \n" >> ~/.bash_profile
52
+
53
+ RUN printf "history -a\ncat \$HISTFILE >> $GITHUG_HISTORY_OUTPUT \n\
54
+ cp $GITHUG_PROFILE $GITHUG_PROFILE_OUTPUT \n\
55
+ cp $GITHUG_GITCONF $GITHUG_GITCONF_OUTPUT 2>/dev/null \n\
56
+ cp $GITHUG_PROFILE $GITHUG_PROFILE_OUTPUT \n" >> ~/.bash_logout
57
+
58
+ ENTRYPOINT ["/bin/bash", "--login"]
59
+ VOLUME $DATA_PATH
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Githug
2
- Git Your Game On [![Build Status](https://travis-ci.org/Gazler/githug.png?branch=master)](https://travis-ci.org/Gazler/githug) [![Code Climate](https://codeclimate.com/github/Gazler/githug.png)](https://codeclimate.com/github/Gazler/githug)
2
+ Git Your Game On
3
+
4
+ [![Build Status](https://travis-ci.org/Gazler/githug.svg?branch=master)](https://travis-ci.org/Gazler/githug) [![Code Climate](https://codeclimate.com/github/Gazler/githug.svg)](https://codeclimate.com/github/Gazler/githug)
5
+
3
6
  ## About
4
7
  Githug is designed to give you a practical way of learning git. It has a series of levels, each requiring you to use git commands to arrive at a correct answer.
5
8
 
@@ -28,6 +31,10 @@ To install Githug, run
28
31
  If you get a complaint about permissions, you can rerun the command with `sudo`:
29
32
 
30
33
  sudo gem install githug
34
+
35
+ #### Usage with Docker
36
+
37
+ An unofficial _Docker_ image for this project by [@odiraneyya](https://github.com/odiraneyya) is available on ([Docker Hub](https://hub.docker.com/r/orwa84/githug)).
31
38
 
32
39
  ### Starting the Game
33
40
 
@@ -142,6 +149,39 @@ The easiest way to test a level is:
142
149
  * Solve the level
143
150
  * Run `githug test PATH_TO_YOUR_LEVEL`
144
151
 
145
- Please note that the `githug test` command can be run as `githug test --errors` to get an error stacktrace from your solve method.
152
+ Please note that the `githug test` command can be run as `githug test --errors` to get an error stack trace from your solve method.
146
153
 
147
154
  It would be ideal if you add an integration test for your level. These tests live in `spec/githug_spec` and **must** be run in order. If you add a level but do not add a test, please add a simple `skip_level` test case similar to the `contribute` level.
155
+
156
+ ## FAQs
157
+
158
+ 1. Answers are not being checked properly
159
+
160
+ *This is a common issue we are facing and we are actively working to fix it.*
161
+
162
+ For now, run the following commands to change the default branch name to master. This should fix most of the issues you may face.
163
+ ```
164
+ $ git config --global init.defaultBranch master
165
+ $ githug reset
166
+ ```
167
+
168
+ From the current level forward, the default branch will be `master`.
169
+
170
+ 2. `githug` command doesn't work
171
+
172
+ Githug currently isn't supported on ruby versions ^3.0.0. Use any ruby version below 3.0.0 (preferrably 2.7.1).
173
+
174
+ If you use rvm, execute the below commands
175
+
176
+ ```
177
+ $ rvm install 2.7.1
178
+ $ rvm use 2.7.1
179
+ ```
180
+
181
+ If you use rbenv, execute the below commands
182
+
183
+ ```
184
+ $ rbenv install 2.7.1
185
+ $ rbenv global 2.7.1
186
+ ```
187
+
data/githug.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = "githug"
7
7
  s.version = Githug::VERSION
8
8
  s.authors = ["Gary Rennie"]
9
- s.email = ["webmaster@gazler.com"]
9
+ s.email = ["gazler@gmail.com"]
10
10
  s.homepage = "https://github.com/Gazler/githug"
11
11
  s.summary = %q{An interactive way to learn git.}
12
12
  s.description = %q{An interactive way to learn git.}
@@ -23,6 +23,5 @@ Gem::Specification.new do |s|
23
23
 
24
24
  s.add_dependency "grit", "~>2.3.0"
25
25
  s.add_dependency "thor", "~>0.14.6"
26
- s.add_dependency "rake"
27
- # s.add_runtime_dependency "rest-client"
26
+ s.add_dependency "rake", "<11"
28
27
  end
data/levels/add.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  difficulty 1
2
- description "There is a file in your folder called `README`, you should add it to your staging area
3
- Note: You start each level with a new repo. Don't look for files from the previous one."
2
+ description "There is a file in your folder called `README`; add it to your staging area.
3
+ Note: Each level starts with a new repo. Don't look for files of the previous one."
4
4
 
5
5
  setup do
6
6
  repo.init
7
7
  FileUtils.touch("README")
8
+ system "git branch -m master"
8
9
  end
9
10
 
10
11
  solution do
data/levels/bisect.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  difficulty 3
2
- description "A bug was introduced somewhere along the way. You know that running `ruby prog.rb 5` should output 15. You can also run `make test`. What are the first 7 chars of the hash of the commit that introduced the bug."
2
+ description "A bug was introduced somewhere along the way. You know that running `ruby prog.rb 5` should output 15. You can also run `make test`. What are the first 7 chars of the hash of the commit (the abbreviated hash) that introduced the bug?"
3
3
 
4
4
  setup do
5
5
  init_from_level
6
6
  repo.init
7
+ system "git branch -m master"
7
8
  end
8
9
 
9
10
  solution do
data/levels/blame.rb CHANGED
@@ -1,13 +1,14 @@
1
1
  difficulty 2
2
- description "Someone has put a password inside the file `config.rb` find out who it was."
2
+ description "Identify who put a password inside the file `config.rb`."
3
3
 
4
4
  setup do
5
5
  init_from_level
6
+ system "git branch -m master"
6
7
  end
7
8
 
8
9
  solution do
9
10
  offender = repo.commit("97bdd0cccf9f4b8730f78cb53a81a74f205dbcc2").author.name
10
- request("Who made the commit with the password?").downcase == offender.downcase
11
+ request("Who made the commit with the password?").downcase.strip == offender.downcase
11
12
  end
12
13
 
13
14
  hint do
data/levels/branch.rb CHANGED
@@ -1,11 +1,12 @@
1
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."
2
+ description "To work on a piece of code that has the potential to break things, create the branch test_code."
3
3
 
4
4
  setup do
5
5
  repo.init
6
6
  FileUtils.touch("README")
7
7
  repo.add "README"
8
8
  repo.commit_all("Initial commit")
9
+ system "git branch -m master"
9
10
  end
10
11
 
11
12
  solution do
data/levels/branch_at.rb CHANGED
@@ -1,5 +1,5 @@
1
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."
2
+ description "You forgot to branch at the previous commit and made a commit on top of it. Create the branch test_branch at the commit before the last."
3
3
 
4
4
  setup do
5
5
  repo.init
@@ -12,11 +12,12 @@ setup do
12
12
  File.open("file1", 'a') { |f| f.write("\nAdding some more text") }
13
13
  repo.add("file1")
14
14
  repo.commit_all("Updating file1 again")
15
+ system "git branch -m master"
15
16
  end
16
17
 
17
18
  solution do
18
19
  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
+ repo.commits("test_branch").each { |commit| return false if commit.message == "Updating file1 again" }
20
21
  true
21
22
  end
22
23
 
data/levels/checkout.rb CHANGED
@@ -1,11 +1,12 @@
1
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."
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
3
 
4
4
  setup do
5
5
  repo.init
6
6
  FileUtils.touch("README")
7
7
  repo.add("README")
8
8
  repo.commit_all("initial commit")
9
+ system "git branch -m master"
9
10
  end
10
11
 
11
12
  solution do
@@ -1,6 +1,6 @@
1
1
  difficulty 3
2
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."
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
4
 
5
5
  setup do
6
6
  repo.init
@@ -14,6 +14,7 @@ setup do
14
14
  File.open("config.rb", "a") do |file|
15
15
  file.puts("These are changed you don't want to keep!")
16
16
  end
17
+ system "git branch -m master"
17
18
  end
18
19
 
19
20
  solution do
@@ -26,6 +26,8 @@ setup do
26
26
  repo.add("app.rb")
27
27
  repo.commit_all("Changes galore")
28
28
  repo.git.tag( { 'f' => true }, "v1.5" )
29
+
30
+ system "git branch -m master"
29
31
  end
30
32
 
31
33
  solution do
@@ -7,6 +7,7 @@ setup do
7
7
  FileUtils.touch("app.rb")
8
8
  repo.add("app.rb")
9
9
  repo.commit_all("Initial commit")
10
+ system "git branch -m master"
10
11
 
11
12
  `echo "Some code" >> app.rb`
12
13
  repo.add("app.rb")
@@ -2,8 +2,9 @@ difficulty 3
2
2
  description "Your new feature isn't worth the time and you're going to delete it. But it has one commit that fills in `README` file, and you want this commit to be on the master as well."
3
3
 
4
4
  setup do
5
- init_from_level
6
- `git stash` #fix for README.md being in githug root an the level
5
+ init_from_level
6
+ `git stash` # fix for README.md being in githug root an the level
7
+ system "git branch -m master"
7
8
  end
8
9
 
9
10
  solution do
@@ -13,5 +14,5 @@ solution do
13
14
  end
14
15
 
15
16
  hint do
16
- puts "Sneak a peek at the `cherry-pick` command."
17
+ puts "Sneak a peek at the `git help cherry-pick` command."
17
18
  end
@@ -1,5 +1,5 @@
1
1
  difficulty 1
2
- description "Clone the repository at https://github.com/Gazler/cloneme to `my_cloned_repo`."
2
+ description "Clone the repository at https://github.com/Gazler/cloneme into the folder `my_cloned_repo`."
3
3
 
4
4
  solution do
5
5
  repo("my_cloned_repo").commit("157b2b61f29ab9df45f31c7cd9cb5d8ff06ecde4")
data/levels/commit.rb CHANGED
@@ -3,6 +3,7 @@ description "The `README` file has been added to your staging area, now commit i
3
3
 
4
4
  setup do
5
5
  repo.init
6
+ system "git branch -m master"
6
7
  FileUtils.touch("README")
7
8
  repo.add("README")
8
9
  end
@@ -1,5 +1,5 @@
1
1
  difficulty 2
2
- description "The `README` file has been committed, but it looks like the file `forgotten_file.rb` was missing from the commit. Add the file and amend your previous commit to include it."
2
+ description "The `README` file has been committed, but it looks like the file `forgotten_file.rb` was missing from the commit. Add the file and amend your previous commit to include it."
3
3
 
4
4
  setup do
5
5
  repo.init
@@ -7,6 +7,7 @@ setup do
7
7
  repo.add("README")
8
8
  repo.commit_all("Initial commit")
9
9
  FileUtils.touch("forgotten_file.rb")
10
+ system "git branch -m master"
10
11
  end
11
12
 
12
13
  solution do
@@ -8,6 +8,7 @@ setup do
8
8
 
9
9
  FileUtils.touch("README")
10
10
  repo.add("README")
11
+ system "git branch -m master"
11
12
  end
12
13
 
13
14
  solution do
@@ -15,5 +16,5 @@ solution do
15
16
  end
16
17
 
17
18
  hint do
18
- puts "Build a time machine, move to the future and commit your changes, then go back and verify results ;)."
19
+ puts "Build a time format, and commit your code using --date parameter for \"future\"."
19
20
  end
data/levels/config.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  difficulty 1
2
- description "Set up your git name and email, this is important so that your commits can be identified."
2
+ description "Set up your git name and email; this is important so that your commits can be identified."
3
3
 
4
4
  setup do
5
5
  repo.init
@@ -29,5 +29,5 @@ solution do
29
29
  end
30
30
 
31
31
  hint do
32
- puts "These settings are config settings. You should run `git help config` if you are stuck."
32
+ puts "These settings are config settings. You should run `git help config` if you are stuck."
33
33
  end
data/levels/conflict.rb CHANGED
@@ -3,6 +3,7 @@ description "You need to merge mybranch into the current branch (master). But th
3
3
 
4
4
  setup do
5
5
  init_from_level
6
+ system "git branch -m master"
6
7
  end
7
8
 
8
9
  solution do
data/levels/contribute.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  difficulty 3
2
- description "This is the final level, the goal is to contribute to this repository by making a pull request on GitHub. Please note that this level is designed to encourage you to add a valid contribution to Githug, not testing your ability to create a pull request. Contributions that are likely to be accepted are levels, bug fixes and improved documentation."
2
+ description "This is the final level, the goal is to contribute to this repository by making a pull request on GitHub. Please note that this level is designed to encourage you to add a valid contribution to Githug, not testing your ability to create a pull request. Contributions that are likely to be accepted are levels, bug fixes and improved documentation."
3
3
 
4
4
  solution do
5
5
  location = "/tmp/githug"
@@ -3,7 +3,8 @@ difficulty 2
3
3
  description "You have created too many branches for your project. There is an old branch in your repo called 'delete_me', you should delete it."
4
4
 
5
5
  setup do
6
- init_from_level
6
+ init_from_level
7
+ system "git branch -m master"
7
8
  end
8
9
 
9
10
  solution do
@@ -12,4 +13,4 @@ end
12
13
 
13
14
  hint do
14
15
  puts "Running 'git --help branch' will give you a list of branch commands."
15
- end
16
+ end
data/levels/diff.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  difficulty 2
2
- description "There have been modifications to the `app.rb` file since your last commit. Find out which line has changed."
2
+ description "Since your last commit, file `app.rb` was modified. Find out which line has changed."
3
3
 
4
4
  setup do
5
5
  init_from_level
6
+ system "git branch -m master"
6
7
  end
7
8
 
8
9
  solution do
@@ -12,5 +13,5 @@ solution do
12
13
  end
13
14
 
14
15
  hint do
15
- puts "You are looking for the difference since your last commit. Don't forget that running `git` on its own will list the possible commands."
16
+ puts "You are looking for the difference since your last commit. Don't forget that running `git` on its own will list the possible commands."
16
17
  end
data/levels/fetch.rb CHANGED
@@ -9,8 +9,9 @@ setup do
9
9
 
10
10
  # local repo
11
11
  repo.init
12
+ system "git branch -m master"
12
13
 
13
- #adds a file to origin/master
14
+ # adds a file to origin/master
14
15
  FileUtils.touch "master_file"
15
16
  repo.add "master_file"
16
17
  repo.commit_all 'Commits master_file'
@@ -19,12 +20,12 @@ setup do
19
20
  Dir.chdir tmpdir
20
21
  repo.init
21
22
 
22
- #adds a file to origin/master
23
+ # adds a file to origin/master
23
24
  FileUtils.touch "master_file"
24
25
  repo.add "master_file"
25
26
  repo.commit_all 'Commits master_file'
26
-
27
- #adds remote repo
27
+
28
+ # adds remote repo
28
29
  Dir.chdir cwd
29
30
  `git remote add origin #{tmpdir}/.git`
30
31
  `git fetch origin --quiet`
@@ -38,31 +39,30 @@ setup do
38
39
  FileUtils.touch "file1"
39
40
  repo.add "file1"
40
41
  repo.commit_all 'Commits file 1'
41
-
42
+
42
43
  end
43
44
 
44
45
  solution do
45
46
  repo.init
46
47
  result = true
47
48
 
48
-
49
49
  # counts the number of local branches. Should equal 1
50
50
  local_branches = repo.branches.size
51
51
 
52
52
  # after a git fetch command, each branch will be stored in in the .git/FETCH_HEAD file. Each branch is on its own line
53
- # This command will count the number of lines, which will give the number of branches
54
- if File.file?('.git/FETCH_HEAD') #checks for file existance
55
- num_remote = File.read(".git/FETCH_HEAD").split("\n").count
53
+ # This command will count the number of lines, which will give the number of branches
54
+ if File.file?('.git/FETCH_HEAD') # checks for file existence
55
+ num_remote = File.read(".git/FETCH_HEAD").split("\n").count
56
56
  else
57
- num_remote = 0
57
+ num_remote = 0
58
58
  end
59
59
 
60
60
  # there should be 1 local branch and 2 remote branches for a success condition
61
61
  if local_branches == 1 and num_remote == 2
62
- result = true
62
+ result = true
63
63
  else
64
- result = false
65
- end
64
+ result = false
65
+ end
66
66
  end
67
67
 
68
68
  hint do
@@ -1,8 +1,9 @@
1
1
  difficulty 4
2
- description "You have been working on a branch but got distracted by a major issue and forgot the name of it. Switch back to that branch."
2
+ description "You have been working on a branch but got distracted by a major issue. Switch back to that branch even though you forgot the name of it."
3
3
 
4
4
  setup do
5
5
  init_from_level
6
+ system "git branch -m master"
6
7
  end
7
8
 
8
9
  solution do
data/levels/grep.rb CHANGED
@@ -3,6 +3,7 @@ description "Your project's deadline approaches, you should evaluate how many TO
3
3
 
4
4
  setup do
5
5
  init_from_level
6
+ system "git branch -m master"
6
7
  end
7
8
 
8
9
  solution do
data/levels/ignore.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  difficulty 2
2
- description "The text editor 'vim' creates files ending in `.swp` (swap files) for all files that are currently open. We don't want them creeping into the repository. Make this repository ignore `.swp` files."
2
+ description "The text editor 'vim' creates files ending in `.swp` (swap files) for all files that are currently open. We don't want them creeping into the repository. Make this repository ignore those swap files which are ending in `.swp`."
3
3
 
4
4
  setup do
5
5
  repo.init
6
6
  FileUtils.touch("README.swp")
7
+ system "git branch -m master"
7
8
  file = File.open(".git/config", "w") do |file|
8
9
  file.puts "[core]\nexcludesfile="
9
10
  end
data/levels/include.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  difficulty 2
2
- description "Notice a few files with the '.a' extension. We want git to ignore all but the 'lib.a' file."
2
+ description "Notice a few files with the '.a' extension. We want git to ignore all the files except the 'lib.a' file."
3
3
 
4
4
  setup do
5
5
  repo.init
6
6
  FileUtils.touch("first.a")
7
7
  FileUtils.touch("second.a")
8
8
  FileUtils.touch("lib.a")
9
+ system "git branch -m master"
9
10
  file = File.open(".git/config", "w") do |file|
10
11
  file.puts "[core]\nexcludesfile="
11
12
  end
@@ -17,5 +18,5 @@ solution do
17
18
  end
18
19
 
19
20
  hint do
20
- puts "Using `git gitignore --help`, read about the optional prefix to negate a pattern."
21
+ puts "Using `git help ignore`, read about the optional prefix to negate a pattern."
21
22
  end
data/levels/init.rb CHANGED
@@ -6,5 +6,5 @@ solution do
6
6
  end
7
7
 
8
8
  hint do
9
- puts "You can type `git` in your shell to get a list of available git commands."
9
+ puts "You can type `git --help` or `git` in your shell to get a list of available git commands."
10
10
  end
data/levels/log.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  difficulty 2
2
2
 
3
- description "You will be asked for the hash of most recent commit. You will need to investigate the logs of the repository for this."
3
+ description "Identify the hash of the latest commit."
4
4
 
5
5
  setup do
6
6
  repo.init
7
7
  file = File.new("newfile.rb", "w")
8
8
  repo.add("newfile.rb")
9
9
  repo.commit_all("THIS IS THE COMMIT YOU ARE LOOKING FOR!")
10
+ system "git branch -m master"
10
11
  end
11
12
 
12
13
  solution do
@@ -14,5 +15,5 @@ solution do
14
15
  end
15
16
 
16
17
  hint do
17
- puts "You need to investigate the logs. There is probably a command for doing that!"
18
+ puts "You need to investigate the logs. There is probably a command for doing that!"
18
19
  end
data/levels/merge.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  difficulty 2
2
- description "We have a file in the branch 'feature'; Let's merge it to the master branch."
2
+ description "We have a file in the branch 'feature'. Let's merge it with the master branch."
3
3
 
4
4
  setup do
5
- init_from_level
5
+ init_from_level
6
+ system "git branch -m master"
6
7
  end
7
8
 
8
9
  solution do
9
- File.exists?("file1") && File.exists?("file2")
10
+ File.exists?("file1") && File.exists?("file2")
10
11
  end
11
12
 
12
13
  hint do
@@ -7,6 +7,7 @@ setup do
7
7
  FileUtils.touch "file1"
8
8
  repo.add "file1"
9
9
  repo.commit_all "First commit"
10
+ system "git branch -m master"
10
11
 
11
12
  repo.git.native :checkout, {"b" => true}, 'long-feature-branch'
12
13
  File.open("file3", 'w') { |f| f << "some feature\n" }