rugged 0.17.0.b7 → 0.18.0.b1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (310) hide show
  1. data/LICENSE +1 -1
  2. data/README.md +88 -32
  3. data/ext/rugged/extconf.rb +4 -2
  4. data/ext/rugged/rugged.c +72 -10
  5. data/ext/rugged/rugged.h +14 -10
  6. data/ext/rugged/rugged_blob.c +8 -10
  7. data/ext/rugged/rugged_branch.c +11 -14
  8. data/ext/rugged/rugged_commit.c +31 -24
  9. data/ext/rugged/rugged_config.c +2 -2
  10. data/ext/rugged/rugged_index.c +133 -198
  11. data/ext/rugged/rugged_note.c +372 -0
  12. data/ext/rugged/rugged_object.c +50 -22
  13. data/ext/rugged/rugged_reference.c +122 -130
  14. data/ext/rugged/rugged_remote.c +72 -29
  15. data/ext/rugged/rugged_repo.c +402 -20
  16. data/ext/rugged/rugged_revwalk.c +7 -3
  17. data/ext/rugged/rugged_settings.c +110 -0
  18. data/ext/rugged/rugged_signature.c +23 -7
  19. data/ext/rugged/rugged_tag.c +32 -16
  20. data/ext/rugged/rugged_tree.c +44 -15
  21. data/lib/rugged.rb +1 -0
  22. data/lib/rugged/index.rb +8 -0
  23. data/lib/rugged/remote.rb +13 -0
  24. data/lib/rugged/repository.rb +3 -3
  25. data/lib/rugged/version.rb +1 -1
  26. data/test/blob_test.rb +13 -15
  27. data/test/branch_test.rb +32 -67
  28. data/test/commit_test.rb +50 -12
  29. data/test/config_test.rb +12 -11
  30. data/test/coverage/HEAD.json +1 -1
  31. data/test/coverage/cover.rb +40 -21
  32. data/test/errors_test.rb +34 -0
  33. data/test/fixtures/alternate/objects/14/6ae76773c91e3b1d00cf7a338ec55ae58297e2 +0 -0
  34. data/test/fixtures/alternate/objects/14/9c32d47e99d0a3572ff1e70a2e0051bbf347a9 +0 -0
  35. data/test/fixtures/alternate/objects/14/fb3108588f9421bf764041e5e3ac305eb6277f +0 -0
  36. data/test/fixtures/testrepo.git/logs/refs/notes/commits +1 -0
  37. data/test/fixtures/testrepo.git/objects/44/1034f860c1d5d90e4188d11ae0d325176869a8 +1 -0
  38. data/test/fixtures/testrepo.git/objects/60/d415052a33de2150bf68757f6461df4f563ae4 +0 -0
  39. data/test/fixtures/testrepo.git/objects/68/8a8f4ef7496901d15322972f96e212a9e466cc +1 -0
  40. data/test/fixtures/testrepo.git/objects/94/eca2de348d5f672faf56b0decafa5937e3235e +0 -0
  41. data/test/fixtures/testrepo.git/objects/9b/7384fe1676186192842f5d3e129457b62db9e3 +0 -0
  42. data/test/fixtures/testrepo.git/objects/b7/4713326bc972cc15751ed504dca6f6f3b91f7a +3 -0
  43. data/test/fixtures/testrepo.git/refs/notes/commits +1 -0
  44. data/test/index_test.rb +65 -69
  45. data/test/lib_test.rb +76 -11
  46. data/test/note_test.rb +158 -0
  47. data/test/object_test.rb +8 -11
  48. data/test/reference_test.rb +77 -85
  49. data/test/remote_test.rb +86 -8
  50. data/test/repo_pack_test.rb +9 -7
  51. data/test/repo_reset_test.rb +80 -0
  52. data/test/repo_test.rb +176 -53
  53. data/test/tag_test.rb +44 -7
  54. data/test/test_helper.rb +63 -35
  55. data/test/tree_test.rb +34 -13
  56. data/test/walker_test.rb +14 -14
  57. data/vendor/libgit2/Makefile.embed +1 -1
  58. data/vendor/libgit2/deps/http-parser/http_parser.c +974 -578
  59. data/vendor/libgit2/deps/http-parser/http_parser.h +106 -70
  60. data/vendor/libgit2/deps/regex/regcomp.c +7 -6
  61. data/vendor/libgit2/deps/regex/regex_internal.c +1 -1
  62. data/vendor/libgit2/deps/regex/regex_internal.h +12 -3
  63. data/vendor/libgit2/deps/regex/regexec.c +5 -5
  64. data/vendor/libgit2/include/git2.h +5 -1
  65. data/vendor/libgit2/include/git2/attr.h +4 -2
  66. data/vendor/libgit2/include/git2/blob.h +39 -12
  67. data/vendor/libgit2/include/git2/branch.h +123 -35
  68. data/vendor/libgit2/include/git2/checkout.h +206 -48
  69. data/vendor/libgit2/include/git2/clone.h +72 -27
  70. data/vendor/libgit2/include/git2/commit.h +20 -17
  71. data/vendor/libgit2/include/git2/common.h +67 -1
  72. data/vendor/libgit2/include/git2/config.h +81 -60
  73. data/vendor/libgit2/include/git2/cred_helpers.h +53 -0
  74. data/vendor/libgit2/include/git2/diff.h +459 -150
  75. data/vendor/libgit2/include/git2/errors.h +9 -1
  76. data/vendor/libgit2/include/git2/graph.h +41 -0
  77. data/vendor/libgit2/include/git2/ignore.h +7 -6
  78. data/vendor/libgit2/include/git2/index.h +323 -97
  79. data/vendor/libgit2/include/git2/indexer.h +27 -59
  80. data/vendor/libgit2/include/git2/inttypes.h +4 -0
  81. data/vendor/libgit2/include/git2/merge.h +13 -3
  82. data/vendor/libgit2/include/git2/message.h +14 -8
  83. data/vendor/libgit2/include/git2/net.h +9 -7
  84. data/vendor/libgit2/include/git2/notes.h +88 -29
  85. data/vendor/libgit2/include/git2/object.h +16 -6
  86. data/vendor/libgit2/include/git2/odb.h +80 -17
  87. data/vendor/libgit2/include/git2/odb_backend.h +47 -11
  88. data/vendor/libgit2/include/git2/oid.h +26 -17
  89. data/vendor/libgit2/include/git2/pack.h +62 -8
  90. data/vendor/libgit2/include/git2/push.h +131 -0
  91. data/vendor/libgit2/include/git2/refdb.h +103 -0
  92. data/vendor/libgit2/include/git2/refdb_backend.h +109 -0
  93. data/vendor/libgit2/include/git2/reflog.h +30 -21
  94. data/vendor/libgit2/include/git2/refs.h +215 -193
  95. data/vendor/libgit2/include/git2/refspec.h +22 -2
  96. data/vendor/libgit2/include/git2/remote.h +158 -37
  97. data/vendor/libgit2/include/git2/repository.h +150 -31
  98. data/vendor/libgit2/include/git2/reset.h +43 -9
  99. data/vendor/libgit2/include/git2/revparse.h +48 -4
  100. data/vendor/libgit2/include/git2/revwalk.h +25 -10
  101. data/vendor/libgit2/include/git2/signature.h +20 -12
  102. data/vendor/libgit2/include/git2/stash.h +121 -0
  103. data/vendor/libgit2/include/git2/status.h +122 -53
  104. data/vendor/libgit2/include/git2/strarray.h +17 -11
  105. data/vendor/libgit2/include/git2/submodule.h +42 -7
  106. data/vendor/libgit2/include/git2/tag.h +72 -59
  107. data/vendor/libgit2/include/git2/threads.h +4 -2
  108. data/vendor/libgit2/include/git2/trace.h +68 -0
  109. data/vendor/libgit2/include/git2/transport.h +328 -0
  110. data/vendor/libgit2/include/git2/tree.h +149 -120
  111. data/vendor/libgit2/include/git2/types.h +13 -12
  112. data/vendor/libgit2/include/git2/version.h +3 -3
  113. data/vendor/libgit2/src/amiga/map.c +2 -2
  114. data/vendor/libgit2/src/attr.c +58 -48
  115. data/vendor/libgit2/src/attr.h +4 -18
  116. data/vendor/libgit2/src/attr_file.c +30 -6
  117. data/vendor/libgit2/src/attr_file.h +6 -8
  118. data/vendor/libgit2/src/attrcache.h +24 -0
  119. data/vendor/libgit2/src/blob.c +30 -7
  120. data/vendor/libgit2/src/blob.h +1 -1
  121. data/vendor/libgit2/src/branch.c +361 -68
  122. data/vendor/libgit2/src/branch.h +17 -0
  123. data/vendor/libgit2/src/bswap.h +1 -1
  124. data/vendor/libgit2/src/buf_text.c +291 -0
  125. data/vendor/libgit2/src/buf_text.h +122 -0
  126. data/vendor/libgit2/src/buffer.c +27 -101
  127. data/vendor/libgit2/src/buffer.h +54 -39
  128. data/vendor/libgit2/src/cache.c +15 -6
  129. data/vendor/libgit2/src/cache.h +1 -1
  130. data/vendor/libgit2/src/cc-compat.h +3 -1
  131. data/vendor/libgit2/src/checkout.c +1165 -222
  132. data/vendor/libgit2/src/checkout.h +24 -0
  133. data/vendor/libgit2/src/clone.c +171 -86
  134. data/vendor/libgit2/src/commit.c +44 -45
  135. data/vendor/libgit2/src/commit.h +3 -3
  136. data/vendor/libgit2/src/commit_list.c +194 -0
  137. data/vendor/libgit2/src/commit_list.h +49 -0
  138. data/vendor/libgit2/src/common.h +44 -10
  139. data/vendor/libgit2/src/compress.c +1 -1
  140. data/vendor/libgit2/src/compress.h +1 -1
  141. data/vendor/libgit2/src/config.c +211 -124
  142. data/vendor/libgit2/src/config.h +23 -4
  143. data/vendor/libgit2/src/config_cache.c +2 -2
  144. data/vendor/libgit2/src/config_file.c +129 -53
  145. data/vendor/libgit2/src/config_file.h +10 -8
  146. data/vendor/libgit2/src/crlf.c +66 -67
  147. data/vendor/libgit2/src/date.c +12 -12
  148. data/vendor/libgit2/src/delta-apply.c +14 -1
  149. data/vendor/libgit2/src/delta-apply.h +18 -1
  150. data/vendor/libgit2/src/delta.c +40 -107
  151. data/vendor/libgit2/src/delta.h +19 -17
  152. data/vendor/libgit2/src/diff.c +347 -496
  153. data/vendor/libgit2/src/diff.h +27 -1
  154. data/vendor/libgit2/src/diff_output.c +564 -249
  155. data/vendor/libgit2/src/diff_output.h +15 -8
  156. data/vendor/libgit2/src/diff_tform.c +687 -0
  157. data/vendor/libgit2/src/errors.c +27 -36
  158. data/vendor/libgit2/src/fetch.c +13 -351
  159. data/vendor/libgit2/src/fetch.h +13 -3
  160. data/vendor/libgit2/src/fetchhead.c +295 -0
  161. data/vendor/libgit2/src/fetchhead.h +34 -0
  162. data/vendor/libgit2/src/filebuf.c +42 -15
  163. data/vendor/libgit2/src/filebuf.h +4 -2
  164. data/vendor/libgit2/src/fileops.c +466 -113
  165. data/vendor/libgit2/src/fileops.h +154 -28
  166. data/vendor/libgit2/src/filter.c +3 -75
  167. data/vendor/libgit2/src/filter.h +1 -29
  168. data/vendor/libgit2/src/fnmatch.c +1 -1
  169. data/vendor/libgit2/src/fnmatch.h +1 -1
  170. data/vendor/libgit2/src/global.c +54 -10
  171. data/vendor/libgit2/src/global.h +10 -1
  172. data/vendor/libgit2/src/graph.c +178 -0
  173. data/vendor/libgit2/src/hash.c +25 -52
  174. data/vendor/libgit2/src/hash.h +21 -9
  175. data/vendor/libgit2/src/{sha1/sha1.c → hash/hash_generic.c} +20 -12
  176. data/vendor/libgit2/src/hash/hash_generic.h +24 -0
  177. data/vendor/libgit2/src/hash/hash_openssl.h +45 -0
  178. data/vendor/libgit2/src/hash/hash_win32.c +291 -0
  179. data/vendor/libgit2/src/hash/hash_win32.h +140 -0
  180. data/vendor/libgit2/src/hashsig.c +368 -0
  181. data/vendor/libgit2/src/hashsig.h +72 -0
  182. data/vendor/libgit2/src/ignore.c +22 -15
  183. data/vendor/libgit2/src/ignore.h +6 -1
  184. data/vendor/libgit2/src/index.c +770 -171
  185. data/vendor/libgit2/src/index.h +13 -5
  186. data/vendor/libgit2/src/indexer.c +286 -431
  187. data/vendor/libgit2/src/iterator.c +854 -466
  188. data/vendor/libgit2/src/iterator.h +134 -109
  189. data/vendor/libgit2/src/map.h +1 -1
  190. data/vendor/libgit2/src/merge.c +296 -0
  191. data/vendor/libgit2/src/merge.h +22 -0
  192. data/vendor/libgit2/src/message.c +1 -1
  193. data/vendor/libgit2/src/message.h +1 -1
  194. data/vendor/libgit2/src/mwindow.c +35 -30
  195. data/vendor/libgit2/src/mwindow.h +2 -2
  196. data/vendor/libgit2/src/netops.c +162 -98
  197. data/vendor/libgit2/src/netops.h +50 -15
  198. data/vendor/libgit2/src/notes.c +109 -58
  199. data/vendor/libgit2/src/notes.h +2 -1
  200. data/vendor/libgit2/src/object.c +46 -57
  201. data/vendor/libgit2/src/object.h +1 -8
  202. data/vendor/libgit2/src/odb.c +151 -40
  203. data/vendor/libgit2/src/odb.h +5 -1
  204. data/vendor/libgit2/src/odb_loose.c +4 -5
  205. data/vendor/libgit2/src/odb_pack.c +122 -80
  206. data/vendor/libgit2/src/offmap.h +65 -0
  207. data/vendor/libgit2/src/oid.c +12 -4
  208. data/vendor/libgit2/src/oidmap.h +1 -1
  209. data/vendor/libgit2/src/pack-objects.c +88 -61
  210. data/vendor/libgit2/src/pack-objects.h +8 -8
  211. data/vendor/libgit2/src/pack.c +293 -28
  212. data/vendor/libgit2/src/pack.h +49 -4
  213. data/vendor/libgit2/src/path.c +103 -14
  214. data/vendor/libgit2/src/path.h +23 -7
  215. data/vendor/libgit2/src/pathspec.c +168 -0
  216. data/vendor/libgit2/src/pathspec.h +40 -0
  217. data/vendor/libgit2/src/pool.c +29 -4
  218. data/vendor/libgit2/src/pool.h +8 -1
  219. data/vendor/libgit2/src/posix.c +26 -27
  220. data/vendor/libgit2/src/posix.h +2 -3
  221. data/vendor/libgit2/src/pqueue.c +23 -1
  222. data/vendor/libgit2/src/pqueue.h +23 -1
  223. data/vendor/libgit2/src/push.c +653 -0
  224. data/vendor/libgit2/src/push.h +51 -0
  225. data/vendor/libgit2/src/refdb.c +185 -0
  226. data/vendor/libgit2/src/refdb.h +46 -0
  227. data/vendor/libgit2/src/refdb_fs.c +1024 -0
  228. data/vendor/libgit2/src/refdb_fs.h +15 -0
  229. data/vendor/libgit2/src/reflog.c +77 -45
  230. data/vendor/libgit2/src/reflog.h +1 -3
  231. data/vendor/libgit2/src/refs.c +366 -1326
  232. data/vendor/libgit2/src/refs.h +22 -13
  233. data/vendor/libgit2/src/refspec.c +46 -7
  234. data/vendor/libgit2/src/refspec.h +11 -1
  235. data/vendor/libgit2/src/remote.c +758 -120
  236. data/vendor/libgit2/src/remote.h +10 -5
  237. data/vendor/libgit2/src/repo_template.h +6 -6
  238. data/vendor/libgit2/src/repository.c +315 -96
  239. data/vendor/libgit2/src/repository.h +5 -3
  240. data/vendor/libgit2/src/reset.c +99 -81
  241. data/vendor/libgit2/src/revparse.c +157 -84
  242. data/vendor/libgit2/src/revwalk.c +68 -470
  243. data/vendor/libgit2/src/revwalk.h +44 -0
  244. data/vendor/libgit2/src/sha1_lookup.c +1 -1
  245. data/vendor/libgit2/src/sha1_lookup.h +1 -1
  246. data/vendor/libgit2/src/signature.c +68 -200
  247. data/vendor/libgit2/src/signature.h +1 -1
  248. data/vendor/libgit2/src/stash.c +663 -0
  249. data/vendor/libgit2/src/status.c +101 -79
  250. data/vendor/libgit2/src/strmap.h +1 -1
  251. data/vendor/libgit2/src/submodule.c +67 -51
  252. data/vendor/libgit2/src/submodule.h +1 -1
  253. data/vendor/libgit2/src/tag.c +35 -29
  254. data/vendor/libgit2/src/tag.h +1 -1
  255. data/vendor/libgit2/src/thread-utils.c +1 -1
  256. data/vendor/libgit2/src/thread-utils.h +2 -2
  257. data/vendor/libgit2/src/trace.c +39 -0
  258. data/vendor/libgit2/src/trace.h +56 -0
  259. data/vendor/libgit2/src/transport.c +81 -34
  260. data/vendor/libgit2/src/transports/cred.c +60 -0
  261. data/vendor/libgit2/src/transports/cred_helpers.c +49 -0
  262. data/vendor/libgit2/src/transports/git.c +234 -127
  263. data/vendor/libgit2/src/transports/http.c +761 -433
  264. data/vendor/libgit2/src/transports/local.c +460 -64
  265. data/vendor/libgit2/src/transports/smart.c +345 -0
  266. data/vendor/libgit2/src/transports/smart.h +179 -0
  267. data/vendor/libgit2/src/{pkt.c → transports/smart_pkt.c} +131 -12
  268. data/vendor/libgit2/src/transports/smart_protocol.c +856 -0
  269. data/vendor/libgit2/src/transports/winhttp.c +1136 -0
  270. data/vendor/libgit2/src/tree-cache.c +2 -2
  271. data/vendor/libgit2/src/tree-cache.h +1 -1
  272. data/vendor/libgit2/src/tree.c +239 -166
  273. data/vendor/libgit2/src/tree.h +11 -2
  274. data/vendor/libgit2/src/tsort.c +39 -23
  275. data/vendor/libgit2/src/unix/map.c +1 -1
  276. data/vendor/libgit2/src/unix/posix.h +12 -2
  277. data/vendor/libgit2/src/unix/realpath.c +30 -0
  278. data/vendor/libgit2/src/util.c +250 -13
  279. data/vendor/libgit2/src/util.h +71 -14
  280. data/vendor/libgit2/src/vector.c +123 -60
  281. data/vendor/libgit2/src/vector.h +24 -22
  282. data/vendor/libgit2/src/win32/dir.c +1 -1
  283. data/vendor/libgit2/src/win32/dir.h +1 -1
  284. data/vendor/libgit2/src/win32/error.c +77 -0
  285. data/vendor/libgit2/src/win32/error.h +13 -0
  286. data/vendor/libgit2/src/win32/findfile.c +143 -54
  287. data/vendor/libgit2/src/win32/findfile.h +10 -6
  288. data/vendor/libgit2/src/win32/map.c +1 -1
  289. data/vendor/libgit2/src/win32/mingw-compat.h +1 -1
  290. data/vendor/libgit2/src/win32/msvc-compat.h +10 -1
  291. data/vendor/libgit2/src/win32/posix.h +10 -1
  292. data/vendor/libgit2/src/win32/posix_w32.c +132 -63
  293. data/vendor/libgit2/src/win32/precompiled.c +1 -1
  294. data/vendor/libgit2/src/win32/pthread.c +1 -1
  295. data/vendor/libgit2/src/win32/pthread.h +1 -1
  296. data/vendor/libgit2/src/win32/utf-conv.c +5 -5
  297. data/vendor/libgit2/src/win32/utf-conv.h +3 -3
  298. data/vendor/libgit2/src/win32/version.h +20 -0
  299. metadata +308 -252
  300. data/test/fixtures/testrepo.git/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
  301. data/test/fixtures/testrepo.git/objects/7f/043268ea43ce18e3540acaabf9e090c91965b0 +0 -0
  302. data/test/fixtures/testrepo.git/objects/a3/e05719b428a2d0ed7a55c4ce53dcc5768c6d5e +0 -0
  303. data/test/index_test.rb~ +0 -218
  304. data/vendor/libgit2/src/pkt.h +0 -91
  305. data/vendor/libgit2/src/ppc/sha1.c +0 -70
  306. data/vendor/libgit2/src/ppc/sha1.h +0 -26
  307. data/vendor/libgit2/src/protocol.c +0 -110
  308. data/vendor/libgit2/src/protocol.h +0 -21
  309. data/vendor/libgit2/src/sha1.h +0 -33
  310. data/vendor/libgit2/src/transport.h +0 -148
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2012 the libgit2 contributors
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -15,32 +15,66 @@
15
15
  */
16
16
  GIT_BEGIN_DECL
17
17
 
18
+ /**
19
+ * Kinds of reset operation
20
+ */
21
+ typedef enum {
22
+ GIT_RESET_SOFT = 1, /** Move the head to the given commit */
23
+ GIT_RESET_MIXED = 2, /** SOFT plus reset index to the commit */
24
+ GIT_RESET_HARD = 3, /** MIXED plus changes in working tree discarded */
25
+ } git_reset_t;
26
+
18
27
  /**
19
28
  * Sets the current head to the specified commit oid and optionally
20
29
  * resets the index and working tree to match.
21
30
  *
22
- * When specifying a Soft kind of reset, the head will be moved to the commit.
31
+ * SOFT reset means the Head will be moved to the commit.
23
32
  *
24
- * Specifying a Mixed kind of reset will trigger a Soft reset and the index will
25
- * be replaced with the content of the commit tree.
33
+ * MIXED reset will trigger a SOFT reset, plus the index will be replaced
34
+ * with the content of the commit tree.
26
35
  *
27
- * Specifying a Hard kind of reset will trigger a Mixed reset and the working
28
- * directory will be replaced with the content of the index.
36
+ * HARD reset will trigger a MIXED reset and the working directory will be
37
+ * replaced with the content of the index. (Untracked and ignored files
38
+ * will be left alone, however.)
29
39
  *
30
40
  * TODO: Implement remaining kinds of resets.
31
41
  *
32
42
  * @param repo Repository where to perform the reset operation.
33
43
  *
34
- * @param target Object to which the Head should be moved to. This object
44
+ * @param target Committish to which the Head should be moved to. This object
35
45
  * must belong to the given `repo` and can either be a git_commit or a
36
46
  * git_tag. When a git_tag is being passed, it should be dereferencable
37
47
  * to a git_commit which oid will be used as the target of the branch.
38
48
  *
39
49
  * @param reset_type Kind of reset operation to perform.
40
50
  *
41
- * @return GIT_SUCCESS or an error code
51
+ * @return 0 on success or an error code
52
+ */
53
+ GIT_EXTERN(int) git_reset(
54
+ git_repository *repo, git_object *target, git_reset_t reset_type);
55
+
56
+ /**
57
+ * Updates some entries in the index from the target commit tree.
58
+ *
59
+ * The scope of the updated entries is determined by the paths
60
+ * being passed in the `pathspec` parameters.
61
+ *
62
+ * Passing a NULL `target` will result in removing
63
+ * entries in the index matching the provided pathspecs.
64
+ *
65
+ * @param repo Repository where to perform the reset operation.
66
+ *
67
+ * @param target The committish which content will be used to reset the content
68
+ * of the index.
69
+ *
70
+ * @param pathspecs List of pathspecs to operate on.
71
+ *
72
+ * @return 0 on success or an error code < 0
42
73
  */
43
- GIT_EXTERN(int) git_reset(git_repository *repo, git_object *target, git_reset_type reset_type);
74
+ GIT_EXTERN(int) git_reset_default(
75
+ git_repository *repo,
76
+ git_object *target,
77
+ git_strarray* pathspecs);
44
78
 
45
79
  /** @} */
46
80
  GIT_END_DECL
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2012 the libgit2 contributors
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -21,16 +21,60 @@
21
21
  GIT_BEGIN_DECL
22
22
 
23
23
  /**
24
- * Find an object, as specified by a revision string. See `man gitrevisions`, or the documentation
25
- * for `git rev-parse` for information on the syntax accepted.
24
+ * Find a single object, as specified by a revision string. See `man gitrevisions`,
25
+ * or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for
26
+ * information on the syntax accepted.
26
27
  *
27
28
  * @param out pointer to output object
28
29
  * @param repo the repository to search in
29
30
  * @param spec the textual specification for an object
30
- * @return on success, GIT_ERROR otherwise (use git_error_last for information about the error)
31
+ * @return 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code
31
32
  */
32
33
  GIT_EXTERN(int) git_revparse_single(git_object **out, git_repository *repo, const char *spec);
33
34
 
35
+
36
+ /**
37
+ * Revparse flags. These indicate the intended behavior of the spec passed to
38
+ * git_revparse.
39
+ */
40
+ typedef enum {
41
+ /** The spec targeted a single object. */
42
+ GIT_REVPARSE_SINGLE = 1 << 0,
43
+ /** The spec targeted a range of commits. */
44
+ GIT_REVPARSE_RANGE = 1 << 1,
45
+ /** The spec used the '...' operator, which invokes special semantics. */
46
+ GIT_REVPARSE_MERGE_BASE = 1 << 2,
47
+ } git_revparse_mode_t;
48
+
49
+ /**
50
+ * Git Revision Spec: output of a `git_revparse` operation
51
+ */
52
+ typedef struct {
53
+ /** The left element of the revspec; must be freed by the user */
54
+ git_object *from;
55
+ /** The right element of the revspec; must be freed by the user */
56
+ git_object *to;
57
+ /** The intent of the revspec */
58
+ unsigned int flags;
59
+ } git_revspec;
60
+
61
+ /**
62
+ * Parse a revision string for `from`, `to`, and intent. See `man gitrevisions` or
63
+ * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information
64
+ * on the syntax accepted.
65
+ *
66
+ * @param revspec Pointer to an user-allocated git_revspec struct where the result
67
+ * of the rev-parse will be stored
68
+ * @param repo the repository to search in
69
+ * @param spec the rev-parse spec to parse
70
+ * @return 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code
71
+ */
72
+ GIT_EXTERN(int) git_revparse(
73
+ git_revspec *revspec,
74
+ git_repository *repo,
75
+ const char *spec);
76
+
77
+
34
78
  /** @} */
35
79
  GIT_END_DECL
36
80
  #endif
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2012 the libgit2 contributors
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -63,11 +63,11 @@ GIT_BEGIN_DECL
63
63
  * it is possible to have several revision walkers in
64
64
  * several different threads walking the same repository.
65
65
  *
66
- * @param walker pointer to the new revision walker
66
+ * @param out pointer to the new revision walker
67
67
  * @param repo the repo to walk through
68
68
  * @return 0 or an error code
69
69
  */
70
- GIT_EXTERN(int) git_revwalk_new(git_revwalk **walker, git_repository *repo);
70
+ GIT_EXTERN(int) git_revwalk_new(git_revwalk **out, git_repository *repo);
71
71
 
72
72
  /**
73
73
  * Reset the revision walker for reuse.
@@ -92,14 +92,14 @@ GIT_EXTERN(void) git_revwalk_reset(git_revwalk *walker);
92
92
  *
93
93
  * The given commit will be used as one of the roots
94
94
  * when starting the revision walk. At least one commit
95
- * must be pushed the repository before a walk can
95
+ * must be pushed onto the walker before a walk can
96
96
  * be started.
97
97
  *
98
98
  * @param walk the walker being used for the traversal.
99
- * @param oid the oid of the commit to start from.
99
+ * @param id the oid of the commit to start from.
100
100
  * @return 0 or an error code
101
101
  */
102
- GIT_EXTERN(int) git_revwalk_push(git_revwalk *walk, const git_oid *oid);
102
+ GIT_EXTERN(int) git_revwalk_push(git_revwalk *walk, const git_oid *id);
103
103
 
104
104
  /**
105
105
  * Push matching references
@@ -134,10 +134,10 @@ GIT_EXTERN(int) git_revwalk_push_head(git_revwalk *walk);
134
134
  * output on the revision walk.
135
135
  *
136
136
  * @param walk the walker being used for the traversal.
137
- * @param oid the oid of commit that will be ignored during the traversal
137
+ * @param commit_id the oid of commit that will be ignored during the traversal
138
138
  * @return 0 or an error code
139
139
  */
140
- GIT_EXTERN(int) git_revwalk_hide(git_revwalk *walk, const git_oid *oid);
140
+ GIT_EXTERN(int) git_revwalk_hide(git_revwalk *walk, const git_oid *commit_id);
141
141
 
142
142
  /**
143
143
  * Hide matching references.
@@ -198,12 +198,12 @@ GIT_EXTERN(int) git_revwalk_hide_ref(git_revwalk *walk, const char *refname);
198
198
  *
199
199
  * The revision walker is reset when the walk is over.
200
200
  *
201
- * @param oid Pointer where to store the oid of the next commit
201
+ * @param out Pointer where to store the oid of the next commit
202
202
  * @param walk the walker to pop the commit from.
203
203
  * @return 0 if the next commit was found;
204
204
  * GIT_ITEROVER if there are no commits left to iterate
205
205
  */
206
- GIT_EXTERN(int) git_revwalk_next(git_oid *oid, git_revwalk *walk);
206
+ GIT_EXTERN(int) git_revwalk_next(git_oid *out, git_revwalk *walk);
207
207
 
208
208
  /**
209
209
  * Change the sorting mode when iterating through the
@@ -216,6 +216,21 @@ GIT_EXTERN(int) git_revwalk_next(git_oid *oid, git_revwalk *walk);
216
216
  */
217
217
  GIT_EXTERN(void) git_revwalk_sorting(git_revwalk *walk, unsigned int sort_mode);
218
218
 
219
+ /**
220
+ * Push and hide the respective endpoints of the given range.
221
+ *
222
+ * The range should be of the form
223
+ * <commit>..<commit>
224
+ * where each <commit> is in the form accepted by 'git_revparse_single'.
225
+ * The left-hand commit will be hidden and the right-hand commit pushed.
226
+ *
227
+ * @param walk the walker being used for the traversal
228
+ * @param range the range
229
+ * @return 0 or an error code
230
+ *
231
+ */
232
+ GIT_EXTERN(int) git_revwalk_push_range(git_revwalk *walk, const char *range);
233
+
219
234
  /**
220
235
  * Free a revision walker previously allocated.
221
236
  *
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2012 the libgit2 contributors
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -20,44 +20,52 @@
20
20
  GIT_BEGIN_DECL
21
21
 
22
22
  /**
23
- * Create a new action signature. The signature must be freed
24
- * manually or using git_signature_free
23
+ * Create a new action signature.
24
+ *
25
+ * Call `git_signature_free()` to free the data.
25
26
  *
26
27
  * Note: angle brackets ('<' and '>') characters are not allowed
27
28
  * to be used in either the `name` or the `email` parameter.
28
29
  *
29
- * @param sig_out new signature, in case of error NULL
30
+ * @param out new signature, in case of error NULL
30
31
  * @param name name of the person
31
32
  * @param email email of the person
32
33
  * @param time time when the action happened
33
34
  * @param offset timezone offset in minutes for the time
34
35
  * @return 0 or an error code
35
36
  */
36
- GIT_EXTERN(int) git_signature_new(git_signature **sig_out, const char *name, const char *email, git_time_t time, int offset);
37
+ GIT_EXTERN(int) git_signature_new(git_signature **out, const char *name, const char *email, git_time_t time, int offset);
37
38
 
38
39
  /**
39
- * Create a new action signature with a timestamp of 'now'. The
40
- * signature must be freed manually or using git_signature_free
40
+ * Create a new action signature with a timestamp of 'now'.
41
+ *
42
+ * Call `git_signature_free()` to free the data.
41
43
  *
42
- * @param sig_out new signature, in case of error NULL
44
+ * @param out new signature, in case of error NULL
43
45
  * @param name name of the person
44
46
  * @param email email of the person
45
47
  * @return 0 or an error code
46
48
  */
47
- GIT_EXTERN(int) git_signature_now(git_signature **sig_out, const char *name, const char *email);
49
+ GIT_EXTERN(int) git_signature_now(git_signature **out, const char *name, const char *email);
48
50
 
49
51
 
50
52
  /**
51
- * Create a copy of an existing signature.
53
+ * Create a copy of an existing signature. All internal strings are also
54
+ * duplicated.
55
+ *
56
+ * Call `git_signature_free()` to free the data.
52
57
  *
53
- * All internal strings are also duplicated.
54
58
  * @param sig signature to duplicated
55
59
  * @return a copy of sig, NULL on out of memory
56
60
  */
57
61
  GIT_EXTERN(git_signature *) git_signature_dup(const git_signature *sig);
58
62
 
59
63
  /**
60
- * Free an existing signature
64
+ * Free an existing signature.
65
+ *
66
+ * Because the signature is not an opaque structure, it is legal to free it
67
+ * manually, but be sure to free the "name" and "email" strings in addition
68
+ * to the structure itself.
61
69
  *
62
70
  * @param sig signature to free
63
71
  */
@@ -0,0 +1,121 @@
1
+ /*
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
+ *
4
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
5
+ * a Linking Exception. For full terms see the included COPYING file.
6
+ */
7
+ #ifndef INCLUDE_git_stash_h__
8
+ #define INCLUDE_git_stash_h__
9
+
10
+ #include "common.h"
11
+ #include "types.h"
12
+
13
+ /**
14
+ * @file git2/stash.h
15
+ * @brief Git stash management routines
16
+ * @ingroup Git
17
+ * @{
18
+ */
19
+ GIT_BEGIN_DECL
20
+
21
+ typedef enum {
22
+ GIT_STASH_DEFAULT = 0,
23
+
24
+ /* All changes already added to the index
25
+ * are left intact in the working directory
26
+ */
27
+ GIT_STASH_KEEP_INDEX = (1 << 0),
28
+
29
+ /* All untracked files are also stashed and then
30
+ * cleaned up from the working directory
31
+ */
32
+ GIT_STASH_INCLUDE_UNTRACKED = (1 << 1),
33
+
34
+ /* All ignored files are also stashed and then
35
+ * cleaned up from the working directory
36
+ */
37
+ GIT_STASH_INCLUDE_IGNORED = (1 << 2),
38
+ } git_stash_flags;
39
+
40
+ /**
41
+ * Save the local modifications to a new stash.
42
+ *
43
+ * @param out Object id of the commit containing the stashed state.
44
+ * This commit is also the target of the direct reference refs/stash.
45
+ *
46
+ * @param repo The owning repository.
47
+ *
48
+ * @param stasher The identity of the person performing the stashing.
49
+ *
50
+ * @param message Optional description along with the stashed state.
51
+ *
52
+ * @param flags Flags to control the stashing process. (see GIT_STASH_* above)
53
+ *
54
+ * @return 0 on success, GIT_ENOTFOUND where there's nothing to stash,
55
+ * or error code.
56
+ */
57
+ GIT_EXTERN(int) git_stash_save(
58
+ git_oid *out,
59
+ git_repository *repo,
60
+ git_signature *stasher,
61
+ const char *message,
62
+ unsigned int flags);
63
+
64
+ /**
65
+ * When iterating over all the stashed states, callback that will be
66
+ * issued per entry.
67
+ *
68
+ * @param index The position within the stash list. 0 points to the
69
+ * most recent stashed state.
70
+ *
71
+ * @param message The stash message.
72
+ *
73
+ * @param stash_id The commit oid of the stashed state.
74
+ *
75
+ * @param payload Extra parameter to callback function.
76
+ *
77
+ * @return 0 on success, GIT_EUSER on non-zero callback, or error code
78
+ */
79
+ typedef int (*git_stash_cb)(
80
+ size_t index,
81
+ const char* message,
82
+ const git_oid *stash_id,
83
+ void *payload);
84
+
85
+ /**
86
+ * Loop over all the stashed states and issue a callback for each one.
87
+ *
88
+ * If the callback returns a non-zero value, this will stop looping.
89
+ *
90
+ * @param repo Repository where to find the stash.
91
+ *
92
+ * @param callabck Callback to invoke per found stashed state. The most recent
93
+ * stash state will be enumerated first.
94
+ *
95
+ * @param payload Extra parameter to callback function.
96
+ *
97
+ * @return 0 on success, GIT_EUSER on non-zero callback, or error code
98
+ */
99
+ GIT_EXTERN(int) git_stash_foreach(
100
+ git_repository *repo,
101
+ git_stash_cb callback,
102
+ void *payload);
103
+
104
+ /**
105
+ * Remove a single stashed state from the stash list.
106
+ *
107
+ * @param repo The owning repository.
108
+ *
109
+ * @param index The position within the stash list. 0 points to the
110
+ * most recent stashed state.
111
+ *
112
+ * @return 0 on success, or error code
113
+ */
114
+
115
+ GIT_EXTERN(int) git_stash_drop(
116
+ git_repository *repo,
117
+ size_t index);
118
+
119
+ /** @} */
120
+ GIT_END_DECL
121
+ #endif
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2009-2012 the libgit2 contributors
2
+ * Copyright (C) the libgit2 contributors. All rights reserved.
3
3
  *
4
4
  * This file is part of libgit2, distributed under the GNU GPL v2 with
5
5
  * a Linking Exception. For full terms see the included COPYING file.
@@ -19,6 +19,16 @@
19
19
  */
20
20
  GIT_BEGIN_DECL
21
21
 
22
+ /**
23
+ * Status flags for a single file.
24
+ *
25
+ * A combination of these values will be returned to indicate the status of
26
+ * a file. Status compares the working directory, the index, and the
27
+ * current HEAD of the repository. The `GIT_STATUS_INDEX` set of flags
28
+ * represents the status of file in the index relative to the HEAD, and the
29
+ * `GIT_STATUS_WT` set of flags represent the status of the file in the
30
+ * working directory relative to the index.
31
+ */
22
32
  typedef enum {
23
33
  GIT_STATUS_CURRENT = 0,
24
34
 
@@ -36,24 +46,40 @@ typedef enum {
36
46
  GIT_STATUS_IGNORED = (1u << 14),
37
47
  } git_status_t;
38
48
 
49
+ /**
50
+ * Function pointer to receive status on individual files
51
+ *
52
+ * `path` is the relative path to the file from the root of the repository.
53
+ *
54
+ * `status_flags` is a combination of `git_status_t` values that apply.
55
+ *
56
+ * `payload` is the value you passed to the foreach function as payload.
57
+ */
58
+ typedef int (*git_status_cb)(
59
+ const char *path, unsigned int status_flags, void *payload);
60
+
39
61
  /**
40
62
  * Gather file statuses and run a callback for each one.
41
63
  *
42
- * The callback is passed the path of the file, the status and the data
43
- * pointer passed to this function. If the callback returns something other
44
- * than 0, this function will stop looping and return GIT_EUSER.
64
+ * The callback is passed the path of the file, the status (a combination of
65
+ * the `git_status_t` values above) and the `payload` data pointer passed
66
+ * into this function.
45
67
  *
46
- * @param repo a repository object
47
- * @param callback the function to call on each file
68
+ * If the callback returns a non-zero value, this function will stop looping
69
+ * and return GIT_EUSER.
70
+ *
71
+ * @param repo A repository object
72
+ * @param callback The function to call on each file
73
+ * @param payload Pointer to pass through to callback function
48
74
  * @return 0 on success, GIT_EUSER on non-zero callback, or error code
49
75
  */
50
76
  GIT_EXTERN(int) git_status_foreach(
51
77
  git_repository *repo,
52
- int (*callback)(const char *, unsigned int, void *),
78
+ git_status_cb callback,
53
79
  void *payload);
54
80
 
55
81
  /**
56
- * Select the files on which to report status.
82
+ * For extended status, select the files on which to report status.
57
83
  *
58
84
  * - GIT_STATUS_SHOW_INDEX_AND_WORKDIR is the default. This is the
59
85
  * rough equivalent of `git status --porcelain` where each file
@@ -81,65 +107,108 @@ typedef enum {
81
107
  /**
82
108
  * Flags to control status callbacks
83
109
  *
84
- * - GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should
85
- * be made on untracked files. These will only be made if the
86
- * workdir files are included in the status "show" option.
87
- * - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files should
88
- * get callbacks. Again, these callbacks will only be made if
89
- * the workdir files are included in the status "show" option.
90
- * Right now, there is no option to include all files in
91
- * directories that are ignored completely.
92
- * - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback
93
- * should be made even on unmodified files.
94
- * - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that directories
95
- * which appear to be submodules should just be skipped over.
96
- * - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that the
97
- * contents of untracked directories should be included in the
98
- * status. Normally if an entire directory is new, then just
99
- * the top-level directory will be included (with a trailing
100
- * slash on the entry name). Given this flag, the directory
101
- * itself will not be included, but all the files in it will.
102
- * - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given
103
- * path will be treated as a literal path, and not as a pathspec.
110
+ * - GIT_STATUS_OPT_INCLUDE_UNTRACKED says that callbacks should be made
111
+ * on untracked files. These will only be made if the workdir files are
112
+ * included in the status "show" option.
113
+ * - GIT_STATUS_OPT_INCLUDE_IGNORED says that ignored files should get
114
+ * callbacks. Again, these callbacks will only be made if the workdir
115
+ * files are included in the status "show" option. Right now, there is
116
+ * no option to include all files in directories that are ignored
117
+ * completely.
118
+ * - GIT_STATUS_OPT_INCLUDE_UNMODIFIED indicates that callback should be
119
+ * made even on unmodified files.
120
+ * - GIT_STATUS_OPT_EXCLUDE_SUBMODULES indicates that directories which
121
+ * appear to be submodules should just be skipped over.
122
+ * - GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS indicates that the contents of
123
+ * untracked directories should be included in the status. Normally if
124
+ * an entire directory is new, then just the top-level directory will be
125
+ * included (with a trailing slash on the entry name). Given this flag,
126
+ * the directory itself will not be included, but all the files in it
127
+ * will.
128
+ * - GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH indicates that the given path
129
+ * will be treated as a literal path, and not as a pathspec.
130
+ * - GIT_STATUS_OPT_RECURSE_IGNORED_DIRS indicates that the contents of
131
+ * ignored directories should be included in the status. This is like
132
+ * doing `git ls-files -o -i --exclude-standard` with core git.
133
+ *
134
+ * Calling `git_status_foreach()` is like calling the extended version
135
+ * with: GIT_STATUS_OPT_INCLUDE_IGNORED, GIT_STATUS_OPT_INCLUDE_UNTRACKED,
136
+ * and GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS. Those options are bundled
137
+ * together as `GIT_STATUS_OPT_DEFAULTS` if you want them as a baseline.
104
138
  */
139
+ typedef enum {
140
+ GIT_STATUS_OPT_INCLUDE_UNTRACKED = (1u << 0),
141
+ GIT_STATUS_OPT_INCLUDE_IGNORED = (1u << 1),
142
+ GIT_STATUS_OPT_INCLUDE_UNMODIFIED = (1u << 2),
143
+ GIT_STATUS_OPT_EXCLUDE_SUBMODULES = (1u << 3),
144
+ GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = (1u << 4),
145
+ GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = (1u << 5),
146
+ GIT_STATUS_OPT_RECURSE_IGNORED_DIRS = (1u << 6),
147
+ } git_status_opt_t;
105
148
 
106
- enum {
107
- GIT_STATUS_OPT_INCLUDE_UNTRACKED = (1 << 0),
108
- GIT_STATUS_OPT_INCLUDE_IGNORED = (1 << 1),
109
- GIT_STATUS_OPT_INCLUDE_UNMODIFIED = (1 << 2),
110
- GIT_STATUS_OPT_EXCLUDE_SUBMODULES = (1 << 3),
111
- GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = (1 << 4),
112
- GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = (1 << 5),
113
- };
149
+ #define GIT_STATUS_OPT_DEFAULTS \
150
+ (GIT_STATUS_OPT_INCLUDE_IGNORED | \
151
+ GIT_STATUS_OPT_INCLUDE_UNTRACKED | \
152
+ GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS)
114
153
 
115
154
  /**
116
- * Options to control how callbacks will be made by
117
- * `git_status_foreach_ext()`.
155
+ * Options to control how `git_status_foreach_ext()` will issue callbacks.
156
+ *
157
+ * This structure is set so that zeroing it out will give you relatively
158
+ * sane defaults.
159
+ *
160
+ * The `show` value is one of the `git_status_show_t` constants that
161
+ * control which files to scan and in what order.
162
+ *
163
+ * The `flags` value is an OR'ed combination of the `git_status_opt_t`
164
+ * values above.
165
+ *
166
+ * The `pathspec` is an array of path patterns to match (using
167
+ * fnmatch-style matching), or just an array of paths to match exactly if
168
+ * `GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH` is specified in the flags.
118
169
  */
119
170
  typedef struct {
171
+ unsigned int version;
120
172
  git_status_show_t show;
121
- unsigned int flags;
122
- git_strarray pathspec;
173
+ unsigned int flags;
174
+ git_strarray pathspec;
123
175
  } git_status_options;
124
176
 
177
+ #define GIT_STATUS_OPTIONS_VERSION 1
178
+ #define GIT_STATUS_OPTIONS_INIT {GIT_STATUS_OPTIONS_VERSION}
179
+
125
180
  /**
126
181
  * Gather file status information and run callbacks as requested.
182
+ *
183
+ * This is an extended version of the `git_status_foreach()` API that
184
+ * allows for more granular control over which paths will be processed and
185
+ * in what order. See the `git_status_options` structure for details
186
+ * about the additional controls that this makes available.
187
+ *
188
+ * @param repo Repository object
189
+ * @param opts Status options structure
190
+ * @param callback The function to call on each file
191
+ * @param payload Pointer to pass through to callback function
192
+ * @return 0 on success, GIT_EUSER on non-zero callback, or error code
127
193
  */
128
194
  GIT_EXTERN(int) git_status_foreach_ext(
129
195
  git_repository *repo,
130
196
  const git_status_options *opts,
131
- int (*callback)(const char *, unsigned int, void *),
197
+ git_status_cb callback,
132
198
  void *payload);
133
199
 
134
200
  /**
135
- * Get file status for a single file
136
- *
137
- * @param status_flags the status value
138
- * @param repo a repository object
139
- * @param path the file to retrieve status for, rooted at the repo's workdir
140
- * @return GIT_EINVALIDPATH when `path` points at a folder, GIT_ENOTFOUND when
141
- * the file doesn't exist in any of HEAD, the index or the worktree,
142
- * 0 otherwise
201
+ * Get file status for a single file.
202
+ *
203
+ * This is not quite the same as calling `git_status_foreach_ext()` with
204
+ * the pathspec set to the specified path.
205
+ *
206
+ * @param status_flags The status value for the file
207
+ * @param repo A repository object
208
+ * @param path The file to retrieve status for, rooted at the repo's workdir
209
+ * @return 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,
210
+ * index, and work tree, GIT_EINVALIDPATH if `path` points at a folder,
211
+ * GIT_EAMBIGUOUS if "path" matches multiple files, -1 on other error.
143
212
  */
144
213
  GIT_EXTERN(int) git_status_file(
145
214
  unsigned int *status_flags,
@@ -151,14 +220,14 @@ GIT_EXTERN(int) git_status_file(
151
220
  *
152
221
  * This function checks the ignore rules to see if they would apply to the
153
222
  * given file. This indicates if the file would be ignored regardless of
154
- * whether the file is already in the index or commited to the repository.
223
+ * whether the file is already in the index or committed to the repository.
155
224
  *
156
225
  * One way to think of this is if you were to do "git add ." on the
157
226
  * directory containing the file, would it be added or not?
158
227
  *
159
- * @param ignored boolean returning 0 if the file is not ignored, 1 if it is
160
- * @param repo a repository object
161
- * @param path the file to check ignores for, rooted at the repo's workdir.
228
+ * @param ignored Boolean returning 0 if the file is not ignored, 1 if it is
229
+ * @param repo A repository object
230
+ * @param path The file to check ignores for, rooted at the repo's workdir.
162
231
  * @return 0 if ignore rules could be processed for the file (regardless
163
232
  * of whether it exists or not), or an error < 0 if they could not.
164
233
  */