git 1.0.2 → 1.0.3

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 (268) hide show
  1. data/README +69 -0
  2. data/doc/classes/Git.html +87 -6
  3. data/doc/classes/Git/Author.html +175 -0
  4. data/doc/classes/Git/Base.html +857 -297
  5. data/doc/classes/Git/Branch.html +118 -70
  6. data/doc/classes/Git/Branches.html +36 -36
  7. data/doc/classes/Git/Diff.html +64 -64
  8. data/doc/classes/Git/Diff/DiffFile.html +12 -12
  9. data/doc/classes/Git/Lib.html +560 -261
  10. data/doc/classes/Git/Object.html +19 -12
  11. data/doc/classes/Git/Object/AbstractObject.html +239 -66
  12. data/doc/classes/Git/Object/Blob.html +12 -11
  13. data/doc/classes/Git/Object/Commit.html +255 -10
  14. data/doc/classes/Git/Object/Tag.html +7 -33
  15. data/doc/classes/Git/Object/Tree.html +132 -10
  16. data/doc/classes/Git/Path.html +42 -18
  17. data/doc/classes/Git/Remote.html +42 -42
  18. data/doc/created.rid +1 -1
  19. data/doc/files/README.html +106 -1
  20. data/doc/files/lib/git/author_rb.html +101 -0
  21. data/doc/files/lib/git/base_rb.html +1 -1
  22. data/doc/files/lib/git/branch_rb.html +1 -1
  23. data/doc/files/lib/git/index_rb.html +1 -1
  24. data/doc/files/lib/git/lib_rb.html +8 -1
  25. data/doc/files/lib/git/object_rb.html +1 -1
  26. data/doc/files/lib/git/path_rb.html +1 -1
  27. data/doc/files/lib/git_rb.html +2 -1
  28. data/doc/fr_class_index.html +1 -0
  29. data/doc/fr_file_index.html +1 -0
  30. data/doc/fr_method_index.html +183 -134
  31. data/lib/git.rb +47 -1
  32. data/lib/git/base.rb +190 -9
  33. data/lib/git/branch.rb +9 -2
  34. data/lib/git/index.rb +1 -0
  35. data/lib/git/lib.rb +79 -3
  36. data/lib/git/object.rb +77 -34
  37. data/lib/git/path.rb +4 -0
  38. data/tests/files/working.git/objects/00/62cdf4c1e63069eececf54325535e91fd57c42 +0 -0
  39. data/tests/files/working.git/objects/00/ea60e1331b184386392037a7267dfb4a7c7d86 +0 -0
  40. data/tests/files/working.git/objects/01/0b7b79019cb510d8c5849704fd10541655916d +0 -0
  41. data/tests/files/working.git/objects/01/dd46ebe07fc30c10c85c2e926c70f2d7058a6b +0 -0
  42. data/tests/files/working.git/objects/02/b2a02844d00574c234d17bec6294e832f3c4c1 +0 -0
  43. data/tests/files/working.git/objects/06/f4e8a840d23fc0ab94895a5d16827a19f75fb7 +0 -0
  44. data/tests/files/working.git/objects/0b/2fe00801b62b7760c23d554796b05abc16af92 +0 -0
  45. data/tests/files/working.git/objects/0b/5262f6ee3552a99b7081a317e8289d6a4d8e72 +0 -0
  46. data/tests/files/working.git/objects/0d/2c47f07277b3ea30b0884f8e3acd68440507c8 +0 -0
  47. data/tests/files/working.git/objects/0d/519ca9c2eddc44431efe135d0fc8df00e0b975 +0 -0
  48. data/tests/files/working.git/objects/0f/845a0a981bc2f61354fcdd2b6eafe2b2c55c2d +3 -0
  49. data/tests/files/working.git/objects/0f/f4a0357c3d7221a2ef1e4c6b7d5c46d97fe250 +0 -0
  50. data/tests/files/working.git/objects/12/eb889f49f1464b32a51424d7724fb16f6c3a31 +0 -0
  51. data/tests/files/working.git/objects/15/34a65657edf4e5caaa5ce35652dca5e4c7d316 +0 -0
  52. data/tests/files/working.git/objects/15/378a1f3eafe4c5ab4f890883356df917ee5539 +2 -0
  53. data/tests/files/working.git/objects/16/9e6db43d4c09cd610179a7b9826483b4d94123 +0 -0
  54. data/tests/files/working.git/objects/16/d1f96acfd92d09c4f1f56d3441ac55dd30500e +0 -0
  55. data/tests/files/working.git/objects/16/ee5335538f11b4ffcc17b051f8d5db7570a055 +0 -0
  56. data/tests/files/working.git/objects/17/9ef0e0209e90af00f544ff414e0674dfb5f5c7 +0 -0
  57. data/tests/files/working.git/objects/19/9d2f8e60fddd1bb2a1b0bddedde35e5aa8b03f +0 -0
  58. data/tests/files/working.git/objects/1c/c8667014381e2788a94777532a788307f38d26 +1 -0
  59. data/tests/files/working.git/objects/1c/fcfba04eb4e461e9f930d22f528023ab1ddefc +0 -0
  60. data/tests/files/working.git/objects/1d/7be4117ded4534789d85c42ab579644cd3fa12 +0 -0
  61. data/tests/files/working.git/objects/1d/9e4767a95047ca5e395714985afaedb186f4cd +1 -0
  62. data/tests/files/working.git/objects/1f/09f2edb9c0d9275d15960771b363ca6940fbe3 +0 -0
  63. data/tests/files/working.git/objects/1f/691b879df15cf6742502ffc59833b4a40e7aef +0 -0
  64. data/tests/files/working.git/objects/23/751ef6c1fed1304ae1d07020aa73da6f2b93b0 +1 -0
  65. data/tests/files/working.git/objects/24/5582a71306d7360e40c07cd7d849a1aa14a31e +0 -0
  66. data/tests/files/working.git/objects/26/3e3c527004e7b742ed1f747c1bfb7e11825d7a +0 -0
  67. data/tests/files/working.git/objects/27/c0c003dda3e59ba236f53f6661faaf74432b5c +0 -0
  68. data/tests/files/working.git/objects/29/1b6be488d6abc586d3ee03ca61238766625a75 +0 -0
  69. data/tests/files/working.git/objects/2a/f6f7d51b7afdd404a871581ebb3b6ac07fb8cc +0 -0
  70. data/tests/files/working.git/objects/2c/ef51480d44dcc262d16be2812c692d940d5f29 +0 -0
  71. data/tests/files/working.git/objects/2e/20132e8fd40cb3e82248919a10900d31f1816a +0 -0
  72. data/tests/files/working.git/objects/2e/939fd37bbd2da971faa27c3e3de7d5aad40507 +0 -0
  73. data/tests/files/working.git/objects/2f/53e667d1d88e75b3fa300f9ab6e2d8ffd32a15 +0 -0
  74. data/tests/files/working.git/objects/32/4968b9dc40253f2c52a8e3856398c761dea856 +0 -0
  75. data/tests/files/working.git/objects/33/8ecb0183d507498aedb669b796b4f9e8880f00 +0 -0
  76. data/tests/files/working.git/objects/33/edabb4334cbe849a477a0d2893cdb768fa3091 +0 -0
  77. data/tests/files/working.git/objects/34/a566d193dc4702f03149969a2aad1443231560 +1 -0
  78. data/tests/files/working.git/objects/36/fe213c328fd280f33abe00069c4b92eb5a88d1 +0 -0
  79. data/tests/files/working.git/objects/39/66e9fa0e0b9fe9d3ef2fdaa6933f3d0bb82bc3 +0 -0
  80. data/tests/files/working.git/objects/3a/9f195756f5bd26b67c5e1fffd92d68d61be14e +2 -0
  81. data/tests/files/working.git/objects/3a/ac4b445017a8fc07502670ec2dbf744213dd48 +0 -0
  82. data/tests/files/working.git/objects/3b/6eeed9ce43ea893cf48d263da93448edae9f1c +0 -0
  83. data/tests/files/working.git/objects/3c/644f22b9b8edb06e7e298ecac8e71b133061f1 +0 -0
  84. data/tests/files/working.git/objects/3c/c71b13d906e445da52785ddeff40dad1163d49 +2 -0
  85. data/tests/files/working.git/objects/3c/f35bd14cf5f2dd08bbeef8698d700f3a038e5c +0 -0
  86. data/tests/files/working.git/objects/3d/331db92a8ead0565679efb76f328ae69ed1b77 +0 -0
  87. data/tests/files/working.git/objects/44/88516c3c936db58ea485ec2213dab9d13e6628 +0 -0
  88. data/tests/files/working.git/objects/44/987dd95c338fb573726541f270f1a7b55c9d51 +0 -0
  89. data/tests/files/working.git/objects/45/20c29b885e9db9b0df3c7bab7870157e1d00c3 +0 -0
  90. data/tests/files/working.git/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 +0 -0
  91. data/tests/files/working.git/objects/46/00557506be20eb1501a4f15a52e684d4b9ee61 +0 -0
  92. data/tests/files/working.git/objects/46/a60232117527e7b57ac0dd5ea4af2cd3fdb696 +0 -0
  93. data/tests/files/working.git/objects/47/0f6a87fa51dd25f6db0f4725ae37791d449356 +0 -0
  94. data/tests/files/working.git/objects/47/2650d42fa9454e2e61e3da9f5c158b8af6d298 +0 -0
  95. data/tests/files/working.git/objects/47/8e5ee111572790b248eaa99140c5a8f728abc7 +0 -0
  96. data/tests/files/working.git/objects/48/bbf0db7e813affab7d8dd2842b8455ff9876be +0 -0
  97. data/tests/files/working.git/objects/49/b352299735fda3a333c69c6273178b0c3dfa08 +0 -0
  98. data/tests/files/working.git/objects/4a/1e3e4500962c3631a479726bf2e40469594cba +0 -0
  99. data/tests/files/working.git/objects/4a/2bee50944e9285e8f82216c9b0b8a7d3cdd315 +0 -0
  100. data/tests/files/working.git/objects/4a/4e676afe275afecf23130390fe96d0e6d00057 +0 -0
  101. data/tests/files/working.git/objects/4a/de99433ac3e4bcc874cd7de488de29399e9096 +1 -0
  102. data/tests/files/working.git/objects/4b/7c90536eaa830d8c1f6ff49a7885b581d6acef +1 -0
  103. data/tests/files/working.git/objects/4c/411dc8e6ea6fcba0ed56e84aa7707f881d24c7 +0 -0
  104. data/tests/files/working.git/objects/4c/ce9432b2f80461324a61611f6143f8544cd80f +1 -0
  105. data/tests/files/working.git/objects/4c/e44a75510cbfe200b131fdbcc56a86f1b2dc08 +0 -0
  106. data/tests/files/working.git/objects/4d/35ba97a858072c240d327e3ce30c28b333a1b0 +0 -0
  107. data/tests/files/working.git/objects/4d/ff9ef38ef09cbf0e36031bbee22b7cf0c7a8fc +1 -0
  108. data/tests/files/working.git/objects/4e/aafb1d843aec4f8f1612d03de46a08c2143ea9 +0 -0
  109. data/tests/files/working.git/objects/4e/ebc1b62c53241b7fbf7fb33b5230362595bfdd +0 -0
  110. data/tests/files/working.git/objects/4f/4065121cb78fe6116ae7e3075f5c5a446bd08b +0 -0
  111. data/tests/files/working.git/objects/50/3d77289b054742f507d8a8ce7cc51d3841d5b9 +0 -0
  112. data/tests/files/working.git/objects/52/4038b20b297f40d78e7d83e04e38049457312b +0 -0
  113. data/tests/files/working.git/objects/53/a72df554e585e239e41cb1fc498d5aee9bb164 +0 -0
  114. data/tests/files/working.git/objects/54/0200385c3b0b299c7a87ecf59ca94c32fbbe99 +0 -0
  115. data/tests/files/working.git/objects/54/5c81a2e8d1112d5f7356f840a22e8f6abcef8f +2 -0
  116. data/tests/files/working.git/objects/54/6bec6f8872efa41d5d97a369f669165ecda0de +0 -0
  117. data/tests/files/working.git/objects/54/7a4bae347658f0d9eed0d35d31b4561aea7cf8 +2 -0
  118. data/tests/files/working.git/objects/56/195ef83e9e20ca75dddef0630633fc8060ed11 +0 -0
  119. data/tests/files/working.git/objects/57/7ddd894033c46a5fcf2c6f3c4e71cc72f86909 +0 -0
  120. data/tests/files/working.git/objects/58/501cbd0fc5ce832f6b34d37243a520dc19a6cc +1 -0
  121. data/tests/files/working.git/objects/58/73a650a91eb238005444d2c637b451f687951b +0 -0
  122. data/tests/files/working.git/objects/5a/28efd2fcf55b7b58eb7cc66b5db836155bc2bb +0 -0
  123. data/tests/files/working.git/objects/5b/0be7da7cc9ecdb6c2de5f818c30a42fbd2c9fa +1 -0
  124. data/tests/files/working.git/objects/5c/16fb8b958b51f6008f9722b279b1fde0defb76 +3 -0
  125. data/tests/files/working.git/objects/5d/4606820736043f9eed2a6336661d6892c820a5 +0 -0
  126. data/tests/files/working.git/objects/5e/392652a881999392c2757cf9b783c5d47b67f7 +0 -0
  127. data/tests/files/working.git/objects/5e/53019b3238362144c2766f02a2c00d91fcc023 +2 -0
  128. data/tests/files/working.git/objects/62/70c7f48ca41e6fb41b745ddc1bffe521d83194 +2 -0
  129. data/tests/files/working.git/objects/62/7e1097cda3b2e3ad6ba4d3772c0985e1ff349c +0 -0
  130. data/tests/files/working.git/objects/62/bb94c53efae4d53fd0649d129baef4aca87af7 +3 -0
  131. data/tests/files/working.git/objects/62/c9331ffe97bb6388fb7968662b4e97d121e2da +0 -0
  132. data/tests/files/working.git/objects/63/1446ec50808846e31fff786c065e69da2c673b +0 -0
  133. data/tests/files/working.git/objects/64/d0c52ac4c061cf1705e3005dfd86fb70374a14 +0 -0
  134. data/tests/files/working.git/objects/66/80a909b0e02b297bedbe143ef789d297235358 +0 -0
  135. data/tests/files/working.git/objects/6c/2d312ebd67eed4c7e97e3923b3667764e7360e +0 -0
  136. data/tests/files/working.git/objects/6d/e8fb35c2e4a69addd030f2dbb4f73fd4742b5b +0 -0
  137. data/tests/files/working.git/objects/6e/d281c757a969ffe22f3dcfa5830c532479c726 +0 -0
  138. data/tests/files/working.git/objects/70/714b02913c1a249a5ab05021742f0bc7065df7 +0 -0
  139. data/tests/files/working.git/objects/71/894b736711ea0a5def4f536009364d07ee4db3 +2 -0
  140. data/tests/files/working.git/objects/71/c9a23879ff0ac8c49b92d107f3f89c6d1b2d92 +1 -0
  141. data/tests/files/working.git/objects/73/b171450704ea4350f9f884426389fe04c6cd51 +0 -0
  142. data/tests/files/working.git/objects/74/32b657191a10587335e74ae6f0966a7eed2976 +0 -0
  143. data/tests/files/working.git/objects/79/e5b9e6ee5a1e6c52676a6332fe9163adaa92cb +0 -0
  144. data/tests/files/working.git/objects/7c/076f209839d7f910e8c84e41cc94898287ef45 +0 -0
  145. data/tests/files/working.git/objects/7c/60c6ab64c74d52f973d18cd1933318a8d9ae2e +0 -0
  146. data/tests/files/working.git/objects/7c/ac4f8d519d524ed025732ee220f6451665a770 +0 -0
  147. data/tests/files/working.git/objects/7f/5625f6b3c7213287a12c89017361248ed88936 +0 -0
  148. data/tests/files/working.git/objects/7f/86d16e0254f64f784198c6a55ef9bf7adbe7ce +0 -0
  149. data/tests/files/working.git/objects/7f/bfee9f8882ada1ec45c4925baf5649d96c4a16 +0 -0
  150. data/tests/files/working.git/objects/81/25fbe8605d2884e732a185c9a24abcc0d12a1f +0 -0
  151. data/tests/files/working.git/objects/81/d4d5e9b6db474d0f432aa31d44bf690d841e94 +0 -0
  152. data/tests/files/working.git/objects/81/f545324202466d44115656ea463a5bb114345f +0 -0
  153. data/tests/files/working.git/objects/82/d331cf4d3d4ee537c4f866cab2633b46a8d090 +0 -0
  154. data/tests/files/working.git/objects/83/c6a1f0d7d8df18a9d9bfe917707aec37868418 +0 -0
  155. data/tests/files/working.git/objects/85/8f46dd7496faf7af72102ca15cccff832b5377 +0 -0
  156. data/tests/files/working.git/objects/87/c56502c73149f006631129f85dff697e000356 +0 -0
  157. data/tests/files/working.git/objects/88/cf23d06f519bec7b824acd52b87a729555f2e7 +0 -0
  158. data/tests/files/working.git/objects/8a/3fb747983bf2a7f4ef136af4bfcf7993a19307 +0 -0
  159. data/tests/files/working.git/objects/8b/00d915a0ee5aeb32e0b166e1054c2901338c9d +0 -0
  160. data/tests/files/working.git/objects/8c/e3ee48a7e7ec697a99ee33700ec624548ad9e8 +0 -0
  161. data/tests/files/working.git/objects/8d/ae07ab9d98b5fe04d4d7ed804cc36441b68dab +0 -0
  162. data/tests/files/working.git/objects/8d/c79ae7616abf1e2d4d5d97d566f2b2f6cee043 +0 -0
  163. data/tests/files/working.git/objects/92/4dec9203af851c3b3e564697ab3004b35b3c2f +0 -0
  164. data/tests/files/working.git/objects/93/06c056ba3ef9dca6f6365af38148c71196533a +0 -0
  165. data/tests/files/working.git/objects/93/5badc874edd62a8629aaf103418092c73f0a56 +1 -0
  166. data/tests/files/working.git/objects/94/c827875e2cadb8bc8d4cdd900f19aa9e8634c7 +0 -0
  167. data/tests/files/working.git/objects/95/ef665df6ebd69842c5e74a24cb8a12225dee3e +0 -0
  168. data/tests/files/working.git/objects/98/fb6a686563963b8f7e552d747158adbc1c2bd6 +0 -0
  169. data/tests/files/working.git/objects/99/3dd9b1cdeab53e305886c91dbcbc8929eff22e +1 -0
  170. data/tests/files/working.git/objects/9a/e1fbd7636c99d34fdd395cf9bb21ad51417ce7 +1 -0
  171. data/tests/files/working.git/objects/9b/5149aa4ace4ef69461803b0ccbb21139e12626 +0 -0
  172. data/tests/files/working.git/objects/9d/3ad2f09cb7a1d4f4c91182c96f2be537fbc4ff +0 -0
  173. data/tests/files/working.git/objects/9d/6f937544dc3b936d6ee1466d6e216ba18d5686 +0 -0
  174. data/tests/files/working.git/objects/9f/a43bcd45af28e109e6f7b9a6ccd26e8e193a63 +0 -0
  175. data/tests/files/working.git/objects/a0/b3f35b3c39cfb12c4cc819bffe1cf54efb3642 +2 -0
  176. data/tests/files/working.git/objects/a1/15413501949f4f09811fd1aaecf136c012c7d7 +0 -0
  177. data/tests/files/working.git/objects/a1/a3069efcc64330fb6c66004e69b870da3d6186 +0 -0
  178. data/tests/files/working.git/objects/a3/62d30d5fe1021cabc4c90f073ba2511d5a43a1 +0 -0
  179. data/tests/files/working.git/objects/a3/c1f067074cdc9aa998cb5f3cad46a6f17aab2d +0 -0
  180. data/tests/files/working.git/objects/a3/db7143944dcfa006fefe7fb49c48793cb29ade +2 -0
  181. data/tests/files/working.git/objects/a4/4a5e945176ff31be83ffca3e7c68a8b6a45ea5 +1 -0
  182. data/tests/files/working.git/objects/a5/1546fabf88ddef5a9fd91b3989dd8ccae2edf3 +0 -0
  183. data/tests/files/working.git/objects/a6/b25c4b27ee99f93fd611154202af5f9e3c99de +2 -0
  184. data/tests/files/working.git/objects/a7/88a1cba299638a2c898fcfaae1f69a1549853d +0 -0
  185. data/tests/files/working.git/objects/a8/98e8a6b143188022863bc1cab0b5f7514624ba +0 -0
  186. data/tests/files/working.git/objects/a8/b607b221454c4cd7bc7831b2d19712bb4ff888 +0 -0
  187. data/tests/files/working.git/objects/a9/e2d9b71b616531f04a65ae5b972ba5d1f2cb93 +0 -0
  188. data/tests/files/working.git/objects/a9/e2f17562ae78a75dc855bb3dc9e87364195dcf +0 -0
  189. data/tests/files/working.git/objects/ab/16bc1812fd6226780a841300a2432dfd0c6719 +0 -0
  190. data/tests/files/working.git/objects/ac/8f48bbb7b31c945ba6a4fbe6950d009a5d8373 +0 -0
  191. data/tests/files/working.git/objects/ae/21cabd23aee99a719fc828977c0df9e8b19363 +0 -0
  192. data/tests/files/working.git/objects/b0/3003311ad3fa368b475df58390353868e13c91 +2 -0
  193. data/tests/files/working.git/objects/b0/ee249c5e5cc9464f3bc0034ab05632dcb87a23 +0 -0
  194. data/tests/files/working.git/objects/b1/288f8beeaa6cf048c3a9f578d4e266fab8820e +0 -0
  195. data/tests/files/working.git/objects/b1/5336206c9040f4c52660b3f3c76ee02ccece56 +0 -0
  196. data/tests/files/working.git/objects/b1/b18f5bea24648a1b08e5bba88728c15ec3cb50 +2 -0
  197. data/tests/files/working.git/objects/b4/5724ee906d2561901208ba924add09ab95ccb3 +0 -0
  198. data/tests/files/working.git/objects/b5/d8fc3cb740eb643c66eb5f4a97345fdb806259 +0 -0
  199. data/tests/files/working.git/objects/b6/153b8fe540288d66b974ae05113338ab1a61f0 +0 -0
  200. data/tests/files/working.git/objects/b6/987bc1201ad19774c43c0ea8078f6f51d76bcb +0 -0
  201. data/tests/files/working.git/objects/b6/9e6acd87e5f9114ce6580b095ef1057a8fe5bb +0 -0
  202. data/tests/files/working.git/objects/b9/8f4909807c8c84a1dc1b62b4a339ae1777f369 +3 -0
  203. data/tests/files/working.git/objects/ba/492c62b6227d7f3507b4dcc6e6d5f13790eabf +0 -0
  204. data/tests/files/working.git/objects/ba/c335cb9dc058a477d04cde34c07d1f70d16fb9 +0 -0
  205. data/tests/files/working.git/objects/bb/0850568bb43049031a38b01ddb60e4a487f823 +0 -0
  206. data/tests/files/working.git/objects/be/b14380ef26540efcad06bedcd0e302b6bce70e +0 -0
  207. data/tests/files/working.git/objects/c1/3142dd26a1f6f38403a17f6c411cb621b9a1cd +0 -0
  208. data/tests/files/working.git/objects/c1/8b4e9b0829411705d7fa9a1570a20d88780817 +0 -0
  209. data/tests/files/working.git/objects/c5/a3fdb33f052b8f17dac83c533b62244226f4ba +0 -0
  210. data/tests/files/working.git/objects/c6/567e2feccce3893ae0aaac2bf97807338aa8d4 +0 -0
  211. data/tests/files/working.git/objects/cb/45eef6fa1ad913137d91c6b81d2b42d69094a6 +0 -0
  212. data/tests/files/working.git/objects/cd/0d59357b36a447ff27a7c176b46e0a319b42df +0 -0
  213. data/tests/files/working.git/objects/cd/4291452a61ff8b57cf5510addc8ddc5630748e +0 -0
  214. data/tests/files/working.git/objects/cf/7135368cc3bf4920ceeaeebd083e098cfad355 +4 -0
  215. data/tests/files/working.git/objects/cf/b9952c3a28831144a0fac7ea5a2d8517f466c4 +0 -0
  216. data/tests/files/working.git/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d +0 -0
  217. data/tests/files/working.git/objects/d1/4cbc09cc34fb6450b2e96432102be51c8292b8 +0 -0
  218. data/tests/files/working.git/objects/d3/d171221e87a30e059d638f155f899595d96b71 +0 -0
  219. data/tests/files/working.git/objects/d5/b9587b65731e25216743b0caca72051a760211 +2 -0
  220. data/tests/files/working.git/objects/d6/a3aab3e38bc16688b4e636a91e462434210878 +0 -0
  221. data/tests/files/working.git/objects/d6/f31c35d7e010e50568c0d605227028aa7bac66 +0 -0
  222. data/tests/files/working.git/objects/d7/875788aeafdd8e317880c00e3372f683cad91e +0 -0
  223. data/tests/files/working.git/objects/d7/d8a71a719e2a4ca501991a66dab47df804f6ad +0 -0
  224. data/tests/files/working.git/objects/d7/e844eec32d74a3d37c4ce02d7138658e1035d6 +0 -0
  225. data/tests/files/working.git/objects/da/597fb7fba247a5b59d917e90342cf4b9695905 +0 -0
  226. data/tests/files/working.git/objects/da/7b788b1575936a4381050610a37737c70b55a0 +1 -0
  227. data/tests/files/working.git/objects/de/996da0ef3dcee1a28aef9243aa3e255eb825b5 +0 -0
  228. data/tests/files/working.git/objects/de/d54b45e4d49816f6d4256e74d45ba2bb351357 +0 -0
  229. data/tests/files/working.git/objects/e3/6f723934fd1d67c7d21538751f0b1e941141db +0 -0
  230. data/tests/files/working.git/objects/e3/ebef76525fe9e6e8dc739934a08512dff777c0 +0 -0
  231. data/tests/files/working.git/objects/e5/0fa6835cb99747346f19fea5f1ba939da4205f +2 -0
  232. data/tests/files/working.git/objects/e5/650a5c9c4b5a4415195bfb01d4d8dccbc8221b +0 -0
  233. data/tests/files/working.git/objects/e5/76bdfc9ed4627ac954f9390cf7a6151ad2a73e +0 -0
  234. data/tests/files/working.git/objects/e7/ea5938f9c009d32235050bca991d0b9533e440 +0 -0
  235. data/tests/files/working.git/objects/e8/183f05f5db68b3934e93f4bf6bed2bb664e0b5 +0 -0
  236. data/tests/files/working.git/objects/e8/bd03b163f82fba4560c11839d49361a78dec85 +0 -0
  237. data/tests/files/working.git/objects/e9/0de8268373e4fd5ab13310b7745d47ec16813c +0 -0
  238. data/tests/files/working.git/objects/ec/16a327a6a98367d03369b4e998baf3db379313 +0 -0
  239. data/tests/files/working.git/objects/ec/1e3d44e160e18dbfbaa80b5b0780ccc03e678e +0 -0
  240. data/tests/files/working.git/objects/ed/551aa66cf0c6f1a078832f80899faff0ae88dc +0 -0
  241. data/tests/files/working.git/objects/f1/25480ee106989ec4d86554c0d5a1487ad4336a +1 -0
  242. data/tests/files/working.git/objects/f1/410f8735f6f73d3599eb9b5cdd2fb70373335c +3 -0
  243. data/tests/files/working.git/objects/f2/02cb755135d4263589602783b04fb32a079d88 +0 -0
  244. data/tests/files/working.git/objects/f2/ff401fb3fc81f8abb3ca15247aadc1e22b6288 +0 -0
  245. data/tests/files/working.git/objects/f5/501de98279c6454f510188873476f3ead0cee6 +4 -0
  246. data/tests/files/working.git/objects/f7/5f313ca30e534aa9c42463e85108e682d3a14a +0 -0
  247. data/tests/files/working.git/objects/f8/e9c6748331411c0d3511f90bd4e0a1a30acff0 +0 -0
  248. data/tests/files/working.git/objects/f9/bce8995109cfab475d043a7dd9156d5e574ed3 +0 -0
  249. data/tests/files/working.git/objects/fa/6312f71abb153ada6a0399ad710d21bb61e4d8 +0 -0
  250. data/tests/files/working.git/objects/fb/8e78840d79085abf50edebf5b9d6b73ee0fb4c +0 -0
  251. data/tests/files/working.git/objects/fc/b49fa99454f804799a12095292edbca48779ab +0 -0
  252. data/tests/files/working.git/objects/fe/b2ccf88397c2d93f381176067be2727eba330b +0 -0
  253. data/tests/files/working.git/refs/heads/git_grep +1 -0
  254. data/tests/files/working.git/refs/heads/master +1 -1
  255. data/tests/files/working.git/refs/heads/test +1 -0
  256. data/tests/files/working.git/refs/heads/test_branches +1 -0
  257. data/tests/files/working.git/refs/heads/test_object +1 -0
  258. data/tests/files/working.git/refs/tags/gitsearch1 +1 -0
  259. data/tests/files/working.git/refs/tags/v2.5 +1 -0
  260. data/tests/files/working.git/refs/tags/v2.6 +1 -0
  261. data/tests/files/working.git/refs/tags/v2.7 +1 -0
  262. data/tests/files/working.git/refs/tags/v2.8 +1 -0
  263. data/tests/units/test_archive.rb +55 -0
  264. data/tests/units/test_bare.rb +41 -0
  265. data/tests/units/test_index_ops.rb +1 -1
  266. data/tests/units/test_object.rb +23 -14
  267. data/tests/units/test_tree_ops.rb +121 -0
  268. metadata +372 -2
@@ -1,3 +1,5 @@
1
+ require 'tempfile'
2
+
1
3
  module Git
2
4
 
3
5
  class GitExecuteError < StandardError
@@ -13,8 +15,8 @@ module Git
13
15
  def initialize(base = nil)
14
16
  if base.is_a?(Git::Base)
15
17
  @git_dir = base.repo.path
16
- @git_index_file = base.index.path
17
- @git_work_dir = base.dir.path
18
+ @git_index_file = base.index.path if base.index
19
+ @git_work_dir = base.dir.path if base.dir
18
20
  elsif base.is_a?(Hash)
19
21
  @git_dir = base[:repository]
20
22
  @git_index_file = base[:index]
@@ -71,6 +73,10 @@ module Git
71
73
  command('rev-parse', string)
72
74
  end
73
75
 
76
+ def namerev(string)
77
+ command('name-rev', string).split[1]
78
+ end
79
+
74
80
  def object_type(sha)
75
81
  command('cat-file', ['-t', sha])
76
82
  end
@@ -344,6 +350,76 @@ module Git
344
350
  command('repack', ['-a', '-d'])
345
351
  end
346
352
 
353
+ # reads a tree into the current index file
354
+ def read_tree(treeish, opts = {})
355
+ arr_opts = []
356
+ arr_opts << "--prefix=#{opts[:prefix]}" if opts[:prefix]
357
+ arr_opts << treeish.to_a.join(' ')
358
+ command('read-tree', arr_opts)
359
+ end
360
+
361
+ def write_tree
362
+ command('write-tree')
363
+ end
364
+
365
+ def commit_tree(tree, opts = {})
366
+ opts[:message] = "commit tree #{tree}" if !opts[:message]
367
+ t = Tempfile.new('commit-message') do |t|
368
+ t.write(opts[:message])
369
+ end
370
+
371
+ arr_opts = []
372
+ arr_opts << tree
373
+ arr_opts << "-p #{opts[:parent]}" if opts[:parent]
374
+ opts[:parents].each { |p| arr_opts << "-p #{p.to_s}" } if opts[:parents]
375
+ arr_opts << "< #{t.path}"
376
+ command('commit-tree', arr_opts)
377
+ end
378
+
379
+ def update_ref(branch, commit)
380
+ command('update-ref', [branch.to_s, commit.to_s])
381
+ end
382
+
383
+ def checkout_index(opts = {})
384
+ arr_opts = []
385
+ arr_opts << "--prefix=#{opts[:prefix]}" if opts[:prefix]
386
+ arr_opts << "--force" if opts[:force]
387
+ arr_opts << "--all" if opts[:all]
388
+ arr_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
389
+ command('checkout-index', arr_opts)
390
+ end
391
+
392
+ # creates an archive file
393
+ #
394
+ # options
395
+ # :format (zip, tar)
396
+ # :prefix
397
+ # :remote
398
+ # :path
399
+ def archive(sha, file = nil, opts = {})
400
+ opts[:format] = 'zip' if !opts[:format]
401
+
402
+ if opts[:format] == 'tgz'
403
+ opts[:format] = 'tar'
404
+ opts[:add_gzip] = true
405
+ end
406
+
407
+ if !file
408
+ file = Tempfile.new('archive').path
409
+ end
410
+
411
+ arr_opts = []
412
+ arr_opts << "--format=#{opts[:format]}" if opts[:format]
413
+ arr_opts << "--prefix=#{opts[:prefix]}" if opts[:prefix]
414
+ arr_opts << "--remote=#{opts[:remote]}" if opts[:remote]
415
+ arr_opts << sha
416
+ arr_opts << opts[:path] if opts[:path]
417
+ arr_opts << '| gzip' if opts[:add_gzip]
418
+ arr_opts << "> #{file.to_s}"
419
+ command('archive', arr_opts)
420
+ return file
421
+ end
422
+
347
423
  private
348
424
 
349
425
  def command_lines(cmd, opts = {})
@@ -370,7 +446,7 @@ module Git
370
446
  if $?.exitstatus == 1 && out == ''
371
447
  return ''
372
448
  end
373
- raise Git::GitExecuteError.new(git_cmd + ':' + out.to_s)
449
+ raise Git::GitExecuteError.new(git_cmd + ':' + out.to_s)
374
450
  end
375
451
  out
376
452
  end
@@ -3,22 +3,34 @@ module Git
3
3
  class GitTagNameDoesNotExist< StandardError
4
4
  end
5
5
 
6
+ # represents a git object
6
7
  class Object
7
8
 
8
9
  class AbstractObject
9
- attr_accessor :sha, :size, :type, :mode
10
+ attr_accessor :objectish, :size, :type, :mode
10
11
 
11
12
  @base = nil
12
-
13
- def initialize(base, sha)
13
+ @contents = nil
14
+ @size = nil
15
+ @sha = nil
16
+
17
+ def initialize(base, objectish)
14
18
  @base = base
15
- @sha = sha.to_s
16
- @size = @base.lib.object_size(@sha)
19
+ @objectish = objectish.to_s
17
20
  setup
18
21
  end
19
-
22
+
23
+ def sha
24
+ @sha || @sha = @base.lib.revparse(@objectish)
25
+ end
26
+
27
+ def size
28
+ @size || @size = @base.lib.object_size(@objectish)
29
+ end
30
+
31
+ # caches the contents of this call in memory
20
32
  def contents
21
- @base.lib.object_contents(@sha)
33
+ @contents || @contents = @base.lib.object_contents(@objectish)
22
34
  end
23
35
 
24
36
  def contents_array
@@ -30,23 +42,44 @@ module Git
30
42
  end
31
43
 
32
44
  def to_s
33
- @sha
45
+ sha
34
46
  end
35
47
 
36
48
  def grep(string, path_limiter = nil, opts = {})
37
- default = {:object => @sha, :path_limiter => path_limiter}
49
+ default = {:object => sha, :path_limiter => path_limiter}
38
50
  grep_options = default.merge(opts)
39
51
  @base.lib.grep(string, grep_options)
40
52
  end
41
53
 
42
54
  def diff(objectish)
43
- Git::Diff.new(@base, @sha, objectish)
55
+ Git::Diff.new(@base, @objectish, objectish)
44
56
  end
45
57
 
46
58
  def log(count = 30)
47
- Git::Log.new(@base, count).object(@sha)
59
+ Git::Log.new(@base, count).object(@objectish)
48
60
  end
49
61
 
62
+ # creates an archive of this object (tree)
63
+ def archive(file = nil, opts = {})
64
+ @base.lib.archive(@objectish, file, opts)
65
+ end
66
+
67
+ def tree?
68
+ @type == 'tree'
69
+ end
70
+
71
+ def blob?
72
+ @type == 'blob'
73
+ end
74
+
75
+ def commit?
76
+ @type == 'commit'
77
+ end
78
+
79
+ def tag?
80
+ @type == 'tag'
81
+ end
82
+
50
83
  end
51
84
 
52
85
 
@@ -57,9 +90,11 @@ module Git
57
90
  @mode = mode
58
91
  end
59
92
 
60
- def setup
61
- @type = 'blob'
62
- end
93
+ private
94
+
95
+ def setup
96
+ @type = 'blob'
97
+ end
63
98
  end
64
99
 
65
100
  class Tree < AbstractObject
@@ -71,11 +106,7 @@ module Git
71
106
  super(base, sha)
72
107
  @mode = mode
73
108
  end
74
-
75
- def setup
76
- @type = 'tree'
77
- end
78
-
109
+
79
110
  def children
80
111
  blobs.merge(subtrees)
81
112
  end
@@ -92,15 +123,19 @@ module Git
92
123
  end
93
124
  alias_method :subtrees, :trees
94
125
  alias_method :subdirectories, :trees
95
-
126
+
96
127
  private
97
128
 
129
+ def setup
130
+ @type = 'tree'
131
+ end
132
+
98
133
  # actually run the git command
99
134
  def check_tree
100
135
  if !@trees
101
136
  @trees = {}
102
137
  @blobs = {}
103
- data = @base.lib.ls_tree(@sha)
138
+ data = @base.lib.ls_tree(@objectish)
104
139
  data['tree'].each { |k, d| @trees[k] = Tree.new(@base, d[:sha], d[:mode]) }
105
140
  data['blob'].each { |k, d| @blobs[k] = Blob.new(@base, d[:sha], d[:mode]) }
106
141
  end
@@ -116,15 +151,15 @@ module Git
116
151
  @committer = nil
117
152
  @message = nil
118
153
 
119
- def setup
120
- @type = 'commit'
121
- end
122
-
123
154
  def message
124
155
  check_commit
125
156
  @message
126
157
  end
127
158
 
159
+ def name
160
+ @base.lib.namerev(sha)
161
+ end
162
+
128
163
  def gtree
129
164
  check_commit
130
165
  Tree.new(@base, @tree)
@@ -164,13 +199,17 @@ module Git
164
199
  def diff_parent
165
200
  diff(parent)
166
201
  end
167
-
202
+
168
203
  private
169
204
 
205
+ def setup
206
+ @type = 'commit'
207
+ end
208
+
170
209
  # see if this object has been initialized and do so if not
171
210
  def check_commit
172
211
  if !@tree
173
- data = @base.lib.commit_data(@sha)
212
+ data = @base.lib.commit_data(@objectish)
174
213
  @committer = Git::Author.new(data['committer'])
175
214
  @author = Git::Author.new(data['author'])
176
215
  @tree = Tree.new(@base, data['tree'])
@@ -189,15 +228,18 @@ module Git
189
228
  @name = name
190
229
  end
191
230
 
192
- def setup
193
- @type = 'tag'
194
- end
231
+ private
232
+
233
+ def setup
234
+ @type = 'tag'
235
+ end
236
+
195
237
  end
196
238
 
197
239
  class << self
198
240
  # if we're calling this, we don't know what type it is yet
199
241
  # so this is our little factory method
200
- def new(base, objectish, is_tag = false)
242
+ def new(base, objectish, type = nil, is_tag = false)
201
243
  if is_tag
202
244
  sha = base.lib.tag_sha(objectish)
203
245
  if sha == ''
@@ -205,8 +247,9 @@ module Git
205
247
  end
206
248
  return Tag.new(base, sha, objectish)
207
249
  else
208
- sha = base.lib.revparse(objectish)
209
- type = base.lib.object_type(sha)
250
+ if !type
251
+ type = base.lib.object_type(objectish)
252
+ end
210
253
  end
211
254
 
212
255
  klass =
@@ -215,7 +258,7 @@ module Git
215
258
  when /commit/: Commit
216
259
  when /tree/: Tree
217
260
  end
218
- klass::new(base, sha)
261
+ klass::new(base, objectish)
219
262
  end
220
263
  end
221
264
 
@@ -19,5 +19,9 @@ module Git
19
19
  File.writable?(@path)
20
20
  end
21
21
 
22
+ def to_s
23
+ @path
24
+ end
25
+
22
26
  end
23
27
  end
@@ -0,0 +1,3 @@
1
+ x��A� E]s
2
+ .`�c�I�aj�hi`�x|�gp��_�<*۶�C�He�92x�Ln�ѣ�.�'6���0[�ԁ�w��� ǔ� �4#��CB;���
3
+ OYJՍ��~.He׷F���7�R[w�Jg��c��$u�t�����+����Q�����t���� �X-
@@ -0,0 +1,2 @@
1
+ x��Q
2
+ �0D��)r%i7�DO��l�mJ���7x�f����v��M�&? L"D����&� �U(!N�NM6�&�D2��g�������Ih₆����\U��E\7{=����\�љ����pm�� �����z���`�����9��n��O��"�f��{Y
@@ -0,0 +1 @@
1
+ x��A��0 Eg�S��Ԗe(CaN�H�$���Va���3t��[<>����ϐ������%��$ .��X����JTᒸ�u��� eXˬ+�(Yj� ��F��BA��Ӷ���f�7�v����q�?���ٴ��c��SWb���IǏ��� 1"��!�Ӟ�M?�t��� e>X�
@@ -0,0 +1 @@
1
+ xK��OR06`0�����
@@ -0,0 +1 @@
1
+ x��Mn�0 �9�/Ч�B���ԓ�., (1�;�C=Cw3��4\�}33�Y�S�˜rQ?�N ��*�y�qAB'�D���˒<ƌXXɹIE%邙�f"/!S��.[k��� �W�z�G��E?Tj�i_�����&�ֶ���O�>�CN#��ٹ�^��&�i{-�nR�*ՠ���sx�_�
@@ -0,0 +1,2 @@
1
+ x��Q
2
+ �0D��)�ʦI� ��d�I�`MIV����߼�y��m[Fƒ֜af�v�9&�)�#J�$e�)��0��qع旂 �g��#����h�#w�H�
@@ -0,0 +1,2 @@
1
+ xM�A
2
+ �@@�֞��g&,�a4�~�k�>���q�&U�d ����([~w"Ӭ������W>�u۵� �F