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,7 +16,7 @@ int git_hash_ctx_init(git_hash_ctx *ctx)
16
16
  {
17
17
  int error;
18
18
 
19
- if ((error = git_hash_sha1_ctx_init(&ctx->sha1)) < 0)
19
+ if ((error = git_hash_sha1_ctx_init(&ctx->ctx.sha1)) < 0)
20
20
  return error;
21
21
 
22
22
  ctx->algo = GIT_HASH_ALGO_SHA1;
@@ -28,10 +28,10 @@ void git_hash_ctx_cleanup(git_hash_ctx *ctx)
28
28
  {
29
29
  switch (ctx->algo) {
30
30
  case GIT_HASH_ALGO_SHA1:
31
- git_hash_sha1_ctx_cleanup(&ctx->sha1);
31
+ git_hash_sha1_ctx_cleanup(&ctx->ctx.sha1);
32
32
  return;
33
33
  default:
34
- assert(0);
34
+ /* unreachable */ ;
35
35
  }
36
36
  }
37
37
 
@@ -39,33 +39,36 @@ int git_hash_init(git_hash_ctx *ctx)
39
39
  {
40
40
  switch (ctx->algo) {
41
41
  case GIT_HASH_ALGO_SHA1:
42
- return git_hash_sha1_init(&ctx->sha1);
42
+ return git_hash_sha1_init(&ctx->ctx.sha1);
43
43
  default:
44
- assert(0);
45
- return -1;
44
+ /* unreachable */ ;
46
45
  }
46
+ GIT_ASSERT(0);
47
+ return -1;
47
48
  }
48
49
 
49
50
  int git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
50
51
  {
51
52
  switch (ctx->algo) {
52
53
  case GIT_HASH_ALGO_SHA1:
53
- return git_hash_sha1_update(&ctx->sha1, data, len);
54
+ return git_hash_sha1_update(&ctx->ctx.sha1, data, len);
54
55
  default:
55
- assert(0);
56
- return -1;
56
+ /* unreachable */ ;
57
57
  }
58
+ GIT_ASSERT(0);
59
+ return -1;
58
60
  }
59
61
 
60
62
  int git_hash_final(git_oid *out, git_hash_ctx *ctx)
61
63
  {
62
64
  switch (ctx->algo) {
63
65
  case GIT_HASH_ALGO_SHA1:
64
- return git_hash_sha1_final(out, &ctx->sha1);
66
+ return git_hash_sha1_final(out, &ctx->ctx.sha1);
65
67
  default:
66
- assert(0);
67
- return -1;
68
+ /* unreachable */ ;
68
69
  }
70
+ GIT_ASSERT(0);
71
+ return -1;
69
72
  }
70
73
 
71
74
  int git_hash_buf(git_oid *out, const void *data, size_t len)
@@ -80,7 +83,7 @@ int git_hash_buf(git_oid *out, const void *data, size_t len)
80
83
  error = git_hash_final(out, &ctx);
81
84
 
82
85
  git_hash_ctx_cleanup(&ctx);
83
-
86
+
84
87
  return error;
85
88
  }
86
89
 
@@ -27,7 +27,7 @@ typedef enum {
27
27
  typedef struct git_hash_ctx {
28
28
  union {
29
29
  git_hash_sha1_ctx sha1;
30
- };
30
+ } ctx;
31
31
  git_hash_algo_t algo;
32
32
  } git_hash_ctx;
33
33
 
@@ -17,7 +17,7 @@ typedef uint64_t hashsig_state;
17
17
  #define HASHSIG_SCALE 100
18
18
 
19
19
  #define HASHSIG_MAX_RUN 80
20
- #define HASHSIG_HASH_START 0x012345678ABCDEF0LL
20
+ #define HASHSIG_HASH_START INT64_C(0x012345678ABCDEF0)
21
21
  #define HASHSIG_HASH_SHIFT 5
22
22
 
23
23
  #define HASHSIG_HASH_MIX(S,CH) \
@@ -133,13 +133,13 @@ typedef struct {
133
133
  uint8_t ignore_ch[256];
134
134
  } hashsig_in_progress;
135
135
 
136
- static void hashsig_in_progress_init(
136
+ static int hashsig_in_progress_init(
137
137
  hashsig_in_progress *prog, git_hashsig *sig)
138
138
  {
139
139
  int i;
140
140
 
141
141
  /* no more than one can be set */
142
- assert(!(sig->opt & GIT_HASHSIG_IGNORE_WHITESPACE) ||
142
+ GIT_ASSERT(!(sig->opt & GIT_HASHSIG_IGNORE_WHITESPACE) ||
143
143
  !(sig->opt & GIT_HASHSIG_SMART_WHITESPACE));
144
144
 
145
145
  if (sig->opt & GIT_HASHSIG_IGNORE_WHITESPACE) {
@@ -153,6 +153,8 @@ static void hashsig_in_progress_init(
153
153
  } else {
154
154
  memset(prog, 0, sizeof(*prog));
155
155
  }
156
+
157
+ return 0;
156
158
  }
157
159
 
158
160
  static int hashsig_add_hashes(
@@ -251,7 +253,8 @@ int git_hashsig_create(
251
253
  git_hashsig *sig = hashsig_alloc(opts);
252
254
  GIT_ERROR_CHECK_ALLOC(sig);
253
255
 
254
- hashsig_in_progress_init(&prog, sig);
256
+ if ((error = hashsig_in_progress_init(&prog, sig)) < 0)
257
+ return error;
255
258
 
256
259
  error = hashsig_add_hashes(sig, (const uint8_t *)buf, buflen, &prog);
257
260
 
@@ -283,7 +286,10 @@ int git_hashsig_create_fromfile(
283
286
  return fd;
284
287
  }
285
288
 
286
- hashsig_in_progress_init(&prog, sig);
289
+ if ((error = hashsig_in_progress_init(&prog, sig)) < 0) {
290
+ p_close(fd);
291
+ return error;
292
+ }
287
293
 
288
294
  while (!error) {
289
295
  if ((buflen = p_read(fd, buf, sizeof(buf))) <= 0) {
@@ -318,7 +324,7 @@ static int hashsig_heap_compare(const hashsig_heap *a, const hashsig_heap *b)
318
324
  {
319
325
  int matches = 0, i, j, cmp;
320
326
 
321
- assert(a->cmp == b->cmp);
327
+ GIT_ASSERT_WITH_RETVAL(a->cmp == b->cmp, 0);
322
328
 
323
329
  /* hash heaps are sorted - just look for overlap vs total */
324
330
 
@@ -354,9 +360,16 @@ int git_hashsig_compare(const git_hashsig *a, const git_hashsig *b)
354
360
  /* if we have fewer than the maximum number of elements, then just use
355
361
  * one array since the two arrays will be the same
356
362
  */
357
- if (a->mins.size < HASHSIG_HEAP_SIZE)
363
+ if (a->mins.size < HASHSIG_HEAP_SIZE) {
358
364
  return hashsig_heap_compare(&a->mins, &b->mins);
359
- else
360
- return (hashsig_heap_compare(&a->mins, &b->mins) +
361
- hashsig_heap_compare(&a->maxs, &b->maxs)) / 2;
365
+ } else {
366
+ int mins, maxs;
367
+
368
+ if ((mins = hashsig_heap_compare(&a->mins, &b->mins)) < 0)
369
+ return mins;
370
+ if ((maxs = hashsig_heap_compare(&a->maxs, &b->maxs)) < 0)
371
+ return maxs;
372
+
373
+ return (mins + maxs) / 2;
374
+ }
362
375
  }
@@ -10,7 +10,6 @@
10
10
  #include "git2/sys/filter.h"
11
11
  #include "filter.h"
12
12
  #include "buffer.h"
13
- #include "buf_text.h"
14
13
 
15
14
  static int ident_find_id(
16
15
  const char **id_start, const char **id_end, const char *start, size_t len)
@@ -105,7 +104,7 @@ static int ident_apply(
105
104
  GIT_UNUSED(self); GIT_UNUSED(payload);
106
105
 
107
106
  /* Don't filter binary files */
108
- if (git_buf_text_is_binary(from))
107
+ if (git_buf_is_binary(from))
109
108
  return GIT_PASSTHROUGH;
110
109
 
111
110
  if (git_filter_source_mode(src) == GIT_FILTER_SMUDGE)
@@ -114,6 +113,17 @@ static int ident_apply(
114
113
  return ident_remove_id(to, from);
115
114
  }
116
115
 
116
+ static int ident_stream(
117
+ git_writestream **out,
118
+ git_filter *self,
119
+ void **payload,
120
+ const git_filter_source *src,
121
+ git_writestream *next)
122
+ {
123
+ return git_filter_buffered_stream_new(out,
124
+ self, ident_apply, NULL, payload, src, next);
125
+ }
126
+
117
127
  git_filter *git_ident_filter_new(void)
118
128
  {
119
129
  git_filter *f = git__calloc(1, sizeof(git_filter));
@@ -123,7 +133,7 @@ git_filter *git_ident_filter_new(void)
123
133
  f->version = GIT_FILTER_VERSION;
124
134
  f->attributes = "+ident"; /* apply to files with ident attribute set */
125
135
  f->shutdown = git_filter_free;
126
- f->apply = ident_apply;
136
+ f->stream = ident_stream;
127
137
 
128
138
  return f;
129
139
  }
@@ -138,28 +138,6 @@ void *git_idxmap_icase_get(git_idxmap_icase *map, const git_index_entry *key)
138
138
  return kh_val(map, idx);
139
139
  }
140
140
 
141
- void git_idxmap_insert(git_idxmap *map, const git_index_entry *key, void *value, int *rval)
142
- {
143
- khiter_t idx = kh_put(idx, map, key, rval);
144
-
145
- if ((*rval) >= 0) {
146
- if ((*rval) == 0)
147
- kh_key(map, idx) = key;
148
- kh_val(map, idx) = value;
149
- }
150
- }
151
-
152
- void git_idxmap_icase_insert(git_idxmap_icase *map, const git_index_entry *key, void *value, int *rval)
153
- {
154
- khiter_t idx = kh_put(idxicase, map, key, rval);
155
-
156
- if ((*rval) >= 0) {
157
- if ((*rval) == 0)
158
- kh_key(map, idx) = key;
159
- kh_val(map, idx) = value;
160
- }
161
- }
162
-
163
141
  int git_idxmap_delete(git_idxmap *map, const git_index_entry *key)
164
142
  {
165
143
  khiter_t idx = kh_get(idx, map, key);
@@ -101,7 +101,7 @@ static int does_negate_pattern(git_attr_fnmatch *rule, git_attr_fnmatch *neg)
101
101
  */
102
102
  static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match)
103
103
  {
104
- int error = 0, wildmatch_flags;
104
+ int error = 0, wildmatch_flags, effective_flags;
105
105
  size_t i;
106
106
  git_attr_fnmatch *rule;
107
107
  char *path;
@@ -141,8 +141,17 @@ static int does_negate_rule(int *out, git_vector *rules, git_attr_fnmatch *match
141
141
  if (git_buf_oom(&buf))
142
142
  goto out;
143
143
 
144
+ /*
145
+ * if rule isn't for full path we match without PATHNAME flag
146
+ * as lines like *.txt should match something like dir/test.txt
147
+ * requiring * to also match /
148
+ */
149
+ effective_flags = wildmatch_flags;
150
+ if (!(rule->flags & GIT_ATTR_FNMATCH_FULLPATH))
151
+ effective_flags &= ~WM_PATHNAME;
152
+
144
153
  /* if we found a match, we want to keep this rule */
145
- if ((wildmatch(git_buf_cstr(&buf), path, wildmatch_flags)) == WM_MATCH) {
154
+ if ((wildmatch(git_buf_cstr(&buf), path, effective_flags)) == WM_MATCH) {
146
155
  *out = 1;
147
156
  error = 0;
148
157
  goto out;
@@ -238,11 +247,12 @@ static int push_ignore_file(
238
247
  const char *base,
239
248
  const char *filename)
240
249
  {
241
- int error = 0;
250
+ git_attr_file_source source = { GIT_ATTR_FILE_SOURCE_FILE, base, filename };
242
251
  git_attr_file *file = NULL;
252
+ int error = 0;
253
+
254
+ error = git_attr_cache__get(&file, ignores->repo, NULL, &source, parse_ignore_file, false);
243
255
 
244
- error = git_attr_cache__get(&file, ignores->repo, NULL, GIT_ATTR_FILE__FROM_FILE,
245
- base, filename, parse_ignore_file, false);
246
256
  if (error < 0)
247
257
  return error;
248
258
 
@@ -263,13 +273,13 @@ static int push_one_ignore(void *payload, const char *path)
263
273
 
264
274
  static int get_internal_ignores(git_attr_file **out, git_repository *repo)
265
275
  {
276
+ git_attr_file_source source = { GIT_ATTR_FILE_SOURCE_MEMORY, NULL, GIT_IGNORE_INTERNAL };
266
277
  int error;
267
278
 
268
279
  if ((error = git_attr_cache__init(repo)) < 0)
269
280
  return error;
270
281
 
271
- error = git_attr_cache__get(out, repo, NULL, GIT_ATTR_FILE__IN_MEMORY, NULL,
272
- GIT_IGNORE_INTERNAL, NULL, false);
282
+ error = git_attr_cache__get(out, repo, NULL, &source, NULL, false);
273
283
 
274
284
  /* if internal rules list is empty, insert default rules */
275
285
  if (!error && !(*out)->rules.length)
@@ -287,7 +297,9 @@ int git_ignore__for_path(
287
297
  const char *workdir = git_repository_workdir(repo);
288
298
  git_buf infopath = GIT_BUF_INIT;
289
299
 
290
- assert(repo && ignores && path);
300
+ GIT_ASSERT_ARG(repo);
301
+ GIT_ASSERT_ARG(ignores);
302
+ GIT_ASSERT_ARG(path);
291
303
 
292
304
  memset(ignores, 0, sizeof(*ignores));
293
305
  ignores->repo = repo;
@@ -307,12 +319,17 @@ int git_ignore__for_path(
307
319
  if ((error = git_path_dirname_r(&local, path)) < 0 ||
308
320
  (error = git_path_resolve_relative(&local, 0)) < 0 ||
309
321
  (error = git_path_to_dir(&local)) < 0 ||
310
- (error = git_buf_joinpath(&ignores->dir, workdir, local.ptr)) < 0)
311
- {;} /* Nothing, we just want to stop on the first error */
322
+ (error = git_buf_joinpath(&ignores->dir, workdir, local.ptr)) < 0 ||
323
+ (error = git_path_validate_workdir_buf(repo, &ignores->dir)) < 0) {
324
+ /* Nothing, we just want to stop on the first error */
325
+ }
326
+
312
327
  git_buf_dispose(&local);
313
328
  } else {
314
- error = git_buf_joinpath(&ignores->dir, path, "");
329
+ if (!(error = git_buf_joinpath(&ignores->dir, path, "")))
330
+ error = git_path_validate_filesystem(ignores->dir.ptr, ignores->dir.size);
315
331
  }
332
+
316
333
  if (error < 0)
317
334
  goto cleanup;
318
335
 
@@ -451,7 +468,7 @@ int git_ignore__lookup(
451
468
  *out = GIT_IGNORE_NOTFOUND;
452
469
 
453
470
  if (git_attr_path__init(
454
- &path, pathname, git_repository_workdir(ignores->repo), dir_flag) < 0)
471
+ &path, ignores->repo, pathname, git_repository_workdir(ignores->repo), dir_flag) < 0)
455
472
  return -1;
456
473
 
457
474
  /* first process builtins - success means path was found */
@@ -521,7 +538,9 @@ int git_ignore_path_is_ignored(
521
538
  git_attr_file *file;
522
539
  git_dir_flag dir_flag = GIT_DIR_FLAG_UNKNOWN;
523
540
 
524
- assert(repo && ignored && pathname);
541
+ GIT_ASSERT_ARG(repo);
542
+ GIT_ASSERT_ARG(ignored);
543
+ GIT_ASSERT_ARG(pathname);
525
544
 
526
545
  workdir = git_repository_workdir(repo);
527
546
 
@@ -533,7 +552,7 @@ int git_ignore_path_is_ignored(
533
552
  else if (git_repository_is_bare(repo))
534
553
  dir_flag = GIT_DIR_FLAG_FALSE;
535
554
 
536
- if ((error = git_attr_path__init(&path, pathname, workdir, dir_flag)) < 0 ||
555
+ if ((error = git_attr_path__init(&path, repo, pathname, workdir, dir_flag)) < 0 ||
537
556
  (error = git_ignore__for_path(repo, path.path, &ignores)) < 0)
538
557
  goto cleanup;
539
558
 
@@ -586,7 +605,7 @@ int git_ignore__check_pathspec_for_exact_ignores(
586
605
  git_attr_fnmatch *match;
587
606
  int ignored;
588
607
  git_buf path = GIT_BUF_INIT;
589
- const char *wd, *filename;
608
+ const char *filename;
590
609
  git_index *idx;
591
610
 
592
611
  if ((error = git_repository__ensure_not_bare(
@@ -594,8 +613,6 @@ int git_ignore__check_pathspec_for_exact_ignores(
594
613
  (error = git_repository_index(&idx, repo)) < 0)
595
614
  return error;
596
615
 
597
- wd = git_repository_workdir(repo);
598
-
599
616
  git_vector_foreach(vspec, i, match) {
600
617
  /* skip wildcard matches (if they are being used) */
601
618
  if ((match->flags & GIT_ATTR_FNMATCH_HASWILD) != 0 &&
@@ -608,7 +625,7 @@ int git_ignore__check_pathspec_for_exact_ignores(
608
625
  if (git_index_get_bypath(idx, filename, 0) != NULL)
609
626
  continue;
610
627
 
611
- if ((error = git_buf_joinpath(&path, wd, filename)) < 0)
628
+ if ((error = git_repository_workdir_path(&path, repo, filename)) < 0)
612
629
  break;
613
630
 
614
631
  /* is there a file on disk that matches this exactly? */
@@ -632,4 +649,3 @@ int git_ignore__check_pathspec_for_exact_ignores(
632
649
 
633
650
  return error;
634
651
  }
635
-
@@ -406,12 +406,13 @@ int git_index_open(git_index **index_out, const char *index_path)
406
406
  git_index *index;
407
407
  int error = -1;
408
408
 
409
- assert(index_out);
409
+ GIT_ASSERT_ARG(index_out);
410
410
 
411
411
  index = git__calloc(1, sizeof(git_index));
412
412
  GIT_ERROR_CHECK_ALLOC(index);
413
413
 
414
- git_pool_init(&index->tree_pool, 1);
414
+ if (git_pool_init(&index->tree_pool, 1) < 0)
415
+ goto fail;
415
416
 
416
417
  if (index_path != NULL) {
417
418
  index->index_file_path = git__strdup(index_path);
@@ -460,7 +461,8 @@ static void index_free(git_index *index)
460
461
  /* index iterators increment the refcount of the index, so if we
461
462
  * get here then there should be no outstanding iterators.
462
463
  */
463
- assert(!git_atomic_get(&index->readers));
464
+ if (git_atomic32_get(&index->readers))
465
+ return;
464
466
 
465
467
  git_index_clear(index);
466
468
  git_idxmap_free(index->entries_map);
@@ -486,14 +488,14 @@ void git_index_free(git_index *index)
486
488
  /* call with locked index */
487
489
  static void index_free_deleted(git_index *index)
488
490
  {
489
- int readers = (int)git_atomic_get(&index->readers);
491
+ int readers = (int)git_atomic32_get(&index->readers);
490
492
  size_t i;
491
493
 
492
494
  if (readers > 0 || !index->deleted.length)
493
495
  return;
494
496
 
495
497
  for (i = 0; i < index->deleted.length; ++i) {
496
- git_index_entry *ie = git__swap(index->deleted.contents[i], NULL);
498
+ git_index_entry *ie = git_atomic_swap(index->deleted.contents[i], NULL);
497
499
  index_entry_free(ie);
498
500
  }
499
501
 
@@ -514,7 +516,7 @@ static int index_remove_entry(git_index *index, size_t pos)
514
516
  error = git_vector_remove(&index->entries, pos);
515
517
 
516
518
  if (!error) {
517
- if (git_atomic_get(&index->readers) > 0) {
519
+ if (git_atomic32_get(&index->readers) > 0) {
518
520
  error = git_vector_insert(&index->deleted, entry);
519
521
  } else {
520
522
  index_entry_free(entry);
@@ -530,7 +532,7 @@ int git_index_clear(git_index *index)
530
532
  {
531
533
  int error = 0;
532
534
 
533
- assert(index);
535
+ GIT_ASSERT_ARG(index);
534
536
 
535
537
  index->dirty = 1;
536
538
  index->tree = NULL;
@@ -565,7 +567,7 @@ int git_index_set_caps(git_index *index, int caps)
565
567
  {
566
568
  unsigned int old_ignore_case;
567
569
 
568
- assert(index);
570
+ GIT_ASSERT_ARG(index);
569
571
 
570
572
  old_ignore_case = index->ignore_case;
571
573
 
@@ -777,14 +779,14 @@ done:
777
779
 
778
780
  unsigned git_index_version(git_index *index)
779
781
  {
780
- assert(index);
782
+ GIT_ASSERT_ARG(index);
781
783
 
782
784
  return index->version;
783
785
  }
784
786
 
785
787
  int git_index_set_version(git_index *index, unsigned int version)
786
788
  {
787
- assert(index);
789
+ GIT_ASSERT_ARG(index);
788
790
 
789
791
  if (version < INDEX_VERSION_NUMBER_LB ||
790
792
  version > INDEX_VERSION_NUMBER_UB) {
@@ -813,9 +815,9 @@ int git_index_write(git_index *index)
813
815
  return error;
814
816
  }
815
817
 
816
- const char * git_index_path(const git_index *index)
818
+ const char *git_index_path(const git_index *index)
817
819
  {
818
- assert(index);
820
+ GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
819
821
  return index->index_file_path;
820
822
  }
821
823
 
@@ -823,7 +825,8 @@ int git_index_write_tree(git_oid *oid, git_index *index)
823
825
  {
824
826
  git_repository *repo;
825
827
 
826
- assert(oid && index);
828
+ GIT_ASSERT_ARG(oid);
829
+ GIT_ASSERT_ARG(index);
827
830
 
828
831
  repo = INDEX_OWNER(index);
829
832
 
@@ -837,20 +840,25 @@ int git_index_write_tree(git_oid *oid, git_index *index)
837
840
  int git_index_write_tree_to(
838
841
  git_oid *oid, git_index *index, git_repository *repo)
839
842
  {
840
- assert(oid && index && repo);
843
+ GIT_ASSERT_ARG(oid);
844
+ GIT_ASSERT_ARG(index);
845
+ GIT_ASSERT_ARG(repo);
846
+
841
847
  return git_tree__write_index(oid, index, repo);
842
848
  }
843
849
 
844
850
  size_t git_index_entrycount(const git_index *index)
845
851
  {
846
- assert(index);
852
+ GIT_ASSERT_ARG(index);
853
+
847
854
  return index->entries.length;
848
855
  }
849
856
 
850
857
  const git_index_entry *git_index_get_byindex(
851
858
  git_index *index, size_t n)
852
859
  {
853
- assert(index);
860
+ GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
861
+
854
862
  git_vector_sort(&index->entries);
855
863
  return git_vector_get(&index->entries, n);
856
864
  }
@@ -861,7 +869,7 @@ const git_index_entry *git_index_get_bypath(
861
869
  git_index_entry key = {{ 0 }};
862
870
  git_index_entry *value;
863
871
 
864
- assert(index);
872
+ GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
865
873
 
866
874
  key.path = path;
867
875
  GIT_INDEX_ENTRY_STAGE_SET(&key, stage);
@@ -936,7 +944,7 @@ static int index_entry_create(
936
944
  if (st)
937
945
  mode = st->st_mode;
938
946
 
939
- if (!git_path_isvalid(repo, path, mode, path_valid_flags)) {
947
+ if (!git_path_validate(repo, path, mode, path_valid_flags)) {
940
948
  git_error_set(GIT_ERROR_INDEX, "invalid path: '%s'", path);
941
949
  return -1;
942
950
  }
@@ -980,7 +988,7 @@ static int index_entry_init(
980
988
  if (git_repository__ensure_not_bare(repo, "create blob from file") < 0)
981
989
  return GIT_EBAREREPO;
982
990
 
983
- if (git_buf_joinpath(&path, git_repository_workdir(repo), rel_path) < 0)
991
+ if (git_repository_workdir_path(&path, repo, rel_path) < 0)
984
992
  return -1;
985
993
 
986
994
  error = git_path_lstat(path.ptr, &st);
@@ -1038,23 +1046,24 @@ static int index_entry_reuc_init(git_index_reuc_entry **reuc_out,
1038
1046
  {
1039
1047
  git_index_reuc_entry *reuc = NULL;
1040
1048
 
1041
- assert(reuc_out && path);
1049
+ GIT_ASSERT_ARG(reuc_out);
1050
+ GIT_ASSERT_ARG(path);
1042
1051
 
1043
1052
  *reuc_out = reuc = reuc_entry_alloc(path);
1044
1053
  GIT_ERROR_CHECK_ALLOC(reuc);
1045
1054
 
1046
1055
  if ((reuc->mode[0] = ancestor_mode) > 0) {
1047
- assert(ancestor_oid);
1056
+ GIT_ASSERT(ancestor_oid);
1048
1057
  git_oid_cpy(&reuc->oid[0], ancestor_oid);
1049
1058
  }
1050
1059
 
1051
1060
  if ((reuc->mode[1] = our_mode) > 0) {
1052
- assert(our_oid);
1061
+ GIT_ASSERT(our_oid);
1053
1062
  git_oid_cpy(&reuc->oid[1], our_oid);
1054
1063
  }
1055
1064
 
1056
1065
  if ((reuc->mode[2] = their_mode) > 0) {
1057
- assert(their_oid);
1066
+ GIT_ASSERT(their_oid);
1058
1067
  git_oid_cpy(&reuc->oid[2], their_oid);
1059
1068
  }
1060
1069
 
@@ -1346,7 +1355,8 @@ static int index_insert(
1346
1355
  size_t path_length, position;
1347
1356
  int error;
1348
1357
 
1349
- assert(index && entry_ptr);
1358
+ GIT_ASSERT_ARG(index);
1359
+ GIT_ASSERT_ARG(entry_ptr);
1350
1360
 
1351
1361
  entry = *entry_ptr;
1352
1362
 
@@ -1471,7 +1481,8 @@ int git_index_add_from_buffer(
1471
1481
  int error = 0;
1472
1482
  git_oid id;
1473
1483
 
1474
- assert(index && source_entry->path);
1484
+ GIT_ASSERT_ARG(index);
1485
+ GIT_ASSERT_ARG(source_entry && source_entry->path);
1475
1486
 
1476
1487
  if (INDEX_OWNER(index) == NULL)
1477
1488
  return create_index_error(-1,
@@ -1521,7 +1532,7 @@ static int add_repo_as_submodule(git_index_entry **out, git_index *index, const
1521
1532
  struct stat st;
1522
1533
  int error;
1523
1534
 
1524
- if ((error = git_buf_joinpath(&abspath, git_repository_workdir(repo), path)) < 0)
1535
+ if ((error = git_repository_workdir_path(&abspath, repo, path)) < 0)
1525
1536
  return error;
1526
1537
 
1527
1538
  if ((error = p_stat(abspath.ptr, &st)) < 0) {
@@ -1556,7 +1567,8 @@ int git_index_add_bypath(git_index *index, const char *path)
1556
1567
  git_index_entry *entry = NULL;
1557
1568
  int ret;
1558
1569
 
1559
- assert(index && path);
1570
+ GIT_ASSERT_ARG(index);
1571
+ GIT_ASSERT_ARG(path);
1560
1572
 
1561
1573
  if ((ret = index_entry_init(&entry, index, path)) == 0)
1562
1574
  ret = index_insert(index, &entry, 1, false, false, true);
@@ -1608,7 +1620,8 @@ int git_index_remove_bypath(git_index *index, const char *path)
1608
1620
  {
1609
1621
  int ret;
1610
1622
 
1611
- assert(index && path);
1623
+ GIT_ASSERT_ARG(index);
1624
+ GIT_ASSERT_ARG(path);
1612
1625
 
1613
1626
  if (((ret = git_index_remove(index, path, 0)) < 0 &&
1614
1627
  ret != GIT_ENOTFOUND) ||
@@ -1628,7 +1641,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
1628
1641
  int error = 0;
1629
1642
  size_t i;
1630
1643
 
1631
- assert(index);
1644
+ GIT_ASSERT_ARG(index);
1632
1645
 
1633
1646
  if (!source_entries->length)
1634
1647
  return 0;
@@ -1669,7 +1682,8 @@ int git_index_add(git_index *index, const git_index_entry *source_entry)
1669
1682
  git_index_entry *entry = NULL;
1670
1683
  int ret;
1671
1684
 
1672
- assert(index && source_entry && source_entry->path);
1685
+ GIT_ASSERT_ARG(index);
1686
+ GIT_ASSERT_ARG(source_entry && source_entry->path);
1673
1687
 
1674
1688
  if (!valid_filemode(source_entry->mode)) {
1675
1689
  git_error_set(GIT_ERROR_INDEX, "invalid entry mode");
@@ -1757,7 +1771,8 @@ int git_index_find_prefix(size_t *at_pos, git_index *index, const char *prefix)
1757
1771
  int git_index__find_pos(
1758
1772
  size_t *out, git_index *index, const char *path, size_t path_len, int stage)
1759
1773
  {
1760
- assert(index && path);
1774
+ GIT_ASSERT_ARG(index);
1775
+ GIT_ASSERT_ARG(path);
1761
1776
  return index_find(out, index, path, path_len, stage);
1762
1777
  }
1763
1778
 
@@ -1765,7 +1780,8 @@ int git_index_find(size_t *at_pos, git_index *index, const char *path)
1765
1780
  {
1766
1781
  size_t pos;
1767
1782
 
1768
- assert(index && path);
1783
+ GIT_ASSERT_ARG(index);
1784
+ GIT_ASSERT_ARG(path);
1769
1785
 
1770
1786
  if (git_vector_bsearch2(
1771
1787
  &pos, &index->entries, index->entries_search_path, path) < 0) {
@@ -1798,7 +1814,7 @@ int git_index_conflict_add(git_index *index,
1798
1814
  unsigned short i;
1799
1815
  int ret = 0;
1800
1816
 
1801
- assert (index);
1817
+ GIT_ASSERT_ARG(index);
1802
1818
 
1803
1819
  if ((ancestor_entry &&
1804
1820
  (ret = index_entry_dup(&entries[0], index, ancestor_entry)) < 0) ||
@@ -1869,7 +1885,10 @@ static int index_conflict__get_byindex(
1869
1885
  size_t count;
1870
1886
  int stage, len = 0;
1871
1887
 
1872
- assert(ancestor_out && our_out && their_out && index);
1888
+ GIT_ASSERT_ARG(ancestor_out);
1889
+ GIT_ASSERT_ARG(our_out);
1890
+ GIT_ASSERT_ARG(their_out);
1891
+ GIT_ASSERT_ARG(index);
1873
1892
 
1874
1893
  *ancestor_out = NULL;
1875
1894
  *our_out = NULL;
@@ -1915,7 +1934,11 @@ int git_index_conflict_get(
1915
1934
  size_t pos;
1916
1935
  int len = 0;
1917
1936
 
1918
- assert(ancestor_out && our_out && their_out && index && path);
1937
+ GIT_ASSERT_ARG(ancestor_out);
1938
+ GIT_ASSERT_ARG(our_out);
1939
+ GIT_ASSERT_ARG(their_out);
1940
+ GIT_ASSERT_ARG(index);
1941
+ GIT_ASSERT_ARG(path);
1919
1942
 
1920
1943
  *ancestor_out = NULL;
1921
1944
  *our_out = NULL;
@@ -1962,13 +1985,14 @@ static int index_conflict_remove(git_index *index, const char *path)
1962
1985
 
1963
1986
  int git_index_conflict_remove(git_index *index, const char *path)
1964
1987
  {
1965
- assert(index && path);
1988
+ GIT_ASSERT_ARG(index);
1989
+ GIT_ASSERT_ARG(path);
1966
1990
  return index_conflict_remove(index, path);
1967
1991
  }
1968
1992
 
1969
1993
  int git_index_conflict_cleanup(git_index *index)
1970
1994
  {
1971
- assert(index);
1995
+ GIT_ASSERT_ARG(index);
1972
1996
  return index_conflict_remove(index, NULL);
1973
1997
  }
1974
1998
 
@@ -1977,7 +2001,7 @@ int git_index_has_conflicts(const git_index *index)
1977
2001
  size_t i;
1978
2002
  git_index_entry *entry;
1979
2003
 
1980
- assert(index);
2004
+ GIT_ASSERT_ARG(index);
1981
2005
 
1982
2006
  git_vector_foreach(&index->entries, i, entry) {
1983
2007
  if (GIT_INDEX_ENTRY_STAGE(entry) > 0)
@@ -1994,7 +2018,8 @@ int git_index_iterator_new(
1994
2018
  git_index_iterator *it;
1995
2019
  int error;
1996
2020
 
1997
- assert(iterator_out && index);
2021
+ GIT_ASSERT_ARG(iterator_out);
2022
+ GIT_ASSERT_ARG(index);
1998
2023
 
1999
2024
  it = git__calloc(1, sizeof(git_index_iterator));
2000
2025
  GIT_ERROR_CHECK_ALLOC(it);
@@ -2014,7 +2039,8 @@ int git_index_iterator_next(
2014
2039
  const git_index_entry **out,
2015
2040
  git_index_iterator *it)
2016
2041
  {
2017
- assert(out && it);
2042
+ GIT_ASSERT_ARG(out);
2043
+ GIT_ASSERT_ARG(it);
2018
2044
 
2019
2045
  if (it->cur >= git_vector_length(&it->snap))
2020
2046
  return GIT_ITEROVER;
@@ -2038,7 +2064,8 @@ int git_index_conflict_iterator_new(
2038
2064
  {
2039
2065
  git_index_conflict_iterator *it = NULL;
2040
2066
 
2041
- assert(iterator_out && index);
2067
+ GIT_ASSERT_ARG(iterator_out);
2068
+ GIT_ASSERT_ARG(index);
2042
2069
 
2043
2070
  it = git__calloc(1, sizeof(git_index_conflict_iterator));
2044
2071
  GIT_ERROR_CHECK_ALLOC(it);
@@ -2058,7 +2085,10 @@ int git_index_conflict_next(
2058
2085
  const git_index_entry *entry;
2059
2086
  int len;
2060
2087
 
2061
- assert(ancestor_out && our_out && their_out && iterator);
2088
+ GIT_ASSERT_ARG(ancestor_out);
2089
+ GIT_ASSERT_ARG(our_out);
2090
+ GIT_ASSERT_ARG(their_out);
2091
+ GIT_ASSERT_ARG(iterator);
2062
2092
 
2063
2093
  *ancestor_out = NULL;
2064
2094
  *our_out = NULL;
@@ -2096,14 +2126,14 @@ void git_index_conflict_iterator_free(git_index_conflict_iterator *iterator)
2096
2126
 
2097
2127
  size_t git_index_name_entrycount(git_index *index)
2098
2128
  {
2099
- assert(index);
2129
+ GIT_ASSERT_ARG(index);
2100
2130
  return index->names.length;
2101
2131
  }
2102
2132
 
2103
2133
  const git_index_name_entry *git_index_name_get_byindex(
2104
2134
  git_index *index, size_t n)
2105
2135
  {
2106
- assert(index);
2136
+ GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
2107
2137
 
2108
2138
  git_vector_sort(&index->names);
2109
2139
  return git_vector_get(&index->names, n);
@@ -2124,7 +2154,7 @@ int git_index_name_add(git_index *index,
2124
2154
  {
2125
2155
  git_index_name_entry *conflict_name;
2126
2156
 
2127
- assert((ancestor && ours) || (ancestor && theirs) || (ours && theirs));
2157
+ GIT_ASSERT_ARG((ancestor && ours) || (ancestor && theirs) || (ours && theirs));
2128
2158
 
2129
2159
  conflict_name = git__calloc(1, sizeof(git_index_name_entry));
2130
2160
  GIT_ERROR_CHECK_ALLOC(conflict_name);
@@ -2147,7 +2177,7 @@ int git_index_name_clear(git_index *index)
2147
2177
  size_t i;
2148
2178
  git_index_name_entry *conflict_name;
2149
2179
 
2150
- assert(index);
2180
+ GIT_ASSERT_ARG(index);
2151
2181
 
2152
2182
  git_vector_foreach(&index->names, i, conflict_name)
2153
2183
  index_name_entry_free(conflict_name);
@@ -2161,7 +2191,7 @@ int git_index_name_clear(git_index *index)
2161
2191
 
2162
2192
  size_t git_index_reuc_entrycount(git_index *index)
2163
2193
  {
2164
- assert(index);
2194
+ GIT_ASSERT_ARG(index);
2165
2195
  return index->reuc.length;
2166
2196
  }
2167
2197
 
@@ -2178,8 +2208,9 @@ static int index_reuc_insert(
2178
2208
  {
2179
2209
  int res;
2180
2210
 
2181
- assert(index && reuc && reuc->path != NULL);
2182
- assert(git_vector_is_sorted(&index->reuc));
2211
+ GIT_ASSERT_ARG(index);
2212
+ GIT_ASSERT_ARG(reuc && reuc->path != NULL);
2213
+ GIT_ASSERT(git_vector_is_sorted(&index->reuc));
2183
2214
 
2184
2215
  res = git_vector_insert_sorted(&index->reuc, reuc, &index_reuc_on_dup);
2185
2216
  index->dirty = 1;
@@ -2195,7 +2226,8 @@ int git_index_reuc_add(git_index *index, const char *path,
2195
2226
  git_index_reuc_entry *reuc = NULL;
2196
2227
  int error = 0;
2197
2228
 
2198
- assert(index && path);
2229
+ GIT_ASSERT_ARG(index);
2230
+ GIT_ASSERT_ARG(path);
2199
2231
 
2200
2232
  if ((error = index_entry_reuc_init(&reuc, path, ancestor_mode,
2201
2233
  ancestor_oid, our_mode, our_oid, their_mode, their_oid)) < 0 ||
@@ -2214,12 +2246,14 @@ const git_index_reuc_entry *git_index_reuc_get_bypath(
2214
2246
  git_index *index, const char *path)
2215
2247
  {
2216
2248
  size_t pos;
2217
- assert(index && path);
2249
+
2250
+ GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
2251
+ GIT_ASSERT_ARG_WITH_RETVAL(path, NULL);
2218
2252
 
2219
2253
  if (!index->reuc.length)
2220
2254
  return NULL;
2221
2255
 
2222
- assert(git_vector_is_sorted(&index->reuc));
2256
+ GIT_ASSERT_WITH_RETVAL(git_vector_is_sorted(&index->reuc), NULL);
2223
2257
 
2224
2258
  if (git_index_reuc_find(&pos, index, path) < 0)
2225
2259
  return NULL;
@@ -2230,8 +2264,8 @@ const git_index_reuc_entry *git_index_reuc_get_bypath(
2230
2264
  const git_index_reuc_entry *git_index_reuc_get_byindex(
2231
2265
  git_index *index, size_t n)
2232
2266
  {
2233
- assert(index);
2234
- assert(git_vector_is_sorted(&index->reuc));
2267
+ GIT_ASSERT_ARG_WITH_RETVAL(index, NULL);
2268
+ GIT_ASSERT_WITH_RETVAL(git_vector_is_sorted(&index->reuc), NULL);
2235
2269
 
2236
2270
  return git_vector_get(&index->reuc, n);
2237
2271
  }
@@ -2241,7 +2275,8 @@ int git_index_reuc_remove(git_index *index, size_t position)
2241
2275
  int error;
2242
2276
  git_index_reuc_entry *reuc;
2243
2277
 
2244
- assert(git_vector_is_sorted(&index->reuc));
2278
+ GIT_ASSERT_ARG(index);
2279
+ GIT_ASSERT(git_vector_is_sorted(&index->reuc));
2245
2280
 
2246
2281
  reuc = git_vector_get(&index->reuc, position);
2247
2282
  error = git_vector_remove(&index->reuc, position);
@@ -2257,10 +2292,10 @@ int git_index_reuc_clear(git_index *index)
2257
2292
  {
2258
2293
  size_t i;
2259
2294
 
2260
- assert(index);
2295
+ GIT_ASSERT_ARG(index);
2261
2296
 
2262
2297
  for (i = 0; i < index->reuc.length; ++i)
2263
- index_entry_reuc_free(git__swap(index->reuc.contents[i], NULL));
2298
+ index_entry_reuc_free(git_atomic_swap(index->reuc.contents[i], NULL));
2264
2299
 
2265
2300
  git_vector_clear(&index->reuc);
2266
2301
 
@@ -2625,7 +2660,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
2625
2660
 
2626
2661
  seek_forward(INDEX_HEADER_SIZE);
2627
2662
 
2628
- assert(!index->entries.length);
2663
+ GIT_ASSERT(!index->entries.length);
2629
2664
 
2630
2665
  if ((error = index_map_resize(index->entries_map, header.entry_count, index->ignore_case)) < 0)
2631
2666
  return error;
@@ -2744,7 +2779,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
2744
2779
  ++same_len;
2745
2780
  }
2746
2781
  path_len -= same_len;
2747
- varint_len = git_encode_varint(NULL, 0, same_len);
2782
+ varint_len = git_encode_varint(NULL, 0, strlen(last) - same_len);
2748
2783
  }
2749
2784
 
2750
2785
  disk_size = index_entry_size(path_len, varint_len, entry->flags);
@@ -2780,23 +2815,26 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
2780
2815
  ondisk.flags = htons(entry->flags);
2781
2816
 
2782
2817
  if (entry->flags & GIT_INDEX_ENTRY_EXTENDED) {
2818
+ const size_t path_offset = offsetof(struct entry_long, path);
2783
2819
  struct entry_long ondisk_ext;
2784
2820
  memcpy(&ondisk_ext, &ondisk, sizeof(struct entry_short));
2785
2821
  ondisk_ext.flags_extended = htons(entry->flags_extended &
2786
2822
  GIT_INDEX_ENTRY_EXTENDED_FLAGS);
2787
- memcpy(mem, &ondisk_ext, offsetof(struct entry_long, path));
2788
- path = ((struct entry_long*)mem)->path;
2789
- disk_size -= offsetof(struct entry_long, path);
2823
+ memcpy(mem, &ondisk_ext, path_offset);
2824
+ path = (char *)mem + path_offset;
2825
+ disk_size -= path_offset;
2790
2826
  } else {
2791
- memcpy(mem, &ondisk, offsetof(struct entry_short, path));
2792
- path = ((struct entry_short*)mem)->path;
2793
- disk_size -= offsetof(struct entry_short, path);
2827
+ const size_t path_offset = offsetof(struct entry_short, path);
2828
+ memcpy(mem, &ondisk, path_offset);
2829
+ path = (char *)mem + path_offset;
2830
+ disk_size -= path_offset;
2794
2831
  }
2795
2832
 
2796
2833
  if (last) {
2797
2834
  varint_len = git_encode_varint((unsigned char *) path,
2798
- disk_size, same_len);
2799
- assert(varint_len > 0);
2835
+ disk_size, strlen(last) - same_len);
2836
+ GIT_ASSERT(varint_len > 0);
2837
+
2800
2838
  path += varint_len;
2801
2839
  disk_size -= varint_len;
2802
2840
 
@@ -2804,14 +2842,14 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
2804
2842
  * If using path compression, we are not allowed
2805
2843
  * to have additional trailing NULs.
2806
2844
  */
2807
- assert(disk_size == path_len + 1);
2845
+ GIT_ASSERT(disk_size == path_len + 1);
2808
2846
  } else {
2809
2847
  /*
2810
2848
  * If no path compression is used, we do have
2811
2849
  * NULs as padding. As such, simply assert that
2812
2850
  * we have enough space left to write the path.
2813
2851
  */
2814
- assert(disk_size > path_len);
2852
+ GIT_ASSERT(disk_size > path_len);
2815
2853
  }
2816
2854
 
2817
2855
  memcpy(path, path_start, path_len + 1);
@@ -2823,14 +2861,16 @@ static int write_entries(git_index *index, git_filebuf *file)
2823
2861
  {
2824
2862
  int error = 0;
2825
2863
  size_t i;
2826
- git_vector case_sorted, *entries;
2864
+ git_vector case_sorted = GIT_VECTOR_INIT, *entries = NULL;
2827
2865
  git_index_entry *entry;
2828
2866
  const char *last = NULL;
2829
2867
 
2830
2868
  /* If index->entries is sorted case-insensitively, then we need
2831
2869
  * to re-sort it case-sensitively before writing */
2832
2870
  if (index->ignore_case) {
2833
- git_vector_dup(&case_sorted, &index->entries, git_index_entry_cmp);
2871
+ if ((error = git_vector_dup(&case_sorted, &index->entries, git_index_entry_cmp)) < 0)
2872
+ goto done;
2873
+
2834
2874
  git_vector_sort(&case_sorted);
2835
2875
  entries = &case_sorted;
2836
2876
  } else {
@@ -2847,9 +2887,8 @@ static int write_entries(git_index *index, git_filebuf *file)
2847
2887
  last = entry->path;
2848
2888
  }
2849
2889
 
2850
- if (index->ignore_case)
2851
- git_vector_free(&case_sorted);
2852
-
2890
+ done:
2891
+ git_vector_free(&case_sorted);
2853
2892
  return error;
2854
2893
  }
2855
2894
 
@@ -3007,7 +3046,8 @@ static int write_index(git_oid *checksum, git_index *index, git_filebuf *file)
3007
3046
  bool is_extended;
3008
3047
  uint32_t index_version_number;
3009
3048
 
3010
- assert(index && file);
3049
+ GIT_ASSERT_ARG(index);
3050
+ GIT_ASSERT_ARG(file);
3011
3051
 
3012
3052
  if (index->version <= INDEX_VERSION_NUMBER_EXT) {
3013
3053
  is_extended = is_index_extended(index);
@@ -3158,7 +3198,7 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
3158
3198
  /* well, this isn't good */;
3159
3199
  } else {
3160
3200
  git_vector_swap(&entries, &index->entries);
3161
- entries_map = git__swap(index->entries_map, entries_map);
3201
+ entries_map = git_atomic_swap(index->entries_map, entries_map);
3162
3202
  }
3163
3203
 
3164
3204
  index->dirty = 1;
@@ -3189,7 +3229,7 @@ static int git_index_read_iterator(
3189
3229
  size_t i;
3190
3230
  int error;
3191
3231
 
3192
- assert((new_iterator->flags & GIT_ITERATOR_DONT_IGNORE_CASE));
3232
+ GIT_ASSERT((new_iterator->flags & GIT_ITERATOR_DONT_IGNORE_CASE));
3193
3233
 
3194
3234
  if ((error = git_vector_init(&new_entries, new_length_hint, index->entries._cmp)) < 0 ||
3195
3235
  (error = git_vector_init(&remove_entries, index->entries.length, NULL)) < 0 ||
@@ -3292,7 +3332,7 @@ static int git_index_read_iterator(
3292
3332
  goto done;
3293
3333
 
3294
3334
  git_vector_swap(&new_entries, &index->entries);
3295
- new_entries_map = git__swap(index->entries_map, new_entries_map);
3335
+ new_entries_map = git_atomic_swap(index->entries_map, new_entries_map);
3296
3336
 
3297
3337
  git_vector_foreach(&remove_entries, i, entry) {
3298
3338
  if (index->tree)
@@ -3361,7 +3401,7 @@ int git_index_add_all(
3361
3401
  git_pathspec ps;
3362
3402
  bool no_fnmatch = (flags & GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH) != 0;
3363
3403
 
3364
- assert(index);
3404
+ GIT_ASSERT_ARG(index);
3365
3405
 
3366
3406
  repo = INDEX_OWNER(index);
3367
3407
  if ((error = git_repository__ensure_not_bare(repo, "index add all")) < 0)
@@ -3447,8 +3487,8 @@ static int index_apply_to_wd_diff(git_index *index, int action, const git_strarr
3447
3487
  payload,
3448
3488
  };
3449
3489
 
3450
- assert(index);
3451
- assert(action == INDEX_ACTION_UPDATE || action == INDEX_ACTION_ADDALL);
3490
+ GIT_ASSERT_ARG(index);
3491
+ GIT_ASSERT_ARG(action == INDEX_ACTION_UPDATE || action == INDEX_ACTION_ADDALL);
3452
3492
 
3453
3493
  repo = INDEX_OWNER(index);
3454
3494
 
@@ -3502,7 +3542,7 @@ static int index_apply_to_all(
3502
3542
  const char *match;
3503
3543
  git_buf path = GIT_BUF_INIT;
3504
3544
 
3505
- assert(index);
3545
+ GIT_ASSERT_ARG(index);
3506
3546
 
3507
3547
  if ((error = git_pathspec__init(&ps, paths)) < 0)
3508
3548
  return error;
@@ -3598,7 +3638,7 @@ int git_index_snapshot_new(git_vector *snap, git_index *index)
3598
3638
 
3599
3639
  GIT_REFCOUNT_INC(index);
3600
3640
 
3601
- git_atomic_inc(&index->readers);
3641
+ git_atomic32_inc(&index->readers);
3602
3642
  git_vector_sort(&index->entries);
3603
3643
 
3604
3644
  error = git_vector_dup(snap, &index->entries, index->entries._cmp);
@@ -3613,7 +3653,7 @@ void git_index_snapshot_release(git_vector *snap, git_index *index)
3613
3653
  {
3614
3654
  git_vector_free(snap);
3615
3655
 
3616
- git_atomic_dec(&index->readers);
3656
+ git_atomic32_dec(&index->readers);
3617
3657
 
3618
3658
  git_index_free(index);
3619
3659
  }
@@ -3716,9 +3756,11 @@ void git_indexwriter_cleanup(git_indexwriter *writer)
3716
3756
 
3717
3757
  /* Deprecated functions */
3718
3758
 
3759
+ #ifndef GIT_DEPRECATE_HARD
3719
3760
  int git_index_add_frombuffer(
3720
3761
  git_index *index, const git_index_entry *source_entry,
3721
3762
  const void *buffer, size_t len)
3722
3763
  {
3723
3764
  return git_index_add_from_buffer(index, source_entry, buffer, len);
3724
3765
  }
3766
+ #endif