wayfarer 0.4.8 → 0.4.10

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 (615) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yaml +0 -2
  3. data/Gemfile.lock +1 -1
  4. data/docs/guides/development.md +18 -26
  5. data/docs/guides/networking/custom_adapters.md +93 -86
  6. data/docs/guides/networking/http.md +1 -1
  7. data/docs/guides/routing.md +1 -1
  8. data/docs/guides/tutorial.md +1 -2
  9. data/lib/wayfarer/cli.rb +16 -0
  10. data/lib/wayfarer/logging.rb +3 -4
  11. data/lib/wayfarer/middleware/base.rb +0 -4
  12. data/lib/wayfarer/middleware/controller.rb +1 -1
  13. data/lib/wayfarer/networking/context.rb +1 -1
  14. data/lib/wayfarer/networking/ferrum.rb +1 -1
  15. data/lib/wayfarer/networking/pool.rb +3 -9
  16. data/lib/wayfarer/networking/strategy.rb +6 -2
  17. data/lib/wayfarer/parsing.rb +1 -1
  18. data/lib/wayfarer.rb +9 -4
  19. data/rake/release.rake +0 -6
  20. data/spec/spec_helpers.rb +1 -1
  21. data/spec/wayfarer/integration/page_spec.rb +9 -9
  22. data/spec/wayfarer/integration/parsing_spec.rb +3 -2
  23. data/spec/wayfarer/integration/stage_spec.rb +3 -3
  24. data/spec/wayfarer/middleware/controller_spec.rb +3 -4
  25. data/spec/wayfarer/networking/context_spec.rb +3 -2
  26. data/spec/wayfarer/networking/pool_spec.rb +1 -1
  27. data/spec/wayfarer/networking/strategy.rb +2 -2
  28. data/wayfarer.gemspec +1 -1
  29. metadata +1 -1172
  30. data/lib/wayfarer/middleware/lazy.rb +0 -11
  31. data/spec/support/static/git-scm.com/assets/application-38b0d42ff05ffea45841edebbd14b75b89585646153808e82907c2c5c11f324b.js +0 -772
  32. data/spec/support/static/git-scm.com/assets/application-cafcf280f67db0e6d8168ba98a38da878769a9d5f37793b68ffb963a02d185e0.css +0 -1
  33. data/spec/support/static/git-scm.com/assets/modernize-b3ebe0c31c24f230dc62179d3e1030d2e57a53b1668d9382c0a27dbd44a94beb.js +0 -20
  34. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash.html +0 -751
  35. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-PowerShell.html +0 -804
  36. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Sublime-Text.html +0 -728
  37. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio-Code.html +0 -751
  38. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio.html +0 -740
  39. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh.html +0 -765
  40. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces.html +0 -931
  41. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Summary.html +0 -702
  42. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git.html +0 -720
  43. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Dulwich.html +0 -746
  44. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit.html +0 -889
  45. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2.html +0 -1003
  46. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-go-git.html +0 -792
  47. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Administration.html +0 -745
  48. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Basic-Snapshotting.html +0 -840
  49. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Branching-and-Merging.html +0 -829
  50. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Debugging.html +0 -731
  51. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Email.html +0 -766
  52. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-External-Systems.html +0 -721
  53. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects.html +0 -746
  54. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison.html +0 -735
  55. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Patching.html +0 -742
  56. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Plumbing-Commands.html +0 -715
  57. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Setup-and-Config.html +0 -863
  58. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects.html +0 -802
  59. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy.html +0 -1200
  60. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Attributes.html +0 -1134
  61. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Configuration.html +0 -1315
  62. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Hooks.html +0 -876
  63. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Summary.html +0 -704
  64. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project.html +0 -1667
  65. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows.html +0 -859
  66. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project.html +0 -1354
  67. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Summary.html +0 -704
  68. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git.html +0 -735
  69. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-About-Version-Control.html +0 -783
  70. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup.html +0 -889
  71. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Getting-Help.html +0 -750
  72. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Installing-Git.html +0 -879
  73. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Summary.html +0 -704
  74. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-The-Command-Line.html +0 -711
  75. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-What-is-Git?.html +0 -857
  76. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository.html +0 -816
  77. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Git-Aliases.html +0 -775
  78. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository.html +0 -1432
  79. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Summary.html +0 -703
  80. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Tagging.html +0 -1049
  81. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Undoing-Things.html +0 -998
  82. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History.html +0 -1172
  83. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes.html +0 -983
  84. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging.html +0 -1102
  85. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branch-Management.html +0 -946
  86. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell.html +0 -1020
  87. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branching-Workflows.html +0 -786
  88. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Rebasing.html +0 -1028
  89. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Remote-Branches.html +0 -1009
  90. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Summary.html +0 -705
  91. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Environment-Variables.html +0 -1009
  92. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Git-Objects.html +0 -1209
  93. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Git-References.html +0 -939
  94. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery.html +0 -1086
  95. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Packfiles.html +0 -876
  96. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain.html +0 -745
  97. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Summary.html +0 -708
  98. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-The-Refspec.html +0 -872
  99. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols.html +0 -1043
  100. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Advanced-Merging.html +0 -1605
  101. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Bundling.html +0 -888
  102. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Credential-Storage.html +0 -1035
  103. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git.html +0 -861
  104. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Interactive-Staging.html +0 -920
  105. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Replace.html +0 -949
  106. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Rerere.html +0 -983
  107. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Reset-Demystified.html +0 -1236
  108. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Revision-Selection.html +0 -1178
  109. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Rewriting-History.html +0 -1182
  110. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Searching.html +0 -875
  111. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work.html +0 -922
  112. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Stashing-and-Cleaning.html +0 -1039
  113. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Submodules.html +0 -1864
  114. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Summary.html +0 -705
  115. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Client.html +0 -2656
  116. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git.html +0 -1741
  117. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Summary.html +0 -703
  118. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key.html +0 -759
  119. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.html +0 -827
  120. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon.html +0 -775
  121. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-GitLab.html +0 -872
  122. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-GitWeb.html +0 -776
  123. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server.html +0 -870
  124. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Smart-HTTP.html +0 -789
  125. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Summary.html +0 -709
  126. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols.html +0 -963
  127. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Third-Party-Hosted-Options.html +0 -711
  128. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Account-Setup-and-Configuration.html +0 -858
  129. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project.html +0 -1502
  130. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Maintaining-a-Project.html +0 -1218
  131. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Managing-an-organization.html +0 -797
  132. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Scripting-GitHub.html +0 -1059
  133. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Summary.html +0 -704
  134. data/spec/support/static/git-scm.com/book/en/v2/ch00/_abort_merge.html +0 -1605
  135. data/spec/support/static/git-scm.com/book/en/v2/ch00/_add_email_addresses.html +0 -858
  136. data/spec/support/static/git-scm.com/book/en/v2/ch00/_advanced_merging.html +0 -1605
  137. data/spec/support/static/git-scm.com/book/en/v2/ch00/_an_example_git_enforced_policy.html +0 -1200
  138. data/spec/support/static/git-scm.com/book/en/v2/ch00/_annotated_tags.html +0 -1049
  139. data/spec/support/static/git-scm.com/book/en/v2/ch00/_api_comment.html +0 -1059
  140. data/spec/support/static/git-scm.com/book/en/v2/ch00/_bare_repo.html +0 -827
  141. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_branching.html +0 -1102
  142. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_merge_conflicts.html +0 -1102
  143. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_merging.html +0 -1102
  144. data/spec/support/static/git-scm.com/book/en/v2/ch00/_binary_search.html +0 -861
  145. data/spec/support/static/git-scm.com/book/en/v2/ch00/_branch_management.html +0 -946
  146. data/spec/support/static/git-scm.com/book/en/v2/ch00/_branch_references.html +0 -1178
  147. data/spec/support/static/git-scm.com/book/en/v2/ch00/_build_number.html +0 -1354
  148. data/spec/support/static/git-scm.com/book/en/v2/ch00/_bundling.html +0 -888
  149. data/spec/support/static/git-scm.com/book/en/v2/ch00/_changing_multiple.html +0 -1182
  150. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_out_conflicts.html +0 -1605
  151. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_out_remotes.html +0 -1354
  152. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_status.html +0 -1432
  153. data/spec/support/static/git-scm.com/book/en/v2/ch00/_cloning_submodules.html +0 -1864
  154. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_guidelines.html +0 -1667
  155. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_ranges.html +0 -1178
  156. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_status.html +0 -1059
  157. data/spec/support/static/git-scm.com/book/en/v2/ch00/_committing_changes.html +0 -1432
  158. data/spec/support/static/git-scm.com/book/en/v2/ch00/_contrib_file.html +0 -1218
  159. data/spec/support/static/git-scm.com/book/en/v2/ch00/_contributing_project.html +0 -1667
  160. data/spec/support/static/git-scm.com/book/en/v2/ch00/_create_new_branch.html +0 -1020
  161. data/spec/support/static/git-scm.com/book/en/v2/ch00/_credential_caching.html +0 -1035
  162. data/spec/support/static/git-scm.com/book/en/v2/ch00/_custom_importer.html +0 -1741
  163. data/spec/support/static/git-scm.com/book/en/v2/ch00/_data_recovery.html +0 -1086
  164. data/spec/support/static/git-scm.com/book/en/v2/ch00/_delete_branches.html +0 -1009
  165. data/spec/support/static/git-scm.com/book/en/v2/ch00/_editor.html +0 -889
  166. data/spec/support/static/git-scm.com/book/en/v2/ch00/_eg_task_lists.html +0 -1502
  167. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_hooks.html +0 -876
  168. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_notification.html +0 -1502
  169. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_notifications.html +0 -1218
  170. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_pr.html +0 -1218
  171. data/spec/support/static/git-scm.com/book/en/v2/ch00/_enforcing_commit_message_format.html +0 -1200
  172. data/spec/support/static/git-scm.com/book/en/v2/ch00/_example_markdown.html +0 -1502
  173. data/spec/support/static/git-scm.com/book/en/v2/ch00/_external_merge_tools.html +0 -1315
  174. data/spec/support/static/git-scm.com/book/en/v2/ch00/_fetch_and_push_on_different_repositories.html +0 -1502
  175. data/spec/support/static/git-scm.com/book/en/v2/ch00/_fetching_and_pulling.html +0 -983
  176. data/spec/support/static/git-scm.com/book/en/v2/ch00/_file_annotation.html +0 -861
  177. data/spec/support/static/git-scm.com/book/en/v2/ch00/_first_time.html +0 -889
  178. data/spec/support/static/git-scm.com/book/en/v2/ch00/_generate_ssh_key.html +0 -759
  179. data/spec/support/static/git-scm.com/book/en/v2/ch00/_getting_a_repo.html +0 -816
  180. data/spec/support/static/git-scm.com/book/en/v2/ch00/_getting_git_on_a_server.html +0 -827
  181. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_aliases.html +0 -775
  182. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_am.html +0 -1354
  183. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_amend.html +0 -1182
  184. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_branches_overview.html +0 -1020
  185. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_clean.html +0 -1039
  186. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_cloning.html +0 -816
  187. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_commit_objects.html +0 -1209
  188. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_config.html +0 -1315
  189. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_diff_staged.html +0 -1432
  190. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_gc.html +0 -1086
  191. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_grep.html +0 -875
  192. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_help.html +0 -750
  193. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_hooks.html +0 -876
  194. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_mv.html +0 -1432
  195. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_p4.html +0 -1741
  196. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_p4_branches.html +0 -2656
  197. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_reflog.html +0 -1178
  198. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_refs.html +0 -939
  199. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_reset.html +0 -1236
  200. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_stashing.html +0 -1039
  201. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_submodules.html +0 -1864
  202. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_svn.html +0 -2656
  203. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_tagging.html +0 -1049
  204. data/spec/support/static/git-scm.com/book/en/v2/ch00/_gitlab_groups_section.html +0 -872
  205. data/spec/support/static/git-scm.com/book/en/v2/ch00/_ignoring.html +0 -1432
  206. data/spec/support/static/git-scm.com/book/en/v2/ch00/_inspecting_remote.html +0 -983
  207. data/spec/support/static/git-scm.com/book/en/v2/ch00/_integration_manager.html +0 -859
  208. data/spec/support/static/git-scm.com/book/en/v2/ch00/_interactive_staging.html +0 -920
  209. data/spec/support/static/git-scm.com/book/en/v2/ch00/_keyword_expansion.html +0 -1134
  210. data/spec/support/static/git-scm.com/book/en/v2/ch00/_libgit2_bindings.html +0 -1003
  211. data/spec/support/static/git-scm.com/book/en/v2/ch00/_manual_remerge.html +0 -1605
  212. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_code.html +0 -1502
  213. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_drag.html +0 -1502
  214. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_emoji.html +0 -1502
  215. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_quote.html +0 -1502
  216. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_button.html +0 -1218
  217. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_log.html +0 -1605
  218. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_rebase_work.html +0 -1028
  219. data/spec/support/static/git-scm.com/book/en/v2/ch00/_new_repo_dropdown.html +0 -1218
  220. data/spec/support/static/git-scm.com/book/en/v2/ch00/_not_center.html +0 -1218
  221. data/spec/support/static/git-scm.com/book/en/v2/ch00/_org_page.html +0 -797
  222. data/spec/support/static/git-scm.com/book/en/v2/ch00/_other_client_hooks.html +0 -876
  223. data/spec/support/static/git-scm.com/book/en/v2/ch00/_p4_git_fusion.html +0 -2656
  224. data/spec/support/static/git-scm.com/book/en/v2/ch00/_patches_from_email.html +0 -1354
  225. data/spec/support/static/git-scm.com/book/en/v2/ch00/_personal_avatar.html +0 -858
  226. data/spec/support/static/git-scm.com/book/en/v2/ch00/_plumbing_porcelain.html +0 -745
  227. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_closed.html +0 -1502
  228. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_discussion.html +0 -1502
  229. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_fail.html +0 -1502
  230. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_final.html +0 -1502
  231. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_references.html +0 -1502
  232. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_references_render.html +0 -1502
  233. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_refs.html +0 -1218
  234. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pre_merge_rebase_work.html +0 -1028
  235. data/spec/support/static/git-scm.com/book/en/v2/ch00/_preparing_release.html +0 -1354
  236. data/spec/support/static/git-scm.com/book/en/v2/ch00/_private_team.html +0 -1667
  237. data/spec/support/static/git-scm.com/book/en/v2/ch00/_project_over_email.html +0 -1667
  238. data/spec/support/static/git-scm.com/book/en/v2/ch00/_public_project.html +0 -1667
  239. data/spec/support/static/git-scm.com/book/en/v2/ch00/_publishing_submodules.html +0 -1864
  240. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_branches.html +0 -1009
  241. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_refspecs.html +0 -872
  242. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_remotes.html +0 -983
  243. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_cherry_pick.html +0 -1354
  244. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_peril.html +0 -1028
  245. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_rebase.html +0 -1028
  246. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_rebase_work.html +0 -1028
  247. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebasing.html +0 -1028
  248. data/spec/support/static/git-scm.com/book/en/v2/ch00/_refspec.html +0 -872
  249. data/spec/support/static/git-scm.com/book/en/v2/ch00/_remote_branches.html +0 -1009
  250. data/spec/support/static/git-scm.com/book/en/v2/ch00/_remote_repos.html +0 -983
  251. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_file_every_commit.html +0 -1182
  252. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_files.html +0 -1432
  253. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_objects.html +0 -1086
  254. data/spec/support/static/git-scm.com/book/en/v2/ch00/_replace.html +0 -949
  255. data/spec/support/static/git-scm.com/book/en/v2/ch00/_reverse_commit.html +0 -1605
  256. data/spec/support/static/git-scm.com/book/en/v2/ch00/_revision_selection.html +0 -1178
  257. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rewriting_history.html +0 -1182
  258. data/spec/support/static/git-scm.com/book/en/v2/ch00/_searching.html +0 -875
  259. data/spec/support/static/git-scm.com/book/en/v2/ch00/_service_config.html +0 -1059
  260. data/spec/support/static/git-scm.com/book/en/v2/ch00/_services_hooks.html +0 -1059
  261. data/spec/support/static/git-scm.com/book/en/v2/ch00/_setting_up_server.html +0 -870
  262. data/spec/support/static/git-scm.com/book/en/v2/ch00/_sharing_tags.html +0 -1049
  263. data/spec/support/static/git-scm.com/book/en/v2/ch00/_signing.html +0 -922
  264. data/spec/support/static/git-scm.com/book/en/v2/ch00/_signing_commits.html +0 -922
  265. data/spec/support/static/git-scm.com/book/en/v2/ch00/_squashing.html +0 -1182
  266. data/spec/support/static/git-scm.com/book/en/v2/ch00/_starting_submodules.html +0 -1864
  267. data/spec/support/static/git-scm.com/book/en/v2/ch00/_subtree_merge.html +0 -1605
  268. data/spec/support/static/git-scm.com/book/en/v2/ch00/_switching_branches.html +0 -1020
  269. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tagging_releases.html +0 -1354
  270. data/spec/support/static/git-scm.com/book/en/v2/ch00/_task_list_progress.html +0 -1502
  271. data/spec/support/static/git-scm.com/book/en/v2/ch00/_team_page.html +0 -797
  272. data/spec/support/static/git-scm.com/book/en/v2/ch00/_the_index.html +0 -1236
  273. data/spec/support/static/git-scm.com/book/en/v2/ch00/_the_shortlog.html +0 -1354
  274. data/spec/support/static/git-scm.com/book/en/v2/ch00/_topic_branch.html +0 -786
  275. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tracking_branches.html +0 -1009
  276. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tracking_files.html +0 -1432
  277. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tree_objects.html +0 -1209
  278. data/spec/support/static/git-scm.com/book/en/v2/ch00/_triple_dot.html +0 -1178
  279. data/spec/support/static/git-scm.com/book/en/v2/ch00/_undoing.html +0 -998
  280. data/spec/support/static/git-scm.com/book/en/v2/ch00/_unstaging.html +0 -998
  281. data/spec/support/static/git-scm.com/book/en/v2/ch00/_viewing_history.html +0 -1172
  282. data/spec/support/static/git-scm.com/book/en/v2/ch00/_web_hook.html +0 -1059
  283. data/spec/support/static/git-scm.com/book/en/v2/ch00/_what_is_introduced.html +0 -1354
  284. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch01-getting-started.html +0 -783
  285. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch02-git-basics-chapter.html +0 -816
  286. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch03-git-branching.html +0 -1020
  287. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch05-distributed-git.html +0 -859
  288. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch06-github.html +0 -858
  289. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch06-github_flow.html +0 -1502
  290. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch10-git-internals.html +0 -745
  291. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch_core_editor.html +0 -863
  292. data/spec/support/static/git-scm.com/book/en/v2/ch00/divergent_history.html +0 -1020
  293. data/spec/support/static/git-scm.com/book/en/v2/ch00/double_dot.html +0 -1178
  294. data/spec/support/static/git-scm.com/book/en/v2/ch00/filters_a.html +0 -1134
  295. data/spec/support/static/git-scm.com/book/en/v2/ch00/filters_b.html +0 -1134
  296. data/spec/support/static/git-scm.com/book/en/v2/ch00/limit_options.html +0 -1172
  297. data/spec/support/static/git-scm.com/book/en/v2/ch00/log_options.html +0 -1172
  298. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_a.html +0 -1354
  299. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_b.html +0 -1354
  300. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_c.html +0 -1354
  301. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_d.html +0 -1354
  302. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_e.html +0 -1354
  303. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_f.html +0 -1354
  304. data/spec/support/static/git-scm.com/book/en/v2/ch00/oh_my_zsh_git.html +0 -765
  305. data/spec/support/static/git-scm.com/book/en/v2/ch00/pretty_format.html +0 -1172
  306. data/spec/support/static/git-scm.com/book/en/v2/ch00/psp_b.html +0 -1667
  307. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_e.html +0 -1028
  308. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_g.html +0 -1028
  309. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_h.html +0 -1028
  310. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_i.html +0 -1028
  311. data/spec/support/static/git-scm.com/book/en/v2/ch00/rebasing-merging-example.html +0 -1028
  312. data/spec/support/static/git-scm.com/book/en/v2/ch00/ref_rerere.html +0 -983
  313. data/spec/support/static/git-scm.com/book/en/v2/ch00/ref_the_ref.html +0 -939
  314. data/spec/support/static/git-scm.com/book/en/v2/ch00/wfdiag_b.html +0 -859
  315. data/spec/support/static/git-scm.com/book/en/v2/ch00/wfdiag_c.html +0 -859
  316. data/spec/support/static/git-scm.com/book/en/v2/ch00/what_is_git_section.html +0 -857
  317. data/spec/support/static/git-scm.com/book/en/v2/images/2fa-1.png +0 -0
  318. data/spec/support/static/git-scm.com/book/en/v2/images/account-settings.png +0 -0
  319. data/spec/support/static/git-scm.com/book/en/v2/images/advance-master.png +0 -0
  320. data/spec/support/static/git-scm.com/book/en/v2/images/advance-testing.png +0 -0
  321. data/spec/support/static/git-scm.com/book/en/v2/images/areas.png +0 -0
  322. data/spec/support/static/git-scm.com/book/en/v2/images/avatar-crop.png +0 -0
  323. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-1.png +0 -0
  324. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-2.png +0 -0
  325. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-3.png +0 -0
  326. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-4.png +0 -0
  327. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-5.png +0 -0
  328. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-6.png +0 -0
  329. data/spec/support/static/git-scm.com/book/en/v2/images/basic-merging-1.png +0 -0
  330. data/spec/support/static/git-scm.com/book/en/v2/images/basic-merging-2.png +0 -0
  331. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-1.png +0 -0
  332. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-2.png +0 -0
  333. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-3.png +0 -0
  334. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-4.png +0 -0
  335. data/spec/support/static/git-scm.com/book/en/v2/images/benevolent-dictator.png +0 -0
  336. data/spec/support/static/git-scm.com/book/en/v2/images/blink-01-start.png +0 -0
  337. data/spec/support/static/git-scm.com/book/en/v2/images/blink-02-pr.png +0 -0
  338. data/spec/support/static/git-scm.com/book/en/v2/images/blink-03-pull-request-open.png +0 -0
  339. data/spec/support/static/git-scm.com/book/en/v2/images/blink-04-email.png +0 -0
  340. data/spec/support/static/git-scm.com/book/en/v2/images/blink-04-pr-comment.png +0 -0
  341. data/spec/support/static/git-scm.com/book/en/v2/images/blink-05-general-comment.png +0 -0
  342. data/spec/support/static/git-scm.com/book/en/v2/images/blink-06-final.png +0 -0
  343. data/spec/support/static/git-scm.com/book/en/v2/images/branch-and-history.png +0 -0
  344. data/spec/support/static/git-scm.com/book/en/v2/images/branch_widget_mac.png +0 -0
  345. data/spec/support/static/git-scm.com/book/en/v2/images/branch_widget_win.png +0 -0
  346. data/spec/support/static/git-scm.com/book/en/v2/images/centralized.png +0 -0
  347. data/spec/support/static/git-scm.com/book/en/v2/images/centralized_workflow.png +0 -0
  348. data/spec/support/static/git-scm.com/book/en/v2/images/checkout-master.png +0 -0
  349. data/spec/support/static/git-scm.com/book/en/v2/images/clean.png +0 -0
  350. data/spec/support/static/git-scm.com/book/en/v2/images/collaborators.png +0 -0
  351. data/spec/support/static/git-scm.com/book/en/v2/images/commit-and-tree.png +0 -0
  352. data/spec/support/static/git-scm.com/book/en/v2/images/commits-and-parents.png +0 -0
  353. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-1.png +0 -0
  354. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-2.png +0 -0
  355. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-3.png +0 -0
  356. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-4.png +0 -0
  357. data/spec/support/static/git-scm.com/book/en/v2/images/deltas.png +0 -0
  358. data/spec/support/static/git-scm.com/book/en/v2/images/distributed.png +0 -0
  359. data/spec/support/static/git-scm.com/book/en/v2/images/double-dot.png +0 -0
  360. data/spec/support/static/git-scm.com/book/en/v2/images/email-settings.png +0 -0
  361. data/spec/support/static/git-scm.com/book/en/v2/images/forkbutton.png +0 -0
  362. data/spec/support/static/git-scm.com/book/en/v2/images/git-bash.png +0 -0
  363. data/spec/support/static/git-scm.com/book/en/v2/images/git-diff-check.png +0 -0
  364. data/spec/support/static/git-scm.com/book/en/v2/images/git-fusion-boot.png +0 -0
  365. data/spec/support/static/git-scm.com/book/en/v2/images/git-fusion-perforce-graph.png +0 -0
  366. data/spec/support/static/git-scm.com/book/en/v2/images/git-gui.png +0 -0
  367. data/spec/support/static/git-scm.com/book/en/v2/images/git-instaweb.png +0 -0
  368. data/spec/support/static/git-scm.com/book/en/v2/images/git-osx-installer.png +0 -0
  369. data/spec/support/static/git-scm.com/book/en/v2/images/github_mac.png +0 -0
  370. data/spec/support/static/git-scm.com/book/en/v2/images/github_win.png +0 -0
  371. data/spec/support/static/git-scm.com/book/en/v2/images/gitk.png +0 -0
  372. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-groups.png +0 -0
  373. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-menu.png +0 -0
  374. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-users.png +0 -0
  375. data/spec/support/static/git-scm.com/book/en/v2/images/head-to-master.png +0 -0
  376. data/spec/support/static/git-scm.com/book/en/v2/images/head-to-testing.png +0 -0
  377. data/spec/support/static/git-scm.com/book/en/v2/images/integration-manager.png +0 -0
  378. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-1.png +0 -0
  379. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-2.png +0 -0
  380. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-3.png +0 -0
  381. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-4.png +0 -0
  382. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-5.png +0 -0
  383. data/spec/support/static/git-scm.com/book/en/v2/images/jb.png +0 -0
  384. data/spec/support/static/git-scm.com/book/en/v2/images/large-merges-1.png +0 -0
  385. data/spec/support/static/git-scm.com/book/en/v2/images/large-merges-2.png +0 -0
  386. data/spec/support/static/git-scm.com/book/en/v2/images/lifecycle.png +0 -0
  387. data/spec/support/static/git-scm.com/book/en/v2/images/local.png +0 -0
  388. data/spec/support/static/git-scm.com/book/en/v2/images/lr-branches-1.png +0 -0
  389. data/spec/support/static/git-scm.com/book/en/v2/images/lr-branches-2.png +0 -0
  390. data/spec/support/static/git-scm.com/book/en/v2/images/maint-01-email.png +0 -0
  391. data/spec/support/static/git-scm.com/book/en/v2/images/maint-02-merge.png +0 -0
  392. data/spec/support/static/git-scm.com/book/en/v2/images/maint-03-email-resp.png +0 -0
  393. data/spec/support/static/git-scm.com/book/en/v2/images/maint-04-target.png +0 -0
  394. data/spec/support/static/git-scm.com/book/en/v2/images/maint-05-mentions.png +0 -0
  395. data/spec/support/static/git-scm.com/book/en/v2/images/maint-06-unsubscribe.png +0 -0
  396. data/spec/support/static/git-scm.com/book/en/v2/images/maint-07-notifications.png +0 -0
  397. data/spec/support/static/git-scm.com/book/en/v2/images/maint-08-notifications-page.png +0 -0
  398. data/spec/support/static/git-scm.com/book/en/v2/images/maint-09-contrib.png +0 -0
  399. data/spec/support/static/git-scm.com/book/en/v2/images/maint-10-default-branch.png +0 -0
  400. data/spec/support/static/git-scm.com/book/en/v2/images/maint-11-transfer.png +0 -0
  401. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-1.png +0 -0
  402. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-2.png +0 -0
  403. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-3.png +0 -0
  404. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-flow.png +0 -0
  405. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-01-example.png +0 -0
  406. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-02-tasks.png +0 -0
  407. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-03-task-summary.png +0 -0
  408. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-04-fenced-code.png +0 -0
  409. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-05-quote.png +0 -0
  410. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-06-emoji-complete.png +0 -0
  411. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-07-emoji.png +0 -0
  412. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-08-drag-drop.png +0 -0
  413. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-01-syntax.png +0 -0
  414. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-02-render.png +0 -0
  415. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-03-closed.png +0 -0
  416. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-1.png +0 -0
  417. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-2.png +0 -0
  418. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-3.png +0 -0
  419. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-4.png +0 -0
  420. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-5.png +0 -0
  421. data/spec/support/static/git-scm.com/book/en/v2/images/new-repo.png +0 -0
  422. data/spec/support/static/git-scm.com/book/en/v2/images/neworg.png +0 -0
  423. data/spec/support/static/git-scm.com/book/en/v2/images/newrepo.png +0 -0
  424. data/spec/support/static/git-scm.com/book/en/v2/images/newrepoform.png +0 -0
  425. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-01-page.png +0 -0
  426. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-02-teams.png +0 -0
  427. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-03-audit.png +0 -0
  428. data/spec/support/static/git-scm.com/book/en/v2/images/p4merge.png +0 -0
  429. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-1.png +0 -0
  430. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-2.png +0 -0
  431. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-3.png +0 -0
  432. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-4.png +0 -0
  433. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-5.png +0 -0
  434. data/spec/support/static/git-scm.com/book/en/v2/images/posh-git.png +0 -0
  435. data/spec/support/static/git-scm.com/book/en/v2/images/pr-01-fail.png +0 -0
  436. data/spec/support/static/git-scm.com/book/en/v2/images/pr-02-merge-fix.png +0 -0
  437. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-1.png +0 -0
  438. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-2.png +0 -0
  439. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-3.png +0 -0
  440. data/spec/support/static/git-scm.com/book/en/v2/images/rebasing-1.png +0 -0
  441. data/spec/support/static/git-scm.com/book/en/v2/images/rebasing-2.png +0 -0
  442. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-1.png +0 -0
  443. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-2.png +0 -0
  444. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-3.png +0 -0
  445. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-4.png +0 -0
  446. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-5.png +0 -0
  447. data/spec/support/static/git-scm.com/book/en/v2/images/replace1.png +0 -0
  448. data/spec/support/static/git-scm.com/book/en/v2/images/replace2.png +0 -0
  449. data/spec/support/static/git-scm.com/book/en/v2/images/replace3.png +0 -0
  450. data/spec/support/static/git-scm.com/book/en/v2/images/replace4.png +0 -0
  451. data/spec/support/static/git-scm.com/book/en/v2/images/replace5.png +0 -0
  452. data/spec/support/static/git-scm.com/book/en/v2/images/reposettingslink.png +0 -0
  453. data/spec/support/static/git-scm.com/book/en/v2/images/rerere1.png +0 -0
  454. data/spec/support/static/git-scm.com/book/en/v2/images/rerere2.png +0 -0
  455. data/spec/support/static/git-scm.com/book/en/v2/images/rerere3.png +0 -0
  456. data/spec/support/static/git-scm.com/book/en/v2/images/reset-checkout.png +0 -0
  457. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex1.png +0 -0
  458. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex2.png +0 -0
  459. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex3.png +0 -0
  460. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex4.png +0 -0
  461. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex5.png +0 -0
  462. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex6.png +0 -0
  463. data/spec/support/static/git-scm.com/book/en/v2/images/reset-hard.png +0 -0
  464. data/spec/support/static/git-scm.com/book/en/v2/images/reset-mixed.png +0 -0
  465. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path1.png +0 -0
  466. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path2.png +0 -0
  467. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path3.png +0 -0
  468. data/spec/support/static/git-scm.com/book/en/v2/images/reset-soft.png +0 -0
  469. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r1.png +0 -0
  470. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r2.png +0 -0
  471. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r3.png +0 -0
  472. data/spec/support/static/git-scm.com/book/en/v2/images/reset-start.png +0 -0
  473. data/spec/support/static/git-scm.com/book/en/v2/images/reset-workflow.png +0 -0
  474. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-01-services.png +0 -0
  475. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-02-email-service.png +0 -0
  476. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-03-webhook.png +0 -0
  477. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-04-webhook-debug.png +0 -0
  478. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-05-access-token.png +0 -0
  479. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-06-comment.png +0 -0
  480. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-07-status.png +0 -0
  481. data/spec/support/static/git-scm.com/book/en/v2/images/signup.png +0 -0
  482. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-1.png +0 -0
  483. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-2.png +0 -0
  484. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-3.png +0 -0
  485. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-4.png +0 -0
  486. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-5.png +0 -0
  487. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-6.png +0 -0
  488. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-7.png +0 -0
  489. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-flow.png +0 -0
  490. data/spec/support/static/git-scm.com/book/en/v2/images/smudge.png +0 -0
  491. data/spec/support/static/git-scm.com/book/en/v2/images/snapshots.png +0 -0
  492. data/spec/support/static/git-scm.com/book/en/v2/images/ssh-keys.png +0 -0
  493. data/spec/support/static/git-scm.com/book/en/v2/images/topic-branches-1.png +0 -0
  494. data/spec/support/static/git-scm.com/book/en/v2/images/topic-branches-2.png +0 -0
  495. data/spec/support/static/git-scm.com/book/en/v2/images/two-branches.png +0 -0
  496. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-reset.png +0 -0
  497. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert.png +0 -0
  498. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert2.png +0 -0
  499. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert3.png +0 -0
  500. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-start.png +0 -0
  501. data/spec/support/static/git-scm.com/book/en/v2/images/your-profile.png +0 -0
  502. data/spec/support/static/git-scm.com/book/en/v2/images/zsh-oh-my.png +0 -0
  503. data/spec/support/static/git-scm.com/book/en/v2/images/zsh-prompt.png +0 -0
  504. data/spec/support/static/git-scm.com/book/en/v2.html +0 -688
  505. data/spec/support/static/git-scm.com/favicon.ico +0 -0
  506. data/spec/support/static/git-scm.com/images/bg/body.jpg +0 -0
  507. data/spec/support/static/git-scm.com/images/bg/isometric-grid.png +0 -0
  508. data/spec/support/static/git-scm.com/images/bg/isometric-grid@2x.png +0 -0
  509. data/spec/support/static/git-scm.com/images/bg/search-header.jpg +0 -0
  510. data/spec/support/static/git-scm.com/images/company-project-logos/android.png +0 -0
  511. data/spec/support/static/git-scm.com/images/company-project-logos/android@2x.png +0 -0
  512. data/spec/support/static/git-scm.com/images/company-project-logos/eclipse.png +0 -0
  513. data/spec/support/static/git-scm.com/images/company-project-logos/eclipse@2x.png +0 -0
  514. data/spec/support/static/git-scm.com/images/company-project-logos/facebook.png +0 -0
  515. data/spec/support/static/git-scm.com/images/company-project-logos/facebook@2x.png +0 -0
  516. data/spec/support/static/git-scm.com/images/company-project-logos/gnome.png +0 -0
  517. data/spec/support/static/git-scm.com/images/company-project-logos/gnome@2x.png +0 -0
  518. data/spec/support/static/git-scm.com/images/company-project-logos/google.png +0 -0
  519. data/spec/support/static/git-scm.com/images/company-project-logos/google@2x.png +0 -0
  520. data/spec/support/static/git-scm.com/images/company-project-logos/kde.png +0 -0
  521. data/spec/support/static/git-scm.com/images/company-project-logos/kde@2x.png +0 -0
  522. data/spec/support/static/git-scm.com/images/company-project-logos/linked-in.png +0 -0
  523. data/spec/support/static/git-scm.com/images/company-project-logos/linked-in@2x.png +0 -0
  524. data/spec/support/static/git-scm.com/images/company-project-logos/linux.png +0 -0
  525. data/spec/support/static/git-scm.com/images/company-project-logos/linux@2x.png +0 -0
  526. data/spec/support/static/git-scm.com/images/company-project-logos/microsoft.png +0 -0
  527. data/spec/support/static/git-scm.com/images/company-project-logos/microsoft@2x.png +0 -0
  528. data/spec/support/static/git-scm.com/images/company-project-logos/netflix.png +0 -0
  529. data/spec/support/static/git-scm.com/images/company-project-logos/netflix@2x.png +0 -0
  530. data/spec/support/static/git-scm.com/images/company-project-logos/perl.png +0 -0
  531. data/spec/support/static/git-scm.com/images/company-project-logos/perl@2x.png +0 -0
  532. data/spec/support/static/git-scm.com/images/company-project-logos/postgresql.png +0 -0
  533. data/spec/support/static/git-scm.com/images/company-project-logos/postgresql@2x.png +0 -0
  534. data/spec/support/static/git-scm.com/images/company-project-logos/qt.png +0 -0
  535. data/spec/support/static/git-scm.com/images/company-project-logos/qt@2x.png +0 -0
  536. data/spec/support/static/git-scm.com/images/company-project-logos/rails.png +0 -0
  537. data/spec/support/static/git-scm.com/images/company-project-logos/rails@2x.png +0 -0
  538. data/spec/support/static/git-scm.com/images/company-project-logos/twitter.png +0 -0
  539. data/spec/support/static/git-scm.com/images/company-project-logos/twitter@2x.png +0 -0
  540. data/spec/support/static/git-scm.com/images/company-project-logos/x.png +0 -0
  541. data/spec/support/static/git-scm.com/images/company-project-logos/x@2x.png +0 -0
  542. data/spec/support/static/git-scm.com/images/epub.png +0 -0
  543. data/spec/support/static/git-scm.com/images/icons/admin-sm.png +0 -0
  544. data/spec/support/static/git-scm.com/images/icons/admin-sm@2x.png +0 -0
  545. data/spec/support/static/git-scm.com/images/icons/apple.png +0 -0
  546. data/spec/support/static/git-scm.com/images/icons/apple@2x.png +0 -0
  547. data/spec/support/static/git-scm.com/images/icons/book.png +0 -0
  548. data/spec/support/static/git-scm.com/images/icons/book@2x.png +0 -0
  549. data/spec/support/static/git-scm.com/images/icons/box.png +0 -0
  550. data/spec/support/static/git-scm.com/images/icons/box@2x.png +0 -0
  551. data/spec/support/static/git-scm.com/images/icons/branch-sm.png +0 -0
  552. data/spec/support/static/git-scm.com/images/icons/branch-sm@2x.png +0 -0
  553. data/spec/support/static/git-scm.com/images/icons/camera-sm.png +0 -0
  554. data/spec/support/static/git-scm.com/images/icons/camera-sm@2x.png +0 -0
  555. data/spec/support/static/git-scm.com/images/icons/chevron-up@2x.png +0 -0
  556. data/spec/support/static/git-scm.com/images/icons/code.png +0 -0
  557. data/spec/support/static/git-scm.com/images/icons/code@2x.png +0 -0
  558. data/spec/support/static/git-scm.com/images/icons/debugging-sm.png +0 -0
  559. data/spec/support/static/git-scm.com/images/icons/debugging-sm@2x.png +0 -0
  560. data/spec/support/static/git-scm.com/images/icons/document.png +0 -0
  561. data/spec/support/static/git-scm.com/images/icons/document@2x.png +0 -0
  562. data/spec/support/static/git-scm.com/images/icons/download.png +0 -0
  563. data/spec/support/static/git-scm.com/images/icons/email-sm.png +0 -0
  564. data/spec/support/static/git-scm.com/images/icons/email-sm@2x.png +0 -0
  565. data/spec/support/static/git-scm.com/images/icons/external-sm.png +0 -0
  566. data/spec/support/static/git-scm.com/images/icons/external-sm@2x.png +0 -0
  567. data/spec/support/static/git-scm.com/images/icons/gui.png +0 -0
  568. data/spec/support/static/git-scm.com/images/icons/gui@2x.png +0 -0
  569. data/spec/support/static/git-scm.com/images/icons/info.png +0 -0
  570. data/spec/support/static/git-scm.com/images/icons/info@2x.png +0 -0
  571. data/spec/support/static/git-scm.com/images/icons/inspection-sm.png +0 -0
  572. data/spec/support/static/git-scm.com/images/icons/inspection-sm@2x.png +0 -0
  573. data/spec/support/static/git-scm.com/images/icons/linux.png +0 -0
  574. data/spec/support/static/git-scm.com/images/icons/linux@2x.png +0 -0
  575. data/spec/support/static/git-scm.com/images/icons/nav-circles.png +0 -0
  576. data/spec/support/static/git-scm.com/images/icons/nav-circles@2x.png +0 -0
  577. data/spec/support/static/git-scm.com/images/icons/patching-sm.png +0 -0
  578. data/spec/support/static/git-scm.com/images/icons/patching-sm@2x.png +0 -0
  579. data/spec/support/static/git-scm.com/images/icons/plumbing-sm.png +0 -0
  580. data/spec/support/static/git-scm.com/images/icons/plumbing-sm@2x.png +0 -0
  581. data/spec/support/static/git-scm.com/images/icons/projects-sm.png +0 -0
  582. data/spec/support/static/git-scm.com/images/icons/projects-sm@2x.png +0 -0
  583. data/spec/support/static/git-scm.com/images/icons/search.png +0 -0
  584. data/spec/support/static/git-scm.com/images/icons/search@2x.png +0 -0
  585. data/spec/support/static/git-scm.com/images/icons/server-admin-sm.png +0 -0
  586. data/spec/support/static/git-scm.com/images/icons/server-admin-sm@2x.png +0 -0
  587. data/spec/support/static/git-scm.com/images/icons/setup-sm.png +0 -0
  588. data/spec/support/static/git-scm.com/images/icons/setup-sm@2x.png +0 -0
  589. data/spec/support/static/git-scm.com/images/icons/sharing-sm.png +0 -0
  590. data/spec/support/static/git-scm.com/images/icons/sharing-sm@2x.png +0 -0
  591. data/spec/support/static/git-scm.com/images/icons/sidebar.png +0 -0
  592. data/spec/support/static/git-scm.com/images/icons/sidebar@2x.png +0 -0
  593. data/spec/support/static/git-scm.com/images/icons/source-code.png +0 -0
  594. data/spec/support/static/git-scm.com/images/icons/source-code@2x.png +0 -0
  595. data/spec/support/static/git-scm.com/images/icons/windows.png +0 -0
  596. data/spec/support/static/git-scm.com/images/icons/windows@2x.png +0 -0
  597. data/spec/support/static/git-scm.com/images/logo@2x.png +0 -0
  598. data/spec/support/static/git-scm.com/images/mobi.png +0 -0
  599. data/spec/support/static/git-scm.com/images/monitor-default.png +0 -0
  600. data/spec/support/static/git-scm.com/images/monitor-default@2x.png +0 -0
  601. data/spec/support/static/git-scm.com/images/monitor-linux.png +0 -0
  602. data/spec/support/static/git-scm.com/images/monitor-linux@2x.png +0 -0
  603. data/spec/support/static/git-scm.com/images/monitor-mac.png +0 -0
  604. data/spec/support/static/git-scm.com/images/monitor-mac@2x.png +0 -0
  605. data/spec/support/static/git-scm.com/images/monitor-windows.png +0 -0
  606. data/spec/support/static/git-scm.com/images/monitor-windows@2x.png +0 -0
  607. data/spec/support/static/git-scm.com/images/pdf.png +0 -0
  608. data/spec/support/static/git-scm.com/images/progit2.png +0 -0
  609. data/spec/support/static/git-scm.com/images/sidebar-divider.png +0 -0
  610. data/spec/support/static/git-scm.com/images/sidebar-divider@2x.png +0 -0
  611. data/spec/support/static/git-scm.com/robots.txt +0 -0
  612. data/spec/support/static/graph/details/a.html +0 -10
  613. data/spec/support/static/graph/details/b.html +0 -10
  614. data/spec/support/static/graph/index.html +0 -20
  615. data/spec/support/static/links/links.html +0 -28
@@ -1,1059 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
-
4
- <head>
5
- <!-- Global site tag (gtag.js) - Google Analytics -->
6
- <script async src="https://www.googletagmanager.com/gtag/js?id=UA-49925874-3"></script>
7
- <script>
8
- window.dataLayer = window.dataLayer || [];
9
- function gtag(){dataLayer.push(arguments);}
10
- gtag('js', new Date());
11
-
12
- gtag('config', 'UA-49925874-3');
13
- </script>
14
-
15
- <meta charset='utf-8'>
16
- <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
17
- <meta name="viewport" content="width=device-width, initial-scale=1">
18
- <title>Git - Scripting GitHub</title>
19
-
20
- <link href='../../../favicon.ico' rel='shortcut icon' type='image/x-icon'>
21
-
22
- <link rel="stylesheet" media="screen" href="../../../assets/application-cafcf280f67db0e6d8168ba98a38da878769a9d5f37793b68ffb963a02d185e0.css" />
23
- <script src="../../../assets/modernize-b3ebe0c31c24f230dc62179d3e1030d2e57a53b1668d9382c0a27dbd44a94beb.js"></script>
24
- <!--[if (gte IE 6)&(lte IE 8)]>
25
- <script src="/javascripts/selectivizr-min.js"></script>
26
- <![endif]-->
27
-
28
- </head>
29
-
30
- <body id="documentation">
31
-
32
- <div class="inner">
33
- <header>
34
-
35
- <a href="https://git-scm.com/"><img src="../../../images/logo@2x.png" width="110" height="46" alt="Git" /></a>
36
- <span id="tagline"></span>
37
- <script type="text/javascript">
38
- var taglines = ["fast-version-control","everything-is-local","distributed-even-if-your-workflow-isnt","local-branching-on-the-cheap","distributed-is-the-new-centralized"];
39
- var tagline = taglines[Math.floor(Math.random() * taglines.length)];
40
- document.getElementById('tagline').innerHTML = '--' + tagline;
41
- </script>
42
- <form id="search" action="https://git-scm.com/search/results">
43
- <input id="search-text" name="search" placeholder="Search entire site..." autocomplete="off" type="text" />
44
- </form>
45
- <div id="search-results"></div>
46
-
47
- </header>
48
-
49
- </div> <!-- .inner -->
50
-
51
- <div class="inner">
52
- <div id="content-wrapper">
53
- <button class="sidebar-btn"></button>
54
- <aside class="sidebar" id="sidebar">
55
- <nav>
56
- <ul>
57
- <li>
58
- <a href="https://git-scm.com/about">About</a>
59
- <ul class="">
60
- <li>
61
- <a href="https://git-scm.com/about">Branching and Merging</a>
62
- </li>
63
- <li>
64
- <a href="https://git-scm.com/about/small-and-fast">Small and Fast</a>
65
- </li>
66
- <li>
67
- <a href="https://git-scm.com/about/distributed">Distributed</a>
68
- </li>
69
- <li>
70
- <a href="https://git-scm.com/about/info-assurance">Data Assurance</a>
71
- </li>
72
- <li>
73
- <a href="https://git-scm.com/about/staging-area">Staging Area</a>
74
- </li>
75
- <li>
76
- <a href="https://git-scm.com/about/free-and-open-source">Free and Open Source</a>
77
- </li>
78
- <li>
79
- <a href="https://git-scm.com/about/trademark">Trademark</a>
80
- </li>
81
- </ul>
82
- </li>
83
- <li>
84
- <a class="active" href="https://git-scm.com/doc">Documentation</a>
85
- <ul class="expanded">
86
- <li>
87
- <a href="https://git-scm.com/docs">Reference</a>
88
- </li>
89
- <li>
90
- <a class="active" href="https://git-scm.com/book">Book</a>
91
- </li>
92
- <li>
93
- <a href="https://git-scm.com/videos">Videos</a>
94
- </li>
95
- <li>
96
- <a href="https://git-scm.com/doc/ext">External Links</a>
97
- </li>
98
- </ul>
99
- </li>
100
- <li>
101
- <a href="https://git-scm.com/downloads">Downloads</a>
102
- <ul class="">
103
- <li>
104
- <a href="https://git-scm.com/downloads/guis">GUI Clients</a>
105
- </li>
106
- <li>
107
- <a href="https://git-scm.com/downloads/logos">Logos</a>
108
- </li>
109
- </ul>
110
- </li>
111
- <li>
112
- <a href="https://git-scm.com/community">Community</a>
113
- </li>
114
- </ul>
115
- <hr class="sidebar">
116
- <p>
117
- This book is available in
118
- <a href="https://git-scm.com/book/en">English</a>.
119
- </p>
120
- <p>
121
- Full translation available in
122
- <table>
123
- <tr><td><a href="https://git-scm.com/book/az">azərbaycan dili</a>,</td></tr>
124
- <tr><td><a href="https://git-scm.com/book/bg">български език</a>,</td></tr>
125
- <tr><td><a href="https://git-scm.com/book/de">Deutsch</a>,</td></tr>
126
- <tr><td><a href="https://git-scm.com/book/es">Español</a>,</td></tr>
127
- <tr><td><a href="https://git-scm.com/book/fr">Français</a>,</td></tr>
128
- <tr><td><a href="https://git-scm.com/book/gr">Ελληνικά</a>,</td></tr>
129
- <tr><td><a href="https://git-scm.com/book/ja">日本語</a>,</td></tr>
130
- <tr><td><a href="https://git-scm.com/book/ko">한국어</a>,</td></tr>
131
- <tr><td><a href="https://git-scm.com/book/nl">Nederlands</a>,</td></tr>
132
- <tr><td><a href="https://git-scm.com/book/ru">Русский</a>,</td></tr>
133
- <tr><td><a href="https://git-scm.com/book/sl">Slovenščina</a>,</td></tr>
134
- <tr><td><a href="https://git-scm.com/book/tl">Tagalog</a>,</td></tr>
135
- <tr><td><a href="https://git-scm.com/book/uk">Українська</a></td></tr>
136
- <tr><td><a href="https://git-scm.com/book/zh">简体中文</a>,</td></tr>
137
- </table>
138
- </p>
139
- <p>
140
- Partial translations available in
141
- <table>
142
- <tr><td><a href="https://git-scm.com/book/cs">Čeština</a>,</td></tr>
143
- <tr><td><a href="https://git-scm.com/book/mk">Македонски</a>,</td></tr>
144
- <tr><td><a href="https://git-scm.com/book/pl">Polski</a>,</td></tr>
145
- <tr><td><a href="https://git-scm.com/book/sr">Српски</a>,</td></tr>
146
- <tr><td><a href="https://git-scm.com/book/uz">Ўзбекча</a>,</td></tr>
147
- <tr><td><a href="https://git-scm.com/book/zh-tw">繁體中文</a>,</td></tr>
148
- </table>
149
- </p>
150
- <p>
151
- Translations started for
152
- <table>
153
- <tr><td><a href="https://git-scm.com/book/be">Беларуская</a>,</td></tr>
154
- <tr><td><a href="https://git-scm.com/book/fa" dir="rtl">فارسی</a>,</td></tr>
155
- <tr><td><a href="https://git-scm.com/book/id">Indonesian</a>,</td></tr>
156
- <tr><td><a href="https://git-scm.com/book/it">Italiano</a>,</td></tr>
157
- <tr><td><a href="https://git-scm.com/book/ms">Bahasa Melayu</a>,</td></tr>
158
- <tr><td><a href="https://git-scm.com/book/pt-br">Português (Brasil)</a>,</td></tr>
159
- <tr><td><a href="https://git-scm.com/book/pt-pt">Português (Portugal)</a>,</td></tr>
160
- <tr><td><a href="https://git-scm.com/book/sv">Svenska</a>,</td></tr>
161
- <tr><td><a href="https://git-scm.com/book/tr">Türkçe</a>.</td></tr>
162
- </table>
163
- </p>
164
- <hr class="sidebar"/>
165
- <p>
166
- The source of this book is <a href="https://github.com/progit/progit2">hosted on GitHub.</a></br>
167
- Patches, suggestions and comments are welcome.
168
- </p>
169
-
170
-
171
- </nav>
172
- </aside>
173
-
174
- <div id="content">
175
-
176
-
177
- <div id='book-chapters'>
178
- <a class="dropdown-trigger" id="book-chapters-trigger" data-panel-id="chapters-dropdown" href="ch00/_commit_status.html#">Chapters ▾</a>
179
- <div class='dropdown-panel' id='chapters-dropdown'>
180
- <div class="three-column">
181
- <div class='column-left'>
182
- <ol class='book-toc'>
183
- <li class='chapter'>
184
- <h2>1. <a href="ch00/ch01-getting-started.html">Getting Started</a></h2>
185
- <ol>
186
- <li>
187
- 1.1
188
- <a href="ch00/ch01-getting-started.html" >About Version Control </a>
189
- </li>
190
- <li>
191
- 1.2
192
- <a href="Getting-Started-A-Short-History-of-Git.html" >A Short History of Git </a>
193
- </li>
194
- <li>
195
- 1.3
196
- <a href="ch00/what_is_git_section.html" >What is Git? </a>
197
- </li>
198
- <li>
199
- 1.4
200
- <a href="Getting-Started-The-Command-Line.html" >The Command Line </a>
201
- </li>
202
- <li>
203
- 1.5
204
- <a href="Getting-Started-Installing-Git.html" >Installing Git </a>
205
- </li>
206
- <li>
207
- 1.6
208
- <a href="ch00/_editor.html" >First-Time Git Setup </a>
209
- </li>
210
- <li>
211
- 1.7
212
- <a href="ch00/_git_help.html" >Getting Help </a>
213
- </li>
214
- <li>
215
- 1.8
216
- <a href="Getting-Started-Summary.html" >Summary </a>
217
- </li>
218
- </ol>
219
- </li>
220
- <li class='chapter'>
221
- <h2>2. <a href="ch00/_git_cloning.html">Git Basics</a></h2>
222
- <ol>
223
- <li>
224
- 2.1
225
- <a href="ch00/_git_cloning.html" >Getting a Git Repository </a>
226
- </li>
227
- <li>
228
- 2.2
229
- <a href="ch00/_git_mv.html" >Recording Changes to the Repository </a>
230
- </li>
231
- <li>
232
- 2.3
233
- <a href="ch00/_viewing_history.html" >Viewing the Commit History </a>
234
- </li>
235
- <li>
236
- 2.4
237
- <a href="ch00/_unstaging.html" >Undoing Things </a>
238
- </li>
239
- <li>
240
- 2.5
241
- <a href="ch00/_remote_repos.html" >Working with Remotes </a>
242
- </li>
243
- <li>
244
- 2.6
245
- <a href="ch00/_annotated_tags.html" >Tagging </a>
246
- </li>
247
- <li>
248
- 2.7
249
- <a href="ch00/_git_aliases.html" >Git Aliases </a>
250
- </li>
251
- <li>
252
- 2.8
253
- <a href="Git-Basics-Summary.html" >Summary </a>
254
- </li>
255
- </ol>
256
- </li>
257
- <li class='chapter'>
258
- <h2>3. <a href="ch00/_switching_branches.html">Git Branching</a></h2>
259
- <ol>
260
- <li>
261
- 3.1
262
- <a href="ch00/_switching_branches.html" >Branches in a Nutshell </a>
263
- </li>
264
- <li>
265
- 3.2
266
- <a href="ch00/_basic_branching.html" >Basic Branching and Merging </a>
267
- </li>
268
- <li>
269
- 3.3
270
- <a href="ch00/_branch_management.html" >Branch Management </a>
271
- </li>
272
- <li>
273
- 3.4
274
- <a href="ch00/_topic_branch.html" >Branching Workflows </a>
275
- </li>
276
- <li>
277
- 3.5
278
- <a href="ch00/_delete_branches.html" >Remote Branches </a>
279
- </li>
280
- <li>
281
- 3.6
282
- <a href="ch00/_rebase_rebase.html" >Rebasing </a>
283
- </li>
284
- <li>
285
- 3.7
286
- <a href="Git-Branching-Summary.html" >Summary </a>
287
- </li>
288
- </ol>
289
- </li>
290
- <li class='chapter'>
291
- <h2>4. <a href="Git-on-the-Server-The-Protocols.html">Git on the Server</a></h2>
292
- <ol>
293
- <li>
294
- 4.1
295
- <a href="Git-on-the-Server-The-Protocols.html" >The Protocols </a>
296
- </li>
297
- <li>
298
- 4.2
299
- <a href="ch00/_bare_repo.html" >Getting Git on a Server </a>
300
- </li>
301
- <li>
302
- 4.3
303
- <a href="ch00/_generate_ssh_key.html" >Generating Your SSH Public Key </a>
304
- </li>
305
- <li>
306
- 4.4
307
- <a href="ch00/_setting_up_server.html" >Setting Up the Server </a>
308
- </li>
309
- <li>
310
- 4.5
311
- <a href="Git-on-the-Server-Git-Daemon.html" >Git Daemon </a>
312
- </li>
313
- <li>
314
- 4.6
315
- <a href="Git-on-the-Server-Smart-HTTP.html" >Smart HTTP </a>
316
- </li>
317
- <li>
318
- 4.7
319
- <a href="Git-on-the-Server-GitWeb.html" >GitWeb </a>
320
- </li>
321
- <li>
322
- 4.8
323
- <a href="ch00/_gitlab_groups_section.html" >GitLab </a>
324
- </li>
325
- <li>
326
- 4.9
327
- <a href="Git-on-the-Server-Third-Party-Hosted-Options.html" >Third Party Hosted Options </a>
328
- </li>
329
- <li>
330
- 4.10
331
- <a href="Git-on-the-Server-Summary.html" >Summary </a>
332
- </li>
333
- </ol>
334
- </li>
335
- <li class='chapter'>
336
- <h2>5. <a href="ch00/_integration_manager.html">Distributed Git</a></h2>
337
- <ol>
338
- <li>
339
- 5.1
340
- <a href="ch00/_integration_manager.html" >Distributed Workflows </a>
341
- </li>
342
- <li>
343
- 5.2
344
- <a href="ch00/_project_over_email.html" >Contributing to a Project </a>
345
- </li>
346
- <li>
347
- 5.3
348
- <a href="ch00/_git_am.html" >Maintaining a Project </a>
349
- </li>
350
- <li>
351
- 5.4
352
- <a href="Distributed-Git-Summary.html" >Summary </a>
353
- </li>
354
- </ol>
355
- </li>
356
- </ol>
357
-
358
- </div>
359
- <div class='column-middle'>
360
- <ol class='book-toc'>
361
- <li class='chapter'>
362
- <h2>6. <a href="ch00/_personal_avatar.html">GitHub</a></h2>
363
- <ol>
364
- <li>
365
- 6.1
366
- <a href="ch00/_personal_avatar.html" >Account Setup and Configuration </a>
367
- </li>
368
- <li>
369
- 6.2
370
- <a href="ch00/_fetch_and_push_on_different_repositories.html" >Contributing to a Project </a>
371
- </li>
372
- <li>
373
- 6.3
374
- <a href="ch00/_email_notifications.html" >Maintaining a Project </a>
375
- </li>
376
- <li>
377
- 6.4
378
- <a href="ch00/_team_page.html" >Managing an organization </a>
379
- </li>
380
- <li>
381
- 6.5
382
- <a href="ch00/_commit_status.html" class=active>Scripting GitHub </a>
383
- </li>
384
- <li>
385
- 6.6
386
- <a href="GitHub-Summary.html" >Summary </a>
387
- </li>
388
- </ol>
389
- </li>
390
- <li class='chapter'>
391
- <h2>7. <a href="ch00/_git_reflog.html">Git Tools</a></h2>
392
- <ol>
393
- <li>
394
- 7.1
395
- <a href="ch00/_git_reflog.html" >Revision Selection </a>
396
- </li>
397
- <li>
398
- 7.2
399
- <a href="ch00/_interactive_staging.html" >Interactive Staging </a>
400
- </li>
401
- <li>
402
- 7.3
403
- <a href="ch00/_git_clean.html" >Stashing and Cleaning </a>
404
- </li>
405
- <li>
406
- 7.4
407
- <a href="ch00/_signing_commits.html" >Signing Your Work </a>
408
- </li>
409
- <li>
410
- 7.5
411
- <a href="ch00/_git_grep.html" >Searching </a>
412
- </li>
413
- <li>
414
- 7.6
415
- <a href="ch00/_removing_file_every_commit.html" >Rewriting History </a>
416
- </li>
417
- <li>
418
- 7.7
419
- <a href="ch00/_the_index.html" >Reset Demystified </a>
420
- </li>
421
- <li>
422
- 7.8
423
- <a href="ch00/_reverse_commit.html" >Advanced Merging </a>
424
- </li>
425
- <li>
426
- 7.9
427
- <a href="ch00/ref_rerere.html" >Rerere </a>
428
- </li>
429
- <li>
430
- 7.10
431
- <a href="ch00/_file_annotation.html" >Debugging with Git </a>
432
- </li>
433
- <li>
434
- 7.11
435
- <a href="ch00/_publishing_submodules.html" >Submodules </a>
436
- </li>
437
- <li>
438
- 7.12
439
- <a href="ch00/_bundling.html" >Bundling </a>
440
- </li>
441
- <li>
442
- 7.13
443
- <a href="ch00/_replace.html" >Replace </a>
444
- </li>
445
- <li>
446
- 7.14
447
- <a href="ch00/_credential_caching.html" >Credential Storage </a>
448
- </li>
449
- <li>
450
- 7.15
451
- <a href="Git-Tools-Summary.html" >Summary </a>
452
- </li>
453
- </ol>
454
- </li>
455
- <li class='chapter'>
456
- <h2>8. <a href="ch00/_external_merge_tools.html">Customizing Git</a></h2>
457
- <ol>
458
- <li>
459
- 8.1
460
- <a href="ch00/_external_merge_tools.html" >Git Configuration </a>
461
- </li>
462
- <li>
463
- 8.2
464
- <a href="ch00/_keyword_expansion.html" >Git Attributes </a>
465
- </li>
466
- <li>
467
- 8.3
468
- <a href="ch00/_email_hooks.html" >Git Hooks </a>
469
- </li>
470
- <li>
471
- 8.4
472
- <a href="ch00/_enforcing_commit_message_format.html" >An Example Git-Enforced Policy </a>
473
- </li>
474
- <li>
475
- 8.5
476
- <a href="Customizing-Git-Summary.html" >Summary </a>
477
- </li>
478
- </ol>
479
- </li>
480
- <li class='chapter'>
481
- <h2>9. <a href="ch00/_git_svn.html">Git and Other Systems</a></h2>
482
- <ol>
483
- <li>
484
- 9.1
485
- <a href="ch00/_git_svn.html" >Git as a Client </a>
486
- </li>
487
- <li>
488
- 9.2
489
- <a href="ch00/_git_p4.html" >Migrating to Git </a>
490
- </li>
491
- <li>
492
- 9.3
493
- <a href="Git-and-Other-Systems-Summary.html" >Summary </a>
494
- </li>
495
- </ol>
496
- </li>
497
- <li class='chapter'>
498
- <h2>10. <a href="ch00/_plumbing_porcelain.html">Git Internals</a></h2>
499
- <ol>
500
- <li>
501
- 10.1
502
- <a href="ch00/_plumbing_porcelain.html" >Plumbing and Porcelain </a>
503
- </li>
504
- <li>
505
- 10.2
506
- <a href="ch00/_git_commit_objects.html" >Git Objects </a>
507
- </li>
508
- <li>
509
- 10.3
510
- <a href="ch00/ref_the_ref.html" >Git References </a>
511
- </li>
512
- <li>
513
- 10.4
514
- <a href="Git-Internals-Packfiles.html" >Packfiles </a>
515
- </li>
516
- <li>
517
- 10.5
518
- <a href="ch00/_pushing_refspecs.html" >The Refspec </a>
519
- </li>
520
- <li>
521
- 10.6
522
- <a href="Git-Internals-Transfer-Protocols.html" >Transfer Protocols </a>
523
- </li>
524
- <li>
525
- 10.7
526
- <a href="ch00/_git_gc.html" >Maintenance and Data Recovery </a>
527
- </li>
528
- <li>
529
- 10.8
530
- <a href="Git-Internals-Environment-Variables.html" >Environment Variables </a>
531
- </li>
532
- <li>
533
- 10.9
534
- <a href="Git-Internals-Summary.html" >Summary </a>
535
- </li>
536
- </ol>
537
- </li>
538
- </ol>
539
-
540
- </div>
541
- <div class='column-right'>
542
- <ol class='book-toc'>
543
- <li class='chapter'>
544
- <h2>A1. <a href="./Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces.html">Appendix A: Git in Other Environments</a></h2>
545
- <ol>
546
- <li>
547
- A1.1
548
- <a href="./Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces.html" >Graphical Interfaces </a>
549
- </li>
550
- <li>
551
- A1.2
552
- <a href="./Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio.html" >Git in Visual Studio </a>
553
- </li>
554
- <li>
555
- A1.3
556
- <a href="./Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio-Code.html" >Git in Visual Studio Code </a>
557
- </li>
558
- <li>
559
- A1.4
560
- <a href="./Appendix-A:-Git-in-Other-Environments-Git-in-IntelliJ-%252F-PyCharm-%252F-WebStorm-%252F-PhpStorm-%252F-RubyMine.html" >Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine </a>
561
- </li>
562
- <li>
563
- A1.5
564
- <a href="./Appendix-A:-Git-in-Other-Environments-Git-in-Sublime-Text.html" >Git in Sublime Text </a>
565
- </li>
566
- <li>
567
- A1.6
568
- <a href="./Appendix-A:-Git-in-Other-Environments-Git-in-Bash.html" >Git in Bash </a>
569
- </li>
570
- <li>
571
- A1.7
572
- <a href="ch00/oh_my_zsh_git.html" >Git in Zsh </a>
573
- </li>
574
- <li>
575
- A1.8
576
- <a href="./Appendix-A:-Git-in-Other-Environments-Git-in-PowerShell.html" >Git in PowerShell </a>
577
- </li>
578
- <li>
579
- A1.9
580
- <a href="./Appendix-A:-Git-in-Other-Environments-Summary.html" >Summary </a>
581
- </li>
582
- </ol>
583
- </li>
584
- <li class='chapter'>
585
- <h2>A2. <a href="./Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git.html">Appendix B: Embedding Git in your Applications</a></h2>
586
- <ol>
587
- <li>
588
- A2.1
589
- <a href="./Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git.html" >Command-line Git </a>
590
- </li>
591
- <li>
592
- A2.2
593
- <a href="ch00/_libgit2_bindings.html" >Libgit2 </a>
594
- </li>
595
- <li>
596
- A2.3
597
- <a href="./Appendix-B:-Embedding-Git-in-your-Applications-JGit.html" >JGit </a>
598
- </li>
599
- <li>
600
- A2.4
601
- <a href="./Appendix-B:-Embedding-Git-in-your-Applications-go-git.html" >go-git </a>
602
- </li>
603
- <li>
604
- A2.5
605
- <a href="./Appendix-B:-Embedding-Git-in-your-Applications-Dulwich.html" >Dulwich </a>
606
- </li>
607
- </ol>
608
- </li>
609
- <li class='chapter'>
610
- <h2>A3. <a href="ch00/ch_core_editor.html">Appendix C: Git Commands</a></h2>
611
- <ol>
612
- <li>
613
- A3.1
614
- <a href="ch00/ch_core_editor.html" >Setup and Config </a>
615
- </li>
616
- <li>
617
- A3.2
618
- <a href="./Appendix-C:-Git-Commands-Getting-and-Creating-Projects.html" >Getting and Creating Projects </a>
619
- </li>
620
- <li>
621
- A3.3
622
- <a href="./Appendix-C:-Git-Commands-Basic-Snapshotting.html" >Basic Snapshotting </a>
623
- </li>
624
- <li>
625
- A3.4
626
- <a href="./Appendix-C:-Git-Commands-Branching-and-Merging.html" >Branching and Merging </a>
627
- </li>
628
- <li>
629
- A3.5
630
- <a href="./Appendix-C:-Git-Commands-Sharing-and-Updating-Projects.html" >Sharing and Updating Projects </a>
631
- </li>
632
- <li>
633
- A3.6
634
- <a href="./Appendix-C:-Git-Commands-Inspection-and-Comparison.html" >Inspection and Comparison </a>
635
- </li>
636
- <li>
637
- A3.7
638
- <a href="./Appendix-C:-Git-Commands-Debugging.html" >Debugging </a>
639
- </li>
640
- <li>
641
- A3.8
642
- <a href="./Appendix-C:-Git-Commands-Patching.html" >Patching </a>
643
- </li>
644
- <li>
645
- A3.9
646
- <a href="./Appendix-C:-Git-Commands-Email.html" >Email </a>
647
- </li>
648
- <li>
649
- A3.10
650
- <a href="./Appendix-C:-Git-Commands-External-Systems.html" >External Systems </a>
651
- </li>
652
- <li>
653
- A3.11
654
- <a href="./Appendix-C:-Git-Commands-Administration.html" >Administration </a>
655
- </li>
656
- <li>
657
- A3.12
658
- <a href="./Appendix-C:-Git-Commands-Plumbing-Commands.html" >Plumbing Commands </a>
659
- </li>
660
- </ol>
661
- </li>
662
- </ol>
663
-
664
- </div>
665
- </div>
666
- </div>
667
-
668
- <span class="light" id="edition">
669
- 2nd Edition
670
- </span>
671
- </div>
672
-
673
- <div id='main' class="book edition2">
674
- <h1>6.5 GitHub - Scripting GitHub</h1>
675
- <div>
676
- <h2 id="_scripting_github">Scripting GitHub</h2>
677
- <div class="paragraph">
678
- <p>So now we’ve covered all of the major features and workflows of GitHub, but any large group or project will have customizations they may want to make or external services they may want to integrate.</p>
679
- </div>
680
- <div class="paragraph">
681
- <p>Luckily for us, GitHub is really quite hackable in many ways.
682
- In this section we’ll cover how to use the GitHub hooks system and its API to make GitHub work how we want it to.</p>
683
- </div>
684
- <div class="sect3">
685
- <h3 id="_services_and_hooks">Services and Hooks</h3>
686
- <div class="paragraph">
687
- <p>The Hooks and Services section of GitHub repository administration is the easiest way to have GitHub interact with external systems.</p>
688
- </div>
689
- <div class="sect4">
690
- <h4 id="_services">Services</h4>
691
- <div class="paragraph">
692
- <p>First we’ll take a look at Services.
693
- Both the Hooks and Services integrations can be found in the Settings section of your repository, where we previously looked at adding Collaborators and changing the default branch of your project.
694
- Under the “Webhooks and Services” tab you will see something like <a href="ch00/_services_hooks.html">Services and Hooks configuration section</a>.</p>
695
- </div>
696
- <div id="_services_hooks" class="imageblock">
697
- <div class="content">
698
- <img src="images/scripting-01-services.png" alt="Services and hooks">
699
- </div>
700
- <div class="title">Figure 129. Services and Hooks configuration section</div>
701
- </div>
702
- <div class="paragraph">
703
- <p>There are dozens of services you can choose from, most of them integrations into other commercial and open source systems.
704
- Most of them are for Continuous Integration services, bug and issue trackers, chat room systems and documentation systems.
705
- We’ll walk through setting up a very simple one, the Email hook.
706
- If you choose “email” from the “Add Service” dropdown, you’ll get a configuration screen like <a href="ch00/_service_config.html">Email service configuration</a>.</p>
707
- </div>
708
- <div id="_service_config" class="imageblock">
709
- <div class="content">
710
- <img src="images/scripting-02-email-service.png" alt="Email service">
711
- </div>
712
- <div class="title">Figure 130. Email service configuration</div>
713
- </div>
714
- <div class="paragraph">
715
- <p>In this case, if we hit the “Add service” button, the email address we specified will get an email every time someone pushes to the repository.
716
- Services can listen for lots of different types of events, but most only listen for push events and then do something with that data.</p>
717
- </div>
718
- <div class="paragraph">
719
- <p>If there is a system you are using that you would like to integrate with GitHub, you should check here to see if there is an existing service integration available.
720
- For example, if you’re using Jenkins to run tests on your codebase, you can enable the Jenkins builtin service integration to kick off a test run every time someone pushes to your repository.</p>
721
- </div>
722
- </div>
723
- <div class="sect4">
724
- <h4 id="_hooks_2">Hooks</h4>
725
- <div class="paragraph">
726
- <p>If you need something more specific or you want to integrate with a service or site that is not included in this list, you can instead use the more generic hooks system.
727
- GitHub repository hooks are pretty simple.
728
- You specify a URL and GitHub will post an HTTP payload to that URL on any event you want.</p>
729
- </div>
730
- <div class="paragraph">
731
- <p>Generally the way this works is you can setup a small web service to listen for a GitHub hook payload and then do something with the data when it is received.</p>
732
- </div>
733
- <div class="paragraph">
734
- <p>To enable a hook, you click the “Add webhook” button in <a href="ch00/_services_hooks.html">Services and Hooks configuration section</a>.
735
- This will bring you to a page that looks like <a href="ch00/_web_hook.html">Web hook configuration</a>.</p>
736
- </div>
737
- <div id="_web_hook" class="imageblock">
738
- <div class="content">
739
- <img src="images/scripting-03-webhook.png" alt="Web hook">
740
- </div>
741
- <div class="title">Figure 131. Web hook configuration</div>
742
- </div>
743
- <div class="paragraph">
744
- <p>The configuration for a web hook is pretty simple.
745
- In most cases you simply enter a URL and a secret key and hit “Add webhook”.
746
- There are a few options for which events you want GitHub to send you a payload for — the default is to only get a payload for the <code>push</code> event, when someone pushes new code to any branch of your repository.</p>
747
- </div>
748
- <div class="paragraph">
749
- <p>Let’s see a small example of a web service you may set up to handle a web hook.
750
- We’ll use the Ruby web framework Sinatra since it’s fairly concise and you should be able to easily see what we’re doing.</p>
751
- </div>
752
- <div class="paragraph">
753
- <p>Let’s say we want to get an email if a specific person pushes to a specific branch of our project modifying a specific file.
754
- We could fairly easily do that with code like this:</p>
755
- </div>
756
- <div class="listingblock">
757
- <div class="content">
758
- <pre class="highlight"><code class="language-ruby" data-lang="ruby">require 'sinatra'
759
- require 'json'
760
- require 'mail'
761
-
762
- post '/payload' do
763
- push = JSON.parse(request.body.read) # parse the JSON
764
-
765
- # gather the data we're looking for
766
- pusher = push["pusher"]["name"]
767
- branch = push["ref"]
768
-
769
- # get a list of all the files touched
770
- files = push["commits"].map do |commit|
771
- commit['added'] + commit['modified'] + commit['removed']
772
- end
773
- files = files.flatten.uniq
774
-
775
- # check for our criteria
776
- if pusher == 'schacon' &amp;&amp;
777
- branch == 'ref/heads/special-branch' &amp;&amp;
778
- files.include?('special-file.txt')
779
-
780
- Mail.deliver do
781
- from 'tchacon@example.com'
782
- to 'tchacon@example.com'
783
- subject 'Scott Changed the File'
784
- body "ALARM"
785
- end
786
- end
787
- end</code></pre>
788
- </div>
789
- </div>
790
- <div class="paragraph">
791
- <p>Here we’re taking the JSON payload that GitHub delivers us and looking up who pushed it, what branch they pushed to and what files were touched in all the commits that were pushed.
792
- Then we check that against our criteria and send an email if it matches.</p>
793
- </div>
794
- <div class="paragraph">
795
- <p>In order to develop and test something like this, you have a nice developer console in the same screen where you set the hook up.
796
- You can see the last few deliveries that GitHub has tried to make for that webhook.
797
- For each hook you can dig down into when it was delivered, if it was successful and the body and headers for both the request and the response.
798
- This makes it incredibly easy to test and debug your hooks.</p>
799
- </div>
800
- <div id="_web_hook_debug" class="imageblock">
801
- <div class="content">
802
- <img src="images/scripting-04-webhook-debug.png" alt="Webhook debug">
803
- </div>
804
- <div class="title">Figure 132. Web hook debugging information</div>
805
- </div>
806
- <div class="paragraph">
807
- <p>The other great feature of this is that you can redeliver any of the payloads to test your service easily.</p>
808
- </div>
809
- <div class="paragraph">
810
- <p>For more information on how to write webhooks and all the different event types you can listen for, go to the GitHub Developer documentation at <a href="https://developer.github.com/webhooks/" class="bare">https://developer.github.com/webhooks/</a>.</p>
811
- </div>
812
- </div>
813
- </div>
814
- <div class="sect3">
815
- <h3 id="_the_github_api">The GitHub API</h3>
816
- <div class="paragraph">
817
- <p>
818
- Services and hooks give you a way to receive push notifications about events that happen on your repositories, but what if you need more information about these events?
819
- What if you need to automate something like adding collaborators or labeling issues?</p>
820
- </div>
821
- <div class="paragraph">
822
- <p>This is where the GitHub API comes in handy.
823
- GitHub has tons of API endpoints for doing nearly anything you can do on the website in an automated fashion.
824
- In this section we’ll learn how to authenticate and connect to the API, how to comment on an issue and how to change the status of a Pull Request through the API.</p>
825
- </div>
826
- </div>
827
- <div class="sect3">
828
- <h3 id="_basic_usage_2">Basic Usage</h3>
829
- <div class="paragraph">
830
- <p>The most basic thing you can do is a simple GET request on an endpoint that doesn’t require authentication.
831
- This could be a user or read-only information on an open source project.
832
- For example, if we want to know more about a user named “schacon”, we can run something like this:</p>
833
- </div>
834
- <div class="listingblock">
835
- <div class="content">
836
- <pre class="highlight"><code class="language-javascript" data-lang="javascript">$ curl https://api.github.com/users/schacon
837
- {
838
- "login": "schacon",
839
- "id": 70,
840
- "avatar_url": "https://avatars.githubusercontent.com/u/70",
841
- # …
842
- "name": "Scott Chacon",
843
- "company": "GitHub",
844
- "following": 19,
845
- "created_at": "2008-01-27T17:19:28Z",
846
- "updated_at": "2014-06-10T02:37:23Z"
847
- }</code></pre>
848
- </div>
849
- </div>
850
- <div class="paragraph">
851
- <p>There are tons of endpoints like this to get information about organizations, projects, issues, commits — just about anything you can publicly see on GitHub.
852
- You can even use the API to render arbitrary Markdown or find a <code>.gitignore</code> template.</p>
853
- </div>
854
- <div class="listingblock">
855
- <div class="content">
856
- <pre class="highlight"><code class="language-javascript" data-lang="javascript">$ curl https://api.github.com/gitignore/templates/Java
857
- {
858
- "name": "Java",
859
- "source": "*.class
860
-
861
- # Mobile Tools for Java (J2ME)
862
- .mtj.tmp/
863
-
864
- # Package Files #
865
- *.jar
866
- *.war
867
- *.ear
868
-
869
- # virtual machine crash logs, see https://www.java.com/en/download/help/error_hotspot.xml
870
- hs_err_pid*
871
- "
872
- }</code></pre>
873
- </div>
874
- </div>
875
- </div>
876
- <div class="sect3">
877
- <h3 id="_commenting_on_an_issue">Commenting on an Issue</h3>
878
- <div class="paragraph">
879
- <p>However, if you want to do an action on the website such as comment on an Issue or Pull Request or if you want to view or interact with private content, you’ll need to authenticate.</p>
880
- </div>
881
- <div class="paragraph">
882
- <p>There are several ways to authenticate.
883
- You can use basic authentication with just your username and password, but generally it’s a better idea to use a personal access token.
884
- You can generate this from the “Applications” tab of your settings page.</p>
885
- </div>
886
- <div id="_access_token" class="imageblock">
887
- <div class="content">
888
- <img src="images/scripting-05-access-token.png" alt="Access Token">
889
- </div>
890
- <div class="title">Figure 133. Generate your access token from the “Applications” tab of your settings page</div>
891
- </div>
892
- <div class="paragraph">
893
- <p>It will ask you which scopes you want for this token and a description.
894
- Make sure to use a good description so you feel comfortable removing the token when your script or application is no longer used.</p>
895
- </div>
896
- <div class="paragraph">
897
- <p>GitHub will only show you the token once, so be sure to copy it.
898
- You can now use this to authenticate in your script instead of using a username and password.
899
- This is nice because you can limit the scope of what you want to do and the token is revocable.</p>
900
- </div>
901
- <div class="paragraph">
902
- <p>This also has the added advantage of increasing your rate limit.
903
- Without authenticating, you will be limited to 60 requests per hour.
904
- If you authenticate you can make up to 5,000 requests per hour.</p>
905
- </div>
906
- <div class="paragraph">
907
- <p>So let’s use it to make a comment on one of our issues.
908
- Let’s say we want to leave a comment on a specific issue, Issue #6.
909
- To do so we have to do an HTTP POST request to <code>repos/&lt;user&gt;/&lt;repo&gt;/issues/&lt;num&gt;/comments</code> with the token we just generated as an Authorization header.</p>
910
- </div>
911
- <div class="listingblock">
912
- <div class="content">
913
- <pre class="highlight"><code class="language-javascript" data-lang="javascript">$ curl -H "Content-Type: application/json" \
914
- -H "Authorization: token TOKEN" \
915
- --data '{"body":"A new comment, :+1:"}' \
916
- https://api.github.com/repos/schacon/blink/issues/6/comments
917
- {
918
- "id": 58322100,
919
- "html_url": "https://github.com/schacon/blink/issues/6#issuecomment-58322100",
920
- ...
921
- "user": {
922
- "login": "tonychacon",
923
- "id": 7874698,
924
- "avatar_url": "https://avatars.githubusercontent.com/u/7874698?v=2",
925
- "type": "User",
926
- },
927
- "created_at": "2014-10-08T07:48:19Z",
928
- "updated_at": "2014-10-08T07:48:19Z",
929
- "body": "A new comment, :+1:"
930
- }</code></pre>
931
- </div>
932
- </div>
933
- <div class="paragraph">
934
- <p>Now if you go to that issue, you can see the comment that we just successfully posted as in <a href="ch00/_api_comment.html">A comment posted from the GitHub API</a>.</p>
935
- </div>
936
- <div id="_api_comment" class="imageblock">
937
- <div class="content">
938
- <img src="images/scripting-06-comment.png" alt="API Comment">
939
- </div>
940
- <div class="title">Figure 134. A comment posted from the GitHub API</div>
941
- </div>
942
- <div class="paragraph">
943
- <p>You can use the API to do just about anything you can do on the website — creating and setting milestones, assigning people to Issues and Pull Requests, creating and changing labels, accessing commit data, creating new commits and branches, opening, closing or merging Pull Requests, creating and editing teams, commenting on lines of code in a Pull Request, searching the site and on and on.</p>
944
- </div>
945
- </div>
946
- <div class="sect3">
947
- <h3 id="_changing_the_status_of_a_pull_request">Changing the Status of a Pull Request</h3>
948
- <div class="paragraph">
949
- <p>There is one final example we’ll look at since it’s really useful if you’re working with Pull Requests.
950
- Each commit can have one or more statuses associated with it and there is an API to add and query that status.</p>
951
- </div>
952
- <div class="paragraph">
953
- <p>Most of the Continuous Integration and testing services make use of this API to react to pushes by testing the code that was pushed, and then report back if that commit has passed all the tests.
954
- You could also use this to check if the commit message is properly formatted, if the submitter followed all your contribution guidelines, if the commit was validly signed — any number of things.</p>
955
- </div>
956
- <div class="paragraph">
957
- <p>Let’s say you set up a webhook on your repository that hits a small web service that checks for a <code>Signed-off-by</code> string in the commit message.</p>
958
- </div>
959
- <div class="listingblock">
960
- <div class="content">
961
- <pre class="highlight"><code class="language-ruby" data-lang="ruby">require 'httparty'
962
- require 'sinatra'
963
- require 'json'
964
-
965
- post '/payload' do
966
- push = JSON.parse(request.body.read) # parse the JSON
967
- repo_name = push['repository']['full_name']
968
-
969
- # look through each commit message
970
- push["commits"].each do |commit|
971
-
972
- # look for a Signed-off-by string
973
- if /Signed-off-by/.match commit['message']
974
- state = 'success'
975
- description = 'Successfully signed off!'
976
- else
977
- state = 'failure'
978
- description = 'No signoff found.'
979
- end
980
-
981
- # post status to GitHub
982
- sha = commit["id"]
983
- status_url = "https://api.github.com/repos/#{repo_name}/statuses/#{sha}"
984
-
985
- status = {
986
- "state" =&gt; state,
987
- "description" =&gt; description,
988
- "target_url" =&gt; "http://example.com/how-to-signoff",
989
- "context" =&gt; "validate/signoff"
990
- }
991
- HTTParty.post(status_url,
992
- :body =&gt; status.to_json,
993
- :headers =&gt; {
994
- 'Content-Type' =&gt; 'application/json',
995
- 'User-Agent' =&gt; 'tonychacon/signoff',
996
- 'Authorization' =&gt; "token #{ENV['TOKEN']}" }
997
- )
998
- end
999
- end</code></pre>
1000
- </div>
1001
- </div>
1002
- <div class="paragraph">
1003
- <p>Hopefully this is fairly simple to follow.
1004
- In this web hook handler we look through each commit that was just pushed, we look for the string 'Signed-off-by' in the commit message and finally we POST via HTTP to the <code>/repos/&lt;user&gt;/&lt;repo&gt;/statuses/&lt;commit_sha&gt;</code> API endpoint with the status.</p>
1005
- </div>
1006
- <div class="paragraph">
1007
- <p>In this case you can send a state ('success', 'failure', 'error'), a description of what happened, a target URL the user can go to for more information and a “context” in case there are multiple statuses for a single commit.
1008
- For example, a testing service may provide a status and a validation service like this may also provide a status — the “context” field is how they’re differentiated.</p>
1009
- </div>
1010
- <div class="paragraph">
1011
- <p>If someone opens a new Pull Request on GitHub and this hook is set up, you may see something like <a href="ch00/_commit_status.html">Commit status via the API</a>.</p>
1012
- </div>
1013
- <div id="_commit_status" class="imageblock">
1014
- <div class="content">
1015
- <img src="images/scripting-07-status.png" alt="Commit status">
1016
- </div>
1017
- <div class="title">Figure 135. Commit status via the API</div>
1018
- </div>
1019
- <div class="paragraph">
1020
- <p>You can now see a little green check mark next to the commit that has a “Signed-off-by” string in the message and a red cross through the one where the author forgot to sign off.
1021
- You can also see that the Pull Request takes the status of the last commit on the branch and warns you if it is a failure.
1022
- This is really useful if you’re using this API for test results so you don’t accidentally merge something where the last commit is failing tests.</p>
1023
- </div>
1024
- </div>
1025
- <div class="sect3">
1026
- <h3 id="_octokit">Octokit</h3>
1027
- <div class="paragraph">
1028
- <p>Though we’ve been doing nearly everything through <code>curl</code> and simple HTTP requests in these examples, several open-source libraries exist that make this API available in a more idiomatic way.
1029
- At the time of this writing, the supported languages include Go, Objective-C, Ruby, and .NET.
1030
- Check out <a href="https://github.com/octokit" class="bare">https://github.com/octokit</a> for more information on these, as they handle much of the HTTP for you.</p>
1031
- </div>
1032
- <div class="paragraph">
1033
- <p>Hopefully these tools can help you customize and modify GitHub to work better for your specific workflows.
1034
- For complete documentation on the entire API as well as guides for common tasks, check out <a href="https://developer.github.com" class="bare">https://developer.github.com</a>.</p>
1035
- </div>
1036
- </div>
1037
- <div id="nav"><a href="ch00/_team_page.html">prev</a> | <a href="GitHub-Summary.html">next</a></div></div>
1038
- </div>
1039
-
1040
- </div>
1041
- </div>
1042
- <footer>
1043
- <div class="site-source">
1044
- <a href="https://git-scm.com/site">About this site</a><br>
1045
- Patches, suggestions, and comments are welcome.
1046
- </div>
1047
- <div class="sfc-member">
1048
- Git is a member of <a href="https://git-scm.com/sfc">Software Freedom Conservancy</a>
1049
- </div>
1050
- </footer>
1051
- <a href="ch00/_commit_status.html#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top">
1052
- <img src="../../../images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/>
1053
- </a>
1054
- <script src="../../../assets/application-38b0d42ff05ffea45841edebbd14b75b89585646153808e82907c2c5c11f324b.js"></script>
1055
-
1056
- </div>
1057
-
1058
- </body>
1059
- </html>