rugged 1.1.1 → 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 (277) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -0
  3. data/README.md +1 -1
  4. data/ext/rugged/rugged.c +7 -4
  5. data/ext/rugged/rugged_object.c +1 -1
  6. data/ext/rugged/rugged_repo.c +3 -3
  7. data/lib/rugged/repository.rb +2 -2
  8. data/lib/rugged/version.rb +1 -1
  9. data/vendor/libgit2/CMakeLists.txt +11 -6
  10. data/vendor/libgit2/COPYING +109 -1
  11. data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
  12. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +4 -0
  13. data/vendor/libgit2/cmake/SelectHashes.cmake +1 -0
  14. data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
  15. data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +17 -5
  16. data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
  17. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
  18. data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
  19. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
  20. data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
  21. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
  22. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
  23. data/vendor/libgit2/deps/ntlmclient/ntlm.c +150 -118
  24. data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
  25. data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
  26. data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
  27. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
  28. data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
  29. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
  30. data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
  31. data/vendor/libgit2/include/git2/attr.h +89 -0
  32. data/vendor/libgit2/include/git2/blame.h +93 -42
  33. data/vendor/libgit2/include/git2/blob.h +14 -2
  34. data/vendor/libgit2/include/git2/branch.h +25 -0
  35. data/vendor/libgit2/include/git2/cert.h +42 -5
  36. data/vendor/libgit2/include/git2/checkout.h +28 -12
  37. data/vendor/libgit2/include/git2/commit.h +35 -19
  38. data/vendor/libgit2/include/git2/common.h +14 -4
  39. data/vendor/libgit2/include/git2/deprecated.h +206 -6
  40. data/vendor/libgit2/include/git2/diff.h +34 -19
  41. data/vendor/libgit2/include/git2/errors.h +6 -6
  42. data/vendor/libgit2/include/git2/filter.h +57 -17
  43. data/vendor/libgit2/include/git2/graph.h +20 -2
  44. data/vendor/libgit2/include/git2/index.h +2 -2
  45. data/vendor/libgit2/include/git2/odb.h +29 -0
  46. data/vendor/libgit2/include/git2/patch.h +8 -0
  47. data/vendor/libgit2/include/git2/rebase.h +25 -1
  48. data/vendor/libgit2/include/git2/refs.h +6 -2
  49. data/vendor/libgit2/include/git2/remote.h +59 -6
  50. data/vendor/libgit2/include/git2/revparse.h +5 -5
  51. data/vendor/libgit2/include/git2/status.h +115 -59
  52. data/vendor/libgit2/include/git2/submodule.h +9 -0
  53. data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
  54. data/vendor/libgit2/include/git2/sys/filter.h +49 -28
  55. data/vendor/libgit2/include/git2/sys/midx.h +74 -0
  56. data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
  57. data/vendor/libgit2/include/git2/sys/transport.h +1 -0
  58. data/vendor/libgit2/include/git2/tag.h +12 -0
  59. data/vendor/libgit2/include/git2/tree.h +0 -14
  60. data/vendor/libgit2/include/git2/types.h +9 -0
  61. data/vendor/libgit2/include/git2/version.h +4 -4
  62. data/vendor/libgit2/include/git2/worktree.h +1 -0
  63. data/vendor/libgit2/src/CMakeLists.txt +25 -4
  64. data/vendor/libgit2/src/alloc.c +21 -8
  65. data/vendor/libgit2/src/allocators/failalloc.c +92 -0
  66. data/vendor/libgit2/src/allocators/failalloc.h +23 -0
  67. data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
  68. data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
  69. data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
  70. data/vendor/libgit2/src/annotated_commit.c +21 -9
  71. data/vendor/libgit2/src/apply.c +16 -7
  72. data/vendor/libgit2/src/array.h +11 -11
  73. data/vendor/libgit2/src/attr.c +181 -74
  74. data/vendor/libgit2/src/attr_file.c +84 -39
  75. data/vendor/libgit2/src/attr_file.h +32 -11
  76. data/vendor/libgit2/src/attrcache.c +42 -37
  77. data/vendor/libgit2/src/attrcache.h +4 -5
  78. data/vendor/libgit2/src/blame.c +11 -5
  79. data/vendor/libgit2/src/blob.c +35 -24
  80. data/vendor/libgit2/src/branch.c +69 -17
  81. data/vendor/libgit2/src/buffer.c +334 -25
  82. data/vendor/libgit2/src/buffer.h +153 -2
  83. data/vendor/libgit2/src/cache.c +2 -2
  84. data/vendor/libgit2/src/cache.h +7 -7
  85. data/vendor/libgit2/src/cc-compat.h +10 -2
  86. data/vendor/libgit2/src/checkout.c +48 -26
  87. data/vendor/libgit2/src/cherrypick.c +6 -2
  88. data/vendor/libgit2/src/clone.c +41 -47
  89. data/vendor/libgit2/src/commit.c +41 -28
  90. data/vendor/libgit2/src/commit_graph.c +1209 -0
  91. data/vendor/libgit2/src/commit_graph.h +162 -0
  92. data/vendor/libgit2/src/commit_list.c +46 -0
  93. data/vendor/libgit2/src/commit_list.h +2 -0
  94. data/vendor/libgit2/src/common.h +25 -2
  95. data/vendor/libgit2/src/config.c +37 -15
  96. data/vendor/libgit2/src/config_cache.c +5 -3
  97. data/vendor/libgit2/src/config_file.c +16 -8
  98. data/vendor/libgit2/src/config_parse.c +4 -6
  99. data/vendor/libgit2/src/crlf.c +16 -6
  100. data/vendor/libgit2/src/date.c +4 -3
  101. data/vendor/libgit2/src/delta.c +1 -1
  102. data/vendor/libgit2/src/describe.c +6 -3
  103. data/vendor/libgit2/src/diff.c +11 -8
  104. data/vendor/libgit2/src/diff_driver.c +21 -17
  105. data/vendor/libgit2/src/diff_file.c +2 -6
  106. data/vendor/libgit2/src/diff_generate.c +46 -17
  107. data/vendor/libgit2/src/diff_print.c +19 -6
  108. data/vendor/libgit2/src/diff_stats.c +7 -5
  109. data/vendor/libgit2/src/diff_tform.c +9 -8
  110. data/vendor/libgit2/src/diff_xdiff.c +4 -2
  111. data/vendor/libgit2/src/diff_xdiff.h +1 -1
  112. data/vendor/libgit2/src/errors.c +24 -19
  113. data/vendor/libgit2/src/features.h.in +5 -1
  114. data/vendor/libgit2/src/fetch.c +5 -2
  115. data/vendor/libgit2/src/fetchhead.c +8 -4
  116. data/vendor/libgit2/src/filebuf.c +9 -7
  117. data/vendor/libgit2/src/filter.c +206 -110
  118. data/vendor/libgit2/src/filter.h +24 -5
  119. data/vendor/libgit2/src/futils.c +5 -5
  120. data/vendor/libgit2/src/futils.h +1 -1
  121. data/vendor/libgit2/src/graph.c +64 -9
  122. data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
  123. data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
  124. data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
  125. data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
  126. data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
  127. data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
  128. data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
  129. data/vendor/libgit2/src/hash.c +16 -13
  130. data/vendor/libgit2/src/hash.h +1 -1
  131. data/vendor/libgit2/src/hashsig.c +23 -10
  132. data/vendor/libgit2/src/ident.c +13 -3
  133. data/vendor/libgit2/src/ignore.c +35 -19
  134. data/vendor/libgit2/src/index.c +106 -70
  135. data/vendor/libgit2/src/index.h +1 -1
  136. data/vendor/libgit2/src/indexer.c +31 -29
  137. data/vendor/libgit2/src/integer.h +64 -2
  138. data/vendor/libgit2/src/iterator.c +36 -24
  139. data/vendor/libgit2/src/iterator.h +1 -1
  140. data/vendor/libgit2/src/khash.h +2 -11
  141. data/vendor/libgit2/src/{settings.c → libgit2.c} +117 -50
  142. data/vendor/libgit2/src/libgit2.h +15 -0
  143. data/vendor/libgit2/src/mailmap.c +23 -10
  144. data/vendor/libgit2/src/map.h +3 -3
  145. data/vendor/libgit2/src/merge.c +70 -30
  146. data/vendor/libgit2/src/merge.h +2 -1
  147. data/vendor/libgit2/src/merge_driver.c +19 -13
  148. data/vendor/libgit2/src/merge_file.c +11 -3
  149. data/vendor/libgit2/src/message.c +3 -1
  150. data/vendor/libgit2/src/midx.c +471 -10
  151. data/vendor/libgit2/src/midx.h +28 -1
  152. data/vendor/libgit2/src/mwindow.c +103 -59
  153. data/vendor/libgit2/src/mwindow.h +3 -3
  154. data/vendor/libgit2/src/net.c +127 -3
  155. data/vendor/libgit2/src/net.h +16 -2
  156. data/vendor/libgit2/src/netops.c +6 -4
  157. data/vendor/libgit2/src/netops.h +2 -2
  158. data/vendor/libgit2/src/notes.c +10 -10
  159. data/vendor/libgit2/src/object.c +22 -14
  160. data/vendor/libgit2/src/odb.c +285 -48
  161. data/vendor/libgit2/src/odb.h +16 -2
  162. data/vendor/libgit2/src/odb_loose.c +28 -18
  163. data/vendor/libgit2/src/odb_mempack.c +1 -1
  164. data/vendor/libgit2/src/odb_pack.c +391 -114
  165. data/vendor/libgit2/src/oid.c +5 -4
  166. data/vendor/libgit2/src/pack-objects.c +54 -48
  167. data/vendor/libgit2/src/pack.c +329 -119
  168. data/vendor/libgit2/src/pack.h +25 -7
  169. data/vendor/libgit2/src/patch.c +14 -7
  170. data/vendor/libgit2/src/patch_generate.c +2 -2
  171. data/vendor/libgit2/src/patch_parse.c +2 -1
  172. data/vendor/libgit2/src/path.c +98 -53
  173. data/vendor/libgit2/src/path.h +79 -6
  174. data/vendor/libgit2/src/pathspec.c +8 -8
  175. data/vendor/libgit2/src/pool.c +13 -7
  176. data/vendor/libgit2/src/posix.c +11 -3
  177. data/vendor/libgit2/src/reader.c +10 -6
  178. data/vendor/libgit2/src/rebase.c +93 -49
  179. data/vendor/libgit2/src/refdb.c +30 -13
  180. data/vendor/libgit2/src/refdb_fs.c +121 -69
  181. data/vendor/libgit2/src/reflog.c +19 -14
  182. data/vendor/libgit2/src/refs.c +76 -41
  183. data/vendor/libgit2/src/refspec.c +32 -12
  184. data/vendor/libgit2/src/remote.c +272 -102
  185. data/vendor/libgit2/src/remote.h +2 -1
  186. data/vendor/libgit2/src/repository.c +176 -103
  187. data/vendor/libgit2/src/repository.h +12 -1
  188. data/vendor/libgit2/src/reset.c +7 -6
  189. data/vendor/libgit2/src/revert.c +6 -2
  190. data/vendor/libgit2/src/revparse.c +14 -9
  191. data/vendor/libgit2/src/revwalk.c +32 -15
  192. data/vendor/libgit2/src/runtime.c +162 -0
  193. data/vendor/libgit2/src/runtime.h +62 -0
  194. data/vendor/libgit2/src/settings.h +11 -0
  195. data/vendor/libgit2/src/signature.c +6 -5
  196. data/vendor/libgit2/src/sortedcache.h +10 -8
  197. data/vendor/libgit2/src/stash.c +3 -1
  198. data/vendor/libgit2/src/status.c +7 -4
  199. data/vendor/libgit2/src/strarray.c +2 -1
  200. data/vendor/libgit2/src/streams/mbedtls.c +14 -17
  201. data/vendor/libgit2/src/streams/mbedtls.h +1 -1
  202. data/vendor/libgit2/src/streams/openssl.c +101 -201
  203. data/vendor/libgit2/src/streams/openssl.h +9 -1
  204. data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
  205. data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
  206. data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
  207. data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
  208. data/vendor/libgit2/src/streams/registry.c +5 -6
  209. data/vendor/libgit2/src/streams/socket.c +6 -2
  210. data/vendor/libgit2/src/streams/stransport.c +6 -3
  211. data/vendor/libgit2/src/streams/tls.c +5 -3
  212. data/vendor/libgit2/src/submodule.c +128 -62
  213. data/vendor/libgit2/src/submodule.h +9 -9
  214. data/vendor/libgit2/src/sysdir.c +4 -6
  215. data/vendor/libgit2/src/tag.c +47 -11
  216. data/vendor/libgit2/src/thread.c +140 -0
  217. data/vendor/libgit2/src/thread.h +479 -0
  218. data/vendor/libgit2/src/threadstate.c +83 -0
  219. data/vendor/libgit2/src/threadstate.h +24 -0
  220. data/vendor/libgit2/src/trace.c +2 -2
  221. data/vendor/libgit2/src/trace.h +17 -13
  222. data/vendor/libgit2/src/transaction.c +19 -8
  223. data/vendor/libgit2/src/transport.c +3 -3
  224. data/vendor/libgit2/src/transports/auth.c +1 -1
  225. data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
  226. data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
  227. data/vendor/libgit2/src/transports/credential.c +15 -7
  228. data/vendor/libgit2/src/transports/git.c +1 -3
  229. data/vendor/libgit2/src/transports/http.c +19 -17
  230. data/vendor/libgit2/src/transports/http.h +1 -0
  231. data/vendor/libgit2/src/transports/httpclient.c +53 -26
  232. data/vendor/libgit2/src/transports/httpclient.h +1 -1
  233. data/vendor/libgit2/src/transports/local.c +3 -3
  234. data/vendor/libgit2/src/transports/smart.c +12 -7
  235. data/vendor/libgit2/src/transports/smart.h +1 -1
  236. data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
  237. data/vendor/libgit2/src/transports/ssh.c +51 -17
  238. data/vendor/libgit2/src/transports/winhttp.c +41 -31
  239. data/vendor/libgit2/src/tree.c +100 -77
  240. data/vendor/libgit2/src/tree.h +1 -0
  241. data/vendor/libgit2/src/tsort.c +0 -2
  242. data/vendor/libgit2/src/unix/map.c +3 -1
  243. data/vendor/libgit2/src/unix/pthread.h +2 -1
  244. data/vendor/libgit2/src/utf8.c +150 -0
  245. data/vendor/libgit2/src/utf8.h +52 -0
  246. data/vendor/libgit2/src/util.c +53 -129
  247. data/vendor/libgit2/src/util.h +33 -39
  248. data/vendor/libgit2/src/vector.c +23 -19
  249. data/vendor/libgit2/src/vector.h +4 -2
  250. data/vendor/libgit2/src/win32/findfile.c +4 -2
  251. data/vendor/libgit2/src/win32/map.c +1 -1
  252. data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
  253. data/vendor/libgit2/src/win32/path_w32.c +22 -24
  254. data/vendor/libgit2/src/win32/path_w32.h +0 -1
  255. data/vendor/libgit2/src/win32/posix_w32.c +7 -1
  256. data/vendor/libgit2/src/win32/precompiled.h +0 -1
  257. data/vendor/libgit2/src/win32/reparse.h +4 -4
  258. data/vendor/libgit2/src/win32/thread.c +24 -15
  259. data/vendor/libgit2/src/win32/thread.h +1 -1
  260. data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
  261. data/vendor/libgit2/src/win32/w32_common.h +18 -9
  262. data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
  263. data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
  264. data/vendor/libgit2/src/win32/w32_util.h +6 -6
  265. data/vendor/libgit2/src/worktree.c +27 -16
  266. data/vendor/libgit2/src/zstream.c +1 -1
  267. metadata +32 -16
  268. data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
  269. data/vendor/libgit2/src/buf_text.c +0 -316
  270. data/vendor/libgit2/src/buf_text.h +0 -122
  271. data/vendor/libgit2/src/global.c +0 -363
  272. data/vendor/libgit2/src/global.h +0 -41
  273. data/vendor/libgit2/src/thread-utils.c +0 -58
  274. data/vendor/libgit2/src/thread-utils.h +0 -369
  275. data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
  276. data/vendor/libgit2/src/win32/w32_stack.c +0 -188
  277. data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -50,7 +50,9 @@ int git_reflog_read(git_reflog **reflog, git_repository *repo, const char *name
50
50
  git_refdb *refdb;
51
51
  int error;
52
52
 
53
- assert(reflog && repo && name);
53
+ GIT_ASSERT_ARG(reflog);
54
+ GIT_ASSERT_ARG(repo);
55
+ GIT_ASSERT_ARG(name);
54
56
 
55
57
  if ((error = git_repository_refdb__weakptr(&refdb, repo)) < 0)
56
58
  return error;
@@ -62,7 +64,8 @@ int git_reflog_write(git_reflog *reflog)
62
64
  {
63
65
  git_refdb *db;
64
66
 
65
- assert(reflog && reflog->db);
67
+ GIT_ASSERT_ARG(reflog);
68
+ GIT_ASSERT_ARG(reflog->db);
66
69
 
67
70
  db = reflog->db;
68
71
  return db->backend->reflog_write(db->backend, reflog);
@@ -73,7 +76,9 @@ int git_reflog_append(git_reflog *reflog, const git_oid *new_oid, const git_sign
73
76
  const git_reflog_entry *previous;
74
77
  git_reflog_entry *entry;
75
78
 
76
- assert(reflog && new_oid && committer);
79
+ GIT_ASSERT_ARG(reflog);
80
+ GIT_ASSERT_ARG(new_oid);
81
+ GIT_ASSERT_ARG(committer);
77
82
 
78
83
  entry = git__calloc(1, sizeof(git_reflog_entry));
79
84
  GIT_ERROR_CHECK_ALLOC(entry);
@@ -139,13 +144,13 @@ int git_reflog_delete(git_repository *repo, const char *name)
139
144
 
140
145
  size_t git_reflog_entrycount(git_reflog *reflog)
141
146
  {
142
- assert(reflog);
147
+ GIT_ASSERT_ARG_WITH_RETVAL(reflog, 0);
143
148
  return reflog->entries.length;
144
149
  }
145
150
 
146
- const git_reflog_entry * git_reflog_entry_byindex(const git_reflog *reflog, size_t idx)
151
+ const git_reflog_entry *git_reflog_entry_byindex(const git_reflog *reflog, size_t idx)
147
152
  {
148
- assert(reflog);
153
+ GIT_ASSERT_ARG_WITH_RETVAL(reflog, NULL);
149
154
 
150
155
  if (idx >= reflog->entries.length)
151
156
  return NULL;
@@ -154,27 +159,27 @@ const git_reflog_entry * git_reflog_entry_byindex(const git_reflog *reflog, size
154
159
  &reflog->entries, reflog_inverse_index(idx, reflog->entries.length));
155
160
  }
156
161
 
157
- const git_oid * git_reflog_entry_id_old(const git_reflog_entry *entry)
162
+ const git_oid *git_reflog_entry_id_old(const git_reflog_entry *entry)
158
163
  {
159
- assert(entry);
164
+ GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
160
165
  return &entry->oid_old;
161
166
  }
162
167
 
163
- const git_oid * git_reflog_entry_id_new(const git_reflog_entry *entry)
168
+ const git_oid *git_reflog_entry_id_new(const git_reflog_entry *entry)
164
169
  {
165
- assert(entry);
170
+ GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
166
171
  return &entry->oid_cur;
167
172
  }
168
173
 
169
- const git_signature * git_reflog_entry_committer(const git_reflog_entry *entry)
174
+ const git_signature *git_reflog_entry_committer(const git_reflog_entry *entry)
170
175
  {
171
- assert(entry);
176
+ GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
172
177
  return entry->committer;
173
178
  }
174
179
 
175
- const char * git_reflog_entry_message(const git_reflog_entry *entry)
180
+ const char *git_reflog_entry_message(const git_reflog_entry *entry)
176
181
  {
177
- assert(entry);
182
+ GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
178
183
  return entry->msg;
179
184
  }
180
185
 
@@ -50,7 +50,8 @@ git_reference *git_reference__alloc_symbolic(
50
50
  {
51
51
  git_reference *ref;
52
52
 
53
- assert(name && target);
53
+ GIT_ASSERT_ARG_WITH_RETVAL(name, NULL);
54
+ GIT_ASSERT_ARG_WITH_RETVAL(target, NULL);
54
55
 
55
56
  ref = alloc_ref(name);
56
57
  if (!ref)
@@ -73,7 +74,8 @@ git_reference *git_reference__alloc(
73
74
  {
74
75
  git_reference *ref;
75
76
 
76
- assert(name && oid);
77
+ GIT_ASSERT_ARG_WITH_RETVAL(name, NULL);
78
+ GIT_ASSERT_ARG_WITH_RETVAL(oid, NULL);
77
79
 
78
80
  ref = alloc_ref(name);
79
81
  if (!ref)
@@ -94,7 +96,8 @@ git_reference *git_reference__realloc(
94
96
  size_t namelen, reflen;
95
97
  git_reference *rewrite = NULL;
96
98
 
97
- assert(ptr_to_ref && name);
99
+ GIT_ASSERT_ARG_WITH_RETVAL(ptr_to_ref, NULL);
100
+ GIT_ASSERT_ARG_WITH_RETVAL(name, NULL);
98
101
 
99
102
  namelen = strlen(name);
100
103
 
@@ -215,7 +218,9 @@ int git_reference_lookup_resolved(
215
218
  git_refdb *refdb;
216
219
  int error = 0;
217
220
 
218
- assert(ref_out && repo && name);
221
+ GIT_ASSERT_ARG(ref_out);
222
+ GIT_ASSERT_ARG(repo);
223
+ GIT_ASSERT_ARG(name);
219
224
 
220
225
  if ((error = reference_normalize_for_repo(normalized, repo, name, true)) < 0 ||
221
226
  (error = git_repository_refdb__weakptr(&refdb, repo)) < 0 ||
@@ -239,7 +244,7 @@ int git_reference_lookup_resolved(
239
244
 
240
245
  int git_reference_dwim(git_reference **out, git_repository *repo, const char *refname)
241
246
  {
242
- int error = 0, i;
247
+ int error = 0, i, valid;
243
248
  bool fallbackmode = true, foundvalid = false;
244
249
  git_reference *ref;
245
250
  git_buf refnamebuf = GIT_BUF_INIT, name = GIT_BUF_INIT;
@@ -265,10 +270,11 @@ int git_reference_dwim(git_reference **out, git_repository *repo, const char *re
265
270
 
266
271
  git_buf_clear(&refnamebuf);
267
272
 
268
- if ((error = git_buf_printf(&refnamebuf, formatters[i], git_buf_cstr(&name))) < 0)
273
+ if ((error = git_buf_printf(&refnamebuf, formatters[i], git_buf_cstr(&name))) < 0 ||
274
+ (error = git_reference_name_is_valid(&valid, git_buf_cstr(&refnamebuf))) < 0)
269
275
  goto cleanup;
270
276
 
271
- if (!git_reference_is_valid_name(git_buf_cstr(&refnamebuf))) {
277
+ if (!valid) {
272
278
  error = GIT_EINVALIDSPEC;
273
279
  continue;
274
280
  }
@@ -306,25 +312,25 @@ cleanup:
306
312
  */
307
313
  git_reference_t git_reference_type(const git_reference *ref)
308
314
  {
309
- assert(ref);
315
+ GIT_ASSERT_ARG(ref);
310
316
  return ref->type;
311
317
  }
312
318
 
313
319
  const char *git_reference_name(const git_reference *ref)
314
320
  {
315
- assert(ref);
321
+ GIT_ASSERT_ARG_WITH_RETVAL(ref, NULL);
316
322
  return ref->name;
317
323
  }
318
324
 
319
325
  git_repository *git_reference_owner(const git_reference *ref)
320
326
  {
321
- assert(ref);
327
+ GIT_ASSERT_ARG_WITH_RETVAL(ref, NULL);
322
328
  return ref->db->repo;
323
329
  }
324
330
 
325
331
  const git_oid *git_reference_target(const git_reference *ref)
326
332
  {
327
- assert(ref);
333
+ GIT_ASSERT_ARG_WITH_RETVAL(ref, NULL);
328
334
 
329
335
  if (ref->type != GIT_REFERENCE_DIRECT)
330
336
  return NULL;
@@ -334,7 +340,7 @@ const git_oid *git_reference_target(const git_reference *ref)
334
340
 
335
341
  const git_oid *git_reference_target_peel(const git_reference *ref)
336
342
  {
337
- assert(ref);
343
+ GIT_ASSERT_ARG_WITH_RETVAL(ref, NULL);
338
344
 
339
345
  if (ref->type != GIT_REFERENCE_DIRECT || git_oid_is_zero(&ref->peel))
340
346
  return NULL;
@@ -344,7 +350,7 @@ const git_oid *git_reference_target_peel(const git_reference *ref)
344
350
 
345
351
  const char *git_reference_symbolic_target(const git_reference *ref)
346
352
  {
347
- assert(ref);
353
+ GIT_ASSERT_ARG_WITH_RETVAL(ref, NULL);
348
354
 
349
355
  if (ref->type != GIT_REFERENCE_SYMBOLIC)
350
356
  return NULL;
@@ -369,8 +375,9 @@ static int reference__create(
369
375
  git_reference *ref = NULL;
370
376
  int error = 0;
371
377
 
372
- assert(repo && name);
373
- assert(symbolic || signature);
378
+ GIT_ASSERT_ARG(repo);
379
+ GIT_ASSERT_ARG(name);
380
+ GIT_ASSERT_ARG(symbolic || signature);
374
381
 
375
382
  if (ref_out)
376
383
  *ref_out = NULL;
@@ -384,7 +391,7 @@ static int reference__create(
384
391
  return error;
385
392
 
386
393
  if (oid != NULL) {
387
- assert(symbolic == NULL);
394
+ GIT_ASSERT(symbolic == NULL);
388
395
 
389
396
  if (!git_object__is_valid(repo, oid, GIT_OBJECT_ANY)) {
390
397
  git_error_set(GIT_ERROR_REFERENCE,
@@ -456,7 +463,7 @@ int git_reference_create_matching(
456
463
  int error;
457
464
  git_signature *who = NULL;
458
465
 
459
- assert(id);
466
+ GIT_ASSERT_ARG(id);
460
467
 
461
468
  if ((error = git_reference__log_signature(&who, repo)) < 0)
462
469
  return error;
@@ -491,7 +498,7 @@ int git_reference_symbolic_create_matching(
491
498
  int error;
492
499
  git_signature *who = NULL;
493
500
 
494
- assert(target);
501
+ GIT_ASSERT_ARG(target);
495
502
 
496
503
  if ((error = git_reference__log_signature(&who, repo)) < 0)
497
504
  return error;
@@ -532,7 +539,9 @@ int git_reference_set_target(
532
539
  int error;
533
540
  git_repository *repo;
534
541
 
535
- assert(out && ref && id);
542
+ GIT_ASSERT_ARG(out);
543
+ GIT_ASSERT_ARG(ref);
544
+ GIT_ASSERT_ARG(id);
536
545
 
537
546
  repo = ref->db->repo;
538
547
 
@@ -559,7 +568,9 @@ int git_reference_symbolic_set_target(
559
568
  {
560
569
  int error;
561
570
 
562
- assert(out && ref && target);
571
+ GIT_ASSERT_ARG(out);
572
+ GIT_ASSERT_ARG(ref);
573
+ GIT_ASSERT_ARG(target);
563
574
 
564
575
  if ((error = ensure_is_an_updatable_symbolic_reference(ref)) < 0)
565
576
  return error;
@@ -610,7 +621,8 @@ int git_reference_rename(
610
621
  git_repository *repo;
611
622
  int error;
612
623
 
613
- assert(out && ref);
624
+ GIT_ASSERT_ARG(out);
625
+ GIT_ASSERT_ARG(ref);
614
626
 
615
627
  repo = git_reference_owner(ref);
616
628
 
@@ -776,7 +788,8 @@ int git_reference_list(
776
788
  {
777
789
  git_vector ref_list;
778
790
 
779
- assert(array && repo);
791
+ GIT_ASSERT_ARG(array);
792
+ GIT_ASSERT_ARG(repo);
780
793
 
781
794
  array->strings = NULL;
782
795
  array->count = 0;
@@ -860,7 +873,8 @@ static bool is_all_caps_and_underscore(const char *name, size_t len)
860
873
  size_t i;
861
874
  char c;
862
875
 
863
- assert(name && len > 0);
876
+ GIT_ASSERT_ARG(name);
877
+ GIT_ASSERT_ARG(len > 0);
864
878
 
865
879
  for (i = 0; i < len; i++)
866
880
  {
@@ -891,7 +905,7 @@ int git_reference__normalize_name(
891
905
  git_path_iconv_t ic = GIT_PATH_ICONV_INIT;
892
906
  #endif
893
907
 
894
- assert(name);
908
+ GIT_ASSERT_ARG(name);
895
909
 
896
910
  process_flags = flags;
897
911
  current = (char *)name;
@@ -1023,7 +1037,8 @@ int git_reference_normalize_name(
1023
1037
  goto cleanup;
1024
1038
  }
1025
1039
 
1026
- git_buf_copy_cstr(buffer_out, buffer_size, &buf);
1040
+ if ((error = git_buf_copy_cstr(buffer_out, buffer_size, &buf)) < 0)
1041
+ goto cleanup;
1027
1042
 
1028
1043
  error = 0;
1029
1044
 
@@ -1039,7 +1054,9 @@ int git_reference_cmp(
1039
1054
  const git_reference *ref2)
1040
1055
  {
1041
1056
  git_reference_t type1, type2;
1042
- assert(ref1 && ref2);
1057
+
1058
+ GIT_ASSERT_ARG(ref1);
1059
+ GIT_ASSERT_ARG(ref2);
1043
1060
 
1044
1061
  type1 = git_reference_type(ref1);
1045
1062
  type2 = git_reference_type(ref2);
@@ -1162,7 +1179,8 @@ int git_reference_has_log(git_repository *repo, const char *refname)
1162
1179
  int error;
1163
1180
  git_refdb *refdb;
1164
1181
 
1165
- assert(repo && refname);
1182
+ GIT_ASSERT_ARG(repo);
1183
+ GIT_ASSERT_ARG(refname);
1166
1184
 
1167
1185
  if ((error = git_repository_refdb__weakptr(&refdb, repo)) < 0)
1168
1186
  return error;
@@ -1175,7 +1193,8 @@ int git_reference_ensure_log(git_repository *repo, const char *refname)
1175
1193
  int error;
1176
1194
  git_refdb *refdb;
1177
1195
 
1178
- assert(repo && refname);
1196
+ GIT_ASSERT_ARG(repo);
1197
+ GIT_ASSERT_ARG(refname);
1179
1198
 
1180
1199
  if ((error = git_repository_refdb__weakptr(&refdb, repo)) < 0)
1181
1200
  return error;
@@ -1190,7 +1209,7 @@ int git_reference__is_branch(const char *ref_name)
1190
1209
 
1191
1210
  int git_reference_is_branch(const git_reference *ref)
1192
1211
  {
1193
- assert(ref);
1212
+ GIT_ASSERT_ARG(ref);
1194
1213
  return git_reference__is_branch(ref->name);
1195
1214
  }
1196
1215
 
@@ -1201,7 +1220,7 @@ int git_reference__is_remote(const char *ref_name)
1201
1220
 
1202
1221
  int git_reference_is_remote(const git_reference *ref)
1203
1222
  {
1204
- assert(ref);
1223
+ GIT_ASSERT_ARG(ref);
1205
1224
  return git_reference__is_remote(ref->name);
1206
1225
  }
1207
1226
 
@@ -1212,7 +1231,7 @@ int git_reference__is_tag(const char *ref_name)
1212
1231
 
1213
1232
  int git_reference_is_tag(const git_reference *ref)
1214
1233
  {
1215
- assert(ref);
1234
+ GIT_ASSERT_ARG(ref);
1216
1235
  return git_reference__is_tag(ref->name);
1217
1236
  }
1218
1237
 
@@ -1223,7 +1242,7 @@ int git_reference__is_note(const char *ref_name)
1223
1242
 
1224
1243
  int git_reference_is_note(const git_reference *ref)
1225
1244
  {
1226
- assert(ref);
1245
+ GIT_ASSERT_ARG(ref);
1227
1246
  return git_reference__is_note(ref->name);
1228
1247
  }
1229
1248
 
@@ -1245,7 +1264,7 @@ int git_reference_peel(
1245
1264
  git_object *target = NULL;
1246
1265
  int error;
1247
1266
 
1248
- assert(ref);
1267
+ GIT_ASSERT_ARG(ref);
1249
1268
 
1250
1269
  if (ref->type == GIT_REFERENCE_DIRECT) {
1251
1270
  resolved = ref;
@@ -1294,6 +1313,8 @@ int git_reference__name_is_valid(
1294
1313
  {
1295
1314
  int error;
1296
1315
 
1316
+ GIT_ASSERT(valid && refname);
1317
+
1297
1318
  *valid = 0;
1298
1319
 
1299
1320
  error = git_reference__normalize_name(NULL, refname, flags);
@@ -1306,13 +1327,9 @@ int git_reference__name_is_valid(
1306
1327
  return error;
1307
1328
  }
1308
1329
 
1309
- int git_reference_is_valid_name(const char *refname)
1330
+ int git_reference_name_is_valid(int *valid, const char *refname)
1310
1331
  {
1311
- int valid = 0;
1312
-
1313
- git_reference__name_is_valid(&valid, refname, GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL);
1314
-
1315
- return valid;
1332
+ return git_reference__name_is_valid(valid, refname, GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL);
1316
1333
  }
1317
1334
 
1318
1335
  const char *git_reference__shorthand(const char *name)
@@ -1326,7 +1343,7 @@ const char *git_reference__shorthand(const char *name)
1326
1343
  else if (!git__prefixcmp(name, GIT_REFS_DIR))
1327
1344
  return name + strlen(GIT_REFS_DIR);
1328
1345
 
1329
- /* No shorthands are avaiable, so just return the name */
1346
+ /* No shorthands are available, so just return the name. */
1330
1347
  return name;
1331
1348
  }
1332
1349
 
@@ -1339,7 +1356,10 @@ int git_reference__is_unborn_head(bool *unborn, const git_reference *ref, git_re
1339
1356
  {
1340
1357
  int error;
1341
1358
  git_reference *tmp_ref;
1342
- assert(unborn && ref && repo);
1359
+
1360
+ GIT_ASSERT_ARG(unborn);
1361
+ GIT_ASSERT_ARG(ref);
1362
+ GIT_ASSERT_ARG(repo);
1343
1363
 
1344
1364
  if (ref->type == GIT_REFERENCE_DIRECT) {
1345
1365
  *unborn = 0;
@@ -1358,3 +1378,18 @@ int git_reference__is_unborn_head(bool *unborn, const git_reference *ref, git_re
1358
1378
 
1359
1379
  return 0;
1360
1380
  }
1381
+
1382
+ /* Deprecated functions */
1383
+
1384
+ #ifndef GIT_DEPRECATE_HARD
1385
+
1386
+ int git_reference_is_valid_name(const char *refname)
1387
+ {
1388
+ int valid = 0;
1389
+
1390
+ git_reference__name_is_valid(&valid, refname, GIT_REFERENCE_FORMAT_ALLOW_ONELEVEL);
1391
+
1392
+ return valid;
1393
+ }
1394
+
1395
+ #endif
@@ -24,7 +24,8 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch)
24
24
  int valid = 0;
25
25
  unsigned int flags;
26
26
 
27
- assert(refspec && input);
27
+ GIT_ASSERT_ARG(refspec);
28
+ GIT_ASSERT_ARG(input);
28
29
 
29
30
  memset(refspec, 0x0, sizeof(git_refspec));
30
31
  refspec->push = !is_fetch;
@@ -180,7 +181,8 @@ void git_refspec__dispose(git_refspec *refspec)
180
181
  int git_refspec_parse(git_refspec **out_refspec, const char *input, int is_fetch)
181
182
  {
182
183
  git_refspec *refspec;
183
- assert(out_refspec && input);
184
+ GIT_ASSERT_ARG(out_refspec);
185
+ GIT_ASSERT_ARG(input);
184
186
 
185
187
  *out_refspec = NULL;
186
188
 
@@ -219,7 +221,7 @@ const char *git_refspec_string(const git_refspec *refspec)
219
221
 
220
222
  int git_refspec_force(const git_refspec *refspec)
221
223
  {
222
- assert(refspec);
224
+ GIT_ASSERT_ARG(refspec);
223
225
 
224
226
  return refspec->force;
225
227
  }
@@ -245,8 +247,11 @@ static int refspec_transform(
245
247
  {
246
248
  const char *from_star, *to_star;
247
249
  size_t replacement_len, star_offset;
250
+ int error;
251
+
252
+ if ((error = git_buf_sanitize(out)) < 0)
253
+ return error;
248
254
 
249
- git_buf_sanitize(out);
250
255
  git_buf_clear(out);
251
256
 
252
257
  /*
@@ -258,7 +263,7 @@ static int refspec_transform(
258
263
  from_star = strchr(from, '*');
259
264
  to_star = strchr(to, '*');
260
265
 
261
- assert(from_star && to_star);
266
+ GIT_ASSERT(from_star && to_star);
262
267
 
263
268
  /* star offset, both in 'from' and in 'name' */
264
269
  star_offset = from_star - from;
@@ -278,8 +283,14 @@ static int refspec_transform(
278
283
 
279
284
  int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *name)
280
285
  {
281
- assert(out && spec && name);
282
- git_buf_sanitize(out);
286
+ int error;
287
+
288
+ GIT_ASSERT_ARG(out);
289
+ GIT_ASSERT_ARG(spec);
290
+ GIT_ASSERT_ARG(name);
291
+
292
+ if ((error = git_buf_sanitize(out)) < 0)
293
+ return error;
283
294
 
284
295
  if (!git_refspec_src_matches(spec, name)) {
285
296
  git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the source", name);
@@ -294,8 +305,14 @@ int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *nam
294
305
 
295
306
  int git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name)
296
307
  {
297
- assert(out && spec && name);
298
- git_buf_sanitize(out);
308
+ int error;
309
+
310
+ GIT_ASSERT_ARG(out);
311
+ GIT_ASSERT_ARG(spec);
312
+ GIT_ASSERT_ARG(name);
313
+
314
+ if ((error = git_buf_sanitize(out)) < 0)
315
+ return error;
299
316
 
300
317
  if (!git_refspec_dst_matches(spec, name)) {
301
318
  git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the destination", name);
@@ -322,14 +339,15 @@ int git_refspec__serialize(git_buf *out, const git_refspec *refspec)
322
339
 
323
340
  int git_refspec_is_wildcard(const git_refspec *spec)
324
341
  {
325
- assert(spec && spec->src);
342
+ GIT_ASSERT_ARG(spec);
343
+ GIT_ASSERT_ARG(spec->src);
326
344
 
327
345
  return (spec->src[strlen(spec->src) - 1] == '*');
328
346
  }
329
347
 
330
348
  git_direction git_refspec_direction(const git_refspec *spec)
331
349
  {
332
- assert(spec);
350
+ GIT_ASSERT_ARG(spec);
333
351
 
334
352
  return spec->push;
335
353
  }
@@ -348,7 +366,9 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs)
348
366
  NULL
349
367
  };
350
368
 
351
- assert(out && spec && refs);
369
+ GIT_ASSERT_ARG(out);
370
+ GIT_ASSERT_ARG(spec);
371
+ GIT_ASSERT_ARG(refs);
352
372
 
353
373
  cur = git__calloc(1, sizeof(git_refspec));
354
374
  GIT_ERROR_CHECK_ALLOC(cur);