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,1003 +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 - Libgit2</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/_libgit2_bindings.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" >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" class=active>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>A2.2 Appendix B: Embedding Git in your Applications - Libgit2</h1>
675
- <div>
676
- <h2 id="_libgit2">Libgit2</h2>
677
- <div class="paragraph">
678
- <p>
679
- Another option at your disposal is to use Libgit2.
680
- Libgit2 is a dependency-free implementation of Git, with a focus on having a nice API for use within other programs.
681
- You can find it at <a href="https://libgit2.org" class="bare">https://libgit2.org</a>.</p>
682
- </div>
683
- <div class="paragraph">
684
- <p>First, let’s take a look at what the C API looks like.
685
- Here’s a whirlwind tour:</p>
686
- </div>
687
- <div class="listingblock">
688
- <div class="content">
689
- <pre class="highlight"><code class="language-c" data-lang="c">// Open a repository
690
- git_repository *repo;
691
- int error = git_repository_open(&amp;repo, "/path/to/repository");
692
-
693
- // Dereference HEAD to a commit
694
- git_object *head_commit;
695
- error = git_revparse_single(&amp;head_commit, repo, "HEAD^{commit}");
696
- git_commit *commit = (git_commit*)head_commit;
697
-
698
- // Print some of the commit's properties
699
- printf("%s", git_commit_message(commit));
700
- const git_signature *author = git_commit_author(commit);
701
- printf("%s &lt;%s&gt;\n", author-&gt;name, author-&gt;email);
702
- const git_oid *tree_id = git_commit_tree_id(commit);
703
-
704
- // Cleanup
705
- git_commit_free(commit);
706
- git_repository_free(repo);</code></pre>
707
- </div>
708
- </div>
709
- <div class="paragraph">
710
- <p>The first couple of lines open a Git repository.
711
- The <code>git_repository</code> type represents a handle to a repository with a cache in memory.
712
- This is the simplest method, for when you know the exact path to a repository’s working directory or <code>.git</code> folder.
713
- There’s also the <code>git_repository_open_ext</code> which includes options for searching, <code>git_clone</code> and friends for making a local clone of a remote repository, and <code>git_repository_init</code> for creating an entirely new repository.</p>
714
- </div>
715
- <div class="paragraph">
716
- <p>The second chunk of code uses rev-parse syntax (see <a href="ch00/_branch_references.html">Branch References</a> for more on this) to get the commit that HEAD eventually points to.
717
- The type returned is a <code>git_object</code> pointer, which represents something that exists in the Git object database for a repository.
718
- <code>git_object</code> is actually a “parent” type for several different kinds of objects; the memory layout for each of the “child” types is the same as for <code>git_object</code>, so you can safely cast to the right one.
719
- In this case, <code>git_object_type(commit)</code> would return <code>GIT_OBJ_COMMIT</code>, so it’s safe to cast to a <code>git_commit</code> pointer.</p>
720
- </div>
721
- <div class="paragraph">
722
- <p>The next chunk shows how to access the commit’s properties.
723
- The last line here uses a <code>git_oid</code> type; this is Libgit2’s representation for a SHA-1 hash.</p>
724
- </div>
725
- <div class="paragraph">
726
- <p>From this sample, a couple of patterns have started to emerge:</p>
727
- </div>
728
- <div class="ulist">
729
- <ul>
730
- <li>
731
- <p>If you declare a pointer and pass a reference to it into a Libgit2 call, that call will probably return an integer error code.
732
- A <code>0</code> value indicates success; anything less is an error.</p>
733
- </li>
734
- <li>
735
- <p>If Libgit2 populates a pointer for you, you’re responsible for freeing it.</p>
736
- </li>
737
- <li>
738
- <p>If Libgit2 returns a <code>const</code> pointer from a call, you don’t have to free it, but it will become invalid when the object it belongs to is freed.</p>
739
- </li>
740
- <li>
741
- <p>Writing C is a bit painful.</p>
742
- </li>
743
- </ul>
744
- </div>
745
- <div class="paragraph">
746
- <p>
747
- That last one means it isn’t very probable that you’ll be writing C when using Libgit2.
748
- Fortunately, there are a number of language-specific bindings available that make it fairly easy to work with Git repositories from your specific language and environment.
749
- Let’s take a look at the above example written using the Ruby bindings for Libgit2, which are named Rugged, and can be found at <a href="https://github.com/libgit2/rugged" class="bare">https://github.com/libgit2/rugged</a>.</p>
750
- </div>
751
- <div class="listingblock">
752
- <div class="content">
753
- <pre class="highlight"><code class="language-ruby" data-lang="ruby">repo = Rugged::Repository.new('path/to/repository')
754
- commit = repo.head.target
755
- puts commit.message
756
- puts "#{commit.author[:name]} &lt;#{commit.author[:email]}&gt;"
757
- tree = commit.tree</code></pre>
758
- </div>
759
- </div>
760
- <div class="paragraph">
761
- <p>As you can see, the code is much less cluttered.
762
- Firstly, Rugged uses exceptions; it can raise things like <code>ConfigError</code> or <code>ObjectError</code> to signal error conditions.
763
- Secondly, there’s no explicit freeing of resources, since Ruby is garbage-collected.
764
- Let’s take a look at a slightly more complicated example: crafting a commit from scratch</p>
765
- </div>
766
- <div class="listingblock">
767
- <div class="content">
768
- <pre class="highlight"><code class="language-ruby" data-lang="ruby">blob_id = repo.write("Blob contents", :blob) # <b class="conum">(1)</b>
769
-
770
- index = repo.index
771
- index.read_tree(repo.head.target.tree)
772
- index.add(:path =&gt; 'newfile.txt', :oid =&gt; blob_id) # <b class="conum">(2)</b>
773
-
774
- sig = {
775
- :email =&gt; "bob@example.com",
776
- :name =&gt; "Bob User",
777
- :time =&gt; Time.now,
778
- }
779
-
780
- commit_id = Rugged::Commit.create(repo,
781
- :tree =&gt; index.write_tree(repo), # <b class="conum">(3)</b>
782
- :author =&gt; sig,
783
- :committer =&gt; sig, # <b class="conum">(4)</b>
784
- :message =&gt; "Add newfile.txt", # <b class="conum">(5)</b>
785
- :parents =&gt; repo.empty? ? [] : [ repo.head.target ].compact, # <b class="conum">(6)</b>
786
- :update_ref =&gt; 'HEAD', # <b class="conum">(7)</b>
787
- )
788
- commit = repo.lookup(commit_id) # <b class="conum">(8)</b></code></pre>
789
- </div>
790
- </div>
791
- <div class="colist arabic">
792
- <ol>
793
- <li>
794
- <p>Create a new blob, which contains the contents of a new file.</p>
795
- </li>
796
- <li>
797
- <p>Populate the index with the head commit’s tree, and add the new file at the path <code>newfile.txt</code>.</p>
798
- </li>
799
- <li>
800
- <p>This creates a new tree in the ODB, and uses it for the new commit.</p>
801
- </li>
802
- <li>
803
- <p>We use the same signature for both the author and committer fields.</p>
804
- </li>
805
- <li>
806
- <p>The commit message.</p>
807
- </li>
808
- <li>
809
- <p>When creating a commit, you have to specify the new commit’s parents.
810
- This uses the tip of HEAD for the single parent.</p>
811
- </li>
812
- <li>
813
- <p>Rugged (and Libgit2) can optionally update a reference when making a commit.</p>
814
- </li>
815
- <li>
816
- <p>The return value is the SHA-1 hash of a new commit object, which you can then use to get a <code>Commit</code> object.</p>
817
- </li>
818
- </ol>
819
- </div>
820
- <div class="paragraph">
821
- <p>The Ruby code is nice and clean, but since Libgit2 is doing the heavy lifting, this code will run pretty fast, too.
822
- If you’re not a rubyist, we touch on some other bindings in <a href="ch00/_libgit2_bindings.html">Other Bindings</a>.</p>
823
- </div>
824
- <div class="sect3">
825
- <h3 id="_advanced_functionality">Advanced Functionality</h3>
826
- <div class="paragraph">
827
- <p>Libgit2 has a couple of capabilities that are outside the scope of core Git.
828
- One example is pluggability: Libgit2 allows you to provide custom “backends” for several types of operation, so you can store things in a different way than stock Git does.
829
- Libgit2 allows custom backends for configuration, ref storage, and the object database, among other things.</p>
830
- </div>
831
- <div class="paragraph">
832
- <p>Let’s take a look at how this works.
833
- The code below is borrowed from the set of backend examples provided by the Libgit2 team (which can be found at <a href="https://github.com/libgit2/libgit2-backends" class="bare">https://github.com/libgit2/libgit2-backends</a>).
834
- Here’s how a custom backend for the object database is set up:</p>
835
- </div>
836
- <div class="listingblock">
837
- <div class="content">
838
- <pre class="highlight"><code class="language-c" data-lang="c">git_odb *odb;
839
- int error = git_odb_new(&amp;odb); // <b class="conum">(1)</b>
840
-
841
- git_odb_backend *my_backend;
842
- error = git_odb_backend_mine(&amp;my_backend, /*…*/); // <b class="conum">(2)</b>
843
-
844
- error = git_odb_add_backend(odb, my_backend, 1); // <b class="conum">(3)</b>
845
-
846
- git_repository *repo;
847
- error = git_repository_open(&amp;repo, "some-path");
848
- error = git_repository_set_odb(repo, odb); // <b class="conum">(4)</b></code></pre>
849
- </div>
850
- </div>
851
- <div class="paragraph">
852
- <p><em>Note that errors are captured, but not handled. We hope your code is better than ours.</em></p>
853
- </div>
854
- <div class="colist arabic">
855
- <ol>
856
- <li>
857
- <p>Initialize an empty object database (ODB) “frontend,” which will act as a container for the “backends” which are the ones doing the real work.</p>
858
- </li>
859
- <li>
860
- <p>Initialize a custom ODB backend.</p>
861
- </li>
862
- <li>
863
- <p>Add the backend to the frontend.</p>
864
- </li>
865
- <li>
866
- <p>Open a repository, and set it to use our ODB to look up objects.</p>
867
- </li>
868
- </ol>
869
- </div>
870
- <div class="paragraph">
871
- <p>But what is this <code>git_odb_backend_mine</code> thing?
872
- Well, that’s the constructor for your own ODB implementation, and you can do whatever you want in there, so long as you fill in the <code>git_odb_backend</code> structure properly.
873
- Here’s what it <em>could</em> look like:</p>
874
- </div>
875
- <div class="listingblock">
876
- <div class="content">
877
- <pre class="highlight"><code class="language-c" data-lang="c">typedef struct {
878
- git_odb_backend parent;
879
-
880
- // Some other stuff
881
- void *custom_context;
882
- } my_backend_struct;
883
-
884
- int git_odb_backend_mine(git_odb_backend **backend_out, /*…*/)
885
- {
886
- my_backend_struct *backend;
887
-
888
- backend = calloc(1, sizeof (my_backend_struct));
889
-
890
- backend-&gt;custom_context = …;
891
-
892
- backend-&gt;parent.read = &amp;my_backend__read;
893
- backend-&gt;parent.read_prefix = &amp;my_backend__read_prefix;
894
- backend-&gt;parent.read_header = &amp;my_backend__read_header;
895
- // …
896
-
897
- *backend_out = (git_odb_backend *) backend;
898
-
899
- return GIT_SUCCESS;
900
- }</code></pre>
901
- </div>
902
- </div>
903
- <div class="paragraph">
904
- <p>The subtlest constraint here is that <code>my_backend_struct’s first member must be a `git_odb_backend</code> structure; this ensures that the memory layout is what the Libgit2 code expects it to be.
905
- The rest of it is arbitrary; this structure can be as large or small as you need it to be.</p>
906
- </div>
907
- <div class="paragraph">
908
- <p>The initialization function allocates some memory for the structure, sets up the custom context, and then fills in the members of the <code>parent</code> structure that it supports.
909
- Take a look at the <code>include/git2/sys/odb_backend.h</code> file in the Libgit2 source for a complete set of call signatures; your particular use case will help determine which of these you’ll want to support.</p>
910
- </div>
911
- </div>
912
- <div class="sect3">
913
- <h3 id="_libgit2_bindings">Other Bindings</h3>
914
- <div class="paragraph">
915
- <p>Libgit2 has bindings for many languages.
916
- Here we show a small example using a few of the more complete bindings packages as of this writing; libraries exist for many other languages, including C++, Go, Node.js, Erlang, and the JVM, all in various stages of maturity.
917
- The official collection of bindings can be found by browsing the repositories at <a href="https://github.com/libgit2" class="bare">https://github.com/libgit2</a>.
918
- The code we’ll write will return the commit message from the commit eventually pointed to by HEAD (sort of like <code>git log -1</code>).</p>
919
- </div>
920
- <div class="sect4">
921
- <h4 id="_libgit2sharp">LibGit2Sharp</h4>
922
- <div class="paragraph">
923
- <p>
924
- If you’re writing a .NET or Mono application, LibGit2Sharp (<a href="https://github.com/libgit2/libgit2sharp" class="bare">https://github.com/libgit2/libgit2sharp</a>) is what you’re looking for.
925
- The bindings are written in C#, and great care has been taken to wrap the raw Libgit2 calls with native-feeling CLR APIs.
926
- Here’s what our example program looks like:</p>
927
- </div>
928
- <div class="listingblock">
929
- <div class="content">
930
- <pre class="highlight"><code class="language-csharp" data-lang="csharp">new Repository(@"C:\path\to\repo").Head.Tip.Message;</code></pre>
931
- </div>
932
- </div>
933
- <div class="paragraph">
934
- <p>For desktop Windows applications, there’s even a NuGet package that will help you get started quickly.</p>
935
- </div>
936
- </div>
937
- <div class="sect4">
938
- <h4 id="_objective_git">objective-git</h4>
939
- <div class="paragraph">
940
- <p>
941
- If your application is running on an Apple platform, you’re likely using Objective-C as your implementation language.
942
- Objective-Git (<a href="https://github.com/libgit2/objective-git" class="bare">https://github.com/libgit2/objective-git</a>) is the name of the Libgit2 bindings for that environment.
943
- The example program looks like this:</p>
944
- </div>
945
- <div class="listingblock">
946
- <div class="content">
947
- <pre class="highlight"><code class="language-objc" data-lang="objc">GTRepository *repo =
948
- [[GTRepository alloc] initWithURL:[NSURL fileURLWithPath: @"/path/to/repo"] error:NULL];
949
- NSString *msg = [[[repo headReferenceWithError:NULL] resolvedTarget] message];</code></pre>
950
- </div>
951
- </div>
952
- <div class="paragraph">
953
- <p>Objective-git is fully interoperable with Swift, so don’t fear if you’ve left Objective-C behind.</p>
954
- </div>
955
- </div>
956
- <div class="sect4">
957
- <h4 id="_pygit2">pygit2</h4>
958
- <div class="paragraph">
959
- <p>
960
- The bindings for Libgit2 in Python are called Pygit2, and can be found at <a href="https://www.pygit2.org" class="bare">https://www.pygit2.org</a>.
961
- Our example program:</p>
962
- </div>
963
- <div class="listingblock">
964
- <div class="content">
965
- <pre class="highlight"><code class="language-python" data-lang="python">pygit2.Repository("/path/to/repo") # open repository
966
- .head # get the current branch
967
- .peel(pygit2.Commit) # walk down to the commit
968
- .message # read the message</code></pre>
969
- </div>
970
- </div>
971
- </div>
972
- </div>
973
- <div class="sect3">
974
- <h3 id="_further_reading">Further Reading</h3>
975
- <div class="paragraph">
976
- <p>Of course, a full treatment of Libgit2’s capabilities is outside the scope of this book.
977
- If you want more information on Libgit2 itself, there’s API documentation at <a href="https://libgit2.github.com/libgit2" class="bare">https://libgit2.github.com/libgit2</a>, and a set of guides at <a href="https://libgit2.github.com/docs" class="bare">https://libgit2.github.com/docs</a>.
978
- For the other bindings, check the bundled README and tests; there are often small tutorials and pointers to further reading there.</p>
979
- </div>
980
- </div>
981
- <div id="nav"><a href="./Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git.html">prev</a> | <a href="./Appendix-B:-Embedding-Git-in-your-Applications-JGit.html">next</a></div></div>
982
- </div>
983
-
984
- </div>
985
- </div>
986
- <footer>
987
- <div class="site-source">
988
- <a href="https://git-scm.com/site">About this site</a><br>
989
- Patches, suggestions, and comments are welcome.
990
- </div>
991
- <div class="sfc-member">
992
- Git is a member of <a href="https://git-scm.com/sfc">Software Freedom Conservancy</a>
993
- </div>
994
- </footer>
995
- <a href="ch00/_libgit2_bindings.html#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top">
996
- <img src="../../../images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/>
997
- </a>
998
- <script src="../../../assets/application-38b0d42ff05ffea45841edebbd14b75b89585646153808e82907c2c5c11f324b.js"></script>
999
-
1000
- </div>
1001
-
1002
- </body>
1003
- </html>