git 1.0.5 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of git might be problematic. Click here for more details.

Files changed (735) hide show
  1. data/README +7 -1
  2. data/lib/git.rb +14 -0
  3. data/lib/git/base.rb +59 -44
  4. data/lib/git/branch.rb +3 -5
  5. data/lib/git/branches.rb +4 -13
  6. data/lib/git/diff.rb +20 -17
  7. data/lib/git/lib.rb +147 -111
  8. data/lib/git/log.rb +40 -17
  9. data/lib/git/object.rb +70 -85
  10. data/lib/git/remote.rb +1 -3
  11. data/lib/git/stash.rb +2 -1
  12. data/lib/git/stashes.rb +5 -10
  13. data/lib/git/status.rb +7 -15
  14. metadata +42 -1106
  15. data/doc/classes/Git.html +0 -378
  16. data/doc/classes/Git.src/M000001.html +0 -18
  17. data/doc/classes/Git.src/M000002.html +0 -18
  18. data/doc/classes/Git.src/M000003.html +0 -18
  19. data/doc/classes/Git.src/M000004.html +0 -18
  20. data/doc/classes/Git/Author.html +0 -175
  21. data/doc/classes/Git/Base.html +0 -1764
  22. data/doc/classes/Git/Base.src/M000076.html +0 -18
  23. data/doc/classes/Git/Base.src/M000077.html +0 -21
  24. data/doc/classes/Git/Base.src/M000078.html +0 -30
  25. data/doc/classes/Git/Base.src/M000079.html +0 -19
  26. data/doc/classes/Git/Base.src/M000080.html +0 -25
  27. data/doc/classes/Git/Base.src/M000081.html +0 -18
  28. data/doc/classes/Git/Base.src/M000082.html +0 -18
  29. data/doc/classes/Git/Base.src/M000083.html +0 -18
  30. data/doc/classes/Git/Base.src/M000084.html +0 -20
  31. data/doc/classes/Git/Base.src/M000085.html +0 -22
  32. data/doc/classes/Git/Base.src/M000086.html +0 -27
  33. data/doc/classes/Git/Base.src/M000087.html +0 -18
  34. data/doc/classes/Git/Base.src/M000091.html +0 -18
  35. data/doc/classes/Git/Base.src/M000092.html +0 -18
  36. data/doc/classes/Git/Base.src/M000093.html +0 -18
  37. data/doc/classes/Git/Base.src/M000094.html +0 -18
  38. data/doc/classes/Git/Base.src/M000095.html +0 -18
  39. data/doc/classes/Git/Base.src/M000096.html +0 -18
  40. data/doc/classes/Git/Base.src/M000097.html +0 -18
  41. data/doc/classes/Git/Base.src/M000098.html +0 -18
  42. data/doc/classes/Git/Base.src/M000099.html +0 -18
  43. data/doc/classes/Git/Base.src/M000100.html +0 -18
  44. data/doc/classes/Git/Base.src/M000101.html +0 -18
  45. data/doc/classes/Git/Base.src/M000102.html +0 -19
  46. data/doc/classes/Git/Base.src/M000103.html +0 -18
  47. data/doc/classes/Git/Base.src/M000104.html +0 -19
  48. data/doc/classes/Git/Base.src/M000105.html +0 -18
  49. data/doc/classes/Git/Base.src/M000106.html +0 -18
  50. data/doc/classes/Git/Base.src/M000107.html +0 -18
  51. data/doc/classes/Git/Base.src/M000108.html +0 -19
  52. data/doc/classes/Git/Base.src/M000109.html +0 -18
  53. data/doc/classes/Git/Base.src/M000110.html +0 -22
  54. data/doc/classes/Git/Base.src/M000111.html +0 -18
  55. data/doc/classes/Git/Base.src/M000112.html +0 -18
  56. data/doc/classes/Git/Base.src/M000113.html +0 -19
  57. data/doc/classes/Git/Base.src/M000114.html +0 -18
  58. data/doc/classes/Git/Base.src/M000115.html +0 -18
  59. data/doc/classes/Git/Base.src/M000116.html +0 -18
  60. data/doc/classes/Git/Branch.html +0 -477
  61. data/doc/classes/Git/Branch.src/M000066.html +0 -28
  62. data/doc/classes/Git/Branch.src/M000067.html +0 -19
  63. data/doc/classes/Git/Branch.src/M000068.html +0 -19
  64. data/doc/classes/Git/Branch.src/M000069.html +0 -25
  65. data/doc/classes/Git/Branch.src/M000070.html +0 -18
  66. data/doc/classes/Git/Branch.src/M000071.html +0 -18
  67. data/doc/classes/Git/Branch.src/M000072.html +0 -18
  68. data/doc/classes/Git/Branch.src/M000073.html +0 -27
  69. data/doc/classes/Git/Branch.src/M000074.html +0 -18
  70. data/doc/classes/Git/Branch.src/M000075.html +0 -18
  71. data/doc/classes/Git/Branches.html +0 -294
  72. data/doc/classes/Git/Branches.src/M000060.html +0 -24
  73. data/doc/classes/Git/Branches.src/M000061.html +0 -18
  74. data/doc/classes/Git/Branches.src/M000062.html +0 -18
  75. data/doc/classes/Git/Branches.src/M000063.html +0 -18
  76. data/doc/classes/Git/Branches.src/M000064.html +0 -20
  77. data/doc/classes/Git/Branches.src/M000065.html +0 -18
  78. data/doc/classes/Git/Diff.html +0 -419
  79. data/doc/classes/Git/Diff.src/M000134.html +0 -20
  80. data/doc/classes/Git/Diff.src/M000135.html +0 -19
  81. data/doc/classes/Git/Diff.src/M000136.html +0 -19
  82. data/doc/classes/Git/Diff.src/M000137.html +0 -19
  83. data/doc/classes/Git/Diff.src/M000138.html +0 -19
  84. data/doc/classes/Git/Diff.src/M000139.html +0 -19
  85. data/doc/classes/Git/Diff.src/M000140.html +0 -19
  86. data/doc/classes/Git/Diff.src/M000141.html +0 -19
  87. data/doc/classes/Git/Diff.src/M000143.html +0 -19
  88. data/doc/classes/Git/Diff.src/M000144.html +0 -21
  89. data/doc/classes/Git/Diff/DiffFile.html +0 -220
  90. data/doc/classes/Git/Diff/DiffFile.src/M000145.html +0 -24
  91. data/doc/classes/Git/Diff/DiffFile.src/M000146.html +0 -22
  92. data/doc/classes/Git/GitExecuteError.html +0 -111
  93. data/doc/classes/Git/GitTagNameDoesNotExist.html +0 -111
  94. data/doc/classes/Git/Index.html +0 -113
  95. data/doc/classes/Git/Lib.html +0 -1560
  96. data/doc/classes/Git/Lib.src/M000024.html +0 -26
  97. data/doc/classes/Git/Lib.src/M000025.html +0 -18
  98. data/doc/classes/Git/Lib.src/M000026.html +0 -29
  99. data/doc/classes/Git/Lib.src/M000027.html +0 -25
  100. data/doc/classes/Git/Lib.src/M000028.html +0 -18
  101. data/doc/classes/Git/Lib.src/M000029.html +0 -18
  102. data/doc/classes/Git/Lib.src/M000030.html +0 -18
  103. data/doc/classes/Git/Lib.src/M000031.html +0 -18
  104. data/doc/classes/Git/Lib.src/M000032.html +0 -24
  105. data/doc/classes/Git/Lib.src/M000033.html +0 -18
  106. data/doc/classes/Git/Lib.src/M000034.html +0 -33
  107. data/doc/classes/Git/Lib.src/M000035.html +0 -23
  108. data/doc/classes/Git/Lib.src/M000036.html +0 -34
  109. data/doc/classes/Git/Lib.src/M000037.html +0 -25
  110. data/doc/classes/Git/Lib.src/M000038.html +0 -25
  111. data/doc/classes/Git/Lib.src/M000039.html +0 -24
  112. data/doc/classes/Git/Lib.src/M000040.html +0 -23
  113. data/doc/classes/Git/Lib.src/M000041.html +0 -18
  114. data/doc/classes/Git/Lib.src/M000042.html +0 -23
  115. data/doc/classes/Git/Lib.src/M000043.html +0 -18
  116. data/doc/classes/Git/Lib.src/M000044.html +0 -19
  117. data/doc/classes/Git/Lib.src/M000045.html +0 -24
  118. data/doc/classes/Git/Lib.src/M000046.html +0 -20
  119. data/doc/classes/Git/Lib.src/M000047.html +0 -21
  120. data/doc/classes/Git/Lib.src/M000048.html +0 -18
  121. data/doc/classes/Git/Lib.src/M000049.html +0 -18
  122. data/doc/classes/Git/Lib.src/M000050.html +0 -22
  123. data/doc/classes/Git/Lib.src/M000051.html +0 -21
  124. data/doc/classes/Git/Lib.src/M000052.html +0 -23
  125. data/doc/classes/Git/Lib.src/M000053.html +0 -18
  126. data/doc/classes/Git/Lib.src/M000054.html +0 -18
  127. data/doc/classes/Git/Lib.src/M000055.html +0 -18
  128. data/doc/classes/Git/Lib.src/M000056.html +0 -18
  129. data/doc/classes/Git/Lib.src/M000057.html +0 -18
  130. data/doc/classes/Git/Lib.src/M000058.html +0 -18
  131. data/doc/classes/Git/Lib.src/M000059.html +0 -18
  132. data/doc/classes/Git/Log.html +0 -373
  133. data/doc/classes/Git/Log.src/M000015.html +0 -20
  134. data/doc/classes/Git/Log.src/M000016.html +0 -20
  135. data/doc/classes/Git/Log.src/M000017.html +0 -20
  136. data/doc/classes/Git/Log.src/M000018.html +0 -20
  137. data/doc/classes/Git/Log.src/M000019.html +0 -20
  138. data/doc/classes/Git/Log.src/M000020.html +0 -18
  139. data/doc/classes/Git/Log.src/M000021.html +0 -19
  140. data/doc/classes/Git/Log.src/M000022.html +0 -21
  141. data/doc/classes/Git/Log.src/M000023.html +0 -19
  142. data/doc/classes/Git/Object.html +0 -186
  143. data/doc/classes/Git/Object.src/M000120.html +0 -35
  144. data/doc/classes/Git/Object/AbstractObject.html +0 -522
  145. data/doc/classes/Git/Object/AbstractObject.src/M000122.html +0 -21
  146. data/doc/classes/Git/Object/AbstractObject.src/M000123.html +0 -18
  147. data/doc/classes/Git/Object/AbstractObject.src/M000124.html +0 -18
  148. data/doc/classes/Git/Object/AbstractObject.src/M000125.html +0 -18
  149. data/doc/classes/Git/Object/AbstractObject.src/M000126.html +0 -18
  150. data/doc/classes/Git/Object/AbstractObject.src/M000127.html +0 -20
  151. data/doc/classes/Git/Object/AbstractObject.src/M000128.html +0 -18
  152. data/doc/classes/Git/Object/AbstractObject.src/M000129.html +0 -18
  153. data/doc/classes/Git/Object/Blob.html +0 -149
  154. data/doc/classes/Git/Object/Blob.src/M000132.html +0 -18
  155. data/doc/classes/Git/Object/Commit.html +0 -453
  156. data/doc/classes/Git/Object/Commit.src/M000121.html +0 -18
  157. data/doc/classes/Git/Object/Tag.html +0 -162
  158. data/doc/classes/Git/Object/Tag.src/M000130.html +0 -19
  159. data/doc/classes/Git/Object/Tag.src/M000131.html +0 -18
  160. data/doc/classes/Git/Object/Tree.html +0 -270
  161. data/doc/classes/Git/Object/Tree.src/M000133.html +0 -18
  162. data/doc/classes/Git/Path.html +0 -239
  163. data/doc/classes/Git/Path.src/M000117.html +0 -22
  164. data/doc/classes/Git/Path.src/M000118.html +0 -18
  165. data/doc/classes/Git/Path.src/M000119.html +0 -18
  166. data/doc/classes/Git/Remote.html +0 -324
  167. data/doc/classes/Git/Remote.src/M000147.html +0 -22
  168. data/doc/classes/Git/Remote.src/M000148.html +0 -18
  169. data/doc/classes/Git/Remote.src/M000149.html +0 -18
  170. data/doc/classes/Git/Remote.src/M000150.html +0 -18
  171. data/doc/classes/Git/Remote.src/M000151.html +0 -18
  172. data/doc/classes/Git/Remote.src/M000152.html +0 -18
  173. data/doc/classes/Git/Remote.src/M000153.html +0 -18
  174. data/doc/classes/Git/Repository.html +0 -113
  175. data/doc/classes/Git/Status.html +0 -348
  176. data/doc/classes/Git/Status.src/M000005.html +0 -19
  177. data/doc/classes/Git/Status.src/M000006.html +0 -18
  178. data/doc/classes/Git/Status.src/M000007.html +0 -18
  179. data/doc/classes/Git/Status.src/M000008.html +0 -18
  180. data/doc/classes/Git/Status.src/M000009.html +0 -18
  181. data/doc/classes/Git/Status.src/M000010.html +0 -29
  182. data/doc/classes/Git/Status.src/M000011.html +0 -18
  183. data/doc/classes/Git/Status.src/M000012.html +0 -20
  184. data/doc/classes/Git/Status/StatusFile.html +0 -232
  185. data/doc/classes/Git/Status/StatusFile.src/M000013.html +0 -26
  186. data/doc/classes/Git/Status/StatusFile.src/M000014.html +0 -22
  187. data/doc/classes/Git/WorkingDirectory.html +0 -113
  188. data/doc/created.rid +0 -1
  189. data/doc/files/EXAMPLES.html +0 -247
  190. data/doc/files/README.html +0 -380
  191. data/doc/files/lib/git/author_rb.html +0 -101
  192. data/doc/files/lib/git/base_rb.html +0 -101
  193. data/doc/files/lib/git/branch_rb.html +0 -101
  194. data/doc/files/lib/git/branches_rb.html +0 -101
  195. data/doc/files/lib/git/diff_rb.html +0 -101
  196. data/doc/files/lib/git/index_rb.html +0 -101
  197. data/doc/files/lib/git/lib_rb.html +0 -108
  198. data/doc/files/lib/git/log_rb.html +0 -101
  199. data/doc/files/lib/git/object_rb.html +0 -101
  200. data/doc/files/lib/git/path_rb.html +0 -101
  201. data/doc/files/lib/git/remote_rb.html +0 -101
  202. data/doc/files/lib/git/repository_rb.html +0 -101
  203. data/doc/files/lib/git/status_rb.html +0 -101
  204. data/doc/files/lib/git/working_directory_rb.html +0 -101
  205. data/doc/files/lib/git_rb.html +0 -128
  206. data/doc/fr_class_index.html +0 -50
  207. data/doc/fr_file_index.html +0 -42
  208. data/doc/fr_method_index.html +0 -234
  209. data/doc/index.html +0 -24
  210. data/doc/rdoc-style.css +0 -208
  211. data/lib/git/lib.rb.orig +0 -620
  212. data/tests/all_tests.rb +0 -4
  213. data/tests/files/index +0 -0
  214. data/tests/files/working.git/HEAD +0 -1
  215. data/tests/files/working.git/config +0 -4
  216. data/tests/files/working.git/description +0 -1
  217. data/tests/files/working.git/hooks/applypatch-msg +0 -15
  218. data/tests/files/working.git/hooks/commit-msg +0 -21
  219. data/tests/files/working.git/hooks/post-commit +0 -8
  220. data/tests/files/working.git/hooks/post-receive +0 -16
  221. data/tests/files/working.git/hooks/post-update +0 -8
  222. data/tests/files/working.git/hooks/pre-applypatch +0 -14
  223. data/tests/files/working.git/hooks/pre-commit +0 -70
  224. data/tests/files/working.git/hooks/pre-rebase +0 -150
  225. data/tests/files/working.git/hooks/update +0 -78
  226. data/tests/files/working.git/info/exclude +0 -6
  227. data/tests/files/working.git/info/refs +0 -10
  228. data/tests/files/working.git/objects/00/62cdf4c1e63069eececf54325535e91fd57c42 +0 -0
  229. data/tests/files/working.git/objects/00/ea60e1331b184386392037a7267dfb4a7c7d86 +0 -0
  230. data/tests/files/working.git/objects/01/0b7b79019cb510d8c5849704fd10541655916d +0 -0
  231. data/tests/files/working.git/objects/01/dd46ebe07fc30c10c85c2e926c70f2d7058a6b +0 -0
  232. data/tests/files/working.git/objects/02/b2a02844d00574c234d17bec6294e832f3c4c1 +0 -0
  233. data/tests/files/working.git/objects/06/f4e8a840d23fc0ab94895a5d16827a19f75fb7 +0 -0
  234. data/tests/files/working.git/objects/0b/2fe00801b62b7760c23d554796b05abc16af92 +0 -0
  235. data/tests/files/working.git/objects/0b/5262f6ee3552a99b7081a317e8289d6a4d8e72 +0 -0
  236. data/tests/files/working.git/objects/0b/c0d846cf80b079e763e35c3af273171bf01fca +0 -0
  237. data/tests/files/working.git/objects/0d/2c47f07277b3ea30b0884f8e3acd68440507c8 +0 -0
  238. data/tests/files/working.git/objects/0d/519ca9c2eddc44431efe135d0fc8df00e0b975 +0 -0
  239. data/tests/files/working.git/objects/0f/845a0a981bc2f61354fcdd2b6eafe2b2c55c2d +0 -3
  240. data/tests/files/working.git/objects/0f/f4a0357c3d7221a2ef1e4c6b7d5c46d97fe250 +0 -0
  241. data/tests/files/working.git/objects/12/eb889f49f1464b32a51424d7724fb16f6c3a31 +0 -0
  242. data/tests/files/working.git/objects/15/34a65657edf4e5caaa5ce35652dca5e4c7d316 +0 -0
  243. data/tests/files/working.git/objects/15/378a1f3eafe4c5ab4f890883356df917ee5539 +0 -2
  244. data/tests/files/working.git/objects/16/9e6db43d4c09cd610179a7b9826483b4d94123 +0 -0
  245. data/tests/files/working.git/objects/16/d1f96acfd92d09c4f1f56d3441ac55dd30500e +0 -0
  246. data/tests/files/working.git/objects/16/ee5335538f11b4ffcc17b051f8d5db7570a055 +0 -0
  247. data/tests/files/working.git/objects/17/9ef0e0209e90af00f544ff414e0674dfb5f5c7 +0 -0
  248. data/tests/files/working.git/objects/19/9d2f8e60fddd1bb2a1b0bddedde35e5aa8b03f +0 -0
  249. data/tests/files/working.git/objects/1c/c8667014381e2788a94777532a788307f38d26 +0 -1
  250. data/tests/files/working.git/objects/1c/fcfba04eb4e461e9f930d22f528023ab1ddefc +0 -0
  251. data/tests/files/working.git/objects/1d/7be4117ded4534789d85c42ab579644cd3fa12 +0 -0
  252. data/tests/files/working.git/objects/1d/9e4767a95047ca5e395714985afaedb186f4cd +0 -1
  253. data/tests/files/working.git/objects/1f/09f2edb9c0d9275d15960771b363ca6940fbe3 +0 -0
  254. data/tests/files/working.git/objects/1f/691b879df15cf6742502ffc59833b4a40e7aef +0 -0
  255. data/tests/files/working.git/objects/23/751ef6c1fed1304ae1d07020aa73da6f2b93b0 +0 -1
  256. data/tests/files/working.git/objects/24/5582a71306d7360e40c07cd7d849a1aa14a31e +0 -0
  257. data/tests/files/working.git/objects/26/3e3c527004e7b742ed1f747c1bfb7e11825d7a +0 -0
  258. data/tests/files/working.git/objects/27/c0c003dda3e59ba236f53f6661faaf74432b5c +0 -0
  259. data/tests/files/working.git/objects/29/1b6be488d6abc586d3ee03ca61238766625a75 +0 -0
  260. data/tests/files/working.git/objects/2a/f6f7d51b7afdd404a871581ebb3b6ac07fb8cc +0 -0
  261. data/tests/files/working.git/objects/2c/ef51480d44dcc262d16be2812c692d940d5f29 +0 -0
  262. data/tests/files/working.git/objects/2e/20132e8fd40cb3e82248919a10900d31f1816a +0 -0
  263. data/tests/files/working.git/objects/2e/939fd37bbd2da971faa27c3e3de7d5aad40507 +0 -0
  264. data/tests/files/working.git/objects/2f/53e667d1d88e75b3fa300f9ab6e2d8ffd32a15 +0 -0
  265. data/tests/files/working.git/objects/32/4968b9dc40253f2c52a8e3856398c761dea856 +0 -0
  266. data/tests/files/working.git/objects/33/8ecb0183d507498aedb669b796b4f9e8880f00 +0 -0
  267. data/tests/files/working.git/objects/33/edabb4334cbe849a477a0d2893cdb768fa3091 +0 -0
  268. data/tests/files/working.git/objects/34/a566d193dc4702f03149969a2aad1443231560 +0 -1
  269. data/tests/files/working.git/objects/36/fe213c328fd280f33abe00069c4b92eb5a88d1 +0 -0
  270. data/tests/files/working.git/objects/39/66e9fa0e0b9fe9d3ef2fdaa6933f3d0bb82bc3 +0 -0
  271. data/tests/files/working.git/objects/3a/9f195756f5bd26b67c5e1fffd92d68d61be14e +0 -2
  272. data/tests/files/working.git/objects/3a/ac4b445017a8fc07502670ec2dbf744213dd48 +0 -0
  273. data/tests/files/working.git/objects/3b/6eeed9ce43ea893cf48d263da93448edae9f1c +0 -0
  274. data/tests/files/working.git/objects/3c/644f22b9b8edb06e7e298ecac8e71b133061f1 +0 -0
  275. data/tests/files/working.git/objects/3c/c71b13d906e445da52785ddeff40dad1163d49 +0 -2
  276. data/tests/files/working.git/objects/3c/f35bd14cf5f2dd08bbeef8698d700f3a038e5c +0 -0
  277. data/tests/files/working.git/objects/3d/331db92a8ead0565679efb76f328ae69ed1b77 +0 -0
  278. data/tests/files/working.git/objects/44/88516c3c936db58ea485ec2213dab9d13e6628 +0 -0
  279. data/tests/files/working.git/objects/44/987dd95c338fb573726541f270f1a7b55c9d51 +0 -0
  280. data/tests/files/working.git/objects/45/20c29b885e9db9b0df3c7bab7870157e1d00c3 +0 -0
  281. data/tests/files/working.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 +0 -0
  282. data/tests/files/working.git/objects/46/00557506be20eb1501a4f15a52e684d4b9ee61 +0 -0
  283. data/tests/files/working.git/objects/46/a60232117527e7b57ac0dd5ea4af2cd3fdb696 +0 -0
  284. data/tests/files/working.git/objects/47/0f6a87fa51dd25f6db0f4725ae37791d449356 +0 -0
  285. data/tests/files/working.git/objects/47/2650d42fa9454e2e61e3da9f5c158b8af6d298 +0 -0
  286. data/tests/files/working.git/objects/47/8e5ee111572790b248eaa99140c5a8f728abc7 +0 -0
  287. data/tests/files/working.git/objects/48/bbf0db7e813affab7d8dd2842b8455ff9876be +0 -0
  288. data/tests/files/working.git/objects/49/b352299735fda3a333c69c6273178b0c3dfa08 +0 -0
  289. data/tests/files/working.git/objects/4a/1e3e4500962c3631a479726bf2e40469594cba +0 -0
  290. data/tests/files/working.git/objects/4a/2bee50944e9285e8f82216c9b0b8a7d3cdd315 +0 -0
  291. data/tests/files/working.git/objects/4a/4e676afe275afecf23130390fe96d0e6d00057 +0 -0
  292. data/tests/files/working.git/objects/4a/de99433ac3e4bcc874cd7de488de29399e9096 +0 -1
  293. data/tests/files/working.git/objects/4b/7c90536eaa830d8c1f6ff49a7885b581d6acef +0 -1
  294. data/tests/files/working.git/objects/4c/411dc8e6ea6fcba0ed56e84aa7707f881d24c7 +0 -0
  295. data/tests/files/working.git/objects/4c/ce9432b2f80461324a61611f6143f8544cd80f +0 -1
  296. data/tests/files/working.git/objects/4c/e44a75510cbfe200b131fdbcc56a86f1b2dc08 +0 -0
  297. data/tests/files/working.git/objects/4d/35ba97a858072c240d327e3ce30c28b333a1b0 +0 -0
  298. data/tests/files/working.git/objects/4d/ff9ef38ef09cbf0e36031bbee22b7cf0c7a8fc +0 -1
  299. data/tests/files/working.git/objects/4e/aafb1d843aec4f8f1612d03de46a08c2143ea9 +0 -0
  300. data/tests/files/working.git/objects/4e/ebc1b62c53241b7fbf7fb33b5230362595bfdd +0 -0
  301. data/tests/files/working.git/objects/4f/4065121cb78fe6116ae7e3075f5c5a446bd08b +0 -0
  302. data/tests/files/working.git/objects/50/3d77289b054742f507d8a8ce7cc51d3841d5b9 +0 -0
  303. data/tests/files/working.git/objects/52/4038b20b297f40d78e7d83e04e38049457312b +0 -0
  304. data/tests/files/working.git/objects/53/a72df554e585e239e41cb1fc498d5aee9bb164 +0 -0
  305. data/tests/files/working.git/objects/54/0200385c3b0b299c7a87ecf59ca94c32fbbe99 +0 -0
  306. data/tests/files/working.git/objects/54/5c81a2e8d1112d5f7356f840a22e8f6abcef8f +0 -2
  307. data/tests/files/working.git/objects/54/5ffc79786f268524c35e1e05b1770c7c74faf1 +0 -3
  308. data/tests/files/working.git/objects/54/6bec6f8872efa41d5d97a369f669165ecda0de +0 -0
  309. data/tests/files/working.git/objects/54/7a4bae347658f0d9eed0d35d31b4561aea7cf8 +0 -2
  310. data/tests/files/working.git/objects/56/195ef83e9e20ca75dddef0630633fc8060ed11 +0 -0
  311. data/tests/files/working.git/objects/57/7ddd894033c46a5fcf2c6f3c4e71cc72f86909 +0 -0
  312. data/tests/files/working.git/objects/58/501cbd0fc5ce832f6b34d37243a520dc19a6cc +0 -1
  313. data/tests/files/working.git/objects/58/73a650a91eb238005444d2c637b451f687951b +0 -0
  314. data/tests/files/working.git/objects/5a/28efd2fcf55b7b58eb7cc66b5db836155bc2bb +0 -0
  315. data/tests/files/working.git/objects/5b/0be7da7cc9ecdb6c2de5f818c30a42fbd2c9fa +0 -1
  316. data/tests/files/working.git/objects/5c/16fb8b958b51f6008f9722b279b1fde0defb76 +0 -3
  317. data/tests/files/working.git/objects/5d/4606820736043f9eed2a6336661d6892c820a5 +0 -0
  318. data/tests/files/working.git/objects/5e/392652a881999392c2757cf9b783c5d47b67f7 +0 -0
  319. data/tests/files/working.git/objects/5e/53019b3238362144c2766f02a2c00d91fcc023 +0 -2
  320. data/tests/files/working.git/objects/62/70c7f48ca41e6fb41b745ddc1bffe521d83194 +0 -2
  321. data/tests/files/working.git/objects/62/7e1097cda3b2e3ad6ba4d3772c0985e1ff349c +0 -0
  322. data/tests/files/working.git/objects/62/bb94c53efae4d53fd0649d129baef4aca87af7 +0 -3
  323. data/tests/files/working.git/objects/62/c9331ffe97bb6388fb7968662b4e97d121e2da +0 -0
  324. data/tests/files/working.git/objects/63/1446ec50808846e31fff786c065e69da2c673b +0 -0
  325. data/tests/files/working.git/objects/64/d0c52ac4c061cf1705e3005dfd86fb70374a14 +0 -0
  326. data/tests/files/working.git/objects/66/80a909b0e02b297bedbe143ef789d297235358 +0 -0
  327. data/tests/files/working.git/objects/6b/790ddc5eab30f18cabdd0513e8f8dac0d2d3ed +0 -0
  328. data/tests/files/working.git/objects/6c/2d312ebd67eed4c7e97e3923b3667764e7360e +0 -0
  329. data/tests/files/working.git/objects/6d/e8fb35c2e4a69addd030f2dbb4f73fd4742b5b +0 -0
  330. data/tests/files/working.git/objects/6e/d281c757a969ffe22f3dcfa5830c532479c726 +0 -0
  331. data/tests/files/working.git/objects/70/714b02913c1a249a5ab05021742f0bc7065df7 +0 -0
  332. data/tests/files/working.git/objects/71/894b736711ea0a5def4f536009364d07ee4db3 +0 -2
  333. data/tests/files/working.git/objects/71/c9a23879ff0ac8c49b92d107f3f89c6d1b2d92 +0 -1
  334. data/tests/files/working.git/objects/73/b171450704ea4350f9f884426389fe04c6cd51 +0 -0
  335. data/tests/files/working.git/objects/74/32b657191a10587335e74ae6f0966a7eed2976 +0 -0
  336. data/tests/files/working.git/objects/79/e5b9e6ee5a1e6c52676a6332fe9163adaa92cb +0 -0
  337. data/tests/files/working.git/objects/7c/076f209839d7f910e8c84e41cc94898287ef45 +0 -0
  338. data/tests/files/working.git/objects/7c/60c6ab64c74d52f973d18cd1933318a8d9ae2e +0 -0
  339. data/tests/files/working.git/objects/7c/ac4f8d519d524ed025732ee220f6451665a770 +0 -0
  340. data/tests/files/working.git/objects/7f/5625f6b3c7213287a12c89017361248ed88936 +0 -0
  341. data/tests/files/working.git/objects/7f/86d16e0254f64f784198c6a55ef9bf7adbe7ce +0 -0
  342. data/tests/files/working.git/objects/7f/bfee9f8882ada1ec45c4925baf5649d96c4a16 +0 -0
  343. data/tests/files/working.git/objects/81/25fbe8605d2884e732a185c9a24abcc0d12a1f +0 -0
  344. data/tests/files/working.git/objects/81/d4d5e9b6db474d0f432aa31d44bf690d841e94 +0 -0
  345. data/tests/files/working.git/objects/81/f545324202466d44115656ea463a5bb114345f +0 -0
  346. data/tests/files/working.git/objects/82/d331cf4d3d4ee537c4f866cab2633b46a8d090 +0 -0
  347. data/tests/files/working.git/objects/83/c6a1f0d7d8df18a9d9bfe917707aec37868418 +0 -0
  348. data/tests/files/working.git/objects/85/8f46dd7496faf7af72102ca15cccff832b5377 +0 -0
  349. data/tests/files/working.git/objects/87/c56502c73149f006631129f85dff697e000356 +0 -0
  350. data/tests/files/working.git/objects/88/cf23d06f519bec7b824acd52b87a729555f2e7 +0 -0
  351. data/tests/files/working.git/objects/8a/3fb747983bf2a7f4ef136af4bfcf7993a19307 +0 -0
  352. data/tests/files/working.git/objects/8b/00d915a0ee5aeb32e0b166e1054c2901338c9d +0 -0
  353. data/tests/files/working.git/objects/8c/e3ee48a7e7ec697a99ee33700ec624548ad9e8 +0 -0
  354. data/tests/files/working.git/objects/8d/ae07ab9d98b5fe04d4d7ed804cc36441b68dab +0 -0
  355. data/tests/files/working.git/objects/8d/c79ae7616abf1e2d4d5d97d566f2b2f6cee043 +0 -0
  356. data/tests/files/working.git/objects/92/4dec9203af851c3b3e564697ab3004b35b3c2f +0 -0
  357. data/tests/files/working.git/objects/93/06c056ba3ef9dca6f6365af38148c71196533a +0 -0
  358. data/tests/files/working.git/objects/93/5badc874edd62a8629aaf103418092c73f0a56 +0 -1
  359. data/tests/files/working.git/objects/94/c827875e2cadb8bc8d4cdd900f19aa9e8634c7 +0 -0
  360. data/tests/files/working.git/objects/95/ef665df6ebd69842c5e74a24cb8a12225dee3e +0 -0
  361. data/tests/files/working.git/objects/98/fb6a686563963b8f7e552d747158adbc1c2bd6 +0 -0
  362. data/tests/files/working.git/objects/99/3dd9b1cdeab53e305886c91dbcbc8929eff22e +0 -1
  363. data/tests/files/working.git/objects/9a/e1fbd7636c99d34fdd395cf9bb21ad51417ce7 +0 -1
  364. data/tests/files/working.git/objects/9b/5149aa4ace4ef69461803b0ccbb21139e12626 +0 -0
  365. data/tests/files/working.git/objects/9d/3ad2f09cb7a1d4f4c91182c96f2be537fbc4ff +0 -0
  366. data/tests/files/working.git/objects/9d/6f937544dc3b936d6ee1466d6e216ba18d5686 +0 -0
  367. data/tests/files/working.git/objects/9f/a43bcd45af28e109e6f7b9a6ccd26e8e193a63 +0 -0
  368. data/tests/files/working.git/objects/a0/b3f35b3c39cfb12c4cc819bffe1cf54efb3642 +0 -2
  369. data/tests/files/working.git/objects/a1/15413501949f4f09811fd1aaecf136c012c7d7 +0 -0
  370. data/tests/files/working.git/objects/a1/a3069efcc64330fb6c66004e69b870da3d6186 +0 -0
  371. data/tests/files/working.git/objects/a3/62d30d5fe1021cabc4c90f073ba2511d5a43a1 +0 -0
  372. data/tests/files/working.git/objects/a3/c1f067074cdc9aa998cb5f3cad46a6f17aab2d +0 -0
  373. data/tests/files/working.git/objects/a3/db7143944dcfa006fefe7fb49c48793cb29ade +0 -2
  374. data/tests/files/working.git/objects/a4/4a5e945176ff31be83ffca3e7c68a8b6a45ea5 +0 -1
  375. data/tests/files/working.git/objects/a5/1546fabf88ddef5a9fd91b3989dd8ccae2edf3 +0 -0
  376. data/tests/files/working.git/objects/a6/b25c4b27ee99f93fd611154202af5f9e3c99de +0 -2
  377. data/tests/files/working.git/objects/a7/88a1cba299638a2c898fcfaae1f69a1549853d +0 -0
  378. data/tests/files/working.git/objects/a8/98e8a6b143188022863bc1cab0b5f7514624ba +0 -0
  379. data/tests/files/working.git/objects/a8/b607b221454c4cd7bc7831b2d19712bb4ff888 +0 -0
  380. data/tests/files/working.git/objects/a9/e2d9b71b616531f04a65ae5b972ba5d1f2cb93 +0 -0
  381. data/tests/files/working.git/objects/a9/e2f17562ae78a75dc855bb3dc9e87364195dcf +0 -0
  382. data/tests/files/working.git/objects/ab/16bc1812fd6226780a841300a2432dfd0c6719 +0 -0
  383. data/tests/files/working.git/objects/ac/8f48bbb7b31c945ba6a4fbe6950d009a5d8373 +0 -0
  384. data/tests/files/working.git/objects/ae/21cabd23aee99a719fc828977c0df9e8b19363 +0 -0
  385. data/tests/files/working.git/objects/b0/3003311ad3fa368b475df58390353868e13c91 +0 -2
  386. data/tests/files/working.git/objects/b0/ee249c5e5cc9464f3bc0034ab05632dcb87a23 +0 -0
  387. data/tests/files/working.git/objects/b1/288f8beeaa6cf048c3a9f578d4e266fab8820e +0 -0
  388. data/tests/files/working.git/objects/b1/5336206c9040f4c52660b3f3c76ee02ccece56 +0 -0
  389. data/tests/files/working.git/objects/b1/b18f5bea24648a1b08e5bba88728c15ec3cb50 +0 -2
  390. data/tests/files/working.git/objects/b4/5724ee906d2561901208ba924add09ab95ccb3 +0 -0
  391. data/tests/files/working.git/objects/b5/d8fc3cb740eb643c66eb5f4a97345fdb806259 +0 -0
  392. data/tests/files/working.git/objects/b6/153b8fe540288d66b974ae05113338ab1a61f0 +0 -0
  393. data/tests/files/working.git/objects/b6/987bc1201ad19774c43c0ea8078f6f51d76bcb +0 -0
  394. data/tests/files/working.git/objects/b6/9e6acd87e5f9114ce6580b095ef1057a8fe5bb +0 -0
  395. data/tests/files/working.git/objects/b9/8f4909807c8c84a1dc1b62b4a339ae1777f369 +0 -3
  396. data/tests/files/working.git/objects/ba/492c62b6227d7f3507b4dcc6e6d5f13790eabf +0 -0
  397. data/tests/files/working.git/objects/ba/c335cb9dc058a477d04cde34c07d1f70d16fb9 +0 -0
  398. data/tests/files/working.git/objects/bb/0850568bb43049031a38b01ddb60e4a487f823 +0 -0
  399. data/tests/files/working.git/objects/be/b14380ef26540efcad06bedcd0e302b6bce70e +0 -0
  400. data/tests/files/working.git/objects/c1/3142dd26a1f6f38403a17f6c411cb621b9a1cd +0 -0
  401. data/tests/files/working.git/objects/c1/8b4e9b0829411705d7fa9a1570a20d88780817 +0 -0
  402. data/tests/files/working.git/objects/c5/a3fdb33f052b8f17dac83c533b62244226f4ba +0 -0
  403. data/tests/files/working.git/objects/c6/567e2feccce3893ae0aaac2bf97807338aa8d4 +0 -0
  404. data/tests/files/working.git/objects/cb/45eef6fa1ad913137d91c6b81d2b42d69094a6 +0 -0
  405. data/tests/files/working.git/objects/cd/0d59357b36a447ff27a7c176b46e0a319b42df +0 -0
  406. data/tests/files/working.git/objects/cd/4291452a61ff8b57cf5510addc8ddc5630748e +0 -0
  407. data/tests/files/working.git/objects/cf/7135368cc3bf4920ceeaeebd083e098cfad355 +0 -4
  408. data/tests/files/working.git/objects/cf/b9952c3a28831144a0fac7ea5a2d8517f466c4 +0 -0
  409. data/tests/files/working.git/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d +0 -0
  410. data/tests/files/working.git/objects/d1/4cbc09cc34fb6450b2e96432102be51c8292b8 +0 -0
  411. data/tests/files/working.git/objects/d3/d171221e87a30e059d638f155f899595d96b71 +0 -0
  412. data/tests/files/working.git/objects/d5/b9587b65731e25216743b0caca72051a760211 +0 -2
  413. data/tests/files/working.git/objects/d6/a3aab3e38bc16688b4e636a91e462434210878 +0 -0
  414. data/tests/files/working.git/objects/d6/f31c35d7e010e50568c0d605227028aa7bac66 +0 -0
  415. data/tests/files/working.git/objects/d7/875788aeafdd8e317880c00e3372f683cad91e +0 -0
  416. data/tests/files/working.git/objects/d7/d8a71a719e2a4ca501991a66dab47df804f6ad +0 -0
  417. data/tests/files/working.git/objects/d7/e844eec32d74a3d37c4ce02d7138658e1035d6 +0 -0
  418. data/tests/files/working.git/objects/da/597fb7fba247a5b59d917e90342cf4b9695905 +0 -0
  419. data/tests/files/working.git/objects/da/7b788b1575936a4381050610a37737c70b55a0 +0 -1
  420. data/tests/files/working.git/objects/de/996da0ef3dcee1a28aef9243aa3e255eb825b5 +0 -0
  421. data/tests/files/working.git/objects/de/d54b45e4d49816f6d4256e74d45ba2bb351357 +0 -0
  422. data/tests/files/working.git/objects/e3/6f723934fd1d67c7d21538751f0b1e941141db +0 -0
  423. data/tests/files/working.git/objects/e3/ebef76525fe9e6e8dc739934a08512dff777c0 +0 -0
  424. data/tests/files/working.git/objects/e5/0fa6835cb99747346f19fea5f1ba939da4205f +0 -2
  425. data/tests/files/working.git/objects/e5/650a5c9c4b5a4415195bfb01d4d8dccbc8221b +0 -0
  426. data/tests/files/working.git/objects/e5/76bdfc9ed4627ac954f9390cf7a6151ad2a73e +0 -0
  427. data/tests/files/working.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  428. data/tests/files/working.git/objects/e7/ea5938f9c009d32235050bca991d0b9533e440 +0 -0
  429. data/tests/files/working.git/objects/e8/183f05f5db68b3934e93f4bf6bed2bb664e0b5 +0 -0
  430. data/tests/files/working.git/objects/e8/bd03b163f82fba4560c11839d49361a78dec85 +0 -0
  431. data/tests/files/working.git/objects/e9/0de8268373e4fd5ab13310b7745d47ec16813c +0 -0
  432. data/tests/files/working.git/objects/ec/16a327a6a98367d03369b4e998baf3db379313 +0 -0
  433. data/tests/files/working.git/objects/ec/1e3d44e160e18dbfbaa80b5b0780ccc03e678e +0 -0
  434. data/tests/files/working.git/objects/ed/551aa66cf0c6f1a078832f80899faff0ae88dc +0 -0
  435. data/tests/files/working.git/objects/f1/25480ee106989ec4d86554c0d5a1487ad4336a +0 -1
  436. data/tests/files/working.git/objects/f1/410f8735f6f73d3599eb9b5cdd2fb70373335c +0 -3
  437. data/tests/files/working.git/objects/f2/02cb755135d4263589602783b04fb32a079d88 +0 -0
  438. data/tests/files/working.git/objects/f2/ff401fb3fc81f8abb3ca15247aadc1e22b6288 +0 -0
  439. data/tests/files/working.git/objects/f5/501de98279c6454f510188873476f3ead0cee6 +0 -4
  440. data/tests/files/working.git/objects/f7/5f313ca30e534aa9c42463e85108e682d3a14a +0 -0
  441. data/tests/files/working.git/objects/f8/e9c6748331411c0d3511f90bd4e0a1a30acff0 +0 -0
  442. data/tests/files/working.git/objects/f9/bce8995109cfab475d043a7dd9156d5e574ed3 +0 -0
  443. data/tests/files/working.git/objects/fa/6312f71abb153ada6a0399ad710d21bb61e4d8 +0 -0
  444. data/tests/files/working.git/objects/fb/8e78840d79085abf50edebf5b9d6b73ee0fb4c +0 -0
  445. data/tests/files/working.git/objects/fc/b49fa99454f804799a12095292edbca48779ab +0 -0
  446. data/tests/files/working.git/objects/fe/b2ccf88397c2d93f381176067be2727eba330b +0 -0
  447. data/tests/files/working.git/objects/info/packs +0 -2
  448. data/tests/files/working.git/objects/pack/pack-6e99d3a243c58205968336728d5637ce2a3b2aff.idx +0 -0
  449. data/tests/files/working.git/objects/pack/pack-6e99d3a243c58205968336728d5637ce2a3b2aff.pack +0 -0
  450. data/tests/files/working.git/refs/heads/git_grep +0 -1
  451. data/tests/files/working.git/refs/heads/master +0 -1
  452. data/tests/files/working.git/refs/heads/test +0 -1
  453. data/tests/files/working.git/refs/heads/test_branches +0 -1
  454. data/tests/files/working.git/refs/heads/test_object +0 -1
  455. data/tests/files/working.git/refs/tags/gitsearch1 +0 -1
  456. data/tests/files/working.git/refs/tags/v2.5 +0 -1
  457. data/tests/files/working.git/refs/tags/v2.6 +0 -1
  458. data/tests/files/working.git/refs/tags/v2.7 +0 -1
  459. data/tests/files/working.git/refs/tags/v2.8 +0 -1
  460. data/tests/files/working/dot_git/FETCH_HEAD +0 -1
  461. data/tests/files/working/dot_git/HEAD +0 -1
  462. data/tests/files/working/dot_git/config +0 -13
  463. data/tests/files/working/dot_git/description +0 -1
  464. data/tests/files/working/dot_git/hooks/applypatch-msg +0 -15
  465. data/tests/files/working/dot_git/hooks/commit-msg +0 -21
  466. data/tests/files/working/dot_git/hooks/post-commit +0 -8
  467. data/tests/files/working/dot_git/hooks/post-receive +0 -16
  468. data/tests/files/working/dot_git/hooks/post-update +0 -8
  469. data/tests/files/working/dot_git/hooks/pre-applypatch +0 -14
  470. data/tests/files/working/dot_git/hooks/pre-commit +0 -70
  471. data/tests/files/working/dot_git/hooks/pre-rebase +0 -150
  472. data/tests/files/working/dot_git/hooks/update +0 -78
  473. data/tests/files/working/dot_git/index +0 -0
  474. data/tests/files/working/dot_git/info/exclude +0 -6
  475. data/tests/files/working/dot_git/logs/HEAD +0 -75
  476. data/tests/files/working/dot_git/logs/refs/heads/git_grep +0 -5
  477. data/tests/files/working/dot_git/logs/refs/heads/master +0 -64
  478. data/tests/files/working/dot_git/logs/refs/heads/test +0 -3
  479. data/tests/files/working/dot_git/logs/refs/heads/test_branches +0 -1
  480. data/tests/files/working/dot_git/logs/refs/heads/test_object +0 -2
  481. data/tests/files/working/dot_git/logs/refs/remotes/working/master +0 -1
  482. data/tests/files/working/dot_git/objects/00/62cdf4c1e63069eececf54325535e91fd57c42 +0 -0
  483. data/tests/files/working/dot_git/objects/00/ea60e1331b184386392037a7267dfb4a7c7d86 +0 -0
  484. data/tests/files/working/dot_git/objects/01/0b7b79019cb510d8c5849704fd10541655916d +0 -0
  485. data/tests/files/working/dot_git/objects/01/dd46ebe07fc30c10c85c2e926c70f2d7058a6b +0 -0
  486. data/tests/files/working/dot_git/objects/02/b2a02844d00574c234d17bec6294e832f3c4c1 +0 -0
  487. data/tests/files/working/dot_git/objects/06/f4e8a840d23fc0ab94895a5d16827a19f75fb7 +0 -0
  488. data/tests/files/working/dot_git/objects/0b/2fe00801b62b7760c23d554796b05abc16af92 +0 -0
  489. data/tests/files/working/dot_git/objects/0b/5262f6ee3552a99b7081a317e8289d6a4d8e72 +0 -0
  490. data/tests/files/working/dot_git/objects/0b/c0d846cf80b079e763e35c3af273171bf01fca +0 -0
  491. data/tests/files/working/dot_git/objects/0d/2c47f07277b3ea30b0884f8e3acd68440507c8 +0 -0
  492. data/tests/files/working/dot_git/objects/0d/519ca9c2eddc44431efe135d0fc8df00e0b975 +0 -0
  493. data/tests/files/working/dot_git/objects/0f/845a0a981bc2f61354fcdd2b6eafe2b2c55c2d +0 -3
  494. data/tests/files/working/dot_git/objects/0f/f4a0357c3d7221a2ef1e4c6b7d5c46d97fe250 +0 -0
  495. data/tests/files/working/dot_git/objects/12/eb889f49f1464b32a51424d7724fb16f6c3a31 +0 -0
  496. data/tests/files/working/dot_git/objects/15/34a65657edf4e5caaa5ce35652dca5e4c7d316 +0 -0
  497. data/tests/files/working/dot_git/objects/15/378a1f3eafe4c5ab4f890883356df917ee5539 +0 -2
  498. data/tests/files/working/dot_git/objects/16/9e6db43d4c09cd610179a7b9826483b4d94123 +0 -0
  499. data/tests/files/working/dot_git/objects/16/d1f96acfd92d09c4f1f56d3441ac55dd30500e +0 -0
  500. data/tests/files/working/dot_git/objects/16/ee5335538f11b4ffcc17b051f8d5db7570a055 +0 -0
  501. data/tests/files/working/dot_git/objects/17/9ef0e0209e90af00f544ff414e0674dfb5f5c7 +0 -0
  502. data/tests/files/working/dot_git/objects/19/9d2f8e60fddd1bb2a1b0bddedde35e5aa8b03f +0 -0
  503. data/tests/files/working/dot_git/objects/1c/c8667014381e2788a94777532a788307f38d26 +0 -1
  504. data/tests/files/working/dot_git/objects/1c/fcfba04eb4e461e9f930d22f528023ab1ddefc +0 -0
  505. data/tests/files/working/dot_git/objects/1d/7be4117ded4534789d85c42ab579644cd3fa12 +0 -0
  506. data/tests/files/working/dot_git/objects/1d/9e4767a95047ca5e395714985afaedb186f4cd +0 -1
  507. data/tests/files/working/dot_git/objects/1f/09f2edb9c0d9275d15960771b363ca6940fbe3 +0 -0
  508. data/tests/files/working/dot_git/objects/1f/691b879df15cf6742502ffc59833b4a40e7aef +0 -0
  509. data/tests/files/working/dot_git/objects/23/751ef6c1fed1304ae1d07020aa73da6f2b93b0 +0 -1
  510. data/tests/files/working/dot_git/objects/24/5582a71306d7360e40c07cd7d849a1aa14a31e +0 -0
  511. data/tests/files/working/dot_git/objects/26/3e3c527004e7b742ed1f747c1bfb7e11825d7a +0 -0
  512. data/tests/files/working/dot_git/objects/27/c0c003dda3e59ba236f53f6661faaf74432b5c +0 -0
  513. data/tests/files/working/dot_git/objects/29/1b6be488d6abc586d3ee03ca61238766625a75 +0 -0
  514. data/tests/files/working/dot_git/objects/2a/f6f7d51b7afdd404a871581ebb3b6ac07fb8cc +0 -0
  515. data/tests/files/working/dot_git/objects/2c/ef51480d44dcc262d16be2812c692d940d5f29 +0 -0
  516. data/tests/files/working/dot_git/objects/2e/20132e8fd40cb3e82248919a10900d31f1816a +0 -0
  517. data/tests/files/working/dot_git/objects/2e/939fd37bbd2da971faa27c3e3de7d5aad40507 +0 -0
  518. data/tests/files/working/dot_git/objects/2f/53e667d1d88e75b3fa300f9ab6e2d8ffd32a15 +0 -0
  519. data/tests/files/working/dot_git/objects/32/4968b9dc40253f2c52a8e3856398c761dea856 +0 -0
  520. data/tests/files/working/dot_git/objects/33/8ecb0183d507498aedb669b796b4f9e8880f00 +0 -0
  521. data/tests/files/working/dot_git/objects/33/edabb4334cbe849a477a0d2893cdb768fa3091 +0 -0
  522. data/tests/files/working/dot_git/objects/34/a566d193dc4702f03149969a2aad1443231560 +0 -1
  523. data/tests/files/working/dot_git/objects/36/fe213c328fd280f33abe00069c4b92eb5a88d1 +0 -0
  524. data/tests/files/working/dot_git/objects/39/66e9fa0e0b9fe9d3ef2fdaa6933f3d0bb82bc3 +0 -0
  525. data/tests/files/working/dot_git/objects/3a/9f195756f5bd26b67c5e1fffd92d68d61be14e +0 -2
  526. data/tests/files/working/dot_git/objects/3a/ac4b445017a8fc07502670ec2dbf744213dd48 +0 -0
  527. data/tests/files/working/dot_git/objects/3b/6eeed9ce43ea893cf48d263da93448edae9f1c +0 -0
  528. data/tests/files/working/dot_git/objects/3c/644f22b9b8edb06e7e298ecac8e71b133061f1 +0 -0
  529. data/tests/files/working/dot_git/objects/3c/c71b13d906e445da52785ddeff40dad1163d49 +0 -2
  530. data/tests/files/working/dot_git/objects/3c/f35bd14cf5f2dd08bbeef8698d700f3a038e5c +0 -0
  531. data/tests/files/working/dot_git/objects/3d/331db92a8ead0565679efb76f328ae69ed1b77 +0 -0
  532. data/tests/files/working/dot_git/objects/44/88516c3c936db58ea485ec2213dab9d13e6628 +0 -0
  533. data/tests/files/working/dot_git/objects/44/987dd95c338fb573726541f270f1a7b55c9d51 +0 -0
  534. data/tests/files/working/dot_git/objects/45/20c29b885e9db9b0df3c7bab7870157e1d00c3 +0 -0
  535. data/tests/files/working/dot_git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 +0 -0
  536. data/tests/files/working/dot_git/objects/46/00557506be20eb1501a4f15a52e684d4b9ee61 +0 -0
  537. data/tests/files/working/dot_git/objects/46/a60232117527e7b57ac0dd5ea4af2cd3fdb696 +0 -0
  538. data/tests/files/working/dot_git/objects/47/0f6a87fa51dd25f6db0f4725ae37791d449356 +0 -0
  539. data/tests/files/working/dot_git/objects/47/2650d42fa9454e2e61e3da9f5c158b8af6d298 +0 -0
  540. data/tests/files/working/dot_git/objects/47/8e5ee111572790b248eaa99140c5a8f728abc7 +0 -0
  541. data/tests/files/working/dot_git/objects/48/bbf0db7e813affab7d8dd2842b8455ff9876be +0 -0
  542. data/tests/files/working/dot_git/objects/49/b352299735fda3a333c69c6273178b0c3dfa08 +0 -0
  543. data/tests/files/working/dot_git/objects/4a/1e3e4500962c3631a479726bf2e40469594cba +0 -0
  544. data/tests/files/working/dot_git/objects/4a/2bee50944e9285e8f82216c9b0b8a7d3cdd315 +0 -0
  545. data/tests/files/working/dot_git/objects/4a/4e676afe275afecf23130390fe96d0e6d00057 +0 -0
  546. data/tests/files/working/dot_git/objects/4a/de99433ac3e4bcc874cd7de488de29399e9096 +0 -1
  547. data/tests/files/working/dot_git/objects/4b/7c90536eaa830d8c1f6ff49a7885b581d6acef +0 -1
  548. data/tests/files/working/dot_git/objects/4c/411dc8e6ea6fcba0ed56e84aa7707f881d24c7 +0 -0
  549. data/tests/files/working/dot_git/objects/4c/ce9432b2f80461324a61611f6143f8544cd80f +0 -1
  550. data/tests/files/working/dot_git/objects/4c/e44a75510cbfe200b131fdbcc56a86f1b2dc08 +0 -0
  551. data/tests/files/working/dot_git/objects/4d/35ba97a858072c240d327e3ce30c28b333a1b0 +0 -0
  552. data/tests/files/working/dot_git/objects/4d/ff9ef38ef09cbf0e36031bbee22b7cf0c7a8fc +0 -1
  553. data/tests/files/working/dot_git/objects/4e/aafb1d843aec4f8f1612d03de46a08c2143ea9 +0 -0
  554. data/tests/files/working/dot_git/objects/4e/ebc1b62c53241b7fbf7fb33b5230362595bfdd +0 -0
  555. data/tests/files/working/dot_git/objects/4f/4065121cb78fe6116ae7e3075f5c5a446bd08b +0 -0
  556. data/tests/files/working/dot_git/objects/50/3d77289b054742f507d8a8ce7cc51d3841d5b9 +0 -0
  557. data/tests/files/working/dot_git/objects/52/4038b20b297f40d78e7d83e04e38049457312b +0 -0
  558. data/tests/files/working/dot_git/objects/53/a72df554e585e239e41cb1fc498d5aee9bb164 +0 -0
  559. data/tests/files/working/dot_git/objects/54/0200385c3b0b299c7a87ecf59ca94c32fbbe99 +0 -0
  560. data/tests/files/working/dot_git/objects/54/5c81a2e8d1112d5f7356f840a22e8f6abcef8f +0 -2
  561. data/tests/files/working/dot_git/objects/54/5ffc79786f268524c35e1e05b1770c7c74faf1 +0 -3
  562. data/tests/files/working/dot_git/objects/54/6bec6f8872efa41d5d97a369f669165ecda0de +0 -0
  563. data/tests/files/working/dot_git/objects/54/7a4bae347658f0d9eed0d35d31b4561aea7cf8 +0 -2
  564. data/tests/files/working/dot_git/objects/56/195ef83e9e20ca75dddef0630633fc8060ed11 +0 -0
  565. data/tests/files/working/dot_git/objects/57/7ddd894033c46a5fcf2c6f3c4e71cc72f86909 +0 -0
  566. data/tests/files/working/dot_git/objects/58/501cbd0fc5ce832f6b34d37243a520dc19a6cc +0 -1
  567. data/tests/files/working/dot_git/objects/58/73a650a91eb238005444d2c637b451f687951b +0 -0
  568. data/tests/files/working/dot_git/objects/5a/28efd2fcf55b7b58eb7cc66b5db836155bc2bb +0 -0
  569. data/tests/files/working/dot_git/objects/5b/0be7da7cc9ecdb6c2de5f818c30a42fbd2c9fa +0 -1
  570. data/tests/files/working/dot_git/objects/5c/16fb8b958b51f6008f9722b279b1fde0defb76 +0 -3
  571. data/tests/files/working/dot_git/objects/5d/4606820736043f9eed2a6336661d6892c820a5 +0 -0
  572. data/tests/files/working/dot_git/objects/5e/392652a881999392c2757cf9b783c5d47b67f7 +0 -0
  573. data/tests/files/working/dot_git/objects/5e/53019b3238362144c2766f02a2c00d91fcc023 +0 -2
  574. data/tests/files/working/dot_git/objects/62/70c7f48ca41e6fb41b745ddc1bffe521d83194 +0 -2
  575. data/tests/files/working/dot_git/objects/62/7e1097cda3b2e3ad6ba4d3772c0985e1ff349c +0 -0
  576. data/tests/files/working/dot_git/objects/62/bb94c53efae4d53fd0649d129baef4aca87af7 +0 -3
  577. data/tests/files/working/dot_git/objects/62/c9331ffe97bb6388fb7968662b4e97d121e2da +0 -0
  578. data/tests/files/working/dot_git/objects/63/1446ec50808846e31fff786c065e69da2c673b +0 -0
  579. data/tests/files/working/dot_git/objects/64/d0c52ac4c061cf1705e3005dfd86fb70374a14 +0 -0
  580. data/tests/files/working/dot_git/objects/66/80a909b0e02b297bedbe143ef789d297235358 +0 -0
  581. data/tests/files/working/dot_git/objects/6b/790ddc5eab30f18cabdd0513e8f8dac0d2d3ed +0 -0
  582. data/tests/files/working/dot_git/objects/6c/2d312ebd67eed4c7e97e3923b3667764e7360e +0 -0
  583. data/tests/files/working/dot_git/objects/6d/e8fb35c2e4a69addd030f2dbb4f73fd4742b5b +0 -0
  584. data/tests/files/working/dot_git/objects/6e/d281c757a969ffe22f3dcfa5830c532479c726 +0 -0
  585. data/tests/files/working/dot_git/objects/70/714b02913c1a249a5ab05021742f0bc7065df7 +0 -0
  586. data/tests/files/working/dot_git/objects/71/894b736711ea0a5def4f536009364d07ee4db3 +0 -2
  587. data/tests/files/working/dot_git/objects/71/c9a23879ff0ac8c49b92d107f3f89c6d1b2d92 +0 -1
  588. data/tests/files/working/dot_git/objects/73/b171450704ea4350f9f884426389fe04c6cd51 +0 -0
  589. data/tests/files/working/dot_git/objects/74/32b657191a10587335e74ae6f0966a7eed2976 +0 -0
  590. data/tests/files/working/dot_git/objects/79/e5b9e6ee5a1e6c52676a6332fe9163adaa92cb +0 -0
  591. data/tests/files/working/dot_git/objects/7c/076f209839d7f910e8c84e41cc94898287ef45 +0 -0
  592. data/tests/files/working/dot_git/objects/7c/60c6ab64c74d52f973d18cd1933318a8d9ae2e +0 -0
  593. data/tests/files/working/dot_git/objects/7c/ac4f8d519d524ed025732ee220f6451665a770 +0 -0
  594. data/tests/files/working/dot_git/objects/7f/5625f6b3c7213287a12c89017361248ed88936 +0 -0
  595. data/tests/files/working/dot_git/objects/7f/86d16e0254f64f784198c6a55ef9bf7adbe7ce +0 -0
  596. data/tests/files/working/dot_git/objects/7f/bfee9f8882ada1ec45c4925baf5649d96c4a16 +0 -0
  597. data/tests/files/working/dot_git/objects/81/25fbe8605d2884e732a185c9a24abcc0d12a1f +0 -0
  598. data/tests/files/working/dot_git/objects/81/d4d5e9b6db474d0f432aa31d44bf690d841e94 +0 -0
  599. data/tests/files/working/dot_git/objects/81/f545324202466d44115656ea463a5bb114345f +0 -0
  600. data/tests/files/working/dot_git/objects/82/d331cf4d3d4ee537c4f866cab2633b46a8d090 +0 -0
  601. data/tests/files/working/dot_git/objects/83/c6a1f0d7d8df18a9d9bfe917707aec37868418 +0 -0
  602. data/tests/files/working/dot_git/objects/85/8f46dd7496faf7af72102ca15cccff832b5377 +0 -0
  603. data/tests/files/working/dot_git/objects/87/c56502c73149f006631129f85dff697e000356 +0 -0
  604. data/tests/files/working/dot_git/objects/88/cf23d06f519bec7b824acd52b87a729555f2e7 +0 -0
  605. data/tests/files/working/dot_git/objects/8a/3fb747983bf2a7f4ef136af4bfcf7993a19307 +0 -0
  606. data/tests/files/working/dot_git/objects/8b/00d915a0ee5aeb32e0b166e1054c2901338c9d +0 -0
  607. data/tests/files/working/dot_git/objects/8c/e3ee48a7e7ec697a99ee33700ec624548ad9e8 +0 -0
  608. data/tests/files/working/dot_git/objects/8d/ae07ab9d98b5fe04d4d7ed804cc36441b68dab +0 -0
  609. data/tests/files/working/dot_git/objects/8d/c79ae7616abf1e2d4d5d97d566f2b2f6cee043 +0 -0
  610. data/tests/files/working/dot_git/objects/92/4dec9203af851c3b3e564697ab3004b35b3c2f +0 -0
  611. data/tests/files/working/dot_git/objects/93/06c056ba3ef9dca6f6365af38148c71196533a +0 -0
  612. data/tests/files/working/dot_git/objects/93/5badc874edd62a8629aaf103418092c73f0a56 +0 -1
  613. data/tests/files/working/dot_git/objects/94/c827875e2cadb8bc8d4cdd900f19aa9e8634c7 +0 -0
  614. data/tests/files/working/dot_git/objects/95/ef665df6ebd69842c5e74a24cb8a12225dee3e +0 -0
  615. data/tests/files/working/dot_git/objects/98/fb6a686563963b8f7e552d747158adbc1c2bd6 +0 -0
  616. data/tests/files/working/dot_git/objects/99/3dd9b1cdeab53e305886c91dbcbc8929eff22e +0 -1
  617. data/tests/files/working/dot_git/objects/9a/e1fbd7636c99d34fdd395cf9bb21ad51417ce7 +0 -1
  618. data/tests/files/working/dot_git/objects/9b/5149aa4ace4ef69461803b0ccbb21139e12626 +0 -0
  619. data/tests/files/working/dot_git/objects/9d/3ad2f09cb7a1d4f4c91182c96f2be537fbc4ff +0 -0
  620. data/tests/files/working/dot_git/objects/9d/6f937544dc3b936d6ee1466d6e216ba18d5686 +0 -0
  621. data/tests/files/working/dot_git/objects/9f/a43bcd45af28e109e6f7b9a6ccd26e8e193a63 +0 -0
  622. data/tests/files/working/dot_git/objects/a0/b3f35b3c39cfb12c4cc819bffe1cf54efb3642 +0 -2
  623. data/tests/files/working/dot_git/objects/a1/15413501949f4f09811fd1aaecf136c012c7d7 +0 -0
  624. data/tests/files/working/dot_git/objects/a1/a3069efcc64330fb6c66004e69b870da3d6186 +0 -0
  625. data/tests/files/working/dot_git/objects/a3/62d30d5fe1021cabc4c90f073ba2511d5a43a1 +0 -0
  626. data/tests/files/working/dot_git/objects/a3/c1f067074cdc9aa998cb5f3cad46a6f17aab2d +0 -0
  627. data/tests/files/working/dot_git/objects/a3/db7143944dcfa006fefe7fb49c48793cb29ade +0 -2
  628. data/tests/files/working/dot_git/objects/a4/4a5e945176ff31be83ffca3e7c68a8b6a45ea5 +0 -1
  629. data/tests/files/working/dot_git/objects/a5/1546fabf88ddef5a9fd91b3989dd8ccae2edf3 +0 -0
  630. data/tests/files/working/dot_git/objects/a6/b25c4b27ee99f93fd611154202af5f9e3c99de +0 -2
  631. data/tests/files/working/dot_git/objects/a7/88a1cba299638a2c898fcfaae1f69a1549853d +0 -0
  632. data/tests/files/working/dot_git/objects/a8/98e8a6b143188022863bc1cab0b5f7514624ba +0 -0
  633. data/tests/files/working/dot_git/objects/a8/b607b221454c4cd7bc7831b2d19712bb4ff888 +0 -0
  634. data/tests/files/working/dot_git/objects/a9/e2d9b71b616531f04a65ae5b972ba5d1f2cb93 +0 -0
  635. data/tests/files/working/dot_git/objects/a9/e2f17562ae78a75dc855bb3dc9e87364195dcf +0 -0
  636. data/tests/files/working/dot_git/objects/ab/16bc1812fd6226780a841300a2432dfd0c6719 +0 -0
  637. data/tests/files/working/dot_git/objects/ac/8f48bbb7b31c945ba6a4fbe6950d009a5d8373 +0 -0
  638. data/tests/files/working/dot_git/objects/ae/21cabd23aee99a719fc828977c0df9e8b19363 +0 -0
  639. data/tests/files/working/dot_git/objects/b0/3003311ad3fa368b475df58390353868e13c91 +0 -2
  640. data/tests/files/working/dot_git/objects/b0/ee249c5e5cc9464f3bc0034ab05632dcb87a23 +0 -0
  641. data/tests/files/working/dot_git/objects/b1/288f8beeaa6cf048c3a9f578d4e266fab8820e +0 -0
  642. data/tests/files/working/dot_git/objects/b1/5336206c9040f4c52660b3f3c76ee02ccece56 +0 -0
  643. data/tests/files/working/dot_git/objects/b1/b18f5bea24648a1b08e5bba88728c15ec3cb50 +0 -2
  644. data/tests/files/working/dot_git/objects/b4/5724ee906d2561901208ba924add09ab95ccb3 +0 -0
  645. data/tests/files/working/dot_git/objects/b5/d8fc3cb740eb643c66eb5f4a97345fdb806259 +0 -0
  646. data/tests/files/working/dot_git/objects/b6/153b8fe540288d66b974ae05113338ab1a61f0 +0 -0
  647. data/tests/files/working/dot_git/objects/b6/987bc1201ad19774c43c0ea8078f6f51d76bcb +0 -0
  648. data/tests/files/working/dot_git/objects/b6/9e6acd87e5f9114ce6580b095ef1057a8fe5bb +0 -0
  649. data/tests/files/working/dot_git/objects/b9/8f4909807c8c84a1dc1b62b4a339ae1777f369 +0 -3
  650. data/tests/files/working/dot_git/objects/ba/492c62b6227d7f3507b4dcc6e6d5f13790eabf +0 -0
  651. data/tests/files/working/dot_git/objects/ba/c335cb9dc058a477d04cde34c07d1f70d16fb9 +0 -0
  652. data/tests/files/working/dot_git/objects/bb/0850568bb43049031a38b01ddb60e4a487f823 +0 -0
  653. data/tests/files/working/dot_git/objects/be/b14380ef26540efcad06bedcd0e302b6bce70e +0 -0
  654. data/tests/files/working/dot_git/objects/c1/3142dd26a1f6f38403a17f6c411cb621b9a1cd +0 -0
  655. data/tests/files/working/dot_git/objects/c1/8b4e9b0829411705d7fa9a1570a20d88780817 +0 -0
  656. data/tests/files/working/dot_git/objects/c5/a3fdb33f052b8f17dac83c533b62244226f4ba +0 -0
  657. data/tests/files/working/dot_git/objects/c6/567e2feccce3893ae0aaac2bf97807338aa8d4 +0 -0
  658. data/tests/files/working/dot_git/objects/cb/45eef6fa1ad913137d91c6b81d2b42d69094a6 +0 -0
  659. data/tests/files/working/dot_git/objects/cd/0d59357b36a447ff27a7c176b46e0a319b42df +0 -0
  660. data/tests/files/working/dot_git/objects/cd/4291452a61ff8b57cf5510addc8ddc5630748e +0 -0
  661. data/tests/files/working/dot_git/objects/cf/7135368cc3bf4920ceeaeebd083e098cfad355 +0 -4
  662. data/tests/files/working/dot_git/objects/cf/b9952c3a28831144a0fac7ea5a2d8517f466c4 +0 -0
  663. data/tests/files/working/dot_git/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d +0 -0
  664. data/tests/files/working/dot_git/objects/d1/4cbc09cc34fb6450b2e96432102be51c8292b8 +0 -0
  665. data/tests/files/working/dot_git/objects/d3/d171221e87a30e059d638f155f899595d96b71 +0 -0
  666. data/tests/files/working/dot_git/objects/d5/b9587b65731e25216743b0caca72051a760211 +0 -2
  667. data/tests/files/working/dot_git/objects/d6/a3aab3e38bc16688b4e636a91e462434210878 +0 -0
  668. data/tests/files/working/dot_git/objects/d6/f31c35d7e010e50568c0d605227028aa7bac66 +0 -0
  669. data/tests/files/working/dot_git/objects/d7/875788aeafdd8e317880c00e3372f683cad91e +0 -0
  670. data/tests/files/working/dot_git/objects/d7/d8a71a719e2a4ca501991a66dab47df804f6ad +0 -0
  671. data/tests/files/working/dot_git/objects/d7/e844eec32d74a3d37c4ce02d7138658e1035d6 +0 -0
  672. data/tests/files/working/dot_git/objects/da/597fb7fba247a5b59d917e90342cf4b9695905 +0 -0
  673. data/tests/files/working/dot_git/objects/da/7b788b1575936a4381050610a37737c70b55a0 +0 -1
  674. data/tests/files/working/dot_git/objects/de/996da0ef3dcee1a28aef9243aa3e255eb825b5 +0 -0
  675. data/tests/files/working/dot_git/objects/de/d54b45e4d49816f6d4256e74d45ba2bb351357 +0 -0
  676. data/tests/files/working/dot_git/objects/e3/6f723934fd1d67c7d21538751f0b1e941141db +0 -0
  677. data/tests/files/working/dot_git/objects/e3/ebef76525fe9e6e8dc739934a08512dff777c0 +0 -0
  678. data/tests/files/working/dot_git/objects/e5/0fa6835cb99747346f19fea5f1ba939da4205f +0 -2
  679. data/tests/files/working/dot_git/objects/e5/650a5c9c4b5a4415195bfb01d4d8dccbc8221b +0 -0
  680. data/tests/files/working/dot_git/objects/e5/76bdfc9ed4627ac954f9390cf7a6151ad2a73e +0 -0
  681. data/tests/files/working/dot_git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 +0 -0
  682. data/tests/files/working/dot_git/objects/e7/ea5938f9c009d32235050bca991d0b9533e440 +0 -0
  683. data/tests/files/working/dot_git/objects/e8/183f05f5db68b3934e93f4bf6bed2bb664e0b5 +0 -0
  684. data/tests/files/working/dot_git/objects/e8/bd03b163f82fba4560c11839d49361a78dec85 +0 -0
  685. data/tests/files/working/dot_git/objects/e9/0de8268373e4fd5ab13310b7745d47ec16813c +0 -0
  686. data/tests/files/working/dot_git/objects/ec/16a327a6a98367d03369b4e998baf3db379313 +0 -0
  687. data/tests/files/working/dot_git/objects/ec/1e3d44e160e18dbfbaa80b5b0780ccc03e678e +0 -0
  688. data/tests/files/working/dot_git/objects/ed/551aa66cf0c6f1a078832f80899faff0ae88dc +0 -0
  689. data/tests/files/working/dot_git/objects/f1/25480ee106989ec4d86554c0d5a1487ad4336a +0 -1
  690. data/tests/files/working/dot_git/objects/f1/410f8735f6f73d3599eb9b5cdd2fb70373335c +0 -3
  691. data/tests/files/working/dot_git/objects/f2/02cb755135d4263589602783b04fb32a079d88 +0 -0
  692. data/tests/files/working/dot_git/objects/f2/ff401fb3fc81f8abb3ca15247aadc1e22b6288 +0 -0
  693. data/tests/files/working/dot_git/objects/f5/501de98279c6454f510188873476f3ead0cee6 +0 -4
  694. data/tests/files/working/dot_git/objects/f7/5f313ca30e534aa9c42463e85108e682d3a14a +0 -0
  695. data/tests/files/working/dot_git/objects/f8/e9c6748331411c0d3511f90bd4e0a1a30acff0 +0 -0
  696. data/tests/files/working/dot_git/objects/f9/bce8995109cfab475d043a7dd9156d5e574ed3 +0 -0
  697. data/tests/files/working/dot_git/objects/fa/6312f71abb153ada6a0399ad710d21bb61e4d8 +0 -0
  698. data/tests/files/working/dot_git/objects/fb/8e78840d79085abf50edebf5b9d6b73ee0fb4c +0 -0
  699. data/tests/files/working/dot_git/objects/fc/b49fa99454f804799a12095292edbca48779ab +0 -0
  700. data/tests/files/working/dot_git/objects/fe/b2ccf88397c2d93f381176067be2727eba330b +0 -0
  701. data/tests/files/working/dot_git/refs/heads/git_grep +0 -1
  702. data/tests/files/working/dot_git/refs/heads/master +0 -1
  703. data/tests/files/working/dot_git/refs/heads/test +0 -1
  704. data/tests/files/working/dot_git/refs/heads/test_branches +0 -1
  705. data/tests/files/working/dot_git/refs/heads/test_object +0 -1
  706. data/tests/files/working/dot_git/refs/remotes/working/master +0 -1
  707. data/tests/files/working/dot_git/refs/tags/gitsearch1 +0 -1
  708. data/tests/files/working/dot_git/refs/tags/v2.5 +0 -1
  709. data/tests/files/working/dot_git/refs/tags/v2.6 +0 -1
  710. data/tests/files/working/dot_git/refs/tags/v2.7 +0 -1
  711. data/tests/files/working/dot_git/refs/tags/v2.8 +0 -1
  712. data/tests/files/working/ex_dir/ex.txt +0 -0
  713. data/tests/files/working/example.txt +0 -1
  714. data/tests/files/working/scott/newfile +0 -1
  715. data/tests/files/working/scott/text.txt +0 -8
  716. data/tests/test_helper.rb +0 -77
  717. data/tests/units/test_archive.rb +0 -55
  718. data/tests/units/test_bare.rb +0 -41
  719. data/tests/units/test_branch.rb +0 -92
  720. data/tests/units/test_config.rb +0 -31
  721. data/tests/units/test_diff.rb +0 -86
  722. data/tests/units/test_each_conflict.rb +0 -49
  723. data/tests/units/test_git_path.rb +0 -29
  724. data/tests/units/test_index_ops.rb +0 -94
  725. data/tests/units/test_init.rb +0 -75
  726. data/tests/units/test_lib.rb +0 -141
  727. data/tests/units/test_log.rb +0 -49
  728. data/tests/units/test_logger.rb +0 -38
  729. data/tests/units/test_merge.rb +0 -104
  730. data/tests/units/test_object.rb +0 -129
  731. data/tests/units/test_remotes.rb +0 -80
  732. data/tests/units/test_repack.rb +0 -30
  733. data/tests/units/test_stashes.rb +0 -36
  734. data/tests/units/test_tags.rb +0 -35
  735. data/tests/units/test_tree_ops.rb +0 -121
data/README CHANGED
@@ -1,6 +1,6 @@
1
1
  == Git Library for Ruby
2
2
 
3
- Library for using Git in Ruby.
3
+ Library for using Git in Ruby. Test.
4
4
 
5
5
  = Homepage
6
6
 
@@ -12,6 +12,12 @@ Git public hosting of the project source code is at:
12
12
 
13
13
  http://github/schacon/ruby-git
14
14
 
15
+ = Install
16
+
17
+ You can install Ruby/Git like this:
18
+
19
+ $ sudo gem install schacon-git --source=http://gems.github.com
20
+
15
21
  = Major Objects
16
22
 
17
23
  Git::Base - this is the object returned from a Git.open or Git.clone.
data/lib/git.rb CHANGED
@@ -92,5 +92,19 @@ module Git
92
92
  def self.clone(repository, name, options = {})
93
93
  Base.clone(repository, name, options)
94
94
  end
95
+
96
+ # Export the current HEAD (or a branch, if <tt>options[:branch]</tt>
97
+ # is specified) into the +name+ directory, then remove all traces of git from the
98
+ # directory.
99
+ #
100
+ # See +clone+ for options. Does not obey the <tt>:remote</tt> option,
101
+ # since the .git info will be deleted anyway; always uses the default
102
+ # remote, 'origin.'
103
+ def self.export(repository, name, options = {})
104
+ options.delete(:remote)
105
+ repo = clone(repository, name, {:depth => 1}.merge(options))
106
+ repo.checkout("origin/#{options[:branch]}") if options[:branch]
107
+ Dir.chdir(repo.dir.to_s) { FileUtils.rm_r '.git' }
108
+ end
95
109
 
96
110
  end
@@ -2,28 +2,15 @@ module Git
2
2
 
3
3
  class Base
4
4
 
5
- @working_directory = nil
6
- @repository = nil
7
- @index = nil
8
-
9
- @lib = nil
10
- @logger = nil
11
-
12
5
  # opens a bare Git Repository - no working directory options
13
6
  def self.bare(git_dir, opts = {})
14
- default = {:repository => git_dir}
15
- git_options = default.merge(opts)
16
-
17
- self.new(git_options)
7
+ self.new({:repository => git_dir}.merge(opts))
18
8
  end
19
9
 
20
10
  # opens a new Git Project from a working directory
21
11
  # you can specify non-standard git_dir and index file in the options
22
- def self.open(working_dir, opts={})
23
- default = {:working_directory => working_dir}
24
- git_options = default.merge(opts)
25
-
26
- self.new(git_options)
12
+ def self.open(working_dir, opts={})
13
+ self.new({:working_directory => working_dir}.merge(opts))
27
14
  end
28
15
 
29
16
  # initializes a git repository
@@ -33,19 +20,17 @@ module Git
33
20
  # :index_file
34
21
  #
35
22
  def self.init(working_dir, opts = {})
36
- default = {:working_directory => working_dir,
37
- :repository => File.join(working_dir, '.git')}
38
- git_options = default.merge(opts)
23
+ opts = {
24
+ :working_directory => working_dir,
25
+ :repository => File.join(working_dir, '.git')
26
+ }.merge(opts)
39
27
 
40
- if git_options[:working_directory]
41
- # if !working_dir, make it
42
- FileUtils.mkdir_p(git_options[:working_directory]) if !File.directory?(git_options[:working_directory])
43
- end
28
+ FileUtils.mkdir_p(opts[:working_directory]) if opts[:working_directory] && !File.directory?(opts[:working_directory])
44
29
 
45
30
  # run git_init there
46
- Git::Lib.new(git_options).init
31
+ Git::Lib.new(opts).init
47
32
 
48
- self.new(git_options)
33
+ self.new(opts)
49
34
  end
50
35
 
51
36
  # clones a git repository locally
@@ -68,17 +53,19 @@ module Git
68
53
 
69
54
  def initialize(options = {})
70
55
  if working_dir = options[:working_directory]
71
- options[:repository] = File.join(working_dir, '.git') if !options[:repository]
72
- options[:index] = File.join(working_dir, '.git', 'index') if !options[:index]
56
+ options[:repository] ||= File.join(working_dir, '.git')
57
+ options[:index] ||= File.join(working_dir, '.git', 'index')
73
58
  end
74
59
  if options[:log]
75
60
  @logger = options[:log]
76
61
  @logger.info("Starting Git")
62
+ else
63
+ @logger = nil
77
64
  end
78
-
79
- @working_directory = Git::WorkingDirectory.new(options[:working_directory]) if options[:working_directory]
80
- @repository = Git::Repository.new(options[:repository]) if options[:repository]
81
- @index = Git::Index.new(options[:index], false) if options[:index]
65
+
66
+ @working_directory = options[:working_directory] ? Git::WorkingDirectory.new(options[:working_directory]) : nil
67
+ @repository = options[:repository] ? Git::Repository.new(options[:repository]) : nil
68
+ @index = options[:index] ? Git::Index.new(options[:index], false) : nil
82
69
  end
83
70
 
84
71
 
@@ -120,7 +107,7 @@ module Git
120
107
  # @git.add
121
108
  # @git.commit('message')
122
109
  # end
123
- def chdir
110
+ def chdir # :yields: the Git::Path
124
111
  Dir.chdir(dir.path) do
125
112
  yield dir.path
126
113
  end
@@ -197,6 +184,24 @@ module Git
197
184
  def branch(branch_name = 'master')
198
185
  Git::Branch.new(self, branch_name)
199
186
  end
187
+
188
+ # returns +true+ if the branch exists locally
189
+ def is_local_branch?(branch)
190
+ branch_names = self.branches.local.map {|b| b.name}
191
+ branch_names.include?(branch)
192
+ end
193
+
194
+ # returns +true+ if the branch exists remotely
195
+ def is_remote_branch?(branch)
196
+ branch_names = self.branches.local.map {|b| b.name}
197
+ branch_names.include?(branch)
198
+ end
199
+
200
+ # returns +true+ if the branch exists
201
+ def is_branch?(branch)
202
+ branch_names = self.branches.map {|b| b.name}
203
+ branch_names.include?(branch)
204
+ end
200
205
 
201
206
  # returns a Git::Remote object
202
207
  def remote(remote_name = 'origin')
@@ -229,8 +234,8 @@ module Git
229
234
  # puts "\t line #{match[0]}: '#{match[1]}'"
230
235
  # end
231
236
  # end
232
- def grep(string)
233
- self.object('HEAD').grep(string)
237
+ def grep(string, path_limiter = nil, opts = {})
238
+ self.object('HEAD').grep(string, path_limiter, opts)
234
239
  end
235
240
 
236
241
  # returns a Git::Diff object
@@ -260,6 +265,11 @@ module Git
260
265
  end
261
266
 
262
267
  # commits all pending changes in the index file to the git repository
268
+ #
269
+ # options:
270
+ # :add_all
271
+ # :allow_empty
272
+ # :author
263
273
  def commit(message, opts = {})
264
274
  self.lib.commit(message, opts)
265
275
  end
@@ -293,8 +303,8 @@ module Git
293
303
  #
294
304
  # @git.config('remote.remote-name.push', 'refs/heads/master:refs/heads/master')
295
305
  #
296
- def push(remote = 'origin', branch = 'master')
297
- self.lib.push(remote, branch)
306
+ def push(remote = 'origin', branch = 'master', tags = false)
307
+ self.lib.push(remote, branch, tags)
298
308
  end
299
309
 
300
310
  # merges one or more branches into the current working branch
@@ -305,9 +315,7 @@ module Git
305
315
  end
306
316
 
307
317
  # iterates over the files which are unmerged
308
- #
309
- # yields file, your_version, their_version
310
- def each_conflict(&block)
318
+ def each_conflict(&block) # :yields: file, your_version, their_version
311
319
  self.lib.conflicts(&block)
312
320
  end
313
321
 
@@ -330,9 +338,7 @@ module Git
330
338
  # @git.merge('scotts_git/master')
331
339
  #
332
340
  def add_remote(name, url, opts = {})
333
- if url.is_a?(Git::Base)
334
- url = url.repo.path
335
- end
341
+ url = url.repo.path if url.is_a?(Git::Base)
336
342
  self.lib.remote_add(name, url, opts)
337
343
  Git::Remote.new(self, name)
338
344
  end
@@ -367,10 +373,19 @@ module Git
367
373
  self.lib.gc
368
374
  end
369
375
 
376
+ def apply(file)
377
+ if File.exists?(file)
378
+ self.lib.apply(file)
379
+ end
380
+ end
381
+
382
+ def apply_mail(file)
383
+ self.lib.apply_mail(file) if File.exists?(file)
384
+ end
370
385
 
371
386
  ## LOWER LEVEL INDEX OPERATIONS ##
372
387
 
373
- def with_index(new_index)
388
+ def with_index(new_index) # :yields: new_index
374
389
  old_index = @index
375
390
  set_index(new_index, false)
376
391
  return_value = yield @index
@@ -415,7 +430,7 @@ module Git
415
430
  self.lib.ls_files
416
431
  end
417
432
 
418
- def with_working(work_dir)
433
+ def with_working(work_dir) # :yields: the Git::WorkingDirectory
419
434
  return_value = false
420
435
  old_working = @working_directory
421
436
  set_working(work_dir)
@@ -3,14 +3,12 @@ module Git
3
3
 
4
4
  attr_accessor :full, :remote, :name
5
5
 
6
- @base = nil
7
- @gcommit = nil
8
- @stashes = nil
9
-
10
6
  def initialize(base, name)
11
7
  @remote = nil
12
8
  @full = name
13
9
  @base = base
10
+ @gcommit = nil
11
+ @stashes = nil
14
12
 
15
13
  parts = name.split('/')
16
14
  if parts[1]
@@ -22,7 +20,7 @@ module Git
22
20
  end
23
21
 
24
22
  def gcommit
25
- @gcommit = @base.gcommit(@full) if !@gcommit
23
+ @gcommit ||= @base.gcommit(@full)
26
24
  @gcommit
27
25
  end
28
26
 
@@ -4,9 +4,6 @@ module Git
4
4
  class Branches
5
5
  include Enumerable
6
6
 
7
- @base = nil
8
- @branches = nil
9
-
10
7
  def initialize(base)
11
8
  @branches = {}
12
9
 
@@ -31,10 +28,8 @@ module Git
31
28
  @branches.size
32
29
  end
33
30
 
34
- def each
35
- @branches.each do |k, b|
36
- yield b
37
- end
31
+ def each(&block)
32
+ @branches.values.each(&block)
38
33
  end
39
34
 
40
35
  def [](symbol)
@@ -44,14 +39,10 @@ module Git
44
39
  def to_s
45
40
  out = ''
46
41
  @branches.each do |k, b|
47
- if b.current
48
- out += "* " + b.to_s + "\n"
49
- else
50
- out += " " + b.to_s + "\n"
51
- end
42
+ out << (b.current ? '* ' : ' ') << b.to_s << "\n"
52
43
  end
53
44
  out
54
45
  end
55
46
 
56
47
  end
57
- end
48
+ end
@@ -4,20 +4,17 @@ module Git
4
4
  class Diff
5
5
  include Enumerable
6
6
 
7
- @base = nil
8
- @from = nil
9
- @to = nil
10
- @path = nil
11
-
12
- @full_diff = nil
13
- @full_diff_files = nil
14
- @stats = nil
15
-
16
7
  def initialize(base, from = nil, to = nil)
17
8
  @base = base
18
9
  @from = from.to_s
19
10
  @to = to.to_s
11
+
12
+ @path = nil
13
+ @full_diff = nil
14
+ @full_diff_files = nil
15
+ @stats = nil
20
16
  end
17
+ attr_reader :from, :to
21
18
 
22
19
  def path(path)
23
20
  @path = path
@@ -63,11 +60,9 @@ module Git
63
60
  @full_diff_files.assoc(key)[1]
64
61
  end
65
62
 
66
- def each
63
+ def each(&block) # :yields: each Git::DiffFile in turn
67
64
  process_full
68
- @full_diff_files.each do |file|
69
- yield file[1]
70
- end
65
+ @full_diff_files.map { |file| file[1] }.each(&block)
71
66
  end
72
67
 
73
68
  class DiffFile
@@ -82,6 +77,11 @@ module Git
82
77
  @src = hash[:src]
83
78
  @dst = hash[:dst]
84
79
  @type = hash[:type]
80
+ @binary = hash[:binary]
81
+ end
82
+
83
+ def binary?
84
+ !!@binary
85
85
  end
86
86
 
87
87
  def blob(type = :dst)
@@ -96,20 +96,20 @@ module Git
96
96
  private
97
97
 
98
98
  def cache_full
99
- if !@full_diff
99
+ unless @full_diff
100
100
  @full_diff = @base.lib.diff_full(@from, @to, {:path_limiter => @path})
101
101
  end
102
102
  end
103
103
 
104
104
  def process_full
105
- if !@full_diff_files
105
+ unless @full_diff_files
106
106
  cache_full
107
107
  @full_diff_files = process_full_diff
108
108
  end
109
109
  end
110
110
 
111
111
  def cache_stats
112
- if !@stats
112
+ unless @stats
113
113
  @stats = @base.lib.diff_stats(@from, @to, {:path_limiter => @path})
114
114
  end
115
115
  end
@@ -133,6 +133,9 @@ module Git
133
133
  final[current_file][:type] = m[1]
134
134
  final[current_file][:mode] = m[2]
135
135
  end
136
+ if m = /^Binary files /.match(line)
137
+ final[current_file][:binary] = true
138
+ end
136
139
  final[current_file][:patch] << "\n" + line
137
140
  end
138
141
  end
@@ -140,4 +143,4 @@ module Git
140
143
  end
141
144
 
142
145
  end
143
- end
146
+ end
@@ -7,14 +7,12 @@ module Git
7
7
 
8
8
  class Lib
9
9
 
10
- @git_dir = nil
11
- @git_index_file = nil
12
- @git_work_dir = nil
13
- @path = nil
14
-
15
- @logger = nil
16
-
17
10
  def initialize(base = nil, logger = nil)
11
+ @git_dir = nil
12
+ @git_index_file = nil
13
+ @git_work_dir = nil
14
+ @path = nil
15
+
18
16
  if base.is_a?(Git::Base)
19
17
  @git_dir = base.repo.path
20
18
  @git_index_file = base.index.path if base.index
@@ -24,9 +22,7 @@ module Git
24
22
  @git_index_file = base[:index]
25
23
  @git_work_dir = base[:working_directory]
26
24
  end
27
- if logger
28
- @logger = logger
29
- end
25
+ @logger = logger
30
26
  end
31
27
 
32
28
  def init
@@ -39,18 +35,22 @@ module Git
39
35
  # {:working_directory} otherwise
40
36
  #
41
37
  # accepts options:
42
- # :remote - name of remote (rather than 'origin')
43
- # :bare - no working directory
38
+ # :remote:: name of remote (rather than 'origin')
39
+ # :bare:: no working directory
40
+ # :depth:: the number of commits back to pull
44
41
  #
45
42
  # TODO - make this work with SSH password or auth_key
46
43
  #
47
44
  def clone(repository, name, opts = {})
48
45
  @path = opts[:path] || '.'
49
- opts[:path] ? clone_dir = File.join(@path, name) : clone_dir = name
46
+ clone_dir = opts[:path] ? File.join(@path, name) : name
50
47
 
51
48
  arr_opts = []
52
49
  arr_opts << "--bare" if opts[:bare]
53
- arr_opts << "-o #{opts[:remote]}" if opts[:remote]
50
+ arr_opts << "-o" << opts[:remote] if opts[:remote]
51
+ arr_opts << "--depth" << opts[:depth].to_i if opts[:depth] && opts[:depth].to_i > 0
52
+
53
+ arr_opts << '--'
54
54
  arr_opts << repository
55
55
  arr_opts << clone_dir
56
56
 
@@ -66,40 +66,41 @@ module Git
66
66
  def log_commits(opts = {})
67
67
  arr_opts = ['--pretty=oneline']
68
68
  arr_opts << "-#{opts[:count]}" if opts[:count]
69
- arr_opts << "--since=\"#{opts[:since]}\"" if opts[:since].is_a? String
69
+ arr_opts << "--since=#{opts[:since]}" if opts[:since].is_a? String
70
+ arr_opts << "--until=#{opts[:until]}" if opts[:until].is_a? String
71
+ arr_opts << "--grep=#{opts[:grep]}" if opts[:grep].is_a? String
72
+ arr_opts << "--author=#{opts[:author]}" if opts[:author].is_a? String
70
73
  arr_opts << "#{opts[:between][0].to_s}..#{opts[:between][1].to_s}" if (opts[:between] && opts[:between].size == 2)
71
74
  arr_opts << opts[:object] if opts[:object].is_a? String
72
- arr_opts << '-- ' + opts[:path_limiter] if opts[:path_limiter].is_a? String
73
-
75
+ arr_opts << '--' << opts[:path_limiter] if opts[:path_limiter].is_a? String
76
+
74
77
  command_lines('log', arr_opts, true).map { |l| l.split.first }
75
78
  end
76
79
 
77
80
  def full_log_commits(opts = {})
78
81
  arr_opts = ['--pretty=raw']
79
82
  arr_opts << "-#{opts[:count]}" if opts[:count]
80
- arr_opts << "--since=\"#{opts[:since]}\"" if opts[:since].is_a? String
83
+ arr_opts << "--skip=#{opts[:skip]}" if opts[:skip]
84
+ arr_opts << "--since=#{opts[:since]}" if opts[:since].is_a? String
85
+ arr_opts << "--until=#{opts[:until]}" if opts[:until].is_a? String
86
+ arr_opts << "--grep=#{opts[:grep]}" if opts[:grep].is_a? String
87
+ arr_opts << "--author=#{opts[:author]}" if opts[:author].is_a? String
81
88
  arr_opts << "#{opts[:between][0].to_s}..#{opts[:between][1].to_s}" if (opts[:between] && opts[:between].size == 2)
82
89
  arr_opts << opts[:object] if opts[:object].is_a? String
83
- arr_opts << '-- ' + opts[:path_limiter] if opts[:path_limiter].is_a? String
90
+ arr_opts << '--' << opts[:path_limiter] if opts[:path_limiter].is_a? String
84
91
 
85
92
  full_log = command_lines('log', arr_opts, true)
86
93
  process_commit_data(full_log)
87
94
  end
88
95
 
89
96
  def revparse(string)
90
- if /\w{40}/.match(string) # passing in a sha - just no-op it
91
- return string
97
+ return string if string =~ /[A-Fa-f0-9]{40}/ # passing in a sha - just no-op it
98
+ rev = ['head', 'remotes', 'tags'].map do |d|
99
+ File.join(@git_dir, 'refs', d, string)
100
+ end.find do |path|
101
+ File.file?(path)
92
102
  end
93
-
94
- head = File.join(@git_dir, 'refs', 'heads', string)
95
- return File.read(head).chomp if File.file?(head)
96
-
97
- head = File.join(@git_dir, 'refs', 'remotes', string)
98
- return File.read(head).chomp if File.file?(head)
99
-
100
- head = File.join(@git_dir, 'refs', 'tags', string)
101
- return File.read(head).chomp if File.file?(head)
102
-
103
+ return File.read(rev).chomp if rev
103
104
  command('rev-parse', string)
104
105
  end
105
106
 
@@ -119,10 +120,10 @@ module Git
119
120
  def commit_data(sha)
120
121
  sha = sha.to_s
121
122
  cdata = command_lines('cat-file', ['commit', sha])
122
- process_commit_data(cdata, sha)
123
+ process_commit_data(cdata, sha, 0)
123
124
  end
124
125
 
125
- def process_commit_data(data, sha = nil)
126
+ def process_commit_data(data, sha = nil, indent = 4)
126
127
  in_message = false
127
128
 
128
129
  if sha
@@ -133,11 +134,11 @@ module Git
133
134
 
134
135
  data.each do |line|
135
136
  line = line.chomp
136
- if in_message && line != ''
137
- hsh['message'] += line + "\n"
138
- end
139
-
140
- if (line != '') && !in_message
137
+ if line == ''
138
+ in_message = !in_message
139
+ elsif in_message
140
+ hsh['message'] << line[indent..-1] << "\n"
141
+ else
141
142
  data = line.split
142
143
  key = data.shift
143
144
  value = data.join(' ')
@@ -151,10 +152,6 @@ module Git
151
152
  else
152
153
  hsh[key] = value
153
154
  end
154
- elsif in_message && line == ''
155
- in_message = false
156
- else
157
- in_message = true
158
155
  end
159
156
  end
160
157
 
@@ -166,14 +163,14 @@ module Git
166
163
  end
167
164
  end
168
165
 
169
- def object_contents(sha)
170
- command('cat-file', ['-p', sha])
166
+ def object_contents(sha, &block)
167
+ command('cat-file', ['-p', sha], &block)
171
168
  end
172
169
 
173
170
  def ls_tree(sha)
174
171
  data = {'blob' => {}, 'tree' => {}}
175
172
 
176
- command_lines('ls-tree', sha.to_s).each do |line|
173
+ command_lines('ls-tree', sha).each do |line|
177
174
  (info, filenm) = line.split("\t")
178
175
  (mode, type, sha) = info.split
179
176
  data[type][filenm] = {:mode => mode, :sha => sha}
@@ -183,11 +180,11 @@ module Git
183
180
  end
184
181
 
185
182
  def mv(file1, file2)
186
- command_lines('mv', [file1, file2])
183
+ command_lines('mv', ['--', file1, file2])
187
184
  end
188
185
 
189
186
  def full_tree(sha)
190
- command_lines('ls-tree', ['-r', sha.to_s])
187
+ command_lines('ls-tree', ['-r', sha])
191
188
  end
192
189
 
193
190
  def tree_depth(sha)
@@ -201,8 +198,7 @@ module Git
201
198
  def branches_all
202
199
  arr = []
203
200
  command_lines('branch', '-a').each do |b|
204
- current = false
205
- current = true if b[0, 2] == '* '
201
+ current = (b[0, 2] == '* ')
206
202
  arr << [b.gsub('* ', '').strip, current]
207
203
  end
208
204
  arr
@@ -224,14 +220,16 @@ module Git
224
220
  # [tree-ish] = [[line_no, match], [line_no, match2]]
225
221
  # [tree-ish] = [[line_no, match], [line_no, match2]]
226
222
  def grep(string, opts = {})
227
- opts[:object] = 'HEAD' if !opts[:object]
223
+ opts[:object] ||= 'HEAD'
228
224
 
229
225
  grep_opts = ['-n']
230
226
  grep_opts << '-i' if opts[:ignore_case]
231
227
  grep_opts << '-v' if opts[:invert_match]
232
- grep_opts << "-e '#{string}'"
228
+ grep_opts << '-e'
229
+ grep_opts << string
233
230
  grep_opts << opts[:object] if opts[:object].is_a?(String)
234
- grep_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
231
+ grep_opts << '--' << opts[:path_limiter] if opts[:path_limiter].is_a? String
232
+
235
233
  hsh = {}
236
234
  command_lines('grep', grep_opts).each do |line|
237
235
  if m = /(.*)\:(\d+)\:(.*)/.match(line)
@@ -246,8 +244,8 @@ module Git
246
244
  diff_opts = ['-p']
247
245
  diff_opts << obj1
248
246
  diff_opts << obj2 if obj2.is_a?(String)
249
- diff_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
250
-
247
+ diff_opts << '--' << opts[:path_limiter] if opts[:path_limiter].is_a? String
248
+
251
249
  command('diff', diff_opts)
252
250
  end
253
251
 
@@ -255,8 +253,8 @@ module Git
255
253
  diff_opts = ['--numstat']
256
254
  diff_opts << obj1
257
255
  diff_opts << obj2 if obj2.is_a?(String)
258
- diff_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
259
-
256
+ diff_opts << '--' << opts[:path_limiter] if opts[:path_limiter].is_a? String
257
+
260
258
  hsh = {:total => {:insertions => 0, :deletions => 0, :lines => 0, :files => 0}, :files => {}}
261
259
 
262
260
  command_lines('diff', diff_opts).each do |file|
@@ -300,12 +298,18 @@ module Git
300
298
  command_lines('ls-files', '--stage').each do |line|
301
299
  (info, file) = line.split("\t")
302
300
  (mode, sha, stage) = info.split
301
+ file = eval(file) if file =~ /^\".*\"$/ # This takes care of quoted strings returned from git
303
302
  hsh[file] = {:path => file, :mode_index => mode, :sha_index => sha, :stage => stage}
304
303
  end
305
304
  hsh
306
305
  end
307
306
 
308
307
 
308
+ def ignored_files
309
+ command_lines('ls-files', ['--others', '-i', '--exclude-standard'])
310
+ end
311
+
312
+
309
313
  def config_remote(name)
310
314
  hsh = {}
311
315
  config_list.each do |key, value|
@@ -317,8 +321,7 @@ module Git
317
321
  end
318
322
 
319
323
  def config_get(name)
320
- c = config_list
321
- c[name]
324
+ config_list[name]
322
325
  #command('config', ['--get', name])
323
326
  end
324
327
 
@@ -356,37 +359,59 @@ module Git
356
359
  ## WRITE COMMANDS ##
357
360
 
358
361
  def config_set(name, value)
359
- command('config', [name, "'#{value}'"])
362
+ command('config', [name, value])
360
363
  end
361
364
 
362
365
  def add(path = '.')
363
- path = path.join(' ') if path.is_a?(Array)
364
- command('add', path)
366
+ arr_opts = ['--']
367
+ if path.is_a?(Array)
368
+ arr_opts += path
369
+ else
370
+ arr_opts << path
371
+ end
372
+ command('add', arr_opts)
365
373
  end
366
374
 
367
375
  def remove(path = '.', opts = {})
368
- path = path.join(' ') if path.is_a?(Array)
369
-
370
376
  arr_opts = ['-f'] # overrides the up-to-date check by default
371
377
  arr_opts << ['-r'] if opts[:recursive]
372
- arr_opts << path
378
+ arr_opts << '--'
379
+ if path.is_a?(Array)
380
+ arr_opts += path
381
+ else
382
+ arr_opts << path
383
+ end
373
384
 
374
385
  command('rm', arr_opts)
375
386
  end
376
387
 
377
388
  def commit(message, opts = {})
378
- arr_opts = ["-m '#{message}'"]
389
+ arr_opts = ['-m', message]
379
390
  arr_opts << '-a' if opts[:add_all]
391
+ arr_opts << '--allow-empty' if opts[:allow_empty]
392
+ arr_opts << "--author" << opts[:author] if opts[:author]
380
393
  command('commit', arr_opts)
381
394
  end
382
395
 
383
396
  def reset(commit, opts = {})
384
397
  arr_opts = []
385
398
  arr_opts << '--hard' if opts[:hard]
386
- arr_opts << commit.to_s if commit
399
+ arr_opts << commit if commit
387
400
  command('reset', arr_opts)
388
401
  end
389
402
 
403
+ def apply(patch_file)
404
+ arr_opts = []
405
+ arr_opts << '--' << patch_file if patch_file
406
+ command('apply', arr_opts)
407
+ end
408
+
409
+ def apply_mail(patch_file)
410
+ arr_opts = []
411
+ arr_opts << '--' << patch_file if patch_file
412
+ command('am', arr_opts)
413
+ end
414
+
390
415
  def stashes_all
391
416
  arr = []
392
417
  filename = File.join(@git_dir, 'logs/refs/stash')
@@ -400,14 +425,16 @@ module Git
400
425
  end
401
426
 
402
427
  def stash_save(message)
403
- output = command('stash save', [message])
404
- return false unless output.match(/HEAD is now at/)
405
- return true
428
+ output = command('stash save', ['--', message])
429
+ output =~ /HEAD is now at/
406
430
  end
407
431
 
408
- def stash_apply(id)
409
- command('stash apply', [id])
410
- # Already uptodate! ---???? What then
432
+ def stash_apply(id = nil)
433
+ if id
434
+ command('stash apply', [id])
435
+ else
436
+ command('stash apply')
437
+ end
411
438
  end
412
439
 
413
440
  def stash_clear
@@ -429,22 +456,23 @@ module Git
429
456
  def checkout(branch, opts = {})
430
457
  arr_opts = []
431
458
  arr_opts << '-f' if opts[:force]
432
- arr_opts << branch.to_s
459
+ arr_opts << '-b' << opts[:new_branch] if opts[:new_branch]
460
+ arr_opts << branch
433
461
 
434
462
  command('checkout', arr_opts)
435
463
  end
436
464
 
437
465
  def checkout_file(version, file)
438
466
  arr_opts = []
439
- arr_opts << version.to_s
440
- arr_opts << file.to_s
467
+ arr_opts << version
468
+ arr_opts << file
441
469
  command('checkout', arr_opts)
442
470
  end
443
471
 
444
472
  def merge(branch, message = nil)
445
473
  arr_opts = []
446
- arr_opts << ["-m '#{message}'"] if message
447
- arr_opts << branch.to_a.join(' ')
474
+ arr_opts << '-m' << message if message
475
+ arr_opts += [branch]
448
476
  command('merge', arr_opts)
449
477
  end
450
478
 
@@ -456,15 +484,13 @@ module Git
456
484
  unmerged
457
485
  end
458
486
 
459
- def conflicts #yields :file, :your, :their
487
+ def conflicts # :yields: file, your, their
460
488
  self.unmerged.each do |f|
461
489
  your = Tempfile.new("YOUR-#{File.basename(f)}").path
462
- arr_opts = [":2:#{f}", ">#{your}"]
463
- command('show', arr_opts)
490
+ command('show', ":2:#{f}", true, "> #{escape your}")
464
491
 
465
492
  their = Tempfile.new("THEIR-#{File.basename(f)}").path
466
- arr_opts = [":3:#{f}", ">#{their}"]
467
- command('show', arr_opts)
493
+ command('show', ":3:#{f}", true, "> #{escape their}")
468
494
  yield(f, your, their)
469
495
  end
470
496
  end
@@ -472,6 +498,7 @@ module Git
472
498
  def remote_add(name, url, opts = {})
473
499
  arr_opts = ['add']
474
500
  arr_opts << '-f' if opts[:with_fetch]
501
+ arr_opts << '--'
475
502
  arr_opts << name
476
503
  arr_opts << url
477
504
 
@@ -481,7 +508,7 @@ module Git
481
508
  # this is documented as such, but seems broken for some reason
482
509
  # i'll try to get around it some other way later
483
510
  def remote_remove(name)
484
- command('remote', ['rm', name])
511
+ command('remote', ['rm', '--', name])
485
512
  end
486
513
 
487
514
  def remotes
@@ -498,11 +525,12 @@ module Git
498
525
 
499
526
 
500
527
  def fetch(remote)
501
- command('fetch', remote.to_s)
528
+ command('fetch', remote)
502
529
  end
503
530
 
504
- def push(remote, branch = 'master')
505
- command('push', [remote.to_s, branch.to_s])
531
+ def push(remote, branch = 'master', tags = false)
532
+ command('push', [remote, branch])
533
+ command('push', ['--tags', remote]) if tags
506
534
  end
507
535
 
508
536
  def tag_sha(tag_name)
@@ -524,7 +552,7 @@ module Git
524
552
  def read_tree(treeish, opts = {})
525
553
  arr_opts = []
526
554
  arr_opts << "--prefix=#{opts[:prefix]}" if opts[:prefix]
527
- arr_opts << treeish.to_a.join(' ')
555
+ arr_opts += [treeish]
528
556
  command('read-tree', arr_opts)
529
557
  end
530
558
 
@@ -533,21 +561,20 @@ module Git
533
561
  end
534
562
 
535
563
  def commit_tree(tree, opts = {})
536
- opts[:message] = "commit tree #{tree}" if !opts[:message]
564
+ opts[:message] ||= "commit tree #{tree}"
537
565
  t = Tempfile.new('commit-message')
538
566
  t.write(opts[:message])
539
567
  t.close
540
568
 
541
569
  arr_opts = []
542
570
  arr_opts << tree
543
- arr_opts << "-p #{opts[:parent]}" if opts[:parent]
544
- opts[:parents].each { |p| arr_opts << "-p #{p.to_s}" } if opts[:parents]
545
- arr_opts << "< #{t.path}"
546
- command('commit-tree', arr_opts)
571
+ arr_opts << '-p' << opts[:parent] if opts[:parent]
572
+ arr_opts += [opts[:parents]].map { |p| ['-p', p] }.flatten if opts[:parents]
573
+ command('commit-tree', arr_opts, true, "< #{escape t.path}")
547
574
  end
548
575
 
549
576
  def update_ref(branch, commit)
550
- command('update-ref', [branch.to_s, commit.to_s])
577
+ command('update-ref', [branch, commit])
551
578
  end
552
579
 
553
580
  def checkout_index(opts = {})
@@ -555,7 +582,8 @@ module Git
555
582
  arr_opts << "--prefix=#{opts[:prefix]}" if opts[:prefix]
556
583
  arr_opts << "--force" if opts[:force]
557
584
  arr_opts << "--all" if opts[:all]
558
- arr_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
585
+ arr_opts << '--' << opts[:path_limiter] if opts[:path_limiter].is_a? String
586
+
559
587
  command('checkout-index', arr_opts)
560
588
  end
561
589
 
@@ -567,49 +595,45 @@ module Git
567
595
  # :remote
568
596
  # :path
569
597
  def archive(sha, file = nil, opts = {})
570
- opts[:format] = 'zip' if !opts[:format]
598
+ opts[:format] ||= 'zip'
571
599
 
572
600
  if opts[:format] == 'tgz'
573
601
  opts[:format] = 'tar'
574
602
  opts[:add_gzip] = true
575
603
  end
576
604
 
577
- if !file
578
- file = Tempfile.new('archive').path
579
- end
605
+ file ||= Tempfile.new('archive').path
580
606
 
581
607
  arr_opts = []
582
608
  arr_opts << "--format=#{opts[:format]}" if opts[:format]
583
609
  arr_opts << "--prefix=#{opts[:prefix]}" if opts[:prefix]
584
610
  arr_opts << "--remote=#{opts[:remote]}" if opts[:remote]
585
611
  arr_opts << sha
586
- arr_opts << opts[:path] if opts[:path]
587
- arr_opts << '| gzip' if opts[:add_gzip]
588
- arr_opts << "> #{file.to_s}"
589
- command('archive', arr_opts)
612
+ arr_opts << '--' << opts[:path] if opts[:path]
613
+ command('archive', arr_opts, true, (opts[:add_gzip] ? '| gzip' : '') + " > #{escape file}")
590
614
  return file
591
615
  end
592
616
 
593
617
  private
594
618
 
595
- def command_lines(cmd, opts = [], chdir = true)
619
+ def command_lines(cmd, opts = [], chdir = true, redirect = '')
596
620
  command(cmd, opts, chdir).split("\n")
597
621
  end
598
622
 
599
- def command(cmd, opts = [], chdir = true)
600
- ENV['GIT_DIR'] = @git_dir if (@git_dir != ENV['GIT_DIR'])
601
- ENV['GIT_INDEX_FILE'] = @git_index_file if (@git_index_file != ENV['GIT_INDEX_FILE'])
602
- ENV['GIT_WORK_TREE'] = @git_work_dir if (@git_work_dir != ENV['GIT_WORK_TREE'])
623
+ def command(cmd, opts = [], chdir = true, redirect = '', &block)
624
+ ENV['GIT_DIR'] = @git_dir
625
+ ENV['GIT_INDEX_FILE'] = @git_index_file
626
+ ENV['GIT_WORK_TREE'] = @git_work_dir
603
627
  path = @git_work_dir || @git_dir || @path
604
628
 
605
- opts = opts.to_a.join(' ')
606
- git_cmd = "git #{cmd} #{opts}"
629
+ opts = [opts].flatten.map {|s| escape(s) }.join(' ')
630
+ git_cmd = "git #{cmd} #{opts} #{redirect} 2>&1"
607
631
 
608
632
  out = nil
609
633
  if chdir && (Dir.getwd != path)
610
- Dir.chdir(path) { out = `#{git_cmd} 2>&1`.chomp }
634
+ Dir.chdir(path) { out = run_command(git_cmd, &block) }
611
635
  else
612
- out = `#{git_cmd} 2>&1`.chomp
636
+ out = run_command(git_cmd, &block)
613
637
  end
614
638
 
615
639
  if @logger
@@ -626,5 +650,17 @@ module Git
626
650
  out
627
651
  end
628
652
 
653
+ def run_command(git_cmd, &block)
654
+ if block_given?
655
+ IO.popen(git_cmd, &block)
656
+ else
657
+ `#{git_cmd}`.chomp
658
+ end
659
+ end
660
+
661
+ def escape(s)
662
+ "'" + s.to_s.gsub('\'', '\'\\\'\'') + "'"
663
+ end
664
+
629
665
  end
630
666
  end