rugged 1.0.0 → 1.2.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 (338) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -0
  3. data/README.md +3 -3
  4. data/ext/rugged/rugged.c +7 -4
  5. data/ext/rugged/rugged_commit.c +1 -1
  6. data/ext/rugged/rugged_config.c +1 -1
  7. data/ext/rugged/rugged_object.c +1 -1
  8. data/ext/rugged/rugged_remote.c +32 -2
  9. data/ext/rugged/rugged_repo.c +13 -3
  10. data/lib/rugged/commit.rb +17 -4
  11. data/lib/rugged/repository.rb +7 -8
  12. data/lib/rugged/submodule_collection.rb +4 -4
  13. data/lib/rugged/version.rb +1 -1
  14. data/vendor/libgit2/CMakeLists.txt +41 -74
  15. data/vendor/libgit2/COPYING +109 -1
  16. data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
  17. data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
  18. data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
  19. data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
  20. data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
  21. data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
  22. data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
  23. data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
  24. data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
  25. data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
  26. data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
  27. data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
  28. data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
  29. data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
  30. data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
  31. data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
  32. data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
  33. data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
  34. data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
  35. data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
  36. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
  37. data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
  38. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
  39. data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
  40. data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
  41. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
  42. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
  43. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
  44. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
  45. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
  46. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
  47. data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
  48. data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
  49. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
  50. data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
  51. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
  52. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
  53. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
  54. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
  55. data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
  56. data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
  57. data/vendor/libgit2/deps/pcre/LICENCE +93 -0
  58. data/vendor/libgit2/deps/pcre/pcre.h +2 -2
  59. data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
  60. data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
  61. data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
  62. data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
  63. data/vendor/libgit2/deps/zlib/deflate.c +1 -0
  64. data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
  65. data/vendor/libgit2/include/git2/apply.h +2 -0
  66. data/vendor/libgit2/include/git2/attr.h +89 -0
  67. data/vendor/libgit2/include/git2/blame.h +95 -42
  68. data/vendor/libgit2/include/git2/blob.h +31 -3
  69. data/vendor/libgit2/include/git2/branch.h +25 -0
  70. data/vendor/libgit2/include/git2/cert.h +42 -5
  71. data/vendor/libgit2/include/git2/checkout.h +28 -12
  72. data/vendor/libgit2/include/git2/commit.h +35 -19
  73. data/vendor/libgit2/include/git2/common.h +33 -6
  74. data/vendor/libgit2/include/git2/config.h +1 -1
  75. data/vendor/libgit2/include/git2/deprecated.h +248 -8
  76. data/vendor/libgit2/include/git2/diff.h +35 -20
  77. data/vendor/libgit2/include/git2/errors.h +8 -7
  78. data/vendor/libgit2/include/git2/filter.h +57 -17
  79. data/vendor/libgit2/include/git2/graph.h +20 -2
  80. data/vendor/libgit2/include/git2/index.h +4 -5
  81. data/vendor/libgit2/include/git2/indexer.h +2 -1
  82. data/vendor/libgit2/include/git2/odb.h +44 -20
  83. data/vendor/libgit2/include/git2/pack.h +1 -1
  84. data/vendor/libgit2/include/git2/patch.h +8 -0
  85. data/vendor/libgit2/include/git2/rebase.h +25 -1
  86. data/vendor/libgit2/include/git2/refs.h +9 -5
  87. data/vendor/libgit2/include/git2/remote.h +59 -6
  88. data/vendor/libgit2/include/git2/repository.h +95 -52
  89. data/vendor/libgit2/include/git2/revparse.h +5 -5
  90. data/vendor/libgit2/include/git2/status.h +115 -59
  91. data/vendor/libgit2/include/git2/strarray.h +6 -10
  92. data/vendor/libgit2/include/git2/submodule.h +9 -0
  93. data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
  94. data/vendor/libgit2/include/git2/sys/filter.h +49 -28
  95. data/vendor/libgit2/include/git2/sys/midx.h +74 -0
  96. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
  97. data/vendor/libgit2/include/git2/sys/transport.h +1 -0
  98. data/vendor/libgit2/include/git2/tag.h +12 -0
  99. data/vendor/libgit2/include/git2/transport.h +1 -1
  100. data/vendor/libgit2/include/git2/tree.h +2 -14
  101. data/vendor/libgit2/include/git2/types.h +9 -0
  102. data/vendor/libgit2/include/git2/version.h +3 -3
  103. data/vendor/libgit2/include/git2/worktree.h +1 -0
  104. data/vendor/libgit2/src/CMakeLists.txt +77 -44
  105. data/vendor/libgit2/src/alloc.c +21 -8
  106. data/vendor/libgit2/src/allocators/failalloc.c +92 -0
  107. data/vendor/libgit2/src/allocators/failalloc.h +23 -0
  108. data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
  109. data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
  110. data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
  111. data/vendor/libgit2/src/annotated_commit.c +21 -9
  112. data/vendor/libgit2/src/apply.c +21 -8
  113. data/vendor/libgit2/src/array.h +11 -11
  114. data/vendor/libgit2/src/assert_safe.h +58 -0
  115. data/vendor/libgit2/src/attr.c +181 -74
  116. data/vendor/libgit2/src/attr_file.c +92 -42
  117. data/vendor/libgit2/src/attr_file.h +32 -11
  118. data/vendor/libgit2/src/attrcache.c +44 -40
  119. data/vendor/libgit2/src/attrcache.h +4 -5
  120. data/vendor/libgit2/src/blame.c +28 -15
  121. data/vendor/libgit2/src/blame_git.c +6 -3
  122. data/vendor/libgit2/src/blob.c +46 -24
  123. data/vendor/libgit2/src/branch.c +87 -37
  124. data/vendor/libgit2/src/buffer.c +339 -27
  125. data/vendor/libgit2/src/buffer.h +153 -2
  126. data/vendor/libgit2/src/cache.c +3 -24
  127. data/vendor/libgit2/src/cache.h +7 -7
  128. data/vendor/libgit2/src/cc-compat.h +10 -2
  129. data/vendor/libgit2/src/checkout.c +97 -98
  130. data/vendor/libgit2/src/cherrypick.c +8 -2
  131. data/vendor/libgit2/src/clone.c +104 -29
  132. data/vendor/libgit2/src/commit.c +41 -28
  133. data/vendor/libgit2/src/commit_graph.c +1209 -0
  134. data/vendor/libgit2/src/commit_graph.h +162 -0
  135. data/vendor/libgit2/src/commit_list.c +46 -0
  136. data/vendor/libgit2/src/commit_list.h +2 -0
  137. data/vendor/libgit2/src/common.h +26 -2
  138. data/vendor/libgit2/src/config.c +40 -22
  139. data/vendor/libgit2/src/config_cache.c +9 -4
  140. data/vendor/libgit2/src/config_entries.c +35 -27
  141. data/vendor/libgit2/src/config_file.c +25 -8
  142. data/vendor/libgit2/src/config_parse.c +5 -7
  143. data/vendor/libgit2/src/config_snapshot.c +2 -1
  144. data/vendor/libgit2/src/crlf.c +16 -6
  145. data/vendor/libgit2/src/date.c +4 -3
  146. data/vendor/libgit2/src/delta.c +1 -1
  147. data/vendor/libgit2/src/describe.c +11 -4
  148. data/vendor/libgit2/src/diff.c +23 -19
  149. data/vendor/libgit2/src/diff_driver.c +21 -17
  150. data/vendor/libgit2/src/diff_file.c +5 -7
  151. data/vendor/libgit2/src/diff_generate.c +56 -28
  152. data/vendor/libgit2/src/diff_parse.c +2 -3
  153. data/vendor/libgit2/src/diff_print.c +81 -65
  154. data/vendor/libgit2/src/diff_stats.c +19 -16
  155. data/vendor/libgit2/src/diff_tform.c +13 -13
  156. data/vendor/libgit2/src/diff_xdiff.c +4 -2
  157. data/vendor/libgit2/src/diff_xdiff.h +1 -1
  158. data/vendor/libgit2/src/errors.c +26 -19
  159. data/vendor/libgit2/src/features.h.in +5 -1
  160. data/vendor/libgit2/src/fetch.c +7 -2
  161. data/vendor/libgit2/src/fetchhead.c +8 -4
  162. data/vendor/libgit2/src/filebuf.c +9 -7
  163. data/vendor/libgit2/src/filter.c +209 -113
  164. data/vendor/libgit2/src/filter.h +24 -5
  165. data/vendor/libgit2/src/futils.c +8 -8
  166. data/vendor/libgit2/src/futils.h +4 -4
  167. data/vendor/libgit2/src/graph.c +64 -9
  168. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
  169. data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
  170. data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
  171. data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
  172. data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
  173. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
  174. data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
  175. data/vendor/libgit2/src/hash.c +16 -13
  176. data/vendor/libgit2/src/hash.h +1 -1
  177. data/vendor/libgit2/src/hashsig.c +23 -10
  178. data/vendor/libgit2/src/ident.c +13 -3
  179. data/vendor/libgit2/src/idxmap.c +0 -22
  180. data/vendor/libgit2/src/ignore.c +35 -19
  181. data/vendor/libgit2/src/index.c +126 -84
  182. data/vendor/libgit2/src/index.h +1 -1
  183. data/vendor/libgit2/src/indexer.c +60 -36
  184. data/vendor/libgit2/src/integer.h +79 -2
  185. data/vendor/libgit2/src/iterator.c +40 -28
  186. data/vendor/libgit2/src/iterator.h +1 -1
  187. data/vendor/libgit2/src/khash.h +2 -11
  188. data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
  189. data/vendor/libgit2/src/libgit2.h +15 -0
  190. data/vendor/libgit2/src/mailmap.c +23 -10
  191. data/vendor/libgit2/src/map.h +3 -3
  192. data/vendor/libgit2/src/merge.c +108 -46
  193. data/vendor/libgit2/src/merge.h +2 -1
  194. data/vendor/libgit2/src/merge_driver.c +19 -13
  195. data/vendor/libgit2/src/merge_file.c +15 -9
  196. data/vendor/libgit2/src/message.c +3 -1
  197. data/vendor/libgit2/src/midx.c +879 -0
  198. data/vendor/libgit2/src/midx.h +110 -0
  199. data/vendor/libgit2/src/mwindow.c +214 -95
  200. data/vendor/libgit2/src/mwindow.h +3 -3
  201. data/vendor/libgit2/src/net.c +133 -4
  202. data/vendor/libgit2/src/net.h +16 -2
  203. data/vendor/libgit2/src/netops.c +6 -4
  204. data/vendor/libgit2/src/netops.h +2 -2
  205. data/vendor/libgit2/src/notes.c +10 -10
  206. data/vendor/libgit2/src/object.c +24 -15
  207. data/vendor/libgit2/src/odb.c +298 -57
  208. data/vendor/libgit2/src/odb.h +16 -2
  209. data/vendor/libgit2/src/odb_loose.c +31 -21
  210. data/vendor/libgit2/src/odb_mempack.c +3 -1
  211. data/vendor/libgit2/src/odb_pack.c +391 -114
  212. data/vendor/libgit2/src/oid.c +7 -4
  213. data/vendor/libgit2/src/pack-objects.c +83 -69
  214. data/vendor/libgit2/src/pack.c +383 -150
  215. data/vendor/libgit2/src/pack.h +44 -9
  216. data/vendor/libgit2/src/patch.c +14 -7
  217. data/vendor/libgit2/src/patch_generate.c +3 -5
  218. data/vendor/libgit2/src/patch_parse.c +6 -3
  219. data/vendor/libgit2/src/path.c +102 -57
  220. data/vendor/libgit2/src/path.h +79 -6
  221. data/vendor/libgit2/src/pathspec.c +12 -11
  222. data/vendor/libgit2/src/pool.c +34 -22
  223. data/vendor/libgit2/src/pool.h +9 -1
  224. data/vendor/libgit2/src/posix.c +43 -12
  225. data/vendor/libgit2/src/posix.h +9 -0
  226. data/vendor/libgit2/src/proxy.c +2 -0
  227. data/vendor/libgit2/src/push.c +2 -0
  228. data/vendor/libgit2/src/reader.c +10 -6
  229. data/vendor/libgit2/src/rebase.c +95 -49
  230. data/vendor/libgit2/src/refdb.c +165 -13
  231. data/vendor/libgit2/src/refdb.h +69 -0
  232. data/vendor/libgit2/src/refdb_fs.c +144 -152
  233. data/vendor/libgit2/src/reflog.c +21 -20
  234. data/vendor/libgit2/src/refs.c +151 -231
  235. data/vendor/libgit2/src/refs.h +2 -20
  236. data/vendor/libgit2/src/refspec.c +80 -44
  237. data/vendor/libgit2/src/regexp.c +2 -2
  238. data/vendor/libgit2/src/remote.c +312 -121
  239. data/vendor/libgit2/src/remote.h +2 -1
  240. data/vendor/libgit2/src/repository.c +351 -189
  241. data/vendor/libgit2/src/repository.h +23 -29
  242. data/vendor/libgit2/src/reset.c +7 -6
  243. data/vendor/libgit2/src/revert.c +8 -2
  244. data/vendor/libgit2/src/revparse.c +19 -13
  245. data/vendor/libgit2/src/revwalk.c +35 -20
  246. data/vendor/libgit2/src/runtime.c +162 -0
  247. data/vendor/libgit2/src/runtime.h +62 -0
  248. data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
  249. data/vendor/libgit2/src/signature.c +6 -5
  250. data/vendor/libgit2/src/sortedcache.c +2 -3
  251. data/vendor/libgit2/src/sortedcache.h +10 -8
  252. data/vendor/libgit2/src/stash.c +7 -3
  253. data/vendor/libgit2/src/status.c +9 -4
  254. data/vendor/libgit2/src/strarray.c +64 -0
  255. data/vendor/libgit2/src/streams/mbedtls.c +14 -17
  256. data/vendor/libgit2/src/streams/mbedtls.h +1 -1
  257. data/vendor/libgit2/src/streams/openssl.c +113 -207
  258. data/vendor/libgit2/src/streams/openssl.h +9 -1
  259. data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
  260. data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
  261. data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
  262. data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
  263. data/vendor/libgit2/src/streams/registry.c +10 -9
  264. data/vendor/libgit2/src/streams/socket.c +6 -2
  265. data/vendor/libgit2/src/streams/stransport.c +6 -3
  266. data/vendor/libgit2/src/streams/tls.c +5 -3
  267. data/vendor/libgit2/src/submodule.c +134 -66
  268. data/vendor/libgit2/src/submodule.h +9 -9
  269. data/vendor/libgit2/src/sysdir.c +8 -26
  270. data/vendor/libgit2/src/sysdir.h +0 -11
  271. data/vendor/libgit2/src/tag.c +49 -11
  272. data/vendor/libgit2/src/thread.c +140 -0
  273. data/vendor/libgit2/src/thread.h +479 -0
  274. data/vendor/libgit2/src/threadstate.c +83 -0
  275. data/vendor/libgit2/src/threadstate.h +24 -0
  276. data/vendor/libgit2/src/trace.c +2 -2
  277. data/vendor/libgit2/src/trace.h +17 -13
  278. data/vendor/libgit2/src/transaction.c +21 -9
  279. data/vendor/libgit2/src/transport.c +3 -3
  280. data/vendor/libgit2/src/transports/auth.c +1 -1
  281. data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
  282. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
  283. data/vendor/libgit2/src/transports/credential.c +17 -7
  284. data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
  285. data/vendor/libgit2/src/transports/git.c +1 -3
  286. data/vendor/libgit2/src/transports/http.c +19 -17
  287. data/vendor/libgit2/src/transports/http.h +1 -0
  288. data/vendor/libgit2/src/transports/httpclient.c +84 -42
  289. data/vendor/libgit2/src/transports/httpclient.h +1 -1
  290. data/vendor/libgit2/src/transports/local.c +5 -5
  291. data/vendor/libgit2/src/transports/smart.c +14 -9
  292. data/vendor/libgit2/src/transports/smart.h +1 -1
  293. data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
  294. data/vendor/libgit2/src/transports/ssh.c +51 -17
  295. data/vendor/libgit2/src/transports/winhttp.c +156 -88
  296. data/vendor/libgit2/src/tree.c +100 -77
  297. data/vendor/libgit2/src/tree.h +1 -0
  298. data/vendor/libgit2/src/tsort.c +0 -2
  299. data/vendor/libgit2/src/unix/map.c +3 -1
  300. data/vendor/libgit2/src/unix/posix.h +16 -1
  301. data/vendor/libgit2/src/unix/pthread.h +2 -1
  302. data/vendor/libgit2/src/utf8.c +150 -0
  303. data/vendor/libgit2/src/utf8.h +52 -0
  304. data/vendor/libgit2/src/util.c +74 -183
  305. data/vendor/libgit2/src/util.h +33 -39
  306. data/vendor/libgit2/src/vector.c +23 -19
  307. data/vendor/libgit2/src/vector.h +4 -2
  308. data/vendor/libgit2/src/win32/findfile.c +4 -2
  309. data/vendor/libgit2/src/win32/git2.rc +18 -3
  310. data/vendor/libgit2/src/win32/map.c +1 -1
  311. data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
  312. data/vendor/libgit2/src/win32/path_w32.c +23 -25
  313. data/vendor/libgit2/src/win32/path_w32.h +0 -1
  314. data/vendor/libgit2/src/win32/posix_w32.c +77 -1
  315. data/vendor/libgit2/src/win32/precompiled.h +0 -1
  316. data/vendor/libgit2/src/win32/reparse.h +4 -4
  317. data/vendor/libgit2/src/win32/thread.c +24 -15
  318. data/vendor/libgit2/src/win32/thread.h +1 -1
  319. data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
  320. data/vendor/libgit2/src/win32/w32_common.h +18 -9
  321. data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
  322. data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
  323. data/vendor/libgit2/src/win32/w32_util.h +6 -6
  324. data/vendor/libgit2/src/worktree.c +37 -15
  325. data/vendor/libgit2/src/zstream.c +1 -1
  326. metadata +56 -38
  327. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
  328. data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
  329. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  330. data/vendor/libgit2/src/buf_text.c +0 -316
  331. data/vendor/libgit2/src/buf_text.h +0 -122
  332. data/vendor/libgit2/src/global.c +0 -361
  333. data/vendor/libgit2/src/global.h +0 -41
  334. data/vendor/libgit2/src/thread-utils.c +0 -58
  335. data/vendor/libgit2/src/thread-utils.h +0 -246
  336. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
  337. data/vendor/libgit2/src/win32/w32_stack.c +0 -188
  338. data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -16,10 +16,12 @@ int git_proxy_options_init(git_proxy_options *opts, unsigned int version)
16
16
  return 0;
17
17
  }
18
18
 
19
+ #ifndef GIT_DEPRECATE_HARD
19
20
  int git_proxy_init_options(git_proxy_options *opts, unsigned int version)
20
21
  {
21
22
  return git_proxy_options_init(opts, version);
22
23
  }
24
+ #endif
23
25
 
24
26
  int git_proxy_options_dup(git_proxy_options *tgt, const git_proxy_options *src)
25
27
  {
@@ -555,7 +555,9 @@ int git_push_options_init(git_push_options *opts, unsigned int version)
555
555
  return 0;
556
556
  }
557
557
 
558
+ #ifndef GIT_DEPRECATE_HARD
558
559
  int git_push_init_options(git_push_options *opts, unsigned int version)
559
560
  {
560
561
  return git_push_options_init(opts, version);
561
562
  }
563
+ #endif
@@ -61,7 +61,8 @@ int git_reader_for_tree(git_reader **out, git_tree *tree)
61
61
  {
62
62
  tree_reader *reader;
63
63
 
64
- assert(out && tree);
64
+ GIT_ASSERT_ARG(out);
65
+ GIT_ASSERT_ARG(tree);
65
66
 
66
67
  reader = git__calloc(1, sizeof(tree_reader));
67
68
  GIT_ERROR_CHECK_ALLOC(reader);
@@ -97,8 +98,7 @@ static int workdir_reader_read(
97
98
  git_oid id;
98
99
  int error;
99
100
 
100
- if ((error = git_buf_joinpath(&path,
101
- git_repository_workdir(reader->repo), filename)) < 0)
101
+ if ((error = git_repository_workdir_path(&path, reader->repo, filename)) < 0)
102
102
  goto done;
103
103
 
104
104
  if ((error = p_lstat(path.ptr, &st)) < 0) {
@@ -158,7 +158,8 @@ int git_reader_for_workdir(
158
158
  workdir_reader *reader;
159
159
  int error;
160
160
 
161
- assert(out && repo);
161
+ GIT_ASSERT_ARG(out);
162
+ GIT_ASSERT_ARG(repo);
162
163
 
163
164
  reader = git__calloc(1, sizeof(workdir_reader));
164
165
  GIT_ERROR_CHECK_ALLOC(reader);
@@ -223,7 +224,8 @@ int git_reader_for_index(
223
224
  index_reader *reader;
224
225
  int error;
225
226
 
226
- assert(out && repo);
227
+ GIT_ASSERT_ARG(out);
228
+ GIT_ASSERT_ARG(repo);
227
229
 
228
230
  reader = git__calloc(1, sizeof(index_reader));
229
231
  GIT_ERROR_CHECK_ALLOC(reader);
@@ -251,7 +253,9 @@ int git_reader_read(
251
253
  git_reader *reader,
252
254
  const char *filename)
253
255
  {
254
- assert(out && reader && filename);
256
+ GIT_ASSERT_ARG(out);
257
+ GIT_ASSERT_ARG(reader);
258
+ GIT_ASSERT_ARG(filename);
255
259
 
256
260
  return reader->read(out, out_id, out_filemode, reader, filename);
257
261
  }
@@ -186,8 +186,8 @@ static git_rebase_operation *rebase_operation_alloc(
186
186
  {
187
187
  git_rebase_operation *operation;
188
188
 
189
- assert((type == GIT_REBASE_OPERATION_EXEC) == !id);
190
- assert((type == GIT_REBASE_OPERATION_EXEC) == !!exec);
189
+ GIT_ASSERT_WITH_RETVAL((type == GIT_REBASE_OPERATION_EXEC) == !id, NULL);
190
+ GIT_ASSERT_WITH_RETVAL((type == GIT_REBASE_OPERATION_EXEC) == !!exec, NULL);
191
191
 
192
192
  if ((operation = git_array_alloc(rebase->operations)) == NULL)
193
193
  return NULL;
@@ -301,7 +301,7 @@ int git_rebase_open(
301
301
  size_t state_path_len;
302
302
  int error;
303
303
 
304
- assert(repo);
304
+ GIT_ASSERT_ARG(repo);
305
305
 
306
306
  if ((error = rebase_check_versions(given_opts)) < 0)
307
307
  return error;
@@ -501,10 +501,12 @@ int git_rebase_options_init(git_rebase_options *opts, unsigned int version)
501
501
  return 0;
502
502
  }
503
503
 
504
+ #ifndef GIT_DEPRECATE_HARD
504
505
  int git_rebase_init_options(git_rebase_options *opts, unsigned int version)
505
506
  {
506
507
  return git_rebase_options_init(opts, version);
507
508
  }
509
+ #endif
508
510
 
509
511
  static int rebase_ensure_not_in_progress(git_repository *repo)
510
512
  {
@@ -699,7 +701,8 @@ int git_rebase_init(
699
701
  bool inmemory = (given_opts && given_opts->inmemory);
700
702
  int error;
701
703
 
702
- assert(repo && (upstream || onto));
704
+ GIT_ASSERT_ARG(repo);
705
+ GIT_ASSERT_ARG(upstream || onto);
703
706
 
704
707
  *out = NULL;
705
708
 
@@ -910,7 +913,8 @@ int git_rebase_next(
910
913
  {
911
914
  int error;
912
915
 
913
- assert(out && rebase);
916
+ GIT_ASSERT_ARG(out);
917
+ GIT_ASSERT_ARG(rebase);
914
918
 
915
919
  if ((error = rebase_movenext(rebase)) < 0)
916
920
  return error;
@@ -929,7 +933,9 @@ int git_rebase_inmemory_index(
929
933
  git_index **out,
930
934
  git_rebase *rebase)
931
935
  {
932
- assert(out && rebase && rebase->index);
936
+ GIT_ASSERT_ARG(out);
937
+ GIT_ASSERT_ARG(rebase);
938
+ GIT_ASSERT_ARG(rebase->index);
933
939
 
934
940
  GIT_REFCOUNT_INC(rebase->index);
935
941
  *out = rebase->index;
@@ -937,6 +943,54 @@ int git_rebase_inmemory_index(
937
943
  return 0;
938
944
  }
939
945
 
946
+ #ifndef GIT_DEPRECATE_HARD
947
+ static int create_signed(
948
+ git_oid *out,
949
+ git_rebase *rebase,
950
+ const git_signature *author,
951
+ const git_signature *committer,
952
+ const char *message_encoding,
953
+ const char *message,
954
+ git_tree *tree,
955
+ size_t parent_count,
956
+ const git_commit **parents)
957
+ {
958
+ git_buf commit_content = GIT_BUF_INIT,
959
+ commit_signature = GIT_BUF_INIT,
960
+ signature_field = GIT_BUF_INIT;
961
+ int error;
962
+
963
+ git_error_clear();
964
+
965
+ if ((error = git_commit_create_buffer(&commit_content,
966
+ rebase->repo, author, committer, message_encoding,
967
+ message, tree, parent_count, parents)) < 0)
968
+ goto done;
969
+
970
+ error = rebase->options.signing_cb(&commit_signature,
971
+ &signature_field, commit_content.ptr,
972
+ rebase->options.payload);
973
+
974
+ if (error) {
975
+ if (error != GIT_PASSTHROUGH)
976
+ git_error_set_after_callback_function(error, "signing_cb");
977
+
978
+ goto done;
979
+ }
980
+
981
+ error = git_commit_create_with_signature(out, rebase->repo,
982
+ commit_content.ptr,
983
+ commit_signature.size > 0 ? commit_signature.ptr : NULL,
984
+ signature_field.size > 0 ? signature_field.ptr : NULL);
985
+
986
+ done:
987
+ git_buf_dispose(&commit_signature);
988
+ git_buf_dispose(&signature_field);
989
+ git_buf_dispose(&commit_content);
990
+ return error;
991
+ }
992
+ #endif
993
+
940
994
  static int rebase_commit__create(
941
995
  git_commit **out,
942
996
  git_rebase *rebase,
@@ -951,10 +1005,6 @@ static int rebase_commit__create(
951
1005
  git_commit *current_commit = NULL, *commit = NULL;
952
1006
  git_tree *parent_tree = NULL, *tree = NULL;
953
1007
  git_oid tree_id, commit_id;
954
- git_buf commit_content = GIT_BUF_INIT, commit_signature = GIT_BUF_INIT,
955
- signature_field = GIT_BUF_INIT;
956
- const char *signature_field_string = NULL,
957
- *commit_signature_string = NULL;
958
1008
  int error;
959
1009
 
960
1010
  operation = git_array_get(rebase->operations, rebase->current);
@@ -985,37 +1035,32 @@ static int rebase_commit__create(
985
1035
  message = git_commit_message(current_commit);
986
1036
  }
987
1037
 
988
- if ((error = git_commit_create_buffer(&commit_content, rebase->repo, author, committer,
989
- message_encoding, message, tree, 1, (const git_commit **)&parent_commit)) < 0)
990
- goto done;
1038
+ git_error_clear();
1039
+ error = GIT_PASSTHROUGH;
991
1040
 
992
- if (rebase->options.signing_cb) {
993
- git_error_clear();
994
- error = git_error_set_after_callback_function(rebase->options.signing_cb(
995
- &commit_signature, &signature_field, git_buf_cstr(&commit_content),
996
- rebase->options.payload), "commit signing_cb failed");
997
- if (error == GIT_PASSTHROUGH) {
998
- git_buf_dispose(&commit_signature);
999
- git_buf_dispose(&signature_field);
1000
- git_error_clear();
1001
- error = GIT_OK;
1002
- } else if (error < 0)
1003
- goto done;
1004
- }
1041
+ if (rebase->options.commit_create_cb) {
1042
+ error = rebase->options.commit_create_cb(&commit_id,
1043
+ author, committer, message_encoding, message,
1044
+ tree, 1, (const git_commit **)&parent_commit,
1045
+ rebase->options.payload);
1005
1046
 
1006
- if (git_buf_is_allocated(&commit_signature)) {
1007
- assert(git_buf_contains_nul(&commit_signature));
1008
- commit_signature_string = git_buf_cstr(&commit_signature);
1047
+ git_error_set_after_callback_function(error,
1048
+ "commit_create_cb");
1009
1049
  }
1010
-
1011
- if (git_buf_is_allocated(&signature_field)) {
1012
- assert(git_buf_contains_nul(&signature_field));
1013
- signature_field_string = git_buf_cstr(&signature_field);
1050
+ #ifndef GIT_DEPRECATE_HARD
1051
+ else if (rebase->options.signing_cb) {
1052
+ error = create_signed(&commit_id, rebase, author,
1053
+ committer, message_encoding, message, tree,
1054
+ 1, (const git_commit **)&parent_commit);
1014
1055
  }
1056
+ #endif
1015
1057
 
1016
- if ((error = git_commit_create_with_signature(&commit_id, rebase->repo,
1017
- git_buf_cstr(&commit_content), commit_signature_string,
1018
- signature_field_string)))
1058
+ if (error == GIT_PASSTHROUGH)
1059
+ error = git_commit_create(&commit_id, rebase->repo, NULL,
1060
+ author, committer, message_encoding, message,
1061
+ tree, 1, (const git_commit **)&parent_commit);
1062
+
1063
+ if (error)
1019
1064
  goto done;
1020
1065
 
1021
1066
  if ((error = git_commit_lookup(&commit, rebase->repo, &commit_id)) < 0)
@@ -1027,9 +1072,6 @@ done:
1027
1072
  if (error < 0)
1028
1073
  git_commit_free(commit);
1029
1074
 
1030
- git_buf_dispose(&commit_signature);
1031
- git_buf_dispose(&signature_field);
1032
- git_buf_dispose(&commit_content);
1033
1075
  git_commit_free(current_commit);
1034
1076
  git_tree_free(parent_tree);
1035
1077
  git_tree_free(tree);
@@ -1053,7 +1095,7 @@ static int rebase_commit_merge(
1053
1095
  int error;
1054
1096
 
1055
1097
  operation = git_array_get(rebase->operations, rebase->current);
1056
- assert(operation);
1098
+ GIT_ASSERT(operation);
1057
1099
 
1058
1100
  if ((error = rebase_ensure_not_dirty(rebase->repo, false, true, GIT_EUNMERGED)) < 0 ||
1059
1101
  (error = git_repository_head(&head, rebase->repo)) < 0 ||
@@ -1093,9 +1135,9 @@ static int rebase_commit_inmemory(
1093
1135
  git_commit *commit = NULL;
1094
1136
  int error = 0;
1095
1137
 
1096
- assert(rebase->index);
1097
- assert(rebase->last_commit);
1098
- assert(rebase->current < rebase->operations.size);
1138
+ GIT_ASSERT_ARG(rebase->index);
1139
+ GIT_ASSERT_ARG(rebase->last_commit);
1140
+ GIT_ASSERT_ARG(rebase->current < rebase->operations.size);
1099
1141
 
1100
1142
  if ((error = rebase_commit__create(&commit, rebase, rebase->index,
1101
1143
  rebase->last_commit, author, committer, message_encoding, message)) < 0)
@@ -1123,7 +1165,8 @@ int git_rebase_commit(
1123
1165
  {
1124
1166
  int error;
1125
1167
 
1126
- assert(rebase && committer);
1168
+ GIT_ASSERT_ARG(rebase);
1169
+ GIT_ASSERT_ARG(committer);
1127
1170
 
1128
1171
  if (rebase->inmemory)
1129
1172
  error = rebase_commit_inmemory(
@@ -1143,7 +1186,7 @@ int git_rebase_abort(git_rebase *rebase)
1143
1186
  git_commit *orig_head_commit = NULL;
1144
1187
  int error;
1145
1188
 
1146
- assert(rebase);
1189
+ GIT_ASSERT_ARG(rebase);
1147
1190
 
1148
1191
  if (rebase->inmemory)
1149
1192
  return 0;
@@ -1356,7 +1399,7 @@ int git_rebase_finish(
1356
1399
  {
1357
1400
  int error = 0;
1358
1401
 
1359
- assert(rebase);
1402
+ GIT_ASSERT_ARG(rebase);
1360
1403
 
1361
1404
  if (rebase->inmemory)
1362
1405
  return 0;
@@ -1371,14 +1414,17 @@ int git_rebase_finish(
1371
1414
  }
1372
1415
 
1373
1416
  const char *git_rebase_orig_head_name(git_rebase *rebase) {
1417
+ GIT_ASSERT_ARG_WITH_RETVAL(rebase, NULL);
1374
1418
  return rebase->orig_head_name;
1375
1419
  }
1376
1420
 
1377
1421
  const git_oid *git_rebase_orig_head_id(git_rebase *rebase) {
1422
+ GIT_ASSERT_ARG_WITH_RETVAL(rebase, NULL);
1378
1423
  return &rebase->orig_head_id;
1379
1424
  }
1380
1425
 
1381
1426
  const char *git_rebase_onto_name(git_rebase *rebase) {
1427
+ GIT_ASSERT_ARG_WITH_RETVAL(rebase, NULL);
1382
1428
  return rebase->onto_name;
1383
1429
  }
1384
1430
 
@@ -1388,21 +1434,21 @@ const git_oid *git_rebase_onto_id(git_rebase *rebase) {
1388
1434
 
1389
1435
  size_t git_rebase_operation_entrycount(git_rebase *rebase)
1390
1436
  {
1391
- assert(rebase);
1437
+ GIT_ASSERT_ARG_WITH_RETVAL(rebase, 0);
1392
1438
 
1393
1439
  return git_array_size(rebase->operations);
1394
1440
  }
1395
1441
 
1396
1442
  size_t git_rebase_operation_current(git_rebase *rebase)
1397
1443
  {
1398
- assert(rebase);
1444
+ GIT_ASSERT_ARG_WITH_RETVAL(rebase, 0);
1399
1445
 
1400
1446
  return rebase->started ? rebase->current : GIT_REBASE_NO_OPERATION;
1401
1447
  }
1402
1448
 
1403
1449
  git_rebase_operation *git_rebase_operation_byindex(git_rebase *rebase, size_t idx)
1404
1450
  {
1405
- assert(rebase);
1451
+ GIT_ASSERT_ARG_WITH_RETVAL(rebase, NULL);
1406
1452
 
1407
1453
  return git_array_get(rebase->operations, idx);
1408
1454
  }
@@ -17,11 +17,15 @@
17
17
  #include "reflog.h"
18
18
  #include "posix.h"
19
19
 
20
+ #define DEFAULT_NESTING_LEVEL 5
21
+ #define MAX_NESTING_LEVEL 10
22
+
20
23
  int git_refdb_new(git_refdb **out, git_repository *repo)
21
24
  {
22
25
  git_refdb *db;
23
26
 
24
- assert(out && repo);
27
+ GIT_ASSERT_ARG(out);
28
+ GIT_ASSERT_ARG(repo);
25
29
 
26
30
  db = git__calloc(1, sizeof(*db));
27
31
  GIT_ERROR_CHECK_ALLOC(db);
@@ -38,7 +42,8 @@ int git_refdb_open(git_refdb **out, git_repository *repo)
38
42
  git_refdb *db;
39
43
  git_refdb_backend *dir;
40
44
 
41
- assert(out && repo);
45
+ GIT_ASSERT_ARG(out);
46
+ GIT_ASSERT_ARG(repo);
42
47
 
43
48
  *out = NULL;
44
49
 
@@ -86,7 +91,7 @@ int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend)
86
91
 
87
92
  int git_refdb_compress(git_refdb *db)
88
93
  {
89
- assert(db);
94
+ GIT_ASSERT_ARG(db);
90
95
 
91
96
  if (db->backend->compress)
92
97
  return db->backend->compress(db->backend);
@@ -111,7 +116,9 @@ void git_refdb_free(git_refdb *db)
111
116
 
112
117
  int git_refdb_exists(int *exists, git_refdb *refdb, const char *ref_name)
113
118
  {
114
- assert(exists && refdb && refdb->backend);
119
+ GIT_ASSERT_ARG(exists);
120
+ GIT_ASSERT_ARG(refdb);
121
+ GIT_ASSERT_ARG(refdb->backend);
115
122
 
116
123
  return refdb->backend->exists(exists, refdb->backend, ref_name);
117
124
  }
@@ -121,7 +128,10 @@ int git_refdb_lookup(git_reference **out, git_refdb *db, const char *ref_name)
121
128
  git_reference *ref;
122
129
  int error;
123
130
 
124
- assert(db && db->backend && out && ref_name);
131
+ GIT_ASSERT_ARG(db);
132
+ GIT_ASSERT_ARG(db->backend);
133
+ GIT_ASSERT_ARG(out);
134
+ GIT_ASSERT_ARG(ref_name);
125
135
 
126
136
  error = db->backend->lookup(&ref, db->backend, ref_name);
127
137
  if (error < 0)
@@ -134,6 +144,59 @@ int git_refdb_lookup(git_reference **out, git_refdb *db, const char *ref_name)
134
144
  return 0;
135
145
  }
136
146
 
147
+ int git_refdb_resolve(
148
+ git_reference **out,
149
+ git_refdb *db,
150
+ const char *ref_name,
151
+ int max_nesting)
152
+ {
153
+ git_reference *ref = NULL;
154
+ int error = 0, nesting;
155
+
156
+ *out = NULL;
157
+
158
+ if (max_nesting > MAX_NESTING_LEVEL)
159
+ max_nesting = MAX_NESTING_LEVEL;
160
+ else if (max_nesting < 0)
161
+ max_nesting = DEFAULT_NESTING_LEVEL;
162
+
163
+ if ((error = git_refdb_lookup(&ref, db, ref_name)) < 0)
164
+ goto out;
165
+
166
+ for (nesting = 0; nesting < max_nesting; nesting++) {
167
+ git_reference *resolved;
168
+
169
+ if (ref->type == GIT_REFERENCE_DIRECT)
170
+ break;
171
+
172
+ if ((error = git_refdb_lookup(&resolved, db, git_reference_symbolic_target(ref))) < 0) {
173
+ /* If we found a symbolic reference with a nonexistent target, return it. */
174
+ if (error == GIT_ENOTFOUND) {
175
+ error = 0;
176
+ *out = ref;
177
+ ref = NULL;
178
+ }
179
+ goto out;
180
+ }
181
+
182
+ git_reference_free(ref);
183
+ ref = resolved;
184
+ }
185
+
186
+ if (ref->type != GIT_REFERENCE_DIRECT && max_nesting != 0) {
187
+ git_error_set(GIT_ERROR_REFERENCE,
188
+ "cannot resolve reference (>%u levels deep)", max_nesting);
189
+ error = -1;
190
+ goto out;
191
+ }
192
+
193
+ *out = ref;
194
+ ref = NULL;
195
+ out:
196
+ git_reference_free(ref);
197
+ return error;
198
+ }
199
+
137
200
  int git_refdb_iterator(git_reference_iterator **out, git_refdb *db, const char *glob)
138
201
  {
139
202
  int error;
@@ -178,7 +241,8 @@ void git_refdb_iterator_free(git_reference_iterator *iter)
178
241
 
179
242
  int git_refdb_write(git_refdb *db, git_reference *ref, int force, const git_signature *who, const char *message, const git_oid *old_id, const char *old_target)
180
243
  {
181
- assert(db && db->backend);
244
+ GIT_ASSERT_ARG(db);
245
+ GIT_ASSERT_ARG(db->backend);
182
246
 
183
247
  GIT_REFCOUNT_INC(db);
184
248
  ref->db = db;
@@ -197,7 +261,9 @@ int git_refdb_rename(
197
261
  {
198
262
  int error;
199
263
 
200
- assert(db && db->backend);
264
+ GIT_ASSERT_ARG(db);
265
+ GIT_ASSERT_ARG(db->backend);
266
+
201
267
  error = db->backend->rename(out, db->backend, old_name, new_name, force, who, message);
202
268
  if (error < 0)
203
269
  return error;
@@ -212,7 +278,9 @@ int git_refdb_rename(
212
278
 
213
279
  int git_refdb_delete(struct git_refdb *db, const char *ref_name, const git_oid *old_id, const char *old_target)
214
280
  {
215
- assert(db && db->backend);
281
+ GIT_ASSERT_ARG(db);
282
+ GIT_ASSERT_ARG(db->backend);
283
+
216
284
  return db->backend->del(db->backend, ref_name, old_id, old_target);
217
285
  }
218
286
 
@@ -220,7 +288,8 @@ int git_refdb_reflog_read(git_reflog **out, git_refdb *db, const char *name)
220
288
  {
221
289
  int error;
222
290
 
223
- assert(db && db->backend);
291
+ GIT_ASSERT_ARG(db);
292
+ GIT_ASSERT_ARG(db->backend);
224
293
 
225
294
  if ((error = db->backend->reflog_read(out, db->backend, name)) < 0)
226
295
  return error;
@@ -231,16 +300,97 @@ int git_refdb_reflog_read(git_reflog **out, git_refdb *db, const char *name)
231
300
  return 0;
232
301
  }
233
302
 
303
+ int git_refdb_should_write_reflog(int *out, git_refdb *db, const git_reference *ref)
304
+ {
305
+ int error, logall;
306
+
307
+ error = git_repository__configmap_lookup(&logall, db->repo, GIT_CONFIGMAP_LOGALLREFUPDATES);
308
+ if (error < 0)
309
+ return error;
310
+
311
+ /* Defaults to the opposite of the repo being bare */
312
+ if (logall == GIT_LOGALLREFUPDATES_UNSET)
313
+ logall = !git_repository_is_bare(db->repo);
314
+
315
+ *out = 0;
316
+ switch (logall) {
317
+ case GIT_LOGALLREFUPDATES_FALSE:
318
+ *out = 0;
319
+ break;
320
+
321
+ case GIT_LOGALLREFUPDATES_TRUE:
322
+ /* Only write if it already has a log,
323
+ * or if it's under heads/, remotes/ or notes/
324
+ */
325
+ *out = git_refdb_has_log(db, ref->name) ||
326
+ !git__prefixcmp(ref->name, GIT_REFS_HEADS_DIR) ||
327
+ !git__strcmp(ref->name, GIT_HEAD_FILE) ||
328
+ !git__prefixcmp(ref->name, GIT_REFS_REMOTES_DIR) ||
329
+ !git__prefixcmp(ref->name, GIT_REFS_NOTES_DIR);
330
+ break;
331
+
332
+ case GIT_LOGALLREFUPDATES_ALWAYS:
333
+ *out = 1;
334
+ break;
335
+ }
336
+
337
+ return 0;
338
+ }
339
+
340
+ int git_refdb_should_write_head_reflog(int *out, git_refdb *db, const git_reference *ref)
341
+ {
342
+ git_reference *head = NULL, *resolved = NULL;
343
+ const char *name;
344
+ int error;
345
+
346
+ *out = 0;
347
+
348
+ if (ref->type == GIT_REFERENCE_SYMBOLIC) {
349
+ error = 0;
350
+ goto out;
351
+ }
352
+
353
+ if ((error = git_refdb_lookup(&head, db, GIT_HEAD_FILE)) < 0)
354
+ goto out;
355
+
356
+ if (git_reference_type(head) == GIT_REFERENCE_DIRECT)
357
+ goto out;
358
+
359
+ /* Go down the symref chain until we find the branch */
360
+ if ((error = git_refdb_resolve(&resolved, db, git_reference_symbolic_target(head), -1)) < 0) {
361
+ if (error != GIT_ENOTFOUND)
362
+ goto out;
363
+ error = 0;
364
+ name = git_reference_symbolic_target(head);
365
+ } else if (git_reference_type(resolved) == GIT_REFERENCE_SYMBOLIC) {
366
+ name = git_reference_symbolic_target(resolved);
367
+ } else {
368
+ name = git_reference_name(resolved);
369
+ }
370
+
371
+ if (strcmp(name, ref->name))
372
+ goto out;
373
+
374
+ *out = 1;
375
+
376
+ out:
377
+ git_reference_free(resolved);
378
+ git_reference_free(head);
379
+ return error;
380
+ }
381
+
234
382
  int git_refdb_has_log(git_refdb *db, const char *refname)
235
383
  {
236
- assert(db && refname);
384
+ GIT_ASSERT_ARG(db);
385
+ GIT_ASSERT_ARG(refname);
237
386
 
238
387
  return db->backend->has_log(db->backend, refname);
239
388
  }
240
389
 
241
390
  int git_refdb_ensure_log(git_refdb *db, const char *refname)
242
391
  {
243
- assert(db && refname);
392
+ GIT_ASSERT_ARG(db);
393
+ GIT_ASSERT_ARG(refname);
244
394
 
245
395
  return db->backend->ensure_log(db->backend, refname);
246
396
  }
@@ -254,7 +404,9 @@ int git_refdb_init_backend(git_refdb_backend *backend, unsigned int version)
254
404
 
255
405
  int git_refdb_lock(void **payload, git_refdb *db, const char *refname)
256
406
  {
257
- assert(payload && db && refname);
407
+ GIT_ASSERT_ARG(payload);
408
+ GIT_ASSERT_ARG(db);
409
+ GIT_ASSERT_ARG(refname);
258
410
 
259
411
  if (!db->backend->lock) {
260
412
  git_error_set(GIT_ERROR_REFERENCE, "backend does not support locking");
@@ -266,7 +418,7 @@ int git_refdb_lock(void **payload, git_refdb *db, const char *refname)
266
418
 
267
419
  int git_refdb_unlock(git_refdb *db, void *payload, int success, int update_reflog, const git_reference *ref, const git_signature *sig, const char *message)
268
420
  {
269
- assert(db);
421
+ GIT_ASSERT_ARG(db);
270
422
 
271
423
  return db->backend->unlock(db->backend, payload, success, update_reflog, ref, sig, message);
272
424
  }