githug 0.5.0 → 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.
Files changed (64) 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 +1 -2
  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 +1 -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 +3 -3
  62. data/lib/githug/version.rb +1 -1
  63. data/lib/githug.rb +1 -0
  64. metadata +5 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 902c5775d724ae3be89e0c52eb01907288680b00
4
- data.tar.gz: 9f6a93e66437b2fc9c2ba49bd1bd32bb504b2900
2
+ SHA256:
3
+ metadata.gz: 1a61d7135f677a3cf9505492d8ec9914fd1fb245accf70e2a16b11f6164a53ea
4
+ data.tar.gz: be924975c33f0d6695586e495747cdc49ecedb77ae25ea89de91d386a8a925dc
5
5
  SHA512:
6
- metadata.gz: e0f50cad99ed1fd09263a1c7e54d711c4d98d0adfc5d166c27050d743f1203974384d67b2a45b7be8cfbc0600467503f239dc56ebafddaa2e45962610d8460b3
7
- data.tar.gz: 3a931fcdfc57acdd9500917f554c9dd3c134b31755378cc50d278bb09332706a5e4407f1399a532b9788ca90754d1e0afe873d04be2b9ecb0c0e90a4871fc6af
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.}
@@ -24,5 +24,4 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency "grit", "~>2.3.0"
25
25
  s.add_dependency "thor", "~>0.14.6"
26
26
  s.add_dependency "rake", "<11"
27
- # s.add_runtime_dependency "rest-client"
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 those swap files which are ending in `.swp`."
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" }