wayfarer 0.4.7 → 0.4.9

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 (773) hide show
  1. checksums.yaml +4 -4
  2. data/.env +17 -0
  3. data/.github/workflows/lint.yaml +8 -6
  4. data/.github/workflows/release.yaml +2 -3
  5. data/.github/workflows/tests.yaml +5 -14
  6. data/.gitignore +2 -2
  7. data/.rubocop.yml +31 -0
  8. data/.vale.ini +6 -3
  9. data/Dockerfile +3 -2
  10. data/Gemfile +21 -0
  11. data/Gemfile.lock +233 -128
  12. data/Rakefile +7 -0
  13. data/docker-compose.yml +13 -14
  14. data/docs/guides/callbacks.md +3 -1
  15. data/docs/guides/configuration.md +10 -35
  16. data/docs/guides/development.md +67 -0
  17. data/docs/guides/handlers.md +7 -7
  18. data/docs/guides/jobs.md +54 -11
  19. data/docs/guides/networking/custom_adapters.md +109 -81
  20. data/docs/guides/networking/http.md +1 -1
  21. data/docs/guides/pages.md +24 -22
  22. data/docs/guides/routing.md +116 -34
  23. data/docs/guides/tasks.md +30 -10
  24. data/docs/guides/tutorial.md +23 -17
  25. data/docs/guides/user_agents.md +11 -9
  26. data/lib/wayfarer/base.rb +9 -8
  27. data/lib/wayfarer/batch_completion.rb +18 -14
  28. data/lib/wayfarer/callbacks.rb +14 -14
  29. data/lib/wayfarer/cli/route_printer.rb +78 -96
  30. data/lib/wayfarer/cli.rb +12 -30
  31. data/lib/wayfarer/gc.rb +6 -1
  32. data/lib/wayfarer/kv.rb +28 -0
  33. data/lib/wayfarer/middleware/base.rb +0 -4
  34. data/lib/wayfarer/middleware/chain.rb +7 -1
  35. data/lib/wayfarer/middleware/content_type.rb +20 -15
  36. data/lib/wayfarer/middleware/controller.rb +1 -1
  37. data/lib/wayfarer/middleware/dedup.rb +9 -3
  38. data/lib/wayfarer/middleware/dispatch.rb +7 -2
  39. data/lib/wayfarer/middleware/normalize.rb +4 -12
  40. data/lib/wayfarer/middleware/router.rb +1 -1
  41. data/lib/wayfarer/middleware/uri_parser.rb +4 -3
  42. data/lib/wayfarer/networking/context.rb +13 -2
  43. data/lib/wayfarer/networking/ferrum.rb +2 -5
  44. data/lib/wayfarer/networking/follow.rb +2 -1
  45. data/lib/wayfarer/networking/pool.rb +11 -12
  46. data/lib/wayfarer/networking/selenium.rb +15 -7
  47. data/lib/wayfarer/networking/strategy.rb +6 -2
  48. data/lib/wayfarer/page.rb +0 -2
  49. data/lib/wayfarer/parsing/xml.rb +1 -1
  50. data/lib/wayfarer/parsing.rb +2 -5
  51. data/lib/wayfarer/redis/barrier.rb +15 -2
  52. data/lib/wayfarer/redis/counter.rb +1 -2
  53. data/lib/wayfarer/routing/dsl.rb +166 -31
  54. data/lib/wayfarer/routing/hash_stack.rb +33 -0
  55. data/lib/wayfarer/routing/matchers/custom.rb +8 -5
  56. data/lib/wayfarer/routing/matchers/{suffix.rb → empty_params.rb} +2 -6
  57. data/lib/wayfarer/routing/matchers/host.rb +15 -9
  58. data/lib/wayfarer/routing/matchers/path.rb +11 -33
  59. data/lib/wayfarer/routing/matchers/query.rb +41 -17
  60. data/lib/wayfarer/routing/matchers/result.rb +12 -0
  61. data/lib/wayfarer/routing/matchers/scheme.rb +13 -5
  62. data/lib/wayfarer/routing/matchers/url.rb +13 -5
  63. data/lib/wayfarer/routing/path_consumer.rb +130 -0
  64. data/lib/wayfarer/routing/path_finder.rb +151 -23
  65. data/lib/wayfarer/routing/result.rb +1 -1
  66. data/lib/wayfarer/routing/root_route.rb +14 -2
  67. data/lib/wayfarer/routing/route.rb +71 -14
  68. data/lib/wayfarer/routing/serializable.rb +28 -0
  69. data/lib/wayfarer/routing/sub_route.rb +53 -0
  70. data/lib/wayfarer/routing/target_route.rb +17 -1
  71. data/lib/wayfarer/stringify.rb +1 -2
  72. data/lib/wayfarer/task.rb +3 -5
  73. data/lib/wayfarer/uri/normalization.rb +120 -0
  74. data/lib/wayfarer.rb +55 -10
  75. data/mise.toml +2 -0
  76. data/mkdocs.yml +8 -17
  77. data/rake/lint.rake +0 -96
  78. data/rake/release.rake +1 -13
  79. data/rake/tests.rake +8 -4
  80. data/requirements.txt +1 -1
  81. data/spec/factories/job.rb +8 -0
  82. data/spec/factories/middleware.rb +2 -2
  83. data/spec/factories/path_finder.rb +11 -0
  84. data/spec/factories/redis.rb +19 -0
  85. data/spec/factories/task.rb +39 -1
  86. data/spec/spec_helpers.rb +50 -57
  87. data/spec/support/active_job_helpers.rb +8 -0
  88. data/spec/support/integration_helpers.rb +21 -0
  89. data/spec/support/redis_helpers.rb +9 -0
  90. data/spec/support/test_app.rb +64 -43
  91. data/spec/{base_spec.rb → wayfarer/base_spec.rb} +32 -36
  92. data/spec/wayfarer/batch_completion_spec.rb +142 -0
  93. data/spec/wayfarer/cli/job_spec.rb +88 -0
  94. data/spec/wayfarer/cli/routing_spec.rb +322 -0
  95. data/spec/{cli → wayfarer/cli}/version_spec.rb +1 -1
  96. data/spec/wayfarer/gc_spec.rb +29 -0
  97. data/spec/{handler_spec.rb → wayfarer/handler_spec.rb} +1 -3
  98. data/spec/{integration → wayfarer/integration}/callbacks_spec.rb +9 -6
  99. data/spec/wayfarer/integration/content_type_spec.rb +37 -0
  100. data/spec/wayfarer/integration/custom_routing_spec.rb +51 -0
  101. data/spec/{integration → wayfarer/integration}/gc_spec.rb +9 -13
  102. data/spec/{integration → wayfarer/integration}/handler_spec.rb +9 -10
  103. data/spec/{integration → wayfarer/integration}/page_spec.rb +16 -14
  104. data/spec/{integration → wayfarer/integration}/params_spec.rb +4 -4
  105. data/spec/{integration → wayfarer/integration}/parsing_spec.rb +7 -32
  106. data/spec/wayfarer/integration/retry_spec.rb +112 -0
  107. data/spec/{integration → wayfarer/integration}/stage_spec.rb +6 -6
  108. data/spec/{middleware → wayfarer/middleware}/batch_completion_spec.rb +4 -5
  109. data/spec/{middleware → wayfarer/middleware}/chain_spec.rb +20 -15
  110. data/spec/{middleware → wayfarer/middleware}/content_type_spec.rb +18 -21
  111. data/spec/{middleware → wayfarer/middleware}/controller_spec.rb +25 -24
  112. data/spec/wayfarer/middleware/dedup_spec.rb +66 -0
  113. data/spec/wayfarer/middleware/normalize_spec.rb +32 -0
  114. data/spec/{middleware → wayfarer/middleware}/router_spec.rb +18 -20
  115. data/spec/{middleware → wayfarer/middleware}/stage_spec.rb +11 -10
  116. data/spec/wayfarer/middleware/uri_parser_spec.rb +63 -0
  117. data/spec/{middleware → wayfarer/middleware}/user_agent_spec.rb +34 -32
  118. data/spec/wayfarer/networking/capybara_spec.rb +13 -0
  119. data/spec/{networking → wayfarer/networking}/context_spec.rb +47 -38
  120. data/spec/wayfarer/networking/ferrum_spec.rb +13 -0
  121. data/spec/{networking → wayfarer/networking}/follow_spec.rb +9 -4
  122. data/spec/wayfarer/networking/http_spec.rb +12 -0
  123. data/spec/{networking → wayfarer/networking}/pool_spec.rb +11 -9
  124. data/spec/wayfarer/networking/selenium_spec.rb +12 -0
  125. data/spec/{networking → wayfarer/networking}/strategy.rb +35 -56
  126. data/spec/{page_spec.rb → wayfarer/page_spec.rb} +3 -3
  127. data/spec/{parsing → wayfarer/parsing}/json_spec.rb +1 -1
  128. data/spec/{parsing/xml_spec.rb → wayfarer/parsing/xml_parse_spec.rb} +4 -3
  129. data/spec/{redis → wayfarer/redis}/barrier_spec.rb +5 -4
  130. data/spec/wayfarer/redis/counter_spec.rb +34 -0
  131. data/spec/{redis → wayfarer/redis}/pool_spec.rb +3 -2
  132. data/spec/{routing → wayfarer/routing}/dsl_spec.rb +12 -22
  133. data/spec/wayfarer/routing/hash_stack_spec.rb +63 -0
  134. data/spec/wayfarer/routing/integration_spec.rb +101 -0
  135. data/spec/wayfarer/routing/matchers/custom_spec.rb +39 -0
  136. data/spec/wayfarer/routing/matchers/host_spec.rb +56 -0
  137. data/spec/wayfarer/routing/matchers/matcher.rb +17 -0
  138. data/spec/wayfarer/routing/matchers/path_spec.rb +43 -0
  139. data/spec/wayfarer/routing/matchers/query_spec.rb +123 -0
  140. data/spec/wayfarer/routing/matchers/scheme_spec.rb +45 -0
  141. data/spec/wayfarer/routing/matchers/url_spec.rb +33 -0
  142. data/spec/wayfarer/routing/path_consumer_spec.rb +123 -0
  143. data/spec/wayfarer/routing/path_finder_spec.rb +409 -0
  144. data/spec/wayfarer/routing/root_route_spec.rb +51 -0
  145. data/spec/wayfarer/routing/route_spec.rb +74 -0
  146. data/spec/wayfarer/routing/sub_route_spec.rb +103 -0
  147. data/spec/wayfarer/uri/normalization_spec.rb +98 -0
  148. data/spec/wayfarer_spec.rb +2 -2
  149. data/wayfarer.gemspec +17 -28
  150. metadata +183 -832
  151. data/.rbenv-gemsets +0 -1
  152. data/.ruby-version +0 -1
  153. data/RELEASING.md +0 -17
  154. data/docs/cookbook/user_agent.md +0 -7
  155. data/docs/design.md +0 -36
  156. data/docs/guides/jobs/error_handling.md +0 -40
  157. data/docs/reference/configuration.md +0 -36
  158. data/lib/wayfarer/middleware/lazy.rb +0 -11
  159. data/spec/batch_completion_spec.rb +0 -104
  160. data/spec/cli/job_spec.rb +0 -74
  161. data/spec/cli/routing_spec.rb +0 -101
  162. data/spec/fixtures/dummy_job.rb +0 -9
  163. data/spec/gc_spec.rb +0 -17
  164. data/spec/integration/content_type_spec.rb +0 -145
  165. data/spec/integration/routing_spec.rb +0 -18
  166. data/spec/middleware/dedup_spec.rb +0 -71
  167. data/spec/middleware/dispatch_spec.rb +0 -59
  168. data/spec/middleware/normalize_spec.rb +0 -60
  169. data/spec/middleware/uri_parser_spec.rb +0 -53
  170. data/spec/networking/capybara_spec.rb +0 -12
  171. data/spec/networking/ferrum_spec.rb +0 -12
  172. data/spec/networking/http_spec.rb +0 -12
  173. data/spec/networking/selenium_spec.rb +0 -12
  174. data/spec/redis/counter_spec.rb +0 -44
  175. data/spec/routing/integration_spec.rb +0 -110
  176. data/spec/routing/matchers/custom_spec.rb +0 -31
  177. data/spec/routing/matchers/host_spec.rb +0 -49
  178. data/spec/routing/matchers/path_spec.rb +0 -43
  179. data/spec/routing/matchers/query_spec.rb +0 -137
  180. data/spec/routing/matchers/scheme_spec.rb +0 -25
  181. data/spec/routing/matchers/suffix_spec.rb +0 -41
  182. data/spec/routing/matchers/uri_spec.rb +0 -27
  183. data/spec/routing/path_finder_spec.rb +0 -33
  184. data/spec/routing/root_route_spec.rb +0 -29
  185. data/spec/routing/route_spec.rb +0 -43
  186. data/spec/support/static/git-scm.com/assets/application-38b0d42ff05ffea45841edebbd14b75b89585646153808e82907c2c5c11f324b.js +0 -772
  187. data/spec/support/static/git-scm.com/assets/application-cafcf280f67db0e6d8168ba98a38da878769a9d5f37793b68ffb963a02d185e0.css +0 -1
  188. data/spec/support/static/git-scm.com/assets/modernize-b3ebe0c31c24f230dc62179d3e1030d2e57a53b1668d9382c0a27dbd44a94beb.js +0 -20
  189. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash.html +0 -751
  190. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-PowerShell.html +0 -804
  191. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Sublime-Text.html +0 -728
  192. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio-Code.html +0 -751
  193. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio.html +0 -740
  194. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh.html +0 -765
  195. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces.html +0 -931
  196. data/spec/support/static/git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Summary.html +0 -702
  197. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git.html +0 -720
  198. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Dulwich.html +0 -746
  199. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit.html +0 -889
  200. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2.html +0 -1003
  201. data/spec/support/static/git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-go-git.html +0 -792
  202. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Administration.html +0 -745
  203. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Basic-Snapshotting.html +0 -840
  204. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Branching-and-Merging.html +0 -829
  205. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Debugging.html +0 -731
  206. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Email.html +0 -766
  207. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-External-Systems.html +0 -721
  208. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects.html +0 -746
  209. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison.html +0 -735
  210. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Patching.html +0 -742
  211. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Plumbing-Commands.html +0 -715
  212. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Setup-and-Config.html +0 -863
  213. data/spec/support/static/git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects.html +0 -802
  214. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy.html +0 -1200
  215. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Attributes.html +0 -1134
  216. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Configuration.html +0 -1315
  217. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Git-Hooks.html +0 -876
  218. data/spec/support/static/git-scm.com/book/en/v2/Customizing-Git-Summary.html +0 -704
  219. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project.html +0 -1667
  220. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows.html +0 -859
  221. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project.html +0 -1354
  222. data/spec/support/static/git-scm.com/book/en/v2/Distributed-Git-Summary.html +0 -704
  223. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git.html +0 -735
  224. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-About-Version-Control.html +0 -783
  225. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup.html +0 -889
  226. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Getting-Help.html +0 -750
  227. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Installing-Git.html +0 -879
  228. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-Summary.html +0 -704
  229. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-The-Command-Line.html +0 -711
  230. data/spec/support/static/git-scm.com/book/en/v2/Getting-Started-What-is-Git?.html +0 -857
  231. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository.html +0 -816
  232. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Git-Aliases.html +0 -775
  233. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository.html +0 -1432
  234. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Summary.html +0 -703
  235. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Tagging.html +0 -1049
  236. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Undoing-Things.html +0 -998
  237. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History.html +0 -1172
  238. data/spec/support/static/git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes.html +0 -983
  239. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging.html +0 -1102
  240. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branch-Management.html +0 -946
  241. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell.html +0 -1020
  242. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Branching-Workflows.html +0 -786
  243. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Rebasing.html +0 -1028
  244. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Remote-Branches.html +0 -1009
  245. data/spec/support/static/git-scm.com/book/en/v2/Git-Branching-Summary.html +0 -705
  246. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Environment-Variables.html +0 -1009
  247. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Git-Objects.html +0 -1209
  248. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Git-References.html +0 -939
  249. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery.html +0 -1086
  250. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Packfiles.html +0 -876
  251. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain.html +0 -745
  252. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Summary.html +0 -708
  253. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-The-Refspec.html +0 -872
  254. data/spec/support/static/git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols.html +0 -1043
  255. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Advanced-Merging.html +0 -1605
  256. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Bundling.html +0 -888
  257. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Credential-Storage.html +0 -1035
  258. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git.html +0 -861
  259. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Interactive-Staging.html +0 -920
  260. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Replace.html +0 -949
  261. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Rerere.html +0 -983
  262. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Reset-Demystified.html +0 -1236
  263. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Revision-Selection.html +0 -1178
  264. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Rewriting-History.html +0 -1182
  265. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Searching.html +0 -875
  266. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work.html +0 -922
  267. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Stashing-and-Cleaning.html +0 -1039
  268. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Submodules.html +0 -1864
  269. data/spec/support/static/git-scm.com/book/en/v2/Git-Tools-Summary.html +0 -705
  270. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Client.html +0 -2656
  271. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git.html +0 -1741
  272. data/spec/support/static/git-scm.com/book/en/v2/Git-and-Other-Systems-Summary.html +0 -703
  273. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key.html +0 -759
  274. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server.html +0 -827
  275. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon.html +0 -775
  276. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-GitLab.html +0 -872
  277. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-GitWeb.html +0 -776
  278. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server.html +0 -870
  279. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Smart-HTTP.html +0 -789
  280. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Summary.html +0 -709
  281. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols.html +0 -963
  282. data/spec/support/static/git-scm.com/book/en/v2/Git-on-the-Server-Third-Party-Hosted-Options.html +0 -711
  283. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Account-Setup-and-Configuration.html +0 -858
  284. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project.html +0 -1502
  285. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Maintaining-a-Project.html +0 -1218
  286. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Managing-an-organization.html +0 -797
  287. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Scripting-GitHub.html +0 -1059
  288. data/spec/support/static/git-scm.com/book/en/v2/GitHub-Summary.html +0 -704
  289. data/spec/support/static/git-scm.com/book/en/v2/ch00/_abort_merge.html +0 -1605
  290. data/spec/support/static/git-scm.com/book/en/v2/ch00/_add_email_addresses.html +0 -858
  291. data/spec/support/static/git-scm.com/book/en/v2/ch00/_advanced_merging.html +0 -1605
  292. data/spec/support/static/git-scm.com/book/en/v2/ch00/_an_example_git_enforced_policy.html +0 -1200
  293. data/spec/support/static/git-scm.com/book/en/v2/ch00/_annotated_tags.html +0 -1049
  294. data/spec/support/static/git-scm.com/book/en/v2/ch00/_api_comment.html +0 -1059
  295. data/spec/support/static/git-scm.com/book/en/v2/ch00/_bare_repo.html +0 -827
  296. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_branching.html +0 -1102
  297. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_merge_conflicts.html +0 -1102
  298. data/spec/support/static/git-scm.com/book/en/v2/ch00/_basic_merging.html +0 -1102
  299. data/spec/support/static/git-scm.com/book/en/v2/ch00/_binary_search.html +0 -861
  300. data/spec/support/static/git-scm.com/book/en/v2/ch00/_branch_management.html +0 -946
  301. data/spec/support/static/git-scm.com/book/en/v2/ch00/_branch_references.html +0 -1178
  302. data/spec/support/static/git-scm.com/book/en/v2/ch00/_build_number.html +0 -1354
  303. data/spec/support/static/git-scm.com/book/en/v2/ch00/_bundling.html +0 -888
  304. data/spec/support/static/git-scm.com/book/en/v2/ch00/_changing_multiple.html +0 -1182
  305. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_out_conflicts.html +0 -1605
  306. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_out_remotes.html +0 -1354
  307. data/spec/support/static/git-scm.com/book/en/v2/ch00/_checking_status.html +0 -1432
  308. data/spec/support/static/git-scm.com/book/en/v2/ch00/_cloning_submodules.html +0 -1864
  309. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_guidelines.html +0 -1667
  310. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_ranges.html +0 -1178
  311. data/spec/support/static/git-scm.com/book/en/v2/ch00/_commit_status.html +0 -1059
  312. data/spec/support/static/git-scm.com/book/en/v2/ch00/_committing_changes.html +0 -1432
  313. data/spec/support/static/git-scm.com/book/en/v2/ch00/_contrib_file.html +0 -1218
  314. data/spec/support/static/git-scm.com/book/en/v2/ch00/_contributing_project.html +0 -1667
  315. data/spec/support/static/git-scm.com/book/en/v2/ch00/_create_new_branch.html +0 -1020
  316. data/spec/support/static/git-scm.com/book/en/v2/ch00/_credential_caching.html +0 -1035
  317. data/spec/support/static/git-scm.com/book/en/v2/ch00/_custom_importer.html +0 -1741
  318. data/spec/support/static/git-scm.com/book/en/v2/ch00/_data_recovery.html +0 -1086
  319. data/spec/support/static/git-scm.com/book/en/v2/ch00/_delete_branches.html +0 -1009
  320. data/spec/support/static/git-scm.com/book/en/v2/ch00/_editor.html +0 -889
  321. data/spec/support/static/git-scm.com/book/en/v2/ch00/_eg_task_lists.html +0 -1502
  322. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_hooks.html +0 -876
  323. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_notification.html +0 -1502
  324. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_notifications.html +0 -1218
  325. data/spec/support/static/git-scm.com/book/en/v2/ch00/_email_pr.html +0 -1218
  326. data/spec/support/static/git-scm.com/book/en/v2/ch00/_enforcing_commit_message_format.html +0 -1200
  327. data/spec/support/static/git-scm.com/book/en/v2/ch00/_example_markdown.html +0 -1502
  328. data/spec/support/static/git-scm.com/book/en/v2/ch00/_external_merge_tools.html +0 -1315
  329. data/spec/support/static/git-scm.com/book/en/v2/ch00/_fetch_and_push_on_different_repositories.html +0 -1502
  330. data/spec/support/static/git-scm.com/book/en/v2/ch00/_fetching_and_pulling.html +0 -983
  331. data/spec/support/static/git-scm.com/book/en/v2/ch00/_file_annotation.html +0 -861
  332. data/spec/support/static/git-scm.com/book/en/v2/ch00/_first_time.html +0 -889
  333. data/spec/support/static/git-scm.com/book/en/v2/ch00/_generate_ssh_key.html +0 -759
  334. data/spec/support/static/git-scm.com/book/en/v2/ch00/_getting_a_repo.html +0 -816
  335. data/spec/support/static/git-scm.com/book/en/v2/ch00/_getting_git_on_a_server.html +0 -827
  336. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_aliases.html +0 -775
  337. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_am.html +0 -1354
  338. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_amend.html +0 -1182
  339. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_branches_overview.html +0 -1020
  340. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_clean.html +0 -1039
  341. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_cloning.html +0 -816
  342. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_commit_objects.html +0 -1209
  343. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_config.html +0 -1315
  344. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_diff_staged.html +0 -1432
  345. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_gc.html +0 -1086
  346. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_grep.html +0 -875
  347. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_help.html +0 -750
  348. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_hooks.html +0 -876
  349. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_mv.html +0 -1432
  350. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_p4.html +0 -1741
  351. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_p4_branches.html +0 -2656
  352. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_reflog.html +0 -1178
  353. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_refs.html +0 -939
  354. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_reset.html +0 -1236
  355. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_stashing.html +0 -1039
  356. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_submodules.html +0 -1864
  357. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_svn.html +0 -2656
  358. data/spec/support/static/git-scm.com/book/en/v2/ch00/_git_tagging.html +0 -1049
  359. data/spec/support/static/git-scm.com/book/en/v2/ch00/_gitlab_groups_section.html +0 -872
  360. data/spec/support/static/git-scm.com/book/en/v2/ch00/_ignoring.html +0 -1432
  361. data/spec/support/static/git-scm.com/book/en/v2/ch00/_inspecting_remote.html +0 -983
  362. data/spec/support/static/git-scm.com/book/en/v2/ch00/_integration_manager.html +0 -859
  363. data/spec/support/static/git-scm.com/book/en/v2/ch00/_interactive_staging.html +0 -920
  364. data/spec/support/static/git-scm.com/book/en/v2/ch00/_keyword_expansion.html +0 -1134
  365. data/spec/support/static/git-scm.com/book/en/v2/ch00/_libgit2_bindings.html +0 -1003
  366. data/spec/support/static/git-scm.com/book/en/v2/ch00/_manual_remerge.html +0 -1605
  367. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_code.html +0 -1502
  368. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_drag.html +0 -1502
  369. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_emoji.html +0 -1502
  370. data/spec/support/static/git-scm.com/book/en/v2/ch00/_md_quote.html +0 -1502
  371. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_button.html +0 -1218
  372. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_log.html +0 -1605
  373. data/spec/support/static/git-scm.com/book/en/v2/ch00/_merge_rebase_work.html +0 -1028
  374. data/spec/support/static/git-scm.com/book/en/v2/ch00/_new_repo_dropdown.html +0 -1218
  375. data/spec/support/static/git-scm.com/book/en/v2/ch00/_not_center.html +0 -1218
  376. data/spec/support/static/git-scm.com/book/en/v2/ch00/_org_page.html +0 -797
  377. data/spec/support/static/git-scm.com/book/en/v2/ch00/_other_client_hooks.html +0 -876
  378. data/spec/support/static/git-scm.com/book/en/v2/ch00/_p4_git_fusion.html +0 -2656
  379. data/spec/support/static/git-scm.com/book/en/v2/ch00/_patches_from_email.html +0 -1354
  380. data/spec/support/static/git-scm.com/book/en/v2/ch00/_personal_avatar.html +0 -858
  381. data/spec/support/static/git-scm.com/book/en/v2/ch00/_plumbing_porcelain.html +0 -745
  382. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_closed.html +0 -1502
  383. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_discussion.html +0 -1502
  384. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_fail.html +0 -1502
  385. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_final.html +0 -1502
  386. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_references.html +0 -1502
  387. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_references_render.html +0 -1502
  388. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pr_refs.html +0 -1218
  389. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pre_merge_rebase_work.html +0 -1028
  390. data/spec/support/static/git-scm.com/book/en/v2/ch00/_preparing_release.html +0 -1354
  391. data/spec/support/static/git-scm.com/book/en/v2/ch00/_private_team.html +0 -1667
  392. data/spec/support/static/git-scm.com/book/en/v2/ch00/_project_over_email.html +0 -1667
  393. data/spec/support/static/git-scm.com/book/en/v2/ch00/_public_project.html +0 -1667
  394. data/spec/support/static/git-scm.com/book/en/v2/ch00/_publishing_submodules.html +0 -1864
  395. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_branches.html +0 -1009
  396. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_refspecs.html +0 -872
  397. data/spec/support/static/git-scm.com/book/en/v2/ch00/_pushing_remotes.html +0 -983
  398. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_cherry_pick.html +0 -1354
  399. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_peril.html +0 -1028
  400. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_rebase.html +0 -1028
  401. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebase_rebase_work.html +0 -1028
  402. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rebasing.html +0 -1028
  403. data/spec/support/static/git-scm.com/book/en/v2/ch00/_refspec.html +0 -872
  404. data/spec/support/static/git-scm.com/book/en/v2/ch00/_remote_branches.html +0 -1009
  405. data/spec/support/static/git-scm.com/book/en/v2/ch00/_remote_repos.html +0 -983
  406. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_file_every_commit.html +0 -1182
  407. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_files.html +0 -1432
  408. data/spec/support/static/git-scm.com/book/en/v2/ch00/_removing_objects.html +0 -1086
  409. data/spec/support/static/git-scm.com/book/en/v2/ch00/_replace.html +0 -949
  410. data/spec/support/static/git-scm.com/book/en/v2/ch00/_reverse_commit.html +0 -1605
  411. data/spec/support/static/git-scm.com/book/en/v2/ch00/_revision_selection.html +0 -1178
  412. data/spec/support/static/git-scm.com/book/en/v2/ch00/_rewriting_history.html +0 -1182
  413. data/spec/support/static/git-scm.com/book/en/v2/ch00/_searching.html +0 -875
  414. data/spec/support/static/git-scm.com/book/en/v2/ch00/_service_config.html +0 -1059
  415. data/spec/support/static/git-scm.com/book/en/v2/ch00/_services_hooks.html +0 -1059
  416. data/spec/support/static/git-scm.com/book/en/v2/ch00/_setting_up_server.html +0 -870
  417. data/spec/support/static/git-scm.com/book/en/v2/ch00/_sharing_tags.html +0 -1049
  418. data/spec/support/static/git-scm.com/book/en/v2/ch00/_signing.html +0 -922
  419. data/spec/support/static/git-scm.com/book/en/v2/ch00/_signing_commits.html +0 -922
  420. data/spec/support/static/git-scm.com/book/en/v2/ch00/_squashing.html +0 -1182
  421. data/spec/support/static/git-scm.com/book/en/v2/ch00/_starting_submodules.html +0 -1864
  422. data/spec/support/static/git-scm.com/book/en/v2/ch00/_subtree_merge.html +0 -1605
  423. data/spec/support/static/git-scm.com/book/en/v2/ch00/_switching_branches.html +0 -1020
  424. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tagging_releases.html +0 -1354
  425. data/spec/support/static/git-scm.com/book/en/v2/ch00/_task_list_progress.html +0 -1502
  426. data/spec/support/static/git-scm.com/book/en/v2/ch00/_team_page.html +0 -797
  427. data/spec/support/static/git-scm.com/book/en/v2/ch00/_the_index.html +0 -1236
  428. data/spec/support/static/git-scm.com/book/en/v2/ch00/_the_shortlog.html +0 -1354
  429. data/spec/support/static/git-scm.com/book/en/v2/ch00/_topic_branch.html +0 -786
  430. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tracking_branches.html +0 -1009
  431. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tracking_files.html +0 -1432
  432. data/spec/support/static/git-scm.com/book/en/v2/ch00/_tree_objects.html +0 -1209
  433. data/spec/support/static/git-scm.com/book/en/v2/ch00/_triple_dot.html +0 -1178
  434. data/spec/support/static/git-scm.com/book/en/v2/ch00/_undoing.html +0 -998
  435. data/spec/support/static/git-scm.com/book/en/v2/ch00/_unstaging.html +0 -998
  436. data/spec/support/static/git-scm.com/book/en/v2/ch00/_viewing_history.html +0 -1172
  437. data/spec/support/static/git-scm.com/book/en/v2/ch00/_web_hook.html +0 -1059
  438. data/spec/support/static/git-scm.com/book/en/v2/ch00/_what_is_introduced.html +0 -1354
  439. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch01-getting-started.html +0 -783
  440. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch02-git-basics-chapter.html +0 -816
  441. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch03-git-branching.html +0 -1020
  442. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch05-distributed-git.html +0 -859
  443. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch06-github.html +0 -858
  444. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch06-github_flow.html +0 -1502
  445. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch10-git-internals.html +0 -745
  446. data/spec/support/static/git-scm.com/book/en/v2/ch00/ch_core_editor.html +0 -863
  447. data/spec/support/static/git-scm.com/book/en/v2/ch00/divergent_history.html +0 -1020
  448. data/spec/support/static/git-scm.com/book/en/v2/ch00/double_dot.html +0 -1178
  449. data/spec/support/static/git-scm.com/book/en/v2/ch00/filters_a.html +0 -1134
  450. data/spec/support/static/git-scm.com/book/en/v2/ch00/filters_b.html +0 -1134
  451. data/spec/support/static/git-scm.com/book/en/v2/ch00/limit_options.html +0 -1172
  452. data/spec/support/static/git-scm.com/book/en/v2/ch00/log_options.html +0 -1172
  453. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_a.html +0 -1354
  454. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_b.html +0 -1354
  455. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_c.html +0 -1354
  456. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_d.html +0 -1354
  457. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_e.html +0 -1354
  458. data/spec/support/static/git-scm.com/book/en/v2/ch00/merwf_f.html +0 -1354
  459. data/spec/support/static/git-scm.com/book/en/v2/ch00/oh_my_zsh_git.html +0 -765
  460. data/spec/support/static/git-scm.com/book/en/v2/ch00/pretty_format.html +0 -1172
  461. data/spec/support/static/git-scm.com/book/en/v2/ch00/psp_b.html +0 -1667
  462. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_e.html +0 -1028
  463. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_g.html +0 -1028
  464. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_h.html +0 -1028
  465. data/spec/support/static/git-scm.com/book/en/v2/ch00/rbdiag_i.html +0 -1028
  466. data/spec/support/static/git-scm.com/book/en/v2/ch00/rebasing-merging-example.html +0 -1028
  467. data/spec/support/static/git-scm.com/book/en/v2/ch00/ref_rerere.html +0 -983
  468. data/spec/support/static/git-scm.com/book/en/v2/ch00/ref_the_ref.html +0 -939
  469. data/spec/support/static/git-scm.com/book/en/v2/ch00/wfdiag_b.html +0 -859
  470. data/spec/support/static/git-scm.com/book/en/v2/ch00/wfdiag_c.html +0 -859
  471. data/spec/support/static/git-scm.com/book/en/v2/ch00/what_is_git_section.html +0 -857
  472. data/spec/support/static/git-scm.com/book/en/v2/images/2fa-1.png +0 -0
  473. data/spec/support/static/git-scm.com/book/en/v2/images/account-settings.png +0 -0
  474. data/spec/support/static/git-scm.com/book/en/v2/images/advance-master.png +0 -0
  475. data/spec/support/static/git-scm.com/book/en/v2/images/advance-testing.png +0 -0
  476. data/spec/support/static/git-scm.com/book/en/v2/images/areas.png +0 -0
  477. data/spec/support/static/git-scm.com/book/en/v2/images/avatar-crop.png +0 -0
  478. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-1.png +0 -0
  479. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-2.png +0 -0
  480. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-3.png +0 -0
  481. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-4.png +0 -0
  482. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-5.png +0 -0
  483. data/spec/support/static/git-scm.com/book/en/v2/images/basic-branching-6.png +0 -0
  484. data/spec/support/static/git-scm.com/book/en/v2/images/basic-merging-1.png +0 -0
  485. data/spec/support/static/git-scm.com/book/en/v2/images/basic-merging-2.png +0 -0
  486. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-1.png +0 -0
  487. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-2.png +0 -0
  488. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-3.png +0 -0
  489. data/spec/support/static/git-scm.com/book/en/v2/images/basic-rebase-4.png +0 -0
  490. data/spec/support/static/git-scm.com/book/en/v2/images/benevolent-dictator.png +0 -0
  491. data/spec/support/static/git-scm.com/book/en/v2/images/blink-01-start.png +0 -0
  492. data/spec/support/static/git-scm.com/book/en/v2/images/blink-02-pr.png +0 -0
  493. data/spec/support/static/git-scm.com/book/en/v2/images/blink-03-pull-request-open.png +0 -0
  494. data/spec/support/static/git-scm.com/book/en/v2/images/blink-04-email.png +0 -0
  495. data/spec/support/static/git-scm.com/book/en/v2/images/blink-04-pr-comment.png +0 -0
  496. data/spec/support/static/git-scm.com/book/en/v2/images/blink-05-general-comment.png +0 -0
  497. data/spec/support/static/git-scm.com/book/en/v2/images/blink-06-final.png +0 -0
  498. data/spec/support/static/git-scm.com/book/en/v2/images/branch-and-history.png +0 -0
  499. data/spec/support/static/git-scm.com/book/en/v2/images/branch_widget_mac.png +0 -0
  500. data/spec/support/static/git-scm.com/book/en/v2/images/branch_widget_win.png +0 -0
  501. data/spec/support/static/git-scm.com/book/en/v2/images/centralized.png +0 -0
  502. data/spec/support/static/git-scm.com/book/en/v2/images/centralized_workflow.png +0 -0
  503. data/spec/support/static/git-scm.com/book/en/v2/images/checkout-master.png +0 -0
  504. data/spec/support/static/git-scm.com/book/en/v2/images/clean.png +0 -0
  505. data/spec/support/static/git-scm.com/book/en/v2/images/collaborators.png +0 -0
  506. data/spec/support/static/git-scm.com/book/en/v2/images/commit-and-tree.png +0 -0
  507. data/spec/support/static/git-scm.com/book/en/v2/images/commits-and-parents.png +0 -0
  508. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-1.png +0 -0
  509. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-2.png +0 -0
  510. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-3.png +0 -0
  511. data/spec/support/static/git-scm.com/book/en/v2/images/data-model-4.png +0 -0
  512. data/spec/support/static/git-scm.com/book/en/v2/images/deltas.png +0 -0
  513. data/spec/support/static/git-scm.com/book/en/v2/images/distributed.png +0 -0
  514. data/spec/support/static/git-scm.com/book/en/v2/images/double-dot.png +0 -0
  515. data/spec/support/static/git-scm.com/book/en/v2/images/email-settings.png +0 -0
  516. data/spec/support/static/git-scm.com/book/en/v2/images/forkbutton.png +0 -0
  517. data/spec/support/static/git-scm.com/book/en/v2/images/git-bash.png +0 -0
  518. data/spec/support/static/git-scm.com/book/en/v2/images/git-diff-check.png +0 -0
  519. data/spec/support/static/git-scm.com/book/en/v2/images/git-fusion-boot.png +0 -0
  520. data/spec/support/static/git-scm.com/book/en/v2/images/git-fusion-perforce-graph.png +0 -0
  521. data/spec/support/static/git-scm.com/book/en/v2/images/git-gui.png +0 -0
  522. data/spec/support/static/git-scm.com/book/en/v2/images/git-instaweb.png +0 -0
  523. data/spec/support/static/git-scm.com/book/en/v2/images/git-osx-installer.png +0 -0
  524. data/spec/support/static/git-scm.com/book/en/v2/images/github_mac.png +0 -0
  525. data/spec/support/static/git-scm.com/book/en/v2/images/github_win.png +0 -0
  526. data/spec/support/static/git-scm.com/book/en/v2/images/gitk.png +0 -0
  527. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-groups.png +0 -0
  528. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-menu.png +0 -0
  529. data/spec/support/static/git-scm.com/book/en/v2/images/gitlab-users.png +0 -0
  530. data/spec/support/static/git-scm.com/book/en/v2/images/head-to-master.png +0 -0
  531. data/spec/support/static/git-scm.com/book/en/v2/images/head-to-testing.png +0 -0
  532. data/spec/support/static/git-scm.com/book/en/v2/images/integration-manager.png +0 -0
  533. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-1.png +0 -0
  534. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-2.png +0 -0
  535. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-3.png +0 -0
  536. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-4.png +0 -0
  537. data/spec/support/static/git-scm.com/book/en/v2/images/interesting-rebase-5.png +0 -0
  538. data/spec/support/static/git-scm.com/book/en/v2/images/jb.png +0 -0
  539. data/spec/support/static/git-scm.com/book/en/v2/images/large-merges-1.png +0 -0
  540. data/spec/support/static/git-scm.com/book/en/v2/images/large-merges-2.png +0 -0
  541. data/spec/support/static/git-scm.com/book/en/v2/images/lifecycle.png +0 -0
  542. data/spec/support/static/git-scm.com/book/en/v2/images/local.png +0 -0
  543. data/spec/support/static/git-scm.com/book/en/v2/images/lr-branches-1.png +0 -0
  544. data/spec/support/static/git-scm.com/book/en/v2/images/lr-branches-2.png +0 -0
  545. data/spec/support/static/git-scm.com/book/en/v2/images/maint-01-email.png +0 -0
  546. data/spec/support/static/git-scm.com/book/en/v2/images/maint-02-merge.png +0 -0
  547. data/spec/support/static/git-scm.com/book/en/v2/images/maint-03-email-resp.png +0 -0
  548. data/spec/support/static/git-scm.com/book/en/v2/images/maint-04-target.png +0 -0
  549. data/spec/support/static/git-scm.com/book/en/v2/images/maint-05-mentions.png +0 -0
  550. data/spec/support/static/git-scm.com/book/en/v2/images/maint-06-unsubscribe.png +0 -0
  551. data/spec/support/static/git-scm.com/book/en/v2/images/maint-07-notifications.png +0 -0
  552. data/spec/support/static/git-scm.com/book/en/v2/images/maint-08-notifications-page.png +0 -0
  553. data/spec/support/static/git-scm.com/book/en/v2/images/maint-09-contrib.png +0 -0
  554. data/spec/support/static/git-scm.com/book/en/v2/images/maint-10-default-branch.png +0 -0
  555. data/spec/support/static/git-scm.com/book/en/v2/images/maint-11-transfer.png +0 -0
  556. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-1.png +0 -0
  557. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-2.png +0 -0
  558. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-3.png +0 -0
  559. data/spec/support/static/git-scm.com/book/en/v2/images/managed-team-flow.png +0 -0
  560. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-01-example.png +0 -0
  561. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-02-tasks.png +0 -0
  562. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-03-task-summary.png +0 -0
  563. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-04-fenced-code.png +0 -0
  564. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-05-quote.png +0 -0
  565. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-06-emoji-complete.png +0 -0
  566. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-07-emoji.png +0 -0
  567. data/spec/support/static/git-scm.com/book/en/v2/images/markdown-08-drag-drop.png +0 -0
  568. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-01-syntax.png +0 -0
  569. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-02-render.png +0 -0
  570. data/spec/support/static/git-scm.com/book/en/v2/images/mentions-03-closed.png +0 -0
  571. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-1.png +0 -0
  572. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-2.png +0 -0
  573. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-3.png +0 -0
  574. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-4.png +0 -0
  575. data/spec/support/static/git-scm.com/book/en/v2/images/merging-workflows-5.png +0 -0
  576. data/spec/support/static/git-scm.com/book/en/v2/images/new-repo.png +0 -0
  577. data/spec/support/static/git-scm.com/book/en/v2/images/neworg.png +0 -0
  578. data/spec/support/static/git-scm.com/book/en/v2/images/newrepo.png +0 -0
  579. data/spec/support/static/git-scm.com/book/en/v2/images/newrepoform.png +0 -0
  580. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-01-page.png +0 -0
  581. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-02-teams.png +0 -0
  582. data/spec/support/static/git-scm.com/book/en/v2/images/orgs-03-audit.png +0 -0
  583. data/spec/support/static/git-scm.com/book/en/v2/images/p4merge.png +0 -0
  584. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-1.png +0 -0
  585. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-2.png +0 -0
  586. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-3.png +0 -0
  587. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-4.png +0 -0
  588. data/spec/support/static/git-scm.com/book/en/v2/images/perils-of-rebasing-5.png +0 -0
  589. data/spec/support/static/git-scm.com/book/en/v2/images/posh-git.png +0 -0
  590. data/spec/support/static/git-scm.com/book/en/v2/images/pr-01-fail.png +0 -0
  591. data/spec/support/static/git-scm.com/book/en/v2/images/pr-02-merge-fix.png +0 -0
  592. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-1.png +0 -0
  593. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-2.png +0 -0
  594. data/spec/support/static/git-scm.com/book/en/v2/images/public-small-3.png +0 -0
  595. data/spec/support/static/git-scm.com/book/en/v2/images/rebasing-1.png +0 -0
  596. data/spec/support/static/git-scm.com/book/en/v2/images/rebasing-2.png +0 -0
  597. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-1.png +0 -0
  598. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-2.png +0 -0
  599. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-3.png +0 -0
  600. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-4.png +0 -0
  601. data/spec/support/static/git-scm.com/book/en/v2/images/remote-branches-5.png +0 -0
  602. data/spec/support/static/git-scm.com/book/en/v2/images/replace1.png +0 -0
  603. data/spec/support/static/git-scm.com/book/en/v2/images/replace2.png +0 -0
  604. data/spec/support/static/git-scm.com/book/en/v2/images/replace3.png +0 -0
  605. data/spec/support/static/git-scm.com/book/en/v2/images/replace4.png +0 -0
  606. data/spec/support/static/git-scm.com/book/en/v2/images/replace5.png +0 -0
  607. data/spec/support/static/git-scm.com/book/en/v2/images/reposettingslink.png +0 -0
  608. data/spec/support/static/git-scm.com/book/en/v2/images/rerere1.png +0 -0
  609. data/spec/support/static/git-scm.com/book/en/v2/images/rerere2.png +0 -0
  610. data/spec/support/static/git-scm.com/book/en/v2/images/rerere3.png +0 -0
  611. data/spec/support/static/git-scm.com/book/en/v2/images/reset-checkout.png +0 -0
  612. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex1.png +0 -0
  613. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex2.png +0 -0
  614. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex3.png +0 -0
  615. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex4.png +0 -0
  616. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex5.png +0 -0
  617. data/spec/support/static/git-scm.com/book/en/v2/images/reset-ex6.png +0 -0
  618. data/spec/support/static/git-scm.com/book/en/v2/images/reset-hard.png +0 -0
  619. data/spec/support/static/git-scm.com/book/en/v2/images/reset-mixed.png +0 -0
  620. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path1.png +0 -0
  621. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path2.png +0 -0
  622. data/spec/support/static/git-scm.com/book/en/v2/images/reset-path3.png +0 -0
  623. data/spec/support/static/git-scm.com/book/en/v2/images/reset-soft.png +0 -0
  624. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r1.png +0 -0
  625. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r2.png +0 -0
  626. data/spec/support/static/git-scm.com/book/en/v2/images/reset-squash-r3.png +0 -0
  627. data/spec/support/static/git-scm.com/book/en/v2/images/reset-start.png +0 -0
  628. data/spec/support/static/git-scm.com/book/en/v2/images/reset-workflow.png +0 -0
  629. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-01-services.png +0 -0
  630. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-02-email-service.png +0 -0
  631. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-03-webhook.png +0 -0
  632. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-04-webhook-debug.png +0 -0
  633. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-05-access-token.png +0 -0
  634. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-06-comment.png +0 -0
  635. data/spec/support/static/git-scm.com/book/en/v2/images/scripting-07-status.png +0 -0
  636. data/spec/support/static/git-scm.com/book/en/v2/images/signup.png +0 -0
  637. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-1.png +0 -0
  638. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-2.png +0 -0
  639. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-3.png +0 -0
  640. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-4.png +0 -0
  641. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-5.png +0 -0
  642. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-6.png +0 -0
  643. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-7.png +0 -0
  644. data/spec/support/static/git-scm.com/book/en/v2/images/small-team-flow.png +0 -0
  645. data/spec/support/static/git-scm.com/book/en/v2/images/smudge.png +0 -0
  646. data/spec/support/static/git-scm.com/book/en/v2/images/snapshots.png +0 -0
  647. data/spec/support/static/git-scm.com/book/en/v2/images/ssh-keys.png +0 -0
  648. data/spec/support/static/git-scm.com/book/en/v2/images/topic-branches-1.png +0 -0
  649. data/spec/support/static/git-scm.com/book/en/v2/images/topic-branches-2.png +0 -0
  650. data/spec/support/static/git-scm.com/book/en/v2/images/two-branches.png +0 -0
  651. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-reset.png +0 -0
  652. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert.png +0 -0
  653. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert2.png +0 -0
  654. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-revert3.png +0 -0
  655. data/spec/support/static/git-scm.com/book/en/v2/images/undomerge-start.png +0 -0
  656. data/spec/support/static/git-scm.com/book/en/v2/images/your-profile.png +0 -0
  657. data/spec/support/static/git-scm.com/book/en/v2/images/zsh-oh-my.png +0 -0
  658. data/spec/support/static/git-scm.com/book/en/v2/images/zsh-prompt.png +0 -0
  659. data/spec/support/static/git-scm.com/book/en/v2.html +0 -688
  660. data/spec/support/static/git-scm.com/favicon.ico +0 -0
  661. data/spec/support/static/git-scm.com/images/bg/body.jpg +0 -0
  662. data/spec/support/static/git-scm.com/images/bg/isometric-grid.png +0 -0
  663. data/spec/support/static/git-scm.com/images/bg/isometric-grid@2x.png +0 -0
  664. data/spec/support/static/git-scm.com/images/bg/search-header.jpg +0 -0
  665. data/spec/support/static/git-scm.com/images/company-project-logos/android.png +0 -0
  666. data/spec/support/static/git-scm.com/images/company-project-logos/android@2x.png +0 -0
  667. data/spec/support/static/git-scm.com/images/company-project-logos/eclipse.png +0 -0
  668. data/spec/support/static/git-scm.com/images/company-project-logos/eclipse@2x.png +0 -0
  669. data/spec/support/static/git-scm.com/images/company-project-logos/facebook.png +0 -0
  670. data/spec/support/static/git-scm.com/images/company-project-logos/facebook@2x.png +0 -0
  671. data/spec/support/static/git-scm.com/images/company-project-logos/gnome.png +0 -0
  672. data/spec/support/static/git-scm.com/images/company-project-logos/gnome@2x.png +0 -0
  673. data/spec/support/static/git-scm.com/images/company-project-logos/google.png +0 -0
  674. data/spec/support/static/git-scm.com/images/company-project-logos/google@2x.png +0 -0
  675. data/spec/support/static/git-scm.com/images/company-project-logos/kde.png +0 -0
  676. data/spec/support/static/git-scm.com/images/company-project-logos/kde@2x.png +0 -0
  677. data/spec/support/static/git-scm.com/images/company-project-logos/linked-in.png +0 -0
  678. data/spec/support/static/git-scm.com/images/company-project-logos/linked-in@2x.png +0 -0
  679. data/spec/support/static/git-scm.com/images/company-project-logos/linux.png +0 -0
  680. data/spec/support/static/git-scm.com/images/company-project-logos/linux@2x.png +0 -0
  681. data/spec/support/static/git-scm.com/images/company-project-logos/microsoft.png +0 -0
  682. data/spec/support/static/git-scm.com/images/company-project-logos/microsoft@2x.png +0 -0
  683. data/spec/support/static/git-scm.com/images/company-project-logos/netflix.png +0 -0
  684. data/spec/support/static/git-scm.com/images/company-project-logos/netflix@2x.png +0 -0
  685. data/spec/support/static/git-scm.com/images/company-project-logos/perl.png +0 -0
  686. data/spec/support/static/git-scm.com/images/company-project-logos/perl@2x.png +0 -0
  687. data/spec/support/static/git-scm.com/images/company-project-logos/postgresql.png +0 -0
  688. data/spec/support/static/git-scm.com/images/company-project-logos/postgresql@2x.png +0 -0
  689. data/spec/support/static/git-scm.com/images/company-project-logos/qt.png +0 -0
  690. data/spec/support/static/git-scm.com/images/company-project-logos/qt@2x.png +0 -0
  691. data/spec/support/static/git-scm.com/images/company-project-logos/rails.png +0 -0
  692. data/spec/support/static/git-scm.com/images/company-project-logos/rails@2x.png +0 -0
  693. data/spec/support/static/git-scm.com/images/company-project-logos/twitter.png +0 -0
  694. data/spec/support/static/git-scm.com/images/company-project-logos/twitter@2x.png +0 -0
  695. data/spec/support/static/git-scm.com/images/company-project-logos/x.png +0 -0
  696. data/spec/support/static/git-scm.com/images/company-project-logos/x@2x.png +0 -0
  697. data/spec/support/static/git-scm.com/images/epub.png +0 -0
  698. data/spec/support/static/git-scm.com/images/icons/admin-sm.png +0 -0
  699. data/spec/support/static/git-scm.com/images/icons/admin-sm@2x.png +0 -0
  700. data/spec/support/static/git-scm.com/images/icons/apple.png +0 -0
  701. data/spec/support/static/git-scm.com/images/icons/apple@2x.png +0 -0
  702. data/spec/support/static/git-scm.com/images/icons/book.png +0 -0
  703. data/spec/support/static/git-scm.com/images/icons/book@2x.png +0 -0
  704. data/spec/support/static/git-scm.com/images/icons/box.png +0 -0
  705. data/spec/support/static/git-scm.com/images/icons/box@2x.png +0 -0
  706. data/spec/support/static/git-scm.com/images/icons/branch-sm.png +0 -0
  707. data/spec/support/static/git-scm.com/images/icons/branch-sm@2x.png +0 -0
  708. data/spec/support/static/git-scm.com/images/icons/camera-sm.png +0 -0
  709. data/spec/support/static/git-scm.com/images/icons/camera-sm@2x.png +0 -0
  710. data/spec/support/static/git-scm.com/images/icons/chevron-up@2x.png +0 -0
  711. data/spec/support/static/git-scm.com/images/icons/code.png +0 -0
  712. data/spec/support/static/git-scm.com/images/icons/code@2x.png +0 -0
  713. data/spec/support/static/git-scm.com/images/icons/debugging-sm.png +0 -0
  714. data/spec/support/static/git-scm.com/images/icons/debugging-sm@2x.png +0 -0
  715. data/spec/support/static/git-scm.com/images/icons/document.png +0 -0
  716. data/spec/support/static/git-scm.com/images/icons/document@2x.png +0 -0
  717. data/spec/support/static/git-scm.com/images/icons/download.png +0 -0
  718. data/spec/support/static/git-scm.com/images/icons/email-sm.png +0 -0
  719. data/spec/support/static/git-scm.com/images/icons/email-sm@2x.png +0 -0
  720. data/spec/support/static/git-scm.com/images/icons/external-sm.png +0 -0
  721. data/spec/support/static/git-scm.com/images/icons/external-sm@2x.png +0 -0
  722. data/spec/support/static/git-scm.com/images/icons/gui.png +0 -0
  723. data/spec/support/static/git-scm.com/images/icons/gui@2x.png +0 -0
  724. data/spec/support/static/git-scm.com/images/icons/info.png +0 -0
  725. data/spec/support/static/git-scm.com/images/icons/info@2x.png +0 -0
  726. data/spec/support/static/git-scm.com/images/icons/inspection-sm.png +0 -0
  727. data/spec/support/static/git-scm.com/images/icons/inspection-sm@2x.png +0 -0
  728. data/spec/support/static/git-scm.com/images/icons/linux.png +0 -0
  729. data/spec/support/static/git-scm.com/images/icons/linux@2x.png +0 -0
  730. data/spec/support/static/git-scm.com/images/icons/nav-circles.png +0 -0
  731. data/spec/support/static/git-scm.com/images/icons/nav-circles@2x.png +0 -0
  732. data/spec/support/static/git-scm.com/images/icons/patching-sm.png +0 -0
  733. data/spec/support/static/git-scm.com/images/icons/patching-sm@2x.png +0 -0
  734. data/spec/support/static/git-scm.com/images/icons/plumbing-sm.png +0 -0
  735. data/spec/support/static/git-scm.com/images/icons/plumbing-sm@2x.png +0 -0
  736. data/spec/support/static/git-scm.com/images/icons/projects-sm.png +0 -0
  737. data/spec/support/static/git-scm.com/images/icons/projects-sm@2x.png +0 -0
  738. data/spec/support/static/git-scm.com/images/icons/search.png +0 -0
  739. data/spec/support/static/git-scm.com/images/icons/search@2x.png +0 -0
  740. data/spec/support/static/git-scm.com/images/icons/server-admin-sm.png +0 -0
  741. data/spec/support/static/git-scm.com/images/icons/server-admin-sm@2x.png +0 -0
  742. data/spec/support/static/git-scm.com/images/icons/setup-sm.png +0 -0
  743. data/spec/support/static/git-scm.com/images/icons/setup-sm@2x.png +0 -0
  744. data/spec/support/static/git-scm.com/images/icons/sharing-sm.png +0 -0
  745. data/spec/support/static/git-scm.com/images/icons/sharing-sm@2x.png +0 -0
  746. data/spec/support/static/git-scm.com/images/icons/sidebar.png +0 -0
  747. data/spec/support/static/git-scm.com/images/icons/sidebar@2x.png +0 -0
  748. data/spec/support/static/git-scm.com/images/icons/source-code.png +0 -0
  749. data/spec/support/static/git-scm.com/images/icons/source-code@2x.png +0 -0
  750. data/spec/support/static/git-scm.com/images/icons/windows.png +0 -0
  751. data/spec/support/static/git-scm.com/images/icons/windows@2x.png +0 -0
  752. data/spec/support/static/git-scm.com/images/logo@2x.png +0 -0
  753. data/spec/support/static/git-scm.com/images/mobi.png +0 -0
  754. data/spec/support/static/git-scm.com/images/monitor-default.png +0 -0
  755. data/spec/support/static/git-scm.com/images/monitor-default@2x.png +0 -0
  756. data/spec/support/static/git-scm.com/images/monitor-linux.png +0 -0
  757. data/spec/support/static/git-scm.com/images/monitor-linux@2x.png +0 -0
  758. data/spec/support/static/git-scm.com/images/monitor-mac.png +0 -0
  759. data/spec/support/static/git-scm.com/images/monitor-mac@2x.png +0 -0
  760. data/spec/support/static/git-scm.com/images/monitor-windows.png +0 -0
  761. data/spec/support/static/git-scm.com/images/monitor-windows@2x.png +0 -0
  762. data/spec/support/static/git-scm.com/images/pdf.png +0 -0
  763. data/spec/support/static/git-scm.com/images/progit2.png +0 -0
  764. data/spec/support/static/git-scm.com/images/sidebar-divider.png +0 -0
  765. data/spec/support/static/git-scm.com/images/sidebar-divider@2x.png +0 -0
  766. data/spec/support/static/git-scm.com/robots.txt +0 -0
  767. data/spec/support/static/graph/details/a.html +0 -10
  768. data/spec/support/static/graph/details/b.html +0 -10
  769. data/spec/support/static/graph/index.html +0 -20
  770. data/spec/support/static/links/links.html +0 -28
  771. data/docs/{reference → guides}/cli.md +0 -0
  772. data/spec/{stringify_spec.rb → wayfarer/stringify_spec.rb} +2 -2
  773. /data/spec/{task_spec.rb → wayfarer/task_spec.rb} +0 -0
@@ -1,1043 +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 - Transfer Protocols</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="Git-Internals-Transfer-Protocols.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" class=active>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>10.6 Git Internals - Transfer Protocols</h1>
675
- <div>
676
- <h2 id="_transfer_protocols">Transfer Protocols</h2>
677
- <div class="paragraph">
678
- <p>Git can transfer data between two repositories in two major ways: the “dumb” protocol and the “smart” protocol.
679
- This section will quickly cover how these two main protocols operate.</p>
680
- </div>
681
- <div class="sect3">
682
- <h3 id="_the_dumb_protocol">The Dumb Protocol</h3>
683
- <div class="paragraph">
684
- <p>If you’re setting up a repository to be served read-only over HTTP, the dumb protocol is likely what will be used.
685
- This protocol is called “dumb” because it requires no Git-specific code on the server side during the transport process; the fetch process is a series of HTTP <code>GET</code> requests, where the client can assume the layout of the Git repository on the server.</p>
686
- </div>
687
- <div class="admonitionblock note">
688
- <table>
689
- <tr>
690
- <td class="icon">
691
- <div class="title">Note</div>
692
- </td>
693
- <td class="content">
694
- <div class="paragraph">
695
- <p>The dumb protocol is fairly rarely used these days.
696
- It’s difficult to secure or make private, so most Git hosts (both cloud-based and on-premises) will refuse to use it.
697
- It’s generally advised to use the smart protocol, which we describe a bit further on.</p>
698
- </div>
699
- </td>
700
- </tr>
701
- </table>
702
- </div>
703
- <div class="paragraph">
704
- <p>Let’s follow the <code>http-fetch</code> process for the simplegit library:</p>
705
- </div>
706
- <div class="listingblock">
707
- <div class="content">
708
- <pre class="highlight"><code class="language-console" data-lang="console">$ git clone http://server/simplegit-progit.git</code></pre>
709
- </div>
710
- </div>
711
- <div class="paragraph">
712
- <p>The first thing this command does is pull down the <code>info/refs</code> file.
713
- This file is written by the <code>update-server-info</code> command, which is why you need to enable that as a <code>post-receive</code> hook in order for the HTTP transport to work properly:</p>
714
- </div>
715
- <div class="listingblock">
716
- <div class="content">
717
- <pre class="highlight"><code>=&gt; GET info/refs
718
- ca82a6dff817ec66f44342007202690a93763949 refs/heads/master</code></pre>
719
- </div>
720
- </div>
721
- <div class="paragraph">
722
- <p>Now you have a list of the remote references and SHA-1s.
723
- Next, you look for what the HEAD reference is so you know what to check out when you’re finished:</p>
724
- </div>
725
- <div class="listingblock">
726
- <div class="content">
727
- <pre class="highlight"><code>=&gt; GET HEAD
728
- ref: refs/heads/master</code></pre>
729
- </div>
730
- </div>
731
- <div class="paragraph">
732
- <p>You need to check out the <code>master</code> branch when you’ve completed the process.
733
- At this point, you’re ready to start the walking process.
734
- Because your starting point is the <code>ca82a6</code> commit object you saw in the <code>info/refs</code> file, you start by fetching that:</p>
735
- </div>
736
- <div class="listingblock">
737
- <div class="content">
738
- <pre class="highlight"><code>=&gt; GET objects/ca/82a6dff817ec66f44342007202690a93763949
739
- (179 bytes of binary data)</code></pre>
740
- </div>
741
- </div>
742
- <div class="paragraph">
743
- <p>You get an object back – that object is in loose format on the server, and you fetched it over a static HTTP GET request.
744
- You can zlib-uncompress it, strip off the header, and look at the commit content:</p>
745
- </div>
746
- <div class="listingblock">
747
- <div class="content">
748
- <pre class="highlight"><code class="language-console" data-lang="console">$ git cat-file -p ca82a6dff817ec66f44342007202690a93763949
749
- tree cfda3bf379e4f8dba8717dee55aab78aef7f4daf
750
- parent 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
751
- author Scott Chacon &lt;schacon@gmail.com&gt; 1205815931 -0700
752
- committer Scott Chacon &lt;schacon@gmail.com&gt; 1240030591 -0700
753
-
754
- Change version number</code></pre>
755
- </div>
756
- </div>
757
- <div class="paragraph">
758
- <p>Next, you have two more objects to retrieve – <code>cfda3b</code>, which is the tree of content that the commit we just retrieved points to; and <code>085bb3</code>, which is the parent commit:</p>
759
- </div>
760
- <div class="listingblock">
761
- <div class="content">
762
- <pre class="highlight"><code>=&gt; GET objects/08/5bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
763
- (179 bytes of data)</code></pre>
764
- </div>
765
- </div>
766
- <div class="paragraph">
767
- <p>That gives you your next commit object.
768
- Grab the tree object:</p>
769
- </div>
770
- <div class="listingblock">
771
- <div class="content">
772
- <pre class="highlight"><code>=&gt; GET objects/cf/da3bf379e4f8dba8717dee55aab78aef7f4daf
773
- (404 - Not Found)</code></pre>
774
- </div>
775
- </div>
776
- <div class="paragraph">
777
- <p>Oops – it looks like that tree object isn’t in loose format on the server, so you get a 404 response back.
778
- There are a couple of reasons for this – the object could be in an alternate repository, or it could be in a packfile in this repository.
779
- Git checks for any listed alternates first:</p>
780
- </div>
781
- <div class="listingblock">
782
- <div class="content">
783
- <pre class="highlight"><code>=&gt; GET objects/info/http-alternates
784
- (empty file)</code></pre>
785
- </div>
786
- </div>
787
- <div class="paragraph">
788
- <p>If this comes back with a list of alternate URLs, Git checks for loose files and packfiles there – this is a nice mechanism for projects that are forks of one another to share objects on disk.
789
- However, because no alternates are listed in this case, your object must be in a packfile.
790
- To see what packfiles are available on this server, you need to get the <code>objects/info/packs</code> file, which contains a listing of them (also generated by <code>update-server-info</code>):</p>
791
- </div>
792
- <div class="listingblock">
793
- <div class="content">
794
- <pre class="highlight"><code>=&gt; GET objects/info/packs
795
- P pack-816a9b2334da9953e530f27bcac22082a9f5b835.pack</code></pre>
796
- </div>
797
- </div>
798
- <div class="paragraph">
799
- <p>There is only one packfile on the server, so your object is obviously in there, but you’ll check the index file to make sure.
800
- This is also useful if you have multiple packfiles on the server, so you can see which packfile contains the object you need:</p>
801
- </div>
802
- <div class="listingblock">
803
- <div class="content">
804
- <pre class="highlight"><code>=&gt; GET objects/pack/pack-816a9b2334da9953e530f27bcac22082a9f5b835.idx
805
- (4k of binary data)</code></pre>
806
- </div>
807
- </div>
808
- <div class="paragraph">
809
- <p>Now that you have the packfile index, you can see if your object is in it – because the index lists the SHA-1s of the objects contained in the packfile and the offsets to those objects.
810
- Your object is there, so go ahead and get the whole packfile:</p>
811
- </div>
812
- <div class="listingblock">
813
- <div class="content">
814
- <pre class="highlight"><code>=&gt; GET objects/pack/pack-816a9b2334da9953e530f27bcac22082a9f5b835.pack
815
- (13k of binary data)</code></pre>
816
- </div>
817
- </div>
818
- <div class="paragraph">
819
- <p>You have your tree object, so you continue walking your commits.
820
- They’re all also within the packfile you just downloaded, so you don’t have to do any more requests to your server.
821
- Git checks out a working copy of the <code>master</code> branch that was pointed to by the HEAD reference you downloaded at the beginning.</p>
822
- </div>
823
- </div>
824
- <div class="sect3">
825
- <h3 id="_the_smart_protocol">The Smart Protocol</h3>
826
- <div class="paragraph">
827
- <p>The dumb protocol is simple but a bit inefficient, and it can’t handle writing of data from the client to the server.
828
- The smart protocol is a more common method of transferring data, but it requires a process on the remote end that is intelligent about Git – it can read local data, figure out what the client has and needs, and generate a custom packfile for it.
829
- There are two sets of processes for transferring data: a pair for uploading data and a pair for downloading data.</p>
830
- </div>
831
- <div class="sect4">
832
- <h4 id="_uploading_data">Uploading Data</h4>
833
- <div class="paragraph">
834
- <p>
835
- To upload data to a remote process, Git uses the <code>send-pack</code> and <code>receive-pack</code> processes.
836
- The <code>send-pack</code> process runs on the client and connects to a <code>receive-pack</code> process on the remote side.</p>
837
- </div>
838
- <div class="sect5">
839
- <h6 id="_ssh">SSH</h6>
840
- <div class="paragraph">
841
- <p>For example, say you run <code>git push origin master</code> in your project, and <code>origin</code> is defined as a URL that uses the SSH protocol.
842
- Git fires up the <code>send-pack</code> process, which initiates a connection over SSH to your server.
843
- It tries to run a command on the remote server via an SSH call that looks something like this:</p>
844
- </div>
845
- <div class="listingblock">
846
- <div class="content">
847
- <pre class="highlight"><code class="language-console" data-lang="console">$ ssh -x git@server "git-receive-pack 'simplegit-progit.git'"
848
- 00a5ca82a6dff817ec66f4437202690a93763949 refs/heads/master□report-status \
849
- delete-refs side-band-64k quiet ofs-delta \
850
- agent=git/2:2.1.1+github-607-gfba4028 delete-refs
851
- 0000</code></pre>
852
- </div>
853
- </div>
854
- <div class="paragraph">
855
- <p>The <code>git-receive-pack</code> command immediately responds with one line for each reference it currently has – in this case, just the <code>master</code> branch and its SHA-1.
856
- The first line also has a list of the server’s capabilities (here, <code>report-status</code>, <code>delete-refs</code>, and some others, including the client identifier).</p>
857
- </div>
858
- <div class="paragraph">
859
- <p>The data is transmitted in chunks.
860
- Each chunk starts with a 4-character hex value specifying how long the chunk is (including the 4 bytes of the length itself).
861
- Chunks usually contain a single line of data and a trailing linefeed.
862
- Your first chunk starts with 00a5, which is hexadecimal for 165, meaning the chunk is 165 bytes long.
863
- The next chunk is 0000, meaning the server is done with its references listing.</p>
864
- </div>
865
- <div class="paragraph">
866
- <p>Now that it knows the server’s state, your <code>send-pack</code> process determines what commits it has that the server doesn’t.
867
- For each reference that this push will update, the <code>send-pack</code> process tells the <code>receive-pack</code> process that information.
868
- For instance, if you’re updating the <code>master</code> branch and adding an <code>experiment</code> branch, the <code>send-pack</code> response may look something like this:</p>
869
- </div>
870
- <div class="listingblock">
871
- <div class="content">
872
- <pre class="highlight"><code>0076ca82a6dff817ec66f44342007202690a93763949 15027957951b64cf874c3557a0f3547bd83b3ff6 \
873
- refs/heads/master report-status
874
- 006c0000000000000000000000000000000000000000 cdfdb42577e2506715f8cfeacdbabc092bf63e8d \
875
- refs/heads/experiment
876
- 0000</code></pre>
877
- </div>
878
- </div>
879
- <div class="paragraph">
880
- <p>Git sends a line for each reference you’re updating with the line’s length, the old SHA-1, the new SHA-1, and the reference that is being updated.
881
- The first line also has the client’s capabilities.
882
- The SHA-1 value of all '0’s means that nothing was there before – because you’re adding the experiment reference.
883
- If you were deleting a reference, you would see the opposite: all '0’s on the right side.</p>
884
- </div>
885
- <div class="paragraph">
886
- <p>Next, the client sends a packfile of all the objects the server doesn’t have yet.
887
- Finally, the server responds with a success (or failure) indication:</p>
888
- </div>
889
- <div class="listingblock">
890
- <div class="content">
891
- <pre class="highlight"><code>000eunpack ok</code></pre>
892
- </div>
893
- </div>
894
- </div>
895
- <div class="sect5">
896
- <h6 id="_https">HTTP(S)</h6>
897
- <div class="paragraph">
898
- <p>This process is mostly the same over HTTP, though the handshaking is a bit different.
899
- The connection is initiated with this request:</p>
900
- </div>
901
- <div class="listingblock">
902
- <div class="content">
903
- <pre class="highlight"><code>=&gt; GET http://server/simplegit-progit.git/info/refs?service=git-receive-pack
904
- 001f# service=git-receive-pack
905
- 00ab6c5f0e45abd7832bf23074a333f739977c9e8188 refs/heads/master□report-status \
906
- delete-refs side-band-64k quiet ofs-delta \
907
- agent=git/2:2.1.1~vmg-bitmaps-bugaloo-608-g116744e
908
- 0000</code></pre>
909
- </div>
910
- </div>
911
- <div class="paragraph">
912
- <p>That’s the end of the first client-server exchange.
913
- The client then makes another request, this time a <code>POST</code>, with the data that <code>send-pack</code> provides.</p>
914
- </div>
915
- <div class="listingblock">
916
- <div class="content">
917
- <pre class="highlight"><code>=&gt; POST http://server/simplegit-progit.git/git-receive-pack</code></pre>
918
- </div>
919
- </div>
920
- <div class="paragraph">
921
- <p>The <code>POST</code> request includes the <code>send-pack</code> output and the packfile as its payload.
922
- The server then indicates success or failure with its HTTP response.</p>
923
- </div>
924
- <div class="paragraph">
925
- <p>Keep in mind the HTTP protocol may further wrap this data inside a chunked transfer encoding.</p>
926
- </div>
927
- </div>
928
- </div>
929
- <div class="sect4">
930
- <h4 id="_downloading_data">Downloading Data</h4>
931
- <div class="paragraph">
932
- <p>
933
- When you download data, the <code>fetch-pack</code> and <code>upload-pack</code> processes are involved.
934
- The client initiates a <code>fetch-pack</code> process that connects to an <code>upload-pack</code> process on the remote side to negotiate what data will be transferred down.</p>
935
- </div>
936
- <div class="sect5">
937
- <h6 id="_ssh_2">SSH</h6>
938
- <div class="paragraph">
939
- <p>If you’re doing the fetch over SSH, <code>fetch-pack</code> runs something like this:</p>
940
- </div>
941
- <div class="listingblock">
942
- <div class="content">
943
- <pre class="highlight"><code class="language-console" data-lang="console">$ ssh -x git@server "git-upload-pack 'simplegit-progit.git'"</code></pre>
944
- </div>
945
- </div>
946
- <div class="paragraph">
947
- <p>After <code>fetch-pack</code> connects, <code>upload-pack</code> sends back something like this:</p>
948
- </div>
949
- <div class="listingblock">
950
- <div class="content">
951
- <pre class="highlight"><code>00dfca82a6dff817ec66f44342007202690a93763949 HEAD□multi_ack thin-pack \
952
- side-band side-band-64k ofs-delta shallow no-progress include-tag \
953
- multi_ack_detailed symref=HEAD:refs/heads/master \
954
- agent=git/2:2.1.1+github-607-gfba4028
955
- 003fe2409a098dc3e53539a9028a94b6224db9d6a6b6 refs/heads/master
956
- 0000</code></pre>
957
- </div>
958
- </div>
959
- <div class="paragraph">
960
- <p>This is very similar to what <code>receive-pack</code> responds with, but the capabilities are different.
961
- In addition, it sends back what HEAD points to (<code>symref=HEAD:refs/heads/master</code>) so the client knows what to check out if this is a clone.</p>
962
- </div>
963
- <div class="paragraph">
964
- <p>At this point, the <code>fetch-pack</code> process looks at what objects it has and responds with the objects that it needs by sending “want” and then the SHA-1 it wants.
965
- It sends all the objects it already has with “have” and then the SHA-1.
966
- At the end of this list, it writes “done” to initiate the <code>upload-pack</code> process to begin sending the packfile of the data it needs:</p>
967
- </div>
968
- <div class="listingblock">
969
- <div class="content">
970
- <pre class="highlight"><code>003cwant ca82a6dff817ec66f44342007202690a93763949 ofs-delta
971
- 0032have 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
972
- 0009done
973
- 0000</code></pre>
974
- </div>
975
- </div>
976
- </div>
977
- <div class="sect5">
978
- <h6 id="_https_2">HTTP(S)</h6>
979
- <div class="paragraph">
980
- <p>The handshake for a fetch operation takes two HTTP requests.
981
- The first is a <code>GET</code> to the same endpoint used in the dumb protocol:</p>
982
- </div>
983
- <div class="listingblock">
984
- <div class="content">
985
- <pre class="highlight"><code>=&gt; GET $GIT_URL/info/refs?service=git-upload-pack
986
- 001e# service=git-upload-pack
987
- 00e7ca82a6dff817ec66f44342007202690a93763949 HEAD□multi_ack thin-pack \
988
- side-band side-band-64k ofs-delta shallow no-progress include-tag \
989
- multi_ack_detailed no-done symref=HEAD:refs/heads/master \
990
- agent=git/2:2.1.1+github-607-gfba4028
991
- 003fca82a6dff817ec66f44342007202690a93763949 refs/heads/master
992
- 0000</code></pre>
993
- </div>
994
- </div>
995
- <div class="paragraph">
996
- <p>This is very similar to invoking <code>git-upload-pack</code> over an SSH connection, but the second exchange is performed as a separate request:</p>
997
- </div>
998
- <div class="listingblock">
999
- <div class="content">
1000
- <pre class="highlight"><code>=&gt; POST $GIT_URL/git-upload-pack HTTP/1.0
1001
- 0032want 0a53e9ddeaddad63ad106860237bbf53411d11a7
1002
- 0032have 441b40d833fdfa93eb2908e52742248faf0ee993
1003
- 0000</code></pre>
1004
- </div>
1005
- </div>
1006
- <div class="paragraph">
1007
- <p>Again, this is the same format as above.
1008
- The response to this request indicates success or failure, and includes the packfile.</p>
1009
- </div>
1010
- </div>
1011
- </div>
1012
- </div>
1013
- <div class="sect3">
1014
- <h3 id="_protocols_summary">Protocols Summary</h3>
1015
- <div class="paragraph">
1016
- <p>This section contains a very basic overview of the transfer protocols.
1017
- The protocol includes many other features, such as <code>multi_ack</code> or <code>side-band</code> capabilities, but covering them is outside the scope of this book.
1018
- We’ve tried to give you a sense of the general back-and-forth between client and server; if you need more knowledge than this, you’ll probably want to take a look at the Git source code.</p>
1019
- </div>
1020
- </div>
1021
- <div id="nav"><a href="ch00/_pushing_refspecs.html">prev</a> | <a href="ch00/_git_gc.html">next</a></div></div>
1022
- </div>
1023
-
1024
- </div>
1025
- </div>
1026
- <footer>
1027
- <div class="site-source">
1028
- <a href="https://git-scm.com/site">About this site</a><br>
1029
- Patches, suggestions, and comments are welcome.
1030
- </div>
1031
- <div class="sfc-member">
1032
- Git is a member of <a href="https://git-scm.com/sfc">Software Freedom Conservancy</a>
1033
- </div>
1034
- </footer>
1035
- <a href="Git-Internals-Transfer-Protocols.html#top" class="no-js scrollToTop" id="scrollToTop" data-label="Scroll to top">
1036
- <img src="../../../images/icons/chevron-up@2x.png" width="20" height="20" alt="scroll-to-top"/>
1037
- </a>
1038
- <script src="../../../assets/application-38b0d42ff05ffea45841edebbd14b75b89585646153808e82907c2c5c11f324b.js"></script>
1039
-
1040
- </div>
1041
-
1042
- </body>
1043
- </html>