rugged 1.3.1 → 1.9.0

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 (656) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +6 -3
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_allocator.c +0 -54
  7. data/ext/rugged/rugged_blame.c +2 -0
  8. data/ext/rugged/rugged_blob.c +3 -0
  9. data/ext/rugged/rugged_commit.c +1 -0
  10. data/ext/rugged/rugged_config.c +9 -2
  11. data/ext/rugged/rugged_diff.c +1 -0
  12. data/ext/rugged/rugged_index.c +2 -0
  13. data/ext/rugged/rugged_patch.c +1 -0
  14. data/ext/rugged/rugged_rebase.c +1 -0
  15. data/ext/rugged/rugged_reference.c +1 -0
  16. data/ext/rugged/rugged_remote.c +28 -10
  17. data/ext/rugged/rugged_repo.c +7 -9
  18. data/ext/rugged/rugged_revwalk.c +5 -1
  19. data/ext/rugged/rugged_settings.c +5 -0
  20. data/ext/rugged/rugged_submodule.c +1 -0
  21. data/ext/rugged/rugged_tag.c +1 -0
  22. data/ext/rugged/rugged_tree.c +4 -0
  23. data/lib/rugged/index.rb +1 -1
  24. data/lib/rugged/tree.rb +5 -1
  25. data/lib/rugged/version.rb +1 -1
  26. data/vendor/libgit2/AUTHORS +1 -0
  27. data/vendor/libgit2/CMakeLists.txt +141 -289
  28. data/vendor/libgit2/COPYING +301 -20
  29. data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
  30. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  31. data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
  32. data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
  33. data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
  34. data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
  35. data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
  36. data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
  37. data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
  38. data/vendor/libgit2/cmake/FindHTTP_Parser.cmake +17 -17
  39. data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
  40. data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
  41. data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
  42. data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
  43. data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
  44. data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
  45. data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
  46. data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
  47. data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
  48. data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
  49. data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
  50. data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
  51. data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
  52. data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
  53. data/vendor/libgit2/cmake/SelectHTTPParser.cmake +34 -0
  54. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
  55. data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
  56. data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
  57. data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
  58. data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
  59. data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
  60. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
  61. data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
  62. data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
  63. data/vendor/libgit2/deps/llhttp/api.c +510 -0
  64. data/vendor/libgit2/deps/llhttp/http.c +170 -0
  65. data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
  66. data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
  67. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
  68. data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
  69. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
  70. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
  71. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
  72. data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
  73. data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
  74. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
  75. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
  76. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
  77. data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
  78. data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
  79. data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
  80. data/vendor/libgit2/deps/pcre/LICENCE +5 -5
  81. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  82. data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
  83. data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
  84. data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
  85. data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
  86. data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
  87. data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
  88. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
  89. data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
  90. data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
  91. data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
  92. data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
  93. data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
  94. data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
  95. data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
  96. data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
  97. data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
  98. data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
  99. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
  100. data/vendor/libgit2/deps/zlib/LICENSE +22 -0
  101. data/vendor/libgit2/deps/zlib/adler32.c +7 -22
  102. data/vendor/libgit2/deps/zlib/crc32.c +931 -317
  103. data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
  104. data/vendor/libgit2/deps/zlib/deflate.c +428 -453
  105. data/vendor/libgit2/deps/zlib/deflate.h +51 -23
  106. data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
  107. data/vendor/libgit2/deps/zlib/infback.c +19 -31
  108. data/vendor/libgit2/deps/zlib/inffast.c +15 -18
  109. data/vendor/libgit2/deps/zlib/inffast.h +1 -1
  110. data/vendor/libgit2/deps/zlib/inflate.c +75 -110
  111. data/vendor/libgit2/deps/zlib/inflate.h +3 -2
  112. data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
  113. data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
  114. data/vendor/libgit2/deps/zlib/trees.c +294 -380
  115. data/vendor/libgit2/deps/zlib/zconf.h +23 -14
  116. data/vendor/libgit2/deps/zlib/zlib.h +310 -284
  117. data/vendor/libgit2/deps/zlib/zutil.c +20 -46
  118. data/vendor/libgit2/deps/zlib/zutil.h +24 -41
  119. data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
  120. data/vendor/libgit2/include/git2/apply.h +43 -8
  121. data/vendor/libgit2/include/git2/attr.h +28 -6
  122. data/vendor/libgit2/include/git2/blame.h +137 -29
  123. data/vendor/libgit2/include/git2/blob.h +85 -29
  124. data/vendor/libgit2/include/git2/branch.h +25 -16
  125. data/vendor/libgit2/include/git2/buffer.h +24 -82
  126. data/vendor/libgit2/include/git2/cert.h +4 -3
  127. data/vendor/libgit2/include/git2/checkout.h +88 -34
  128. data/vendor/libgit2/include/git2/cherrypick.h +10 -3
  129. data/vendor/libgit2/include/git2/clone.h +28 -12
  130. data/vendor/libgit2/include/git2/commit.h +134 -3
  131. data/vendor/libgit2/include/git2/common.h +172 -59
  132. data/vendor/libgit2/include/git2/config.h +118 -32
  133. data/vendor/libgit2/include/git2/credential.h +32 -3
  134. data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
  135. data/vendor/libgit2/include/git2/deprecated.h +141 -3
  136. data/vendor/libgit2/include/git2/describe.h +20 -3
  137. data/vendor/libgit2/include/git2/diff.h +95 -19
  138. data/vendor/libgit2/include/git2/email.h +10 -30
  139. data/vendor/libgit2/include/git2/errors.h +51 -61
  140. data/vendor/libgit2/include/git2/experimental.h +20 -0
  141. data/vendor/libgit2/include/git2/filter.h +21 -9
  142. data/vendor/libgit2/include/git2/global.h +8 -1
  143. data/vendor/libgit2/include/git2/graph.h +4 -2
  144. data/vendor/libgit2/include/git2/ignore.h +11 -1
  145. data/vendor/libgit2/include/git2/index.h +111 -11
  146. data/vendor/libgit2/include/git2/indexer.h +67 -2
  147. data/vendor/libgit2/include/git2/mailmap.h +7 -1
  148. data/vendor/libgit2/include/git2/merge.h +70 -5
  149. data/vendor/libgit2/include/git2/message.h +4 -2
  150. data/vendor/libgit2/include/git2/net.h +3 -1
  151. data/vendor/libgit2/include/git2/notes.h +9 -6
  152. data/vendor/libgit2/include/git2/object.h +57 -7
  153. data/vendor/libgit2/include/git2/odb.h +156 -33
  154. data/vendor/libgit2/include/git2/odb_backend.h +132 -16
  155. data/vendor/libgit2/include/git2/oid.h +116 -17
  156. data/vendor/libgit2/include/git2/oidarray.h +7 -1
  157. data/vendor/libgit2/include/git2/pack.h +37 -9
  158. data/vendor/libgit2/include/git2/patch.h +10 -3
  159. data/vendor/libgit2/include/git2/pathspec.h +10 -1
  160. data/vendor/libgit2/include/git2/proxy.h +11 -1
  161. data/vendor/libgit2/include/git2/rebase.h +18 -7
  162. data/vendor/libgit2/include/git2/refdb.h +5 -2
  163. data/vendor/libgit2/include/git2/reflog.h +4 -3
  164. data/vendor/libgit2/include/git2/refs.h +11 -8
  165. data/vendor/libgit2/include/git2/refspec.h +14 -4
  166. data/vendor/libgit2/include/git2/remote.h +295 -54
  167. data/vendor/libgit2/include/git2/repository.h +95 -25
  168. data/vendor/libgit2/include/git2/reset.h +18 -5
  169. data/vendor/libgit2/include/git2/revert.h +9 -4
  170. data/vendor/libgit2/include/git2/revparse.h +4 -4
  171. data/vendor/libgit2/include/git2/revwalk.h +7 -3
  172. data/vendor/libgit2/include/git2/signature.h +47 -2
  173. data/vendor/libgit2/include/git2/stash.h +78 -10
  174. data/vendor/libgit2/include/git2/status.h +24 -11
  175. data/vendor/libgit2/include/git2/stdint.h +87 -85
  176. data/vendor/libgit2/include/git2/strarray.h +2 -16
  177. data/vendor/libgit2/include/git2/submodule.h +27 -11
  178. data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
  179. data/vendor/libgit2/include/git2/sys/commit.h +77 -3
  180. data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
  181. data/vendor/libgit2/include/git2/sys/config.h +80 -4
  182. data/vendor/libgit2/include/git2/sys/credential.h +4 -3
  183. data/vendor/libgit2/include/git2/sys/diff.h +21 -1
  184. data/vendor/libgit2/include/git2/sys/email.h +7 -0
  185. data/vendor/libgit2/include/git2/sys/errors.h +76 -0
  186. data/vendor/libgit2/include/git2/sys/filter.h +66 -3
  187. data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
  188. data/vendor/libgit2/include/git2/sys/index.h +3 -2
  189. data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
  190. data/vendor/libgit2/include/git2/sys/merge.h +55 -7
  191. data/vendor/libgit2/include/git2/sys/midx.h +47 -4
  192. data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
  193. data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
  194. data/vendor/libgit2/include/git2/sys/path.h +12 -1
  195. data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
  196. data/vendor/libgit2/include/git2/sys/refs.h +3 -2
  197. data/vendor/libgit2/include/git2/sys/remote.h +53 -0
  198. data/vendor/libgit2/include/git2/sys/repository.h +63 -3
  199. data/vendor/libgit2/include/git2/sys/stream.h +26 -3
  200. data/vendor/libgit2/include/git2/sys/transport.h +87 -41
  201. data/vendor/libgit2/include/git2/tag.h +4 -1
  202. data/vendor/libgit2/include/git2/trace.h +9 -3
  203. data/vendor/libgit2/include/git2/transaction.h +3 -2
  204. data/vendor/libgit2/include/git2/transport.h +11 -3
  205. data/vendor/libgit2/include/git2/tree.h +20 -8
  206. data/vendor/libgit2/include/git2/types.h +26 -10
  207. data/vendor/libgit2/include/git2/version.h +63 -6
  208. data/vendor/libgit2/include/git2/worktree.h +30 -8
  209. data/vendor/libgit2/include/git2.h +1 -0
  210. data/vendor/libgit2/src/CMakeLists.txt +203 -420
  211. data/vendor/libgit2/src/README.md +12 -0
  212. data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
  213. data/vendor/libgit2/src/cli/README.md +26 -0
  214. data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
  215. data/vendor/libgit2/src/cli/cmd.h +37 -0
  216. data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
  217. data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
  218. data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
  219. data/vendor/libgit2/src/cli/cmd_config.c +241 -0
  220. data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
  221. data/vendor/libgit2/src/cli/cmd_help.c +85 -0
  222. data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
  223. data/vendor/libgit2/src/cli/cmd_init.c +102 -0
  224. data/vendor/libgit2/src/cli/common.c +168 -0
  225. data/vendor/libgit2/src/cli/common.h +63 -0
  226. data/vendor/libgit2/src/cli/error.h +51 -0
  227. data/vendor/libgit2/src/cli/main.c +134 -0
  228. data/vendor/libgit2/src/cli/opt.c +695 -0
  229. data/vendor/libgit2/src/cli/opt.h +367 -0
  230. data/vendor/libgit2/src/cli/opt_usage.c +263 -0
  231. data/vendor/libgit2/src/cli/opt_usage.h +40 -0
  232. data/vendor/libgit2/src/cli/progress.c +395 -0
  233. data/vendor/libgit2/src/cli/progress.h +129 -0
  234. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  235. data/vendor/libgit2/src/cli/unix/sighandler.c +37 -0
  236. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  237. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  238. data/vendor/libgit2/src/libgit2/CMakeLists.txt +140 -0
  239. data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
  240. data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
  241. data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
  242. data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
  243. data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
  244. data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
  245. data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
  246. data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
  247. data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
  248. data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
  249. data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
  250. data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
  251. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
  252. data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
  253. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
  254. data/vendor/libgit2/src/libgit2/branch.h +31 -0
  255. data/vendor/libgit2/src/libgit2/buf.c +126 -0
  256. data/vendor/libgit2/src/libgit2/buf.h +50 -0
  257. data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
  258. data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
  259. data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
  260. data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
  261. data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
  262. data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
  263. data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
  264. data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
  265. data/vendor/libgit2/src/libgit2/commit.h +87 -0
  266. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
  267. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
  268. data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
  269. data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
  270. data/vendor/libgit2/src/libgit2/common.h +55 -0
  271. data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
  272. data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
  273. data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
  274. data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
  275. data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
  276. data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
  277. data/vendor/libgit2/src/libgit2/config_list.c +285 -0
  278. data/vendor/libgit2/src/libgit2/config_list.h +32 -0
  279. data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
  280. data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
  281. data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
  282. data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
  283. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
  284. data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
  285. data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
  286. data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
  287. data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
  288. data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
  289. data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
  290. data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
  291. data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
  292. data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
  293. data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
  294. data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
  295. data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +49 -16
  296. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
  297. data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
  298. data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
  299. data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
  300. data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
  301. data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
  302. data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
  303. data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
  304. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
  305. data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
  306. data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
  307. data/vendor/libgit2/src/libgit2/grafts.c +270 -0
  308. data/vendor/libgit2/src/libgit2/grafts.h +35 -0
  309. data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
  310. data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
  311. data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
  312. data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
  313. data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
  314. data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
  315. data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
  316. data/vendor/libgit2/src/libgit2/index_map.c +95 -0
  317. data/vendor/libgit2/src/libgit2/index_map.h +28 -0
  318. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
  319. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
  320. data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
  321. data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
  322. data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
  323. data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
  324. data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
  325. data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
  326. data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
  327. data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
  328. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
  329. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
  330. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
  331. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
  332. data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
  333. data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
  334. data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
  335. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
  336. data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
  337. data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
  338. data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +67 -22
  339. data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
  340. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
  341. data/vendor/libgit2/src/libgit2/oid.h +284 -0
  342. data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
  343. data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
  344. data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
  345. data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
  346. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
  347. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
  348. data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
  349. data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
  350. data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
  351. data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
  352. data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
  353. data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
  354. data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
  355. data/vendor/libgit2/src/libgit2/path.c +375 -0
  356. data/vendor/libgit2/src/libgit2/path.h +68 -0
  357. data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +7 -7
  358. data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
  359. data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
  360. data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
  361. data/vendor/libgit2/src/{push.c → libgit2/push.c} +116 -60
  362. data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -16
  363. data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
  364. data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
  365. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +147 -147
  366. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
  367. data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
  368. data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
  369. data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
  370. data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
  371. data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
  372. data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
  373. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
  374. data/vendor/libgit2/src/libgit2/remote.h +101 -0
  375. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
  376. data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
  377. data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
  378. data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
  379. data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
  380. data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
  381. data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
  382. data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
  383. data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
  384. data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
  385. data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
  386. data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
  387. data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
  388. data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
  389. data/vendor/libgit2/src/libgit2/strarray.h +25 -0
  390. data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +62 -67
  391. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
  392. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
  393. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
  394. data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
  395. data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
  396. data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
  397. data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
  398. data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
  399. data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
  400. data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
  401. data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
  402. data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
  403. data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
  404. data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
  405. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
  406. data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
  407. data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
  408. data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
  409. data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +7 -7
  410. data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
  411. data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
  412. data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
  413. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
  414. data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
  415. data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
  416. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
  417. data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
  418. data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
  419. data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
  420. data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
  421. data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
  422. data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
  423. data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
  424. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
  425. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
  426. data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
  427. data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
  428. data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
  429. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
  430. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
  431. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
  432. data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
  433. data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
  434. data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
  435. data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
  436. data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
  437. data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
  438. data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
  439. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
  440. data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
  441. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
  442. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
  443. data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
  444. data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
  445. data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
  446. data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
  447. data/vendor/libgit2/src/util/alloc.h +65 -0
  448. data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
  449. data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
  450. data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
  451. data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
  452. data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
  453. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  454. data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
  455. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  456. data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
  457. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  458. data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
  459. data/vendor/libgit2/src/util/ctype_compat.h +70 -0
  460. data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
  461. data/vendor/libgit2/src/util/date.h +45 -0
  462. data/vendor/libgit2/src/util/errors.c +401 -0
  463. data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
  464. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
  465. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
  466. data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
  467. data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
  468. data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
  469. data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
  470. data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
  471. data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -59
  472. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  473. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  474. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
  475. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  476. data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
  477. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  478. data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
  479. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  480. data/vendor/libgit2/src/util/hash/openssl.c +347 -0
  481. data/vendor/libgit2/src/util/hash/openssl.h +61 -0
  482. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
  483. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  484. data/vendor/libgit2/src/util/hash/sha.h +73 -0
  485. data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
  486. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  487. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  488. data/vendor/libgit2/src/util/hash.c +158 -0
  489. data/vendor/libgit2/src/util/hash.h +61 -0
  490. data/vendor/libgit2/src/util/hashmap.h +424 -0
  491. data/vendor/libgit2/src/util/hashmap_str.h +43 -0
  492. data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
  493. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  494. data/vendor/libgit2/src/util/net.c +1160 -0
  495. data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
  496. data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
  497. data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
  498. data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
  499. data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
  500. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
  501. data/vendor/libgit2/src/util/process.h +222 -0
  502. data/vendor/libgit2/src/util/rand.c +230 -0
  503. data/vendor/libgit2/src/util/rand.h +37 -0
  504. data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
  505. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  506. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  507. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  508. data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +15 -14
  509. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
  510. data/vendor/libgit2/src/util/staticstr.h +66 -0
  511. data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
  512. data/vendor/libgit2/src/util/str.h +357 -0
  513. data/vendor/libgit2/src/util/strlist.c +108 -0
  514. data/vendor/libgit2/src/util/strlist.h +36 -0
  515. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  516. data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
  517. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  518. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
  519. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -6
  520. data/vendor/libgit2/src/util/unix/process.c +629 -0
  521. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
  522. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  523. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  524. data/vendor/libgit2/src/{util.c → util/util.c} +24 -19
  525. data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
  526. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  527. data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
  528. data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
  529. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  530. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  531. data/vendor/libgit2/src/{win32 → util/win32}/error.c +1 -1
  532. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  533. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  534. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +148 -17
  535. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
  536. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
  537. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +42 -35
  538. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  539. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  540. data/vendor/libgit2/src/util/win32/process.c +506 -0
  541. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  542. data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
  543. data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
  544. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
  545. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
  546. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
  547. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  548. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +1 -1
  549. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  550. data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
  551. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
  552. metadata +431 -362
  553. data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
  554. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
  555. data/vendor/libgit2/deps/http-parser/COPYING +0 -23
  556. data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
  557. data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
  558. data/vendor/libgit2/deps/zlib/COPYING +0 -27
  559. data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
  560. data/vendor/libgit2/src/alloc.h +0 -40
  561. data/vendor/libgit2/src/allocators/failalloc.c +0 -92
  562. data/vendor/libgit2/src/allocators/failalloc.h +0 -23
  563. data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
  564. data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
  565. data/vendor/libgit2/src/buffer.h +0 -374
  566. data/vendor/libgit2/src/commit.h +0 -46
  567. data/vendor/libgit2/src/config_entries.c +0 -237
  568. data/vendor/libgit2/src/config_entries.h +0 -24
  569. data/vendor/libgit2/src/config_mem.c +0 -220
  570. data/vendor/libgit2/src/errors.c +0 -238
  571. data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
  572. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  573. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  574. data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
  575. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  576. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  577. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  578. data/vendor/libgit2/src/hash/sha1.h +0 -38
  579. data/vendor/libgit2/src/hash.c +0 -110
  580. data/vendor/libgit2/src/hash.h +0 -46
  581. data/vendor/libgit2/src/idxmap.c +0 -157
  582. data/vendor/libgit2/src/idxmap.h +0 -177
  583. data/vendor/libgit2/src/khash.h +0 -615
  584. data/vendor/libgit2/src/libgit2.h +0 -15
  585. data/vendor/libgit2/src/message.h +0 -17
  586. data/vendor/libgit2/src/net.c +0 -540
  587. data/vendor/libgit2/src/netops.c +0 -125
  588. data/vendor/libgit2/src/netops.h +0 -68
  589. data/vendor/libgit2/src/offmap.c +0 -101
  590. data/vendor/libgit2/src/offmap.h +0 -133
  591. data/vendor/libgit2/src/oid.h +0 -51
  592. data/vendor/libgit2/src/oidarray.c +0 -43
  593. data/vendor/libgit2/src/oidmap.c +0 -107
  594. data/vendor/libgit2/src/oidmap.h +0 -128
  595. data/vendor/libgit2/src/remote.h +0 -55
  596. data/vendor/libgit2/src/streams/socket.c +0 -239
  597. data/vendor/libgit2/src/strmap.c +0 -100
  598. data/vendor/libgit2/src/strmap.h +0 -131
  599. data/vendor/libgit2/src/sysdir.c +0 -347
  600. data/vendor/libgit2/src/threadstate.c +0 -84
  601. data/vendor/libgit2/src/threadstate.h +0 -24
  602. data/vendor/libgit2/src/win32/findfile.c +0 -230
  603. data/vendor/libgit2/src/win32/findfile.h +0 -19
  604. data/vendor/libgit2/src/win32/utf-conv.c +0 -146
  605. data/vendor/libgit2/src/win32/utf-conv.h +0 -60
  606. /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
  607. /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
  608. /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
  609. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  610. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  611. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  612. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  613. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  614. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  615. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  616. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  617. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  618. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  619. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  620. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  621. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  622. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  623. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  624. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  625. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  626. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  627. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  628. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  629. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  630. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  631. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  632. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  633. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  634. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  635. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  636. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  637. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  638. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  639. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  640. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  641. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  642. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  643. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  644. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  645. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  646. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  647. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  648. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  649. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  650. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  651. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  652. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  653. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  654. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  655. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  656. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -88,7 +88,7 @@ static int xdl_cleanup_merge(xdmerge_t *c)
88
88
  if (c->mode == 0)
89
89
  count++;
90
90
  next_c = c->next;
91
- free(c);
91
+ xdl_free(c);
92
92
  }
93
93
  return count;
94
94
  }
@@ -109,53 +109,44 @@ static int xdl_merge_cmp_lines(xdfenv_t *xe1, int i1, xdfenv_t *xe2, int i2,
109
109
  return 0;
110
110
  }
111
111
 
112
- static int xdl_recs_copy_0(size_t *out, int use_orig, xdfenv_t *xe, int i, int count, int needs_cr, int add_nl, char *dest)
112
+ static int xdl_recs_copy_0(int use_orig, xdfenv_t *xe, int i, int count, int needs_cr, int add_nl, char *dest)
113
113
  {
114
114
  xrecord_t **recs;
115
- size_t size = 0;
116
-
117
- *out = 0;
115
+ int size = 0;
118
116
 
119
117
  recs = (use_orig ? xe->xdf1.recs : xe->xdf2.recs) + i;
120
118
 
121
119
  if (count < 1)
122
120
  return 0;
123
121
 
124
- for (i = 0; i < count; ) {
122
+ for (i = 0; i < count; size += recs[i++]->size)
125
123
  if (dest)
126
124
  memcpy(dest + size, recs[i]->ptr, recs[i]->size);
127
-
128
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, recs[i++]->size);
129
- }
130
-
131
125
  if (add_nl) {
132
126
  i = recs[count - 1]->size;
133
127
  if (i == 0 || recs[count - 1]->ptr[i - 1] != '\n') {
134
128
  if (needs_cr) {
135
129
  if (dest)
136
130
  dest[size] = '\r';
137
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, 1);
131
+ size++;
138
132
  }
139
133
 
140
134
  if (dest)
141
135
  dest[size] = '\n';
142
-
143
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, 1);
136
+ size++;
144
137
  }
145
138
  }
146
-
147
- *out = size;
148
- return 0;
139
+ return size;
149
140
  }
150
141
 
151
- static int xdl_recs_copy(size_t *out, xdfenv_t *xe, int i, int count, int needs_cr, int add_nl, char *dest)
142
+ static int xdl_recs_copy(xdfenv_t *xe, int i, int count, int needs_cr, int add_nl, char *dest)
152
143
  {
153
- return xdl_recs_copy_0(out, 0, xe, i, count, needs_cr, add_nl, dest);
144
+ return xdl_recs_copy_0(0, xe, i, count, needs_cr, add_nl, dest);
154
145
  }
155
146
 
156
- static int xdl_orig_copy(size_t *out, xdfenv_t *xe, int i, int count, int needs_cr, int add_nl, char *dest)
147
+ static int xdl_orig_copy(xdfenv_t *xe, int i, int count, int needs_cr, int add_nl, char *dest)
157
148
  {
158
- return xdl_recs_copy_0(out, 1, xe, i, count, needs_cr, add_nl, dest);
149
+ return xdl_recs_copy_0(1, xe, i, count, needs_cr, add_nl, dest);
159
150
  }
160
151
 
161
152
  /*
@@ -202,32 +193,26 @@ static int is_cr_needed(xdfenv_t *xe1, xdfenv_t *xe2, xdmerge_t *m)
202
193
  return needs_cr < 0 ? 0 : needs_cr;
203
194
  }
204
195
 
205
- static int fill_conflict_hunk(size_t *out, xdfenv_t *xe1, const char *name1,
196
+ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,
206
197
  xdfenv_t *xe2, const char *name2,
207
198
  const char *name3,
208
- size_t size, int i, int style,
199
+ int size, int i, int style,
209
200
  xdmerge_t *m, char *dest, int marker_size)
210
201
  {
211
- int marker1_size = (name1 ? (int)strlen(name1) + 1 : 0);
212
- int marker2_size = (name2 ? (int)strlen(name2) + 1 : 0);
213
- int marker3_size = (name3 ? (int)strlen(name3) + 1 : 0);
202
+ int marker1_size = (name1 ? strlen(name1) + 1 : 0);
203
+ int marker2_size = (name2 ? strlen(name2) + 1 : 0);
204
+ int marker3_size = (name3 ? strlen(name3) + 1 : 0);
214
205
  int needs_cr = is_cr_needed(xe1, xe2, m);
215
- size_t copied;
216
-
217
- *out = 0;
218
206
 
219
207
  if (marker_size <= 0)
220
208
  marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
221
209
 
222
210
  /* Before conflicting part */
223
- if (xdl_recs_copy(&copied, xe1, i, m->i1 - i, 0, 0,
224
- dest ? dest + size : NULL) < 0)
225
- return -1;
226
-
227
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
211
+ size += xdl_recs_copy(xe1, i, m->i1 - i, 0, 0,
212
+ dest ? dest + size : NULL);
228
213
 
229
214
  if (!dest) {
230
- GIT_ERROR_CHECK_ALLOC_ADD5(&size, size, marker_size, 1, needs_cr, marker1_size);
215
+ size += marker_size + 1 + needs_cr + marker1_size;
231
216
  } else {
232
217
  memset(dest + size, '<', marker_size);
233
218
  size += marker_size;
@@ -242,16 +227,13 @@ static int fill_conflict_hunk(size_t *out, xdfenv_t *xe1, const char *name1,
242
227
  }
243
228
 
244
229
  /* Postimage from side #1 */
245
- if (xdl_recs_copy(&copied, xe1, m->i1, m->chg1, needs_cr, 1,
246
- dest ? dest + size : NULL) < 0)
247
- return -1;
248
-
249
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
230
+ size += xdl_recs_copy(xe1, m->i1, m->chg1, needs_cr, 1,
231
+ dest ? dest + size : NULL);
250
232
 
251
- if (style == XDL_MERGE_DIFF3) {
233
+ if (style == XDL_MERGE_DIFF3 || style == XDL_MERGE_ZEALOUS_DIFF3) {
252
234
  /* Shared preimage */
253
235
  if (!dest) {
254
- GIT_ERROR_CHECK_ALLOC_ADD5(&size, size, marker_size, 1, needs_cr, marker3_size);
236
+ size += marker_size + 1 + needs_cr + marker3_size;
255
237
  } else {
256
238
  memset(dest + size, '|', marker_size);
257
239
  size += marker_size;
@@ -264,15 +246,12 @@ static int fill_conflict_hunk(size_t *out, xdfenv_t *xe1, const char *name1,
264
246
  dest[size++] = '\r';
265
247
  dest[size++] = '\n';
266
248
  }
267
-
268
- if (xdl_orig_copy(&copied, xe1, m->i0, m->chg0, needs_cr, 1,
269
- dest ? dest + size : NULL) < 0)
270
- return -1;
271
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
249
+ size += xdl_orig_copy(xe1, m->i0, m->chg0, needs_cr, 1,
250
+ dest ? dest + size : NULL);
272
251
  }
273
252
 
274
253
  if (!dest) {
275
- GIT_ERROR_CHECK_ALLOC_ADD4(&size, size, marker_size, 1, needs_cr);
254
+ size += marker_size + 1 + needs_cr;
276
255
  } else {
277
256
  memset(dest + size, '=', marker_size);
278
257
  size += marker_size;
@@ -282,14 +261,10 @@ static int fill_conflict_hunk(size_t *out, xdfenv_t *xe1, const char *name1,
282
261
  }
283
262
 
284
263
  /* Postimage from side #2 */
285
-
286
- if (xdl_recs_copy(&copied, xe2, m->i2, m->chg2, needs_cr, 1,
287
- dest ? dest + size : NULL) < 0)
288
- return -1;
289
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
290
-
264
+ size += xdl_recs_copy(xe2, m->i2, m->chg2, needs_cr, 1,
265
+ dest ? dest + size : NULL);
291
266
  if (!dest) {
292
- GIT_ERROR_CHECK_ALLOC_ADD5(&size, size, marker_size, 1, needs_cr, marker2_size);
267
+ size += marker_size + 1 + needs_cr + marker2_size;
293
268
  } else {
294
269
  memset(dest + size, '>', marker_size);
295
270
  size += marker_size;
@@ -302,71 +277,83 @@ static int fill_conflict_hunk(size_t *out, xdfenv_t *xe1, const char *name1,
302
277
  dest[size++] = '\r';
303
278
  dest[size++] = '\n';
304
279
  }
305
-
306
- *out = size;
307
- return 0;
280
+ return size;
308
281
  }
309
282
 
310
- static int xdl_fill_merge_buffer(size_t *out,
311
- xdfenv_t *xe1, const char *name1,
283
+ static int xdl_fill_merge_buffer(xdfenv_t *xe1, const char *name1,
312
284
  xdfenv_t *xe2, const char *name2,
313
285
  const char *ancestor_name,
314
286
  int favor,
315
287
  xdmerge_t *m, char *dest, int style,
316
288
  int marker_size)
317
289
  {
318
- size_t size, copied;
319
- int i;
320
-
321
- *out = 0;
290
+ int size, i;
322
291
 
323
292
  for (size = i = 0; m; m = m->next) {
324
293
  if (favor && !m->mode)
325
294
  m->mode = favor;
326
295
 
327
- if (m->mode == 0) {
328
- if (fill_conflict_hunk(&size, xe1, name1, xe2, name2,
296
+ if (m->mode == 0)
297
+ size = fill_conflict_hunk(xe1, name1, xe2, name2,
329
298
  ancestor_name,
330
299
  size, i, style, m, dest,
331
- marker_size) < 0)
332
- return -1;
333
- }
300
+ marker_size);
334
301
  else if (m->mode & 3) {
335
302
  /* Before conflicting part */
336
- if (xdl_recs_copy(&copied, xe1, i, m->i1 - i, 0, 0,
337
- dest ? dest + size : NULL) < 0)
338
- return -1;
339
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
340
-
303
+ size += xdl_recs_copy(xe1, i, m->i1 - i, 0, 0,
304
+ dest ? dest + size : NULL);
341
305
  /* Postimage from side #1 */
342
306
  if (m->mode & 1) {
343
307
  int needs_cr = is_cr_needed(xe1, xe2, m);
344
308
 
345
- if (xdl_recs_copy(&copied, xe1, m->i1, m->chg1, needs_cr, (m->mode & 2),
346
- dest ? dest + size : NULL) < 0)
347
- return -1;
348
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
309
+ size += xdl_recs_copy(xe1, m->i1, m->chg1, needs_cr, (m->mode & 2),
310
+ dest ? dest + size : NULL);
349
311
  }
350
-
351
312
  /* Postimage from side #2 */
352
- if (m->mode & 2) {
353
- if (xdl_recs_copy(&copied, xe2, m->i2, m->chg2, 0, 0,
354
- dest ? dest + size : NULL) < 0)
355
- return -1;
356
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
357
- }
313
+ if (m->mode & 2)
314
+ size += xdl_recs_copy(xe2, m->i2, m->chg2, 0, 0,
315
+ dest ? dest + size : NULL);
358
316
  } else
359
317
  continue;
360
318
  i = m->i1 + m->chg1;
361
319
  }
320
+ size += xdl_recs_copy(xe1, i, xe1->xdf2.nrec - i, 0, 0,
321
+ dest ? dest + size : NULL);
322
+ return size;
323
+ }
362
324
 
363
- if (xdl_recs_copy(&copied, xe1, i, xe1->xdf2.nrec - i, 0, 0,
364
- dest ? dest + size : NULL) < 0)
365
- return -1;
366
- GIT_ERROR_CHECK_ALLOC_ADD(&size, size, copied);
325
+ static int recmatch(xrecord_t *rec1, xrecord_t *rec2, unsigned long flags)
326
+ {
327
+ return xdl_recmatch(rec1->ptr, rec1->size,
328
+ rec2->ptr, rec2->size, flags);
329
+ }
367
330
 
368
- *out = size;
369
- return 0;
331
+ /*
332
+ * Remove any common lines from the beginning and end of the conflicted region.
333
+ */
334
+ static void xdl_refine_zdiff3_conflicts(xdfenv_t *xe1, xdfenv_t *xe2, xdmerge_t *m,
335
+ xpparam_t const *xpp)
336
+ {
337
+ xrecord_t **rec1 = xe1->xdf2.recs, **rec2 = xe2->xdf2.recs;
338
+ for (; m; m = m->next) {
339
+ /* let's handle just the conflicts */
340
+ if (m->mode)
341
+ continue;
342
+
343
+ while(m->chg1 && m->chg2 &&
344
+ recmatch(rec1[m->i1], rec2[m->i2], xpp->flags)) {
345
+ m->chg1--;
346
+ m->chg2--;
347
+ m->i1++;
348
+ m->i2++;
349
+ }
350
+ while (m->chg1 && m->chg2 &&
351
+ recmatch(rec1[m->i1 + m->chg1 - 1],
352
+ rec2[m->i2 + m->chg2 - 1], xpp->flags)) {
353
+ m->chg1--;
354
+ m->chg2--;
355
+ }
356
+ }
370
357
  }
371
358
 
372
359
  /*
@@ -469,7 +456,7 @@ static void xdl_merge_two_conflicts(xdmerge_t *m)
469
456
  m->chg1 = next_m->i1 + next_m->chg1 - m->i1;
470
457
  m->chg2 = next_m->i2 + next_m->chg2 - m->i2;
471
458
  m->next = next_m->next;
472
- free(next_m);
459
+ xdl_free(next_m);
473
460
  }
474
461
 
475
462
  /*
@@ -529,7 +516,22 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
529
516
  int style = xmp->style;
530
517
  int favor = xmp->favor;
531
518
 
532
- if (style == XDL_MERGE_DIFF3) {
519
+ /*
520
+ * XDL_MERGE_DIFF3 does not attempt to refine conflicts by looking
521
+ * at common areas of sides 1 & 2, because the base (side 0) does
522
+ * not match and is being shown. Similarly, simplification of
523
+ * non-conflicts is also skipped due to the skipping of conflict
524
+ * refinement.
525
+ *
526
+ * XDL_MERGE_ZEALOUS_DIFF3, on the other hand, will attempt to
527
+ * refine conflicts looking for common areas of sides 1 & 2.
528
+ * However, since the base is being shown and does not match,
529
+ * it will only look for common areas at the beginning or end
530
+ * of the conflict block. Since XDL_MERGE_ZEALOUS_DIFF3's
531
+ * conflict refinement is much more limited in this fashion, the
532
+ * conflict simplification will be skipped.
533
+ */
534
+ if (style == XDL_MERGE_DIFF3 || style == XDL_MERGE_ZEALOUS_DIFF3) {
533
535
  /*
534
536
  * "diff3 -m" output does not make sense for anything
535
537
  * more aggressive than XDL_MERGE_EAGER.
@@ -650,34 +652,31 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
650
652
  if (!changes)
651
653
  changes = c;
652
654
  /* refine conflicts */
653
- if (XDL_MERGE_ZEALOUS <= level &&
654
- (xdl_refine_conflicts(xe1, xe2, changes, xpp) < 0 ||
655
- xdl_simplify_non_conflicts(xe1, changes,
656
- XDL_MERGE_ZEALOUS < level) < 0)) {
655
+ if (style == XDL_MERGE_ZEALOUS_DIFF3) {
656
+ xdl_refine_zdiff3_conflicts(xe1, xe2, changes, xpp);
657
+ } else if (XDL_MERGE_ZEALOUS <= level &&
658
+ (xdl_refine_conflicts(xe1, xe2, changes, xpp) < 0 ||
659
+ xdl_simplify_non_conflicts(xe1, changes,
660
+ XDL_MERGE_ZEALOUS < level) < 0)) {
657
661
  xdl_cleanup_merge(changes);
658
662
  return -1;
659
663
  }
660
664
  /* output */
661
665
  if (result) {
662
666
  int marker_size = xmp->marker_size;
663
- size_t size;
664
-
665
- if (xdl_fill_merge_buffer(&size, xe1, name1, xe2, name2,
667
+ int size = xdl_fill_merge_buffer(xe1, name1, xe2, name2,
666
668
  ancestor_name,
667
669
  favor, changes, NULL, style,
668
- marker_size) < 0)
669
- return -1;
670
-
670
+ marker_size);
671
671
  result->ptr = xdl_malloc(size);
672
672
  if (!result->ptr) {
673
673
  xdl_cleanup_merge(changes);
674
674
  return -1;
675
675
  }
676
676
  result->size = size;
677
- if (xdl_fill_merge_buffer(&size, xe1, name1, xe2, name2,
677
+ xdl_fill_merge_buffer(xe1, name1, xe2, name2,
678
678
  ancestor_name, favor, changes,
679
- result->ptr, style, marker_size) < 0)
680
- return -1;
679
+ result->ptr, style, marker_size);
681
680
  }
682
681
  return xdl_cleanup_merge(changes);
683
682
  }
@@ -685,54 +684,42 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
685
684
  int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
686
685
  xmparam_t const *xmp, mmbuffer_t *result)
687
686
  {
688
- xdchange_t *xscr1, *xscr2;
687
+ xdchange_t *xscr1 = NULL, *xscr2 = NULL;
689
688
  xdfenv_t xe1, xe2;
690
- int status;
689
+ int status = -1;
691
690
  xpparam_t const *xpp = &xmp->xpp;
692
691
 
693
692
  result->ptr = NULL;
694
693
  result->size = 0;
695
694
 
696
- if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0) {
697
- return -1;
698
- }
699
- if (xdl_do_diff(orig, mf2, xpp, &xe2) < 0) {
700
- xdl_free_env(&xe1);
695
+ if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0)
701
696
  return -1;
702
- }
697
+
698
+ if (xdl_do_diff(orig, mf2, xpp, &xe2) < 0)
699
+ goto free_xe1; /* avoid double free of xe2 */
700
+
703
701
  if (xdl_change_compact(&xe1.xdf1, &xe1.xdf2, xpp->flags) < 0 ||
704
702
  xdl_change_compact(&xe1.xdf2, &xe1.xdf1, xpp->flags) < 0 ||
705
- xdl_build_script(&xe1, &xscr1) < 0) {
706
- xdl_free_env(&xe1);
707
- return -1;
708
- }
703
+ xdl_build_script(&xe1, &xscr1) < 0)
704
+ goto out;
705
+
709
706
  if (xdl_change_compact(&xe2.xdf1, &xe2.xdf2, xpp->flags) < 0 ||
710
707
  xdl_change_compact(&xe2.xdf2, &xe2.xdf1, xpp->flags) < 0 ||
711
- xdl_build_script(&xe2, &xscr2) < 0) {
712
- xdl_free_script(xscr1);
713
- xdl_free_env(&xe1);
714
- xdl_free_env(&xe2);
715
- return -1;
716
- }
717
- status = 0;
708
+ xdl_build_script(&xe2, &xscr2) < 0)
709
+ goto out;
710
+
718
711
  if (!xscr1) {
719
712
  result->ptr = xdl_malloc(mf2->size);
720
- if (!result->ptr) {
721
- xdl_free_script(xscr2);
722
- xdl_free_env(&xe1);
723
- xdl_free_env(&xe2);
724
- return -1;
725
- }
713
+ if (!result->ptr)
714
+ goto out;
715
+ status = 0;
726
716
  memcpy(result->ptr, mf2->ptr, mf2->size);
727
717
  result->size = mf2->size;
728
718
  } else if (!xscr2) {
729
719
  result->ptr = xdl_malloc(mf1->size);
730
- if (!result->ptr) {
731
- xdl_free_script(xscr1);
732
- xdl_free_env(&xe1);
733
- xdl_free_env(&xe2);
734
- return -1;
735
- }
720
+ if (!result->ptr)
721
+ goto out;
722
+ status = 0;
736
723
  memcpy(result->ptr, mf1->ptr, mf1->size);
737
724
  result->size = mf1->size;
738
725
  } else {
@@ -740,11 +727,13 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
740
727
  &xe2, xscr2,
741
728
  xmp, result);
742
729
  }
730
+ out:
743
731
  xdl_free_script(xscr1);
744
732
  xdl_free_script(xscr2);
745
733
 
746
- xdl_free_env(&xe1);
747
734
  xdl_free_env(&xe2);
735
+ free_xe1:
736
+ xdl_free_env(&xe1);
748
737
 
749
738
  return status;
750
739
  }
@@ -20,8 +20,6 @@
20
20
  *
21
21
  */
22
22
  #include "xinclude.h"
23
- #include "xtypes.h"
24
- #include "xdiff.h"
25
23
 
26
24
  /*
27
25
  * The basic idea of patience diff is to find lines that are unique in
@@ -71,14 +69,13 @@ struct hashmap {
71
69
  } *entries, *first, *last;
72
70
  /* were common records found? */
73
71
  unsigned long has_matches;
74
- mmfile_t *file1, *file2;
75
72
  xdfenv_t *env;
76
73
  xpparam_t const *xpp;
77
74
  };
78
75
 
79
76
  static int is_anchor(xpparam_t const *xpp, const char *line)
80
77
  {
81
- unsigned long i;
78
+ int i;
82
79
  for (i = 0; i < xpp->anchors_nr; i++) {
83
80
  if (!strncmp(line, xpp->anchors[i], strlen(xpp->anchors[i])))
84
81
  return 1;
@@ -92,7 +89,7 @@ static void insert_record(xpparam_t const *xpp, int line, struct hashmap *map,
92
89
  {
93
90
  xrecord_t **records = pass == 1 ?
94
91
  map->env->xdf1.recs : map->env->xdf2.recs;
95
- xrecord_t *record = records[line - 1], *other;
92
+ xrecord_t *record = records[line - 1];
96
93
  /*
97
94
  * After xdl_prepare_env() (or more precisely, due to
98
95
  * xdl_classify_record()), the "ha" member of the records (AKA lines)
@@ -106,11 +103,7 @@ static void insert_record(xpparam_t const *xpp, int line, struct hashmap *map,
106
103
  int index = (int)((record->ha << 1) % map->alloc);
107
104
 
108
105
  while (map->entries[index].line1) {
109
- other = map->env->xdf1.recs[map->entries[index].line1 - 1];
110
- if (map->entries[index].hash != record->ha ||
111
- !xdl_recmatch(record->ptr, record->size,
112
- other->ptr, other->size,
113
- map->xpp->flags)) {
106
+ if (map->entries[index].hash != record->ha) {
114
107
  if (++index >= map->alloc)
115
108
  index = 0;
116
109
  continue;
@@ -145,23 +138,17 @@ static void insert_record(xpparam_t const *xpp, int line, struct hashmap *map,
145
138
  *
146
139
  * It is assumed that env has been prepared using xdl_prepare().
147
140
  */
148
- static int fill_hashmap(mmfile_t *file1, mmfile_t *file2,
149
- xpparam_t const *xpp, xdfenv_t *env,
141
+ static int fill_hashmap(xpparam_t const *xpp, xdfenv_t *env,
150
142
  struct hashmap *result,
151
143
  int line1, int count1, int line2, int count2)
152
144
  {
153
- result->file1 = file1;
154
- result->file2 = file2;
155
145
  result->xpp = xpp;
156
146
  result->env = env;
157
147
 
158
148
  /* We know exactly how large we want the hash map */
159
149
  result->alloc = count1 * 2;
160
- result->entries = (struct entry *)
161
- xdl_malloc(result->alloc * sizeof(struct entry));
162
- if (!result->entries)
150
+ if (!XDL_CALLOC_ARRAY(result->entries, result->alloc))
163
151
  return -1;
164
- memset(result->entries, 0, result->alloc * sizeof(struct entry));
165
152
 
166
153
  /* First, fill with entries from the first file */
167
154
  while (count1--)
@@ -204,9 +191,9 @@ static int binary_search(struct entry **sequence, int longest,
204
191
  * item per sequence length: the sequence with the smallest last
205
192
  * element (in terms of line2).
206
193
  */
207
- static struct entry *find_longest_common_sequence(struct hashmap *map)
194
+ static int find_longest_common_sequence(struct hashmap *map, struct entry **res)
208
195
  {
209
- struct entry **sequence = xdl_malloc(map->nr * sizeof(struct entry *));
196
+ struct entry **sequence;
210
197
  int longest = 0, i;
211
198
  struct entry *entry;
212
199
 
@@ -217,8 +204,8 @@ static struct entry *find_longest_common_sequence(struct hashmap *map)
217
204
  */
218
205
  int anchor_i = -1;
219
206
 
220
- if (!sequence)
221
- return NULL;
207
+ if (!XDL_ALLOC_ARRAY(sequence, map->nr))
208
+ return -1;
222
209
 
223
210
  for (entry = map->first; entry; entry = entry->next) {
224
211
  if (!entry->line2 || entry->line2 == NON_UNIQUE)
@@ -239,8 +226,9 @@ static struct entry *find_longest_common_sequence(struct hashmap *map)
239
226
 
240
227
  /* No common unique lines were found */
241
228
  if (!longest) {
229
+ *res = NULL;
242
230
  xdl_free(sequence);
243
- return NULL;
231
+ return 0;
244
232
  }
245
233
 
246
234
  /* Iterate starting at the last element, adjusting the "next" members */
@@ -250,20 +238,19 @@ static struct entry *find_longest_common_sequence(struct hashmap *map)
250
238
  entry->previous->next = entry;
251
239
  entry = entry->previous;
252
240
  }
241
+ *res = entry;
253
242
  xdl_free(sequence);
254
- return entry;
243
+ return 0;
255
244
  }
256
245
 
257
246
  static int match(struct hashmap *map, int line1, int line2)
258
247
  {
259
248
  xrecord_t *record1 = map->env->xdf1.recs[line1 - 1];
260
249
  xrecord_t *record2 = map->env->xdf2.recs[line2 - 1];
261
- return xdl_recmatch(record1->ptr, record1->size,
262
- record2->ptr, record2->size, map->xpp->flags);
250
+ return record1->ha == record2->ha;
263
251
  }
264
252
 
265
- static int patience_diff(mmfile_t *file1, mmfile_t *file2,
266
- xpparam_t const *xpp, xdfenv_t *env,
253
+ static int patience_diff(xpparam_t const *xpp, xdfenv_t *env,
267
254
  int line1, int count1, int line2, int count2);
268
255
 
269
256
  static int walk_common_sequence(struct hashmap *map, struct entry *first,
@@ -294,11 +281,7 @@ static int walk_common_sequence(struct hashmap *map, struct entry *first,
294
281
 
295
282
  /* Recurse */
296
283
  if (next1 > line1 || next2 > line2) {
297
- struct hashmap submap;
298
-
299
- memset(&submap, 0, sizeof(submap));
300
- if (patience_diff(map->file1, map->file2,
301
- map->xpp, map->env,
284
+ if (patience_diff(map->xpp, map->env,
302
285
  line1, next1 - line1,
303
286
  line2, next2 - line2))
304
287
  return -1;
@@ -323,6 +306,8 @@ static int fall_back_to_classic_diff(struct hashmap *map,
323
306
  int line1, int count1, int line2, int count2)
324
307
  {
325
308
  xpparam_t xpp;
309
+
310
+ memset(&xpp, 0, sizeof(xpp));
326
311
  xpp.flags = map->xpp->flags & ~XDF_DIFF_ALGORITHM_MASK;
327
312
 
328
313
  return xdl_fall_back_diff(map->env, &xpp,
@@ -335,8 +320,7 @@ static int fall_back_to_classic_diff(struct hashmap *map,
335
320
  *
336
321
  * This function assumes that env was prepared with xdl_prepare_env().
337
322
  */
338
- static int patience_diff(mmfile_t *file1, mmfile_t *file2,
339
- xpparam_t const *xpp, xdfenv_t *env,
323
+ static int patience_diff(xpparam_t const *xpp, xdfenv_t *env,
340
324
  int line1, int count1, int line2, int count2)
341
325
  {
342
326
  struct hashmap map;
@@ -355,7 +339,7 @@ static int patience_diff(mmfile_t *file1, mmfile_t *file2,
355
339
  }
356
340
 
357
341
  memset(&map, 0, sizeof(map));
358
- if (fill_hashmap(file1, file2, xpp, env, &map,
342
+ if (fill_hashmap(xpp, env, &map,
359
343
  line1, count1, line2, count2))
360
344
  return -1;
361
345
 
@@ -369,25 +353,21 @@ static int patience_diff(mmfile_t *file1, mmfile_t *file2,
369
353
  return 0;
370
354
  }
371
355
 
372
- first = find_longest_common_sequence(&map);
356
+ result = find_longest_common_sequence(&map, &first);
357
+ if (result)
358
+ goto out;
373
359
  if (first)
374
360
  result = walk_common_sequence(&map, first,
375
361
  line1, count1, line2, count2);
376
362
  else
377
363
  result = fall_back_to_classic_diff(&map,
378
364
  line1, count1, line2, count2);
379
-
365
+ out:
380
366
  xdl_free(map.entries);
381
367
  return result;
382
368
  }
383
369
 
384
- int xdl_do_patience_diff(mmfile_t *file1, mmfile_t *file2,
385
- xpparam_t const *xpp, xdfenv_t *env)
370
+ int xdl_do_patience_diff(xpparam_t const *xpp, xdfenv_t *env)
386
371
  {
387
- if (xdl_prepare_env(file1, file2, xpp, env) < 0)
388
- return -1;
389
-
390
- /* environment is cleaned up in xdl_diff() */
391
- return patience_diff(file1, file2, xpp, env,
392
- 1, env->xdf1.nrec, 1, env->xdf2.nrec);
372
+ return patience_diff(xpp, env, 1, env->xdf1.nrec, 1, env->xdf2.nrec);
393
373
  }