ohloh_scm 2.5.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. checksums.yaml +5 -5
  2. data/{bin → .bin}/accept_svn_ssl_certificate +0 -0
  3. data/.bin/check_scm_version +28 -0
  4. data/.bin/run-test +3 -0
  5. data/.bin/run-tests +3 -0
  6. data/{bin → .bin}/string_encoder +0 -0
  7. data/.git_hooks/pre-commit +20 -0
  8. data/.gitignore +1 -4
  9. data/.rubocop.yml +13 -0
  10. data/.ruby-version +1 -2
  11. data/.travis.yml +3 -2
  12. data/Dockerfile +8 -4
  13. data/Gemfile +14 -0
  14. data/Gemfile.lock +54 -0
  15. data/{COPYING → LICENSE.txt} +0 -0
  16. data/README.md +52 -116
  17. data/Rakefile +7 -29
  18. data/lib/ohloh_scm.rb +26 -32
  19. data/lib/ohloh_scm/activity.rb +38 -0
  20. data/lib/ohloh_scm/bzr.rb +12 -0
  21. data/lib/ohloh_scm/bzr/activity.rb +191 -0
  22. data/lib/ohloh_scm/bzr/scm.rb +24 -0
  23. data/lib/ohloh_scm/bzr/status.rb +8 -0
  24. data/lib/ohloh_scm/bzr/validation.rb +18 -0
  25. data/lib/ohloh_scm/commit.rb +44 -41
  26. data/lib/ohloh_scm/core.rb +22 -0
  27. data/lib/ohloh_scm/cvs.rb +11 -0
  28. data/lib/ohloh_scm/cvs/activity.rb +149 -0
  29. data/lib/ohloh_scm/cvs/scm.rb +149 -0
  30. data/lib/ohloh_scm/cvs/status.rb +14 -0
  31. data/lib/ohloh_scm/cvs/validation.rb +106 -0
  32. data/lib/ohloh_scm/data/git_ignore_list.rb +29 -0
  33. data/lib/ohloh_scm/diff.rb +42 -39
  34. data/lib/ohloh_scm/factory.rb +11 -0
  35. data/lib/ohloh_scm/git.rb +11 -0
  36. data/lib/ohloh_scm/git/activity.rb +317 -0
  37. data/lib/ohloh_scm/git/scm.rb +137 -0
  38. data/lib/ohloh_scm/git/status.rb +13 -0
  39. data/lib/ohloh_scm/git/validation.rb +18 -0
  40. data/lib/ohloh_scm/git_svn.rb +11 -0
  41. data/lib/ohloh_scm/git_svn/activity.rb +84 -0
  42. data/lib/ohloh_scm/git_svn/scm.rb +91 -0
  43. data/lib/ohloh_scm/git_svn/status.rb +8 -0
  44. data/lib/ohloh_scm/git_svn/validation.rb +8 -0
  45. data/lib/ohloh_scm/hg.rb +12 -0
  46. data/lib/ohloh_scm/hg/activity.rb +188 -0
  47. data/lib/ohloh_scm/hg/scm.rb +51 -0
  48. data/lib/ohloh_scm/hg/status.rb +8 -0
  49. data/lib/ohloh_scm/hg/validation.rb +18 -0
  50. data/lib/ohloh_scm/parser.rb +30 -0
  51. data/lib/ohloh_scm/parser/array_writer.rb +15 -0
  52. data/lib/ohloh_scm/parser/branch_number.rb +63 -0
  53. data/lib/ohloh_scm/{parsers → parser}/bzr_xml_parser.rb +65 -55
  54. data/lib/ohloh_scm/parser/cvs_parser.rb +161 -0
  55. data/lib/ohloh_scm/parser/git_parser.rb +128 -0
  56. data/lib/ohloh_scm/parser/hg_parser.rb +78 -0
  57. data/lib/ohloh_scm/{parsers → parser}/hg_style +0 -0
  58. data/lib/ohloh_scm/{parsers → parser}/hg_verbose_style +0 -0
  59. data/lib/ohloh_scm/parser/svn_parser.rb +83 -0
  60. data/lib/ohloh_scm/py_bridge.rb +9 -0
  61. data/lib/ohloh_scm/py_bridge/bzr_client.rb +28 -0
  62. data/lib/ohloh_scm/{adapters/bzrlib/bzrlib_pipe_server.py → py_bridge/bzr_server.py} +1 -1
  63. data/lib/ohloh_scm/py_bridge/hg_client.rb +30 -0
  64. data/lib/ohloh_scm/{adapters/hglib/server.py → py_bridge/hg_server.py} +0 -0
  65. data/lib/ohloh_scm/py_bridge/py_client.rb +45 -0
  66. data/lib/ohloh_scm/scm.rb +26 -0
  67. data/lib/ohloh_scm/status.rb +24 -0
  68. data/lib/ohloh_scm/string_extensions.rb +11 -0
  69. data/lib/ohloh_scm/svn.rb +11 -0
  70. data/lib/ohloh_scm/svn/activity.rb +95 -0
  71. data/lib/ohloh_scm/svn/scm.rb +95 -0
  72. data/lib/ohloh_scm/svn/status.rb +8 -0
  73. data/lib/ohloh_scm/svn/validation.rb +56 -0
  74. data/lib/ohloh_scm/system.rb +44 -0
  75. data/lib/ohloh_scm/validation.rb +83 -0
  76. data/lib/ohloh_scm/version.rb +8 -1
  77. data/ohloh_scm.gemspec +18 -15
  78. data/spec/.rubocop.yml +22 -0
  79. data/spec/benchmarks/hg_bzr_bash_vs_py_api.rb +39 -0
  80. data/spec/benchmarks/process_spawn_benchmark.rb +133 -0
  81. data/spec/helpers/assert_scm_attr_helper.rb +31 -0
  82. data/spec/helpers/commit_tokens_helper.rb +26 -0
  83. data/spec/helpers/generic_helper.rb +5 -0
  84. data/spec/helpers/repository_helper.rb +36 -0
  85. data/spec/helpers/system_helper.rb +25 -0
  86. data/spec/ohloh_scm/bzr/activity_spec.rb +460 -0
  87. data/spec/ohloh_scm/bzr/scm_spec.rb +17 -0
  88. data/spec/ohloh_scm/bzr/validation_spec.rb +37 -0
  89. data/spec/ohloh_scm/cvs/activity_spec.rb +93 -0
  90. data/spec/ohloh_scm/cvs/scm_spec.rb +112 -0
  91. data/spec/ohloh_scm/cvs/validation_spec.rb +78 -0
  92. data/spec/ohloh_scm/factory_spec.rb +16 -0
  93. data/spec/ohloh_scm/git/activity_spec.rb +402 -0
  94. data/spec/ohloh_scm/git/scm_spec.rb +57 -0
  95. data/spec/ohloh_scm/git/status_spec.rb +11 -0
  96. data/spec/ohloh_scm/git/validation_spec.rb +57 -0
  97. data/spec/ohloh_scm/git_svn/activity_spec.rb +89 -0
  98. data/spec/ohloh_scm/git_svn/scm_spec.rb +22 -0
  99. data/spec/ohloh_scm/hg/activity_spec.rb +323 -0
  100. data/spec/ohloh_scm/hg/scm_spec.rb +23 -0
  101. data/spec/ohloh_scm/hg/status_spec.rb +12 -0
  102. data/spec/ohloh_scm/hg/validation_spec.rb +32 -0
  103. data/spec/ohloh_scm/parser/array_writer_spec.rb +29 -0
  104. data/spec/ohloh_scm/parser/branch_number_spec.rb +126 -0
  105. data/spec/ohloh_scm/parser/cvs_parser_spec.rb +77 -0
  106. data/spec/ohloh_scm/parser/git_parser_spec.rb +102 -0
  107. data/spec/ohloh_scm/parser/hg_parser_spec.rb +194 -0
  108. data/spec/ohloh_scm/svn/activity_spec.rb +55 -0
  109. data/spec/ohloh_scm/svn/scm_spec.rb +75 -0
  110. data/spec/ohloh_scm/svn/validation_spec.rb +89 -0
  111. data/spec/ohloh_scm/svn_parser_spec.rb +146 -0
  112. data/spec/ohloh_scm/system_spec.rb +32 -0
  113. data/spec/ohloh_scm/version_spec.rb +9 -0
  114. data/{test/data → spec/raw_fixtures}/basic.rlog +0 -0
  115. data/{test/data → spec/raw_fixtures}/file_created_on_branch.rlog +0 -0
  116. data/{test/data → spec/raw_fixtures}/invalid-utf-word +0 -0
  117. data/{test/data → spec/raw_fixtures}/multiple_revisions.rlog +0 -0
  118. data/{test/data → spec/raw_fixtures}/sample-content +0 -0
  119. data/{test/data → spec/raw_fixtures}/simple.ohlog +1 -1
  120. data/{test/data → spec/raw_fixtures}/simple.svn_log +0 -0
  121. data/{test/data → spec/raw_fixtures}/simultaneous_checkins.rlog +0 -0
  122. data/{test/data → spec/raw_fixtures}/simultaneous_checkins_2.rlog +0 -0
  123. data/spec/scm_fixtures/bzr.tgz +0 -0
  124. data/{test/repositories → spec/scm_fixtures}/bzr_colon.tgz +0 -0
  125. data/spec/scm_fixtures/bzr_large.tgz +0 -0
  126. data/spec/scm_fixtures/bzr_with_authors.tgz +0 -0
  127. data/spec/scm_fixtures/bzr_with_branch.tgz +0 -0
  128. data/{test/repositories → spec/scm_fixtures}/bzr_with_invalid_encoding.tgz +0 -0
  129. data/spec/scm_fixtures/bzr_with_nested_branches.tgz +0 -0
  130. data/spec/scm_fixtures/bzr_with_subdirectories.tgz +0 -0
  131. data/{test/repositories → spec/scm_fixtures}/cvs.tgz +0 -0
  132. data/{test/repositories → spec/scm_fixtures}/git.tgz +0 -0
  133. data/{test/repositories → spec/scm_fixtures}/git_dupe_delete.tgz +0 -0
  134. data/{test/repositories → spec/scm_fixtures}/git_svn.tgz +0 -0
  135. data/{test/repositories → spec/scm_fixtures}/git_walk.tgz +0 -0
  136. data/{test/repositories → spec/scm_fixtures}/git_with_invalid_encoding.tgz +0 -0
  137. data/{test/repositories → spec/scm_fixtures}/git_with_master_tag.tgz +0 -0
  138. data/{test/repositories → spec/scm_fixtures}/git_with_multiple_branch.tgz +0 -0
  139. data/spec/scm_fixtures/git_with_mv.tgz +0 -0
  140. data/{test/repositories → spec/scm_fixtures}/git_with_null_merge.tgz +0 -0
  141. data/spec/scm_fixtures/git_with_submodules.tgz +0 -0
  142. data/{test/repositories → spec/scm_fixtures}/hg.tgz +0 -0
  143. data/{test/repositories → spec/scm_fixtures}/hg_dupe_delete.tgz +0 -0
  144. data/spec/scm_fixtures/hg_large.tgz +0 -0
  145. data/{test/repositories → spec/scm_fixtures}/hg_walk.tgz +0 -0
  146. data/{test/repositories → spec/scm_fixtures}/hg_with_invalid_encoding.tgz +0 -0
  147. data/spec/scm_fixtures/svn.tgz +0 -0
  148. data/spec/scm_fixtures/svn_subdir.tgz +0 -0
  149. data/spec/spec_helper.rb +32 -0
  150. data/spec/string_encoder_spec.rb +32 -0
  151. metadata +224 -1052
  152. data/bin/ohlog +0 -152
  153. data/lib/ohloh_scm/adapters/abstract/misc.rb +0 -12
  154. data/lib/ohloh_scm/adapters/abstract/sha1.rb +0 -48
  155. data/lib/ohloh_scm/adapters/abstract/system.rb +0 -60
  156. data/lib/ohloh_scm/adapters/abstract/validation.rb +0 -77
  157. data/lib/ohloh_scm/adapters/abstract_adapter.rb +0 -32
  158. data/lib/ohloh_scm/adapters/bzr/cat_file.rb +0 -25
  159. data/lib/ohloh_scm/adapters/bzr/commits.rb +0 -100
  160. data/lib/ohloh_scm/adapters/bzr/head.rb +0 -19
  161. data/lib/ohloh_scm/adapters/bzr/misc.rb +0 -61
  162. data/lib/ohloh_scm/adapters/bzr/pull.rb +0 -22
  163. data/lib/ohloh_scm/adapters/bzr/push.rb +0 -51
  164. data/lib/ohloh_scm/adapters/bzr/validation.rb +0 -16
  165. data/lib/ohloh_scm/adapters/bzr_adapter.rb +0 -15
  166. data/lib/ohloh_scm/adapters/bzrlib/bzrlib_pipe_client.rb +0 -71
  167. data/lib/ohloh_scm/adapters/bzrlib/cat_file.rb +0 -9
  168. data/lib/ohloh_scm/adapters/bzrlib/head.rb +0 -9
  169. data/lib/ohloh_scm/adapters/bzrlib_adapter.rb +0 -25
  170. data/lib/ohloh_scm/adapters/cvs/commits.rb +0 -97
  171. data/lib/ohloh_scm/adapters/cvs/misc.rb +0 -212
  172. data/lib/ohloh_scm/adapters/cvs/validation.rb +0 -77
  173. data/lib/ohloh_scm/adapters/cvs_adapter.rb +0 -18
  174. data/lib/ohloh_scm/adapters/factory.rb +0 -38
  175. data/lib/ohloh_scm/adapters/git/cat_file.rb +0 -16
  176. data/lib/ohloh_scm/adapters/git/commit_all.rb +0 -141
  177. data/lib/ohloh_scm/adapters/git/commits.rb +0 -122
  178. data/lib/ohloh_scm/adapters/git/head.rb +0 -21
  179. data/lib/ohloh_scm/adapters/git/misc.rb +0 -107
  180. data/lib/ohloh_scm/adapters/git/patch.rb +0 -9
  181. data/lib/ohloh_scm/adapters/git/pull.rb +0 -124
  182. data/lib/ohloh_scm/adapters/git/push.rb +0 -39
  183. data/lib/ohloh_scm/adapters/git/token.rb +0 -53
  184. data/lib/ohloh_scm/adapters/git/validation.rb +0 -50
  185. data/lib/ohloh_scm/adapters/git_adapter.rb +0 -18
  186. data/lib/ohloh_scm/adapters/git_svn/cat_file.rb +0 -22
  187. data/lib/ohloh_scm/adapters/git_svn/commits.rb +0 -57
  188. data/lib/ohloh_scm/adapters/git_svn/head.rb +0 -9
  189. data/lib/ohloh_scm/adapters/git_svn/misc.rb +0 -24
  190. data/lib/ohloh_scm/adapters/git_svn/pull.rb +0 -80
  191. data/lib/ohloh_scm/adapters/git_svn_adapter.rb +0 -13
  192. data/lib/ohloh_scm/adapters/hg/cat_file.rb +0 -28
  193. data/lib/ohloh_scm/adapters/hg/commits.rb +0 -112
  194. data/lib/ohloh_scm/adapters/hg/head.rb +0 -29
  195. data/lib/ohloh_scm/adapters/hg/misc.rb +0 -40
  196. data/lib/ohloh_scm/adapters/hg/patch.rb +0 -9
  197. data/lib/ohloh_scm/adapters/hg/pull.rb +0 -23
  198. data/lib/ohloh_scm/adapters/hg/push.rb +0 -51
  199. data/lib/ohloh_scm/adapters/hg/validation.rb +0 -26
  200. data/lib/ohloh_scm/adapters/hg_adapter.rb +0 -21
  201. data/lib/ohloh_scm/adapters/hglib/cat_file.rb +0 -14
  202. data/lib/ohloh_scm/adapters/hglib/client.rb +0 -62
  203. data/lib/ohloh_scm/adapters/hglib/head.rb +0 -9
  204. data/lib/ohloh_scm/adapters/hglib_adapter.rb +0 -25
  205. data/lib/ohloh_scm/adapters/svn/cat_file.rb +0 -19
  206. data/lib/ohloh_scm/adapters/svn/commits.rb +0 -195
  207. data/lib/ohloh_scm/adapters/svn/head.rb +0 -19
  208. data/lib/ohloh_scm/adapters/svn/misc.rb +0 -171
  209. data/lib/ohloh_scm/adapters/svn/patch.rb +0 -8
  210. data/lib/ohloh_scm/adapters/svn/pre-revprop-change +0 -2
  211. data/lib/ohloh_scm/adapters/svn/pull.rb +0 -77
  212. data/lib/ohloh_scm/adapters/svn/push.rb +0 -15
  213. data/lib/ohloh_scm/adapters/svn/validation.rb +0 -87
  214. data/lib/ohloh_scm/adapters/svn_adapter.rb +0 -17
  215. data/lib/ohloh_scm/adapters/svn_chain/cat_file.rb +0 -8
  216. data/lib/ohloh_scm/adapters/svn_chain/chain.rb +0 -100
  217. data/lib/ohloh_scm/adapters/svn_chain/commits.rb +0 -37
  218. data/lib/ohloh_scm/adapters/svn_chain_adapter.rb +0 -44
  219. data/lib/ohloh_scm/parsers/array_writer.rb +0 -19
  220. data/lib/ohloh_scm/parsers/branch_number.rb +0 -60
  221. data/lib/ohloh_scm/parsers/bzr_parser.rb +0 -128
  222. data/lib/ohloh_scm/parsers/cvs_parser.rb +0 -182
  223. data/lib/ohloh_scm/parsers/git_parser.rb +0 -67
  224. data/lib/ohloh_scm/parsers/git_styled_parser.rb +0 -95
  225. data/lib/ohloh_scm/parsers/hg_parser.rb +0 -63
  226. data/lib/ohloh_scm/parsers/hg_styled_parser.rb +0 -65
  227. data/lib/ohloh_scm/parsers/human_writer.rb +0 -49
  228. data/lib/ohloh_scm/parsers/parser.rb +0 -34
  229. data/lib/ohloh_scm/parsers/svn_parser.rb +0 -77
  230. data/lib/ohloh_scm/parsers/svn_xml_parser.rb +0 -62
  231. data/lib/ohloh_scm/parsers/xml_writer.rb +0 -62
  232. data/lib/ohloh_scm/scratch_dir.rb +0 -59
  233. data/lib/ohloh_scm/shellout.rb +0 -40
  234. data/log/.gitignore +0 -1
  235. data/test/bin/svn +0 -7
  236. data/test/data/basic.ohlog +0 -11
  237. data/test/data/branch_merge.bzr_xml_log +0 -87
  238. data/test/data/git_patch.diff +0 -19
  239. data/test/data/helloworld.log +0 -41
  240. data/test/data/hg_patch.diff +0 -9
  241. data/test/data/intelliglue.rlog +0 -1216
  242. data/test/data/multiple_commits.rlog +0 -64
  243. data/test/data/simple.bzr_xml_log +0 -41
  244. data/test/data/simple.svn_xml_log +0 -66
  245. data/test/data/svn_patch.diff +0 -9
  246. data/test/data/svn_with_invalid_encoding.log +0 -33
  247. data/test/repositories/bzr/.bzr/README +0 -3
  248. data/test/repositories/bzr/.bzr/branch-format +0 -1
  249. data/test/repositories/bzr/.bzr/branch/branch.conf +0 -0
  250. data/test/repositories/bzr/.bzr/branch/format +0 -1
  251. data/test/repositories/bzr/.bzr/branch/last-revision +0 -1
  252. data/test/repositories/bzr/.bzr/branch/tags +0 -1
  253. data/test/repositories/bzr/.bzr/checkout/conflicts +0 -1
  254. data/test/repositories/bzr/.bzr/checkout/dirstate +0 -0
  255. data/test/repositories/bzr/.bzr/checkout/format +0 -1
  256. data/test/repositories/bzr/.bzr/repository/format +0 -1
  257. data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.iix +0 -0
  258. data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.rix +0 -0
  259. data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.six +0 -5
  260. data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.tix +0 -0
  261. data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.iix +0 -0
  262. data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.rix +0 -0
  263. data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.six +0 -5
  264. data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.tix +0 -0
  265. data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.iix +0 -0
  266. data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.rix +0 -0
  267. data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.six +0 -5
  268. data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.tix +0 -0
  269. data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.iix +0 -0
  270. data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.rix +0 -0
  271. data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.six +0 -5
  272. data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.tix +0 -5
  273. data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.iix +0 -0
  274. data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.rix +0 -0
  275. data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.six +0 -5
  276. data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.tix +0 -0
  277. data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.iix +0 -0
  278. data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.rix +0 -0
  279. data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.six +0 -5
  280. data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.tix +0 -0
  281. data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.iix +0 -0
  282. data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.rix +0 -0
  283. data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.six +0 -5
  284. data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.tix +0 -0
  285. data/test/repositories/bzr/.bzr/repository/pack-names +0 -0
  286. data/test/repositories/bzr/.bzr/repository/packs/0428489d1a03d05c496c2c429fe96e90.pack +0 -0
  287. data/test/repositories/bzr/.bzr/repository/packs/62f9cada7c58bce361b9b852d180ff56.pack +0 -0
  288. data/test/repositories/bzr/.bzr/repository/packs/71af8bae249bcb824a4ff17c62029142.pack +0 -0
  289. data/test/repositories/bzr/.bzr/repository/packs/7202eb77b81a80eca5296f317ed42149.pack +0 -0
  290. data/test/repositories/bzr/.bzr/repository/packs/8a571ba35ee54cd133b71e967442fe17.pack +0 -0
  291. data/test/repositories/bzr/.bzr/repository/packs/a06b9c10004fc3e05affee8cf0a9febd.pack +0 -0
  292. data/test/repositories/bzr/.bzr/repository/packs/f35e1020b6a55c81b6d2fe4c7bcd4645.pack +0 -0
  293. data/test/repositories/bzr/.bzr/repository/upload/.gitignore +0 -1
  294. data/test/repositories/bzr/C/303/251dric.txt +0 -2
  295. data/test/repositories/bzr/file1.txt +0 -2
  296. data/test/repositories/bzr/file3.txt +0 -1
  297. data/test/repositories/bzr/file4.txt +0 -1
  298. data/test/repositories/bzr/file5.txt +0 -4
  299. data/test/repositories/bzr_hello_world/.bzr/README +0 -3
  300. data/test/repositories/bzr_hello_world/.bzr/branch-format +0 -1
  301. data/test/repositories/bzr_hello_world/.bzr/branch/branch.conf +0 -0
  302. data/test/repositories/bzr_hello_world/.bzr/branch/format +0 -1
  303. data/test/repositories/bzr_hello_world/.bzr/branch/last-revision +0 -1
  304. data/test/repositories/bzr_hello_world/.bzr/branch/tags +0 -0
  305. data/test/repositories/bzr_hello_world/.bzr/checkout/conflicts +0 -1
  306. data/test/repositories/bzr_hello_world/.bzr/checkout/dirstate +0 -0
  307. data/test/repositories/bzr_hello_world/.bzr/checkout/format +0 -1
  308. data/test/repositories/bzr_hello_world/.bzr/repository/format +0 -1
  309. data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.iix +0 -0
  310. data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.rix +0 -0
  311. data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.six +0 -5
  312. data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.tix +0 -0
  313. data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.iix +0 -0
  314. data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.rix +0 -0
  315. data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.six +0 -5
  316. data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.tix +0 -0
  317. data/test/repositories/bzr_hello_world/.bzr/repository/pack-names +0 -0
  318. data/test/repositories/bzr_hello_world/.bzr/repository/packs/a7cd0d6de5d8b3efdd5f61a4caeda296.pack +0 -0
  319. data/test/repositories/bzr_hello_world/.bzr/repository/packs/ed1e97c1213220a92ff857169867a7b3.pack +0 -0
  320. data/test/repositories/bzr_hello_world/helloworld.c +0 -6
  321. data/test/repositories/bzr_with_authors/.bzr/README +0 -3
  322. data/test/repositories/bzr_with_authors/.bzr/branch-format +0 -1
  323. data/test/repositories/bzr_with_authors/.bzr/branch/branch.conf +0 -0
  324. data/test/repositories/bzr_with_authors/.bzr/branch/format +0 -1
  325. data/test/repositories/bzr_with_authors/.bzr/branch/last-revision +0 -1
  326. data/test/repositories/bzr_with_authors/.bzr/branch/tags +0 -0
  327. data/test/repositories/bzr_with_authors/.bzr/checkout/conflicts +0 -1
  328. data/test/repositories/bzr_with_authors/.bzr/checkout/dirstate +0 -0
  329. data/test/repositories/bzr_with_authors/.bzr/checkout/format +0 -1
  330. data/test/repositories/bzr_with_authors/.bzr/checkout/views +0 -0
  331. data/test/repositories/bzr_with_authors/.bzr/repository/format +0 -1
  332. data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.cix +0 -0
  333. data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.iix +0 -0
  334. data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.rix +0 -6
  335. data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.six +0 -5
  336. data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.tix +0 -0
  337. data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.cix +0 -0
  338. data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.iix +0 -0
  339. data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.rix +0 -0
  340. data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.six +0 -5
  341. data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.tix +0 -6
  342. data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.cix +0 -0
  343. data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.iix +0 -0
  344. data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.rix +0 -0
  345. data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.six +0 -5
  346. data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.tix +0 -0
  347. data/test/repositories/bzr_with_authors/.bzr/repository/pack-names +0 -0
  348. data/test/repositories/bzr_with_authors/.bzr/repository/packs/1326ecee2f4f69991771137c5307689a.pack +0 -0
  349. data/test/repositories/bzr_with_authors/.bzr/repository/packs/adf730b6cf7c7959afcedb87e155654d.pack +0 -0
  350. data/test/repositories/bzr_with_authors/.bzr/repository/packs/d2613fcfb5e48e79073b96270782f95c.pack +0 -0
  351. data/test/repositories/bzr_with_authors/test.txt +0 -1
  352. data/test/repositories/bzr_with_branch/.bzr/README +0 -3
  353. data/test/repositories/bzr_with_branch/.bzr/branch-format +0 -1
  354. data/test/repositories/bzr_with_branch/.bzr/branch/branch.conf +0 -1
  355. data/test/repositories/bzr_with_branch/.bzr/branch/format +0 -1
  356. data/test/repositories/bzr_with_branch/.bzr/branch/last-revision +0 -1
  357. data/test/repositories/bzr_with_branch/.bzr/branch/tags +0 -0
  358. data/test/repositories/bzr_with_branch/.bzr/checkout/conflicts +0 -1
  359. data/test/repositories/bzr_with_branch/.bzr/checkout/dirstate +0 -0
  360. data/test/repositories/bzr_with_branch/.bzr/checkout/format +0 -1
  361. data/test/repositories/bzr_with_branch/.bzr/checkout/merge-hashes +0 -3
  362. data/test/repositories/bzr_with_branch/.bzr/repository/format +0 -1
  363. data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.iix +0 -0
  364. data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.rix +0 -0
  365. data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.six +0 -5
  366. data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.tix +0 -5
  367. data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.iix +0 -0
  368. data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.rix +0 -0
  369. data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.six +0 -5
  370. data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.tix +0 -0
  371. data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.iix +0 -0
  372. data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.rix +0 -0
  373. data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.six +0 -5
  374. data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.tix +0 -0
  375. data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.iix +0 -0
  376. data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.rix +0 -0
  377. data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.six +0 -5
  378. data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.tix +0 -0
  379. data/test/repositories/bzr_with_branch/.bzr/repository/pack-names +0 -0
  380. data/test/repositories/bzr_with_branch/.bzr/repository/packs/3336f250dbe86a7eec2de4c1b1f97db7.pack +0 -0
  381. data/test/repositories/bzr_with_branch/.bzr/repository/packs/47cfe65310e6d462bb87a68fff0bc162.pack +0 -0
  382. data/test/repositories/bzr_with_branch/.bzr/repository/packs/64e98edbf1aebe6f532f2f93b24eead8.pack +0 -0
  383. data/test/repositories/bzr_with_branch/.bzr/repository/packs/8008794e258fc3fa4be68d538312a91c.pack +0 -0
  384. data/test/repositories/bzr_with_branch/goodbyeworld.c +0 -5
  385. data/test/repositories/bzr_with_branch/helloworld.c +0 -6
  386. data/test/repositories/bzr_with_nested_branches/.bzr/README +0 -3
  387. data/test/repositories/bzr_with_nested_branches/.bzr/branch-format +0 -1
  388. data/test/repositories/bzr_with_nested_branches/.bzr/branch/branch.conf +0 -1
  389. data/test/repositories/bzr_with_nested_branches/.bzr/branch/format +0 -1
  390. data/test/repositories/bzr_with_nested_branches/.bzr/branch/last-revision +0 -1
  391. data/test/repositories/bzr_with_nested_branches/.bzr/branch/tags +0 -0
  392. data/test/repositories/bzr_with_nested_branches/.bzr/checkout/conflicts +0 -1
  393. data/test/repositories/bzr_with_nested_branches/.bzr/checkout/dirstate +0 -0
  394. data/test/repositories/bzr_with_nested_branches/.bzr/checkout/format +0 -1
  395. data/test/repositories/bzr_with_nested_branches/.bzr/checkout/merge-hashes +0 -6
  396. data/test/repositories/bzr_with_nested_branches/.bzr/repository/format +0 -1
  397. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.iix +0 -0
  398. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.rix +0 -0
  399. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.six +0 -5
  400. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.tix +0 -0
  401. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.iix +0 -0
  402. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.rix +0 -0
  403. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.six +0 -5
  404. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.tix +0 -0
  405. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.iix +0 -0
  406. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.rix +0 -0
  407. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.six +0 -5
  408. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.tix +0 -0
  409. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.iix +0 -0
  410. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.rix +0 -0
  411. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.six +0 -5
  412. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.tix +0 -0
  413. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.iix +0 -0
  414. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.rix +0 -0
  415. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.six +0 -5
  416. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.tix +0 -5
  417. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.iix +0 -0
  418. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.rix +0 -0
  419. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.six +0 -5
  420. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.tix +0 -0
  421. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.iix +0 -0
  422. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.rix +0 -0
  423. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.six +0 -5
  424. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.tix +0 -0
  425. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.iix +0 -0
  426. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.rix +0 -0
  427. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.six +0 -5
  428. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.tix +0 -5
  429. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.iix +0 -0
  430. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.rix +0 -0
  431. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.six +0 -5
  432. data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.tix +0 -0
  433. data/test/repositories/bzr_with_nested_branches/.bzr/repository/pack-names +0 -0
  434. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/0428489d1a03d05c496c2c429fe96e90.pack +0 -0
  435. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/30fcaac048e328a7727156986055f6e8.pack +0 -0
  436. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/673cc297ed321f667e1d8d4fff600829.pack +0 -0
  437. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/71af8bae249bcb824a4ff17c62029142.pack +0 -0
  438. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/7202eb77b81a80eca5296f317ed42149.pack +0 -0
  439. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/8a571ba35ee54cd133b71e967442fe17.pack +0 -0
  440. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/a06b9c10004fc3e05affee8cf0a9febd.pack +0 -0
  441. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/da6c79a024c70fd6831e323430a96cc8.pack +0 -0
  442. data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/f35e1020b6a55c81b6d2fe4c7bcd4645.pack +0 -0
  443. data/test/repositories/bzr_with_nested_branches/.bzr/repository/upload/.gitignore +0 -1
  444. data/test/repositories/bzr_with_nested_branches/file1.txt +0 -2
  445. data/test/repositories/bzr_with_nested_branches/file3.txt +0 -1
  446. data/test/repositories/bzr_with_nested_branches/file4.txt +0 -1
  447. data/test/repositories/bzr_with_nested_branches/file5.txt +0 -4
  448. data/test/repositories/bzr_with_nested_branches/file6.txt +0 -2
  449. data/test/repositories/bzr_with_nested_branches/file7.txt +0 -2
  450. data/test/repositories/bzr_with_subdirectories/.bzr/README +0 -3
  451. data/test/repositories/bzr_with_subdirectories/.bzr/branch-format +0 -1
  452. data/test/repositories/bzr_with_subdirectories/.bzr/branch/branch.conf +0 -0
  453. data/test/repositories/bzr_with_subdirectories/.bzr/branch/format +0 -1
  454. data/test/repositories/bzr_with_subdirectories/.bzr/branch/last-revision +0 -1
  455. data/test/repositories/bzr_with_subdirectories/.bzr/branch/tags +0 -0
  456. data/test/repositories/bzr_with_subdirectories/.bzr/checkout/conflicts +0 -1
  457. data/test/repositories/bzr_with_subdirectories/.bzr/checkout/dirstate +0 -0
  458. data/test/repositories/bzr_with_subdirectories/.bzr/checkout/format +0 -1
  459. data/test/repositories/bzr_with_subdirectories/.bzr/repository/format +0 -1
  460. data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.iix +0 -0
  461. data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.rix +0 -0
  462. data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.six +0 -5
  463. data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.tix +0 -0
  464. data/test/repositories/bzr_with_subdirectories/.bzr/repository/pack-names +0 -0
  465. data/test/repositories/bzr_with_subdirectories/.bzr/repository/packs/6eb92b11d9f811881dd08e0ca71e136d.pack +0 -0
  466. data/test/repositories/bzr_with_subdirectories/foo/helloworld.c +0 -0
  467. data/test/repositories/deep_svn/README.txt +0 -5
  468. data/test/repositories/deep_svn/conf/authz +0 -21
  469. data/test/repositories/deep_svn/conf/passwd +0 -8
  470. data/test/repositories/deep_svn/conf/svnserve.conf +0 -30
  471. data/test/repositories/deep_svn/db/current +0 -1
  472. data/test/repositories/deep_svn/db/format +0 -1
  473. data/test/repositories/deep_svn/db/fs-type +0 -1
  474. data/test/repositories/deep_svn/db/revprops/0 +0 -5
  475. data/test/repositories/deep_svn/db/revprops/1 +0 -14
  476. data/test/repositories/deep_svn/db/revprops/2 +0 -14
  477. data/test/repositories/deep_svn/db/revprops/3 +0 -14
  478. data/test/repositories/deep_svn/db/revprops/4 +0 -14
  479. data/test/repositories/deep_svn/db/revs/0 +0 -11
  480. data/test/repositories/deep_svn/db/revs/1 +0 -122
  481. data/test/repositories/deep_svn/db/revs/2 +0 -19
  482. data/test/repositories/deep_svn/db/revs/3 +0 -44
  483. data/test/repositories/deep_svn/db/revs/4 +0 -48
  484. data/test/repositories/deep_svn/db/uuid +0 -1
  485. data/test/repositories/deep_svn/db/write-lock +0 -0
  486. data/test/repositories/deep_svn/format +0 -1
  487. data/test/repositories/deep_svn/hooks/post-commit.tmpl +0 -51
  488. data/test/repositories/deep_svn/hooks/post-lock.tmpl +0 -44
  489. data/test/repositories/deep_svn/hooks/post-revprop-change.tmpl +0 -56
  490. data/test/repositories/deep_svn/hooks/post-unlock.tmpl +0 -42
  491. data/test/repositories/deep_svn/hooks/pre-commit.tmpl +0 -70
  492. data/test/repositories/deep_svn/hooks/pre-lock.tmpl +0 -64
  493. data/test/repositories/deep_svn/hooks/pre-revprop-change.tmpl +0 -66
  494. data/test/repositories/deep_svn/hooks/pre-unlock.tmpl +0 -60
  495. data/test/repositories/deep_svn/hooks/start-commit.tmpl +0 -54
  496. data/test/repositories/deep_svn/locks/db-logs.lock +0 -3
  497. data/test/repositories/deep_svn/locks/db.lock +0 -3
  498. data/test/repositories/git_with_empty_merge.tgz +0 -0
  499. data/test/repositories/svn/README.txt +0 -5
  500. data/test/repositories/svn/conf/authz +0 -21
  501. data/test/repositories/svn/conf/passwd +0 -8
  502. data/test/repositories/svn/conf/svnserve.conf +0 -30
  503. data/test/repositories/svn/db/current +0 -1
  504. data/test/repositories/svn/db/format +0 -1
  505. data/test/repositories/svn/db/fs-type +0 -1
  506. data/test/repositories/svn/db/revprops/0 +0 -5
  507. data/test/repositories/svn/db/revprops/1 +0 -14
  508. data/test/repositories/svn/db/revprops/2 +0 -13
  509. data/test/repositories/svn/db/revprops/3 +0 -13
  510. data/test/repositories/svn/db/revprops/4 +0 -13
  511. data/test/repositories/svn/db/revprops/5 +0 -13
  512. data/test/repositories/svn/db/revprops/6 +0 -12
  513. data/test/repositories/svn/db/revs/0 +0 -11
  514. data/test/repositories/svn/db/revs/1 +0 -0
  515. data/test/repositories/svn/db/revs/2 +0 -0
  516. data/test/repositories/svn/db/revs/3 +0 -0
  517. data/test/repositories/svn/db/revs/4 +0 -0
  518. data/test/repositories/svn/db/revs/5 +0 -64
  519. data/test/repositories/svn/db/revs/6 +0 -50
  520. data/test/repositories/svn/db/uuid +0 -1
  521. data/test/repositories/svn/db/write-lock +0 -0
  522. data/test/repositories/svn/format +0 -1
  523. data/test/repositories/svn/hooks/post-commit.tmpl +0 -51
  524. data/test/repositories/svn/hooks/post-lock.tmpl +0 -44
  525. data/test/repositories/svn/hooks/post-revprop-change.tmpl +0 -56
  526. data/test/repositories/svn/hooks/post-unlock.tmpl +0 -42
  527. data/test/repositories/svn/hooks/pre-commit.tmpl +0 -70
  528. data/test/repositories/svn/hooks/pre-lock.tmpl +0 -64
  529. data/test/repositories/svn/hooks/pre-revprop-change +0 -67
  530. data/test/repositories/svn/hooks/pre-unlock.tmpl +0 -60
  531. data/test/repositories/svn/hooks/start-commit.tmpl +0 -54
  532. data/test/repositories/svn/locks/db-logs.lock +0 -3
  533. data/test/repositories/svn/locks/db.lock +0 -3
  534. data/test/repositories/svn_empty/README.txt +0 -5
  535. data/test/repositories/svn_empty/conf/authz +0 -32
  536. data/test/repositories/svn_empty/conf/hooks-env.tmpl +0 -19
  537. data/test/repositories/svn_empty/conf/passwd +0 -8
  538. data/test/repositories/svn_empty/conf/svnserve.conf +0 -76
  539. data/test/repositories/svn_empty/db/current +0 -1
  540. data/test/repositories/svn_empty/db/format +0 -2
  541. data/test/repositories/svn_empty/db/fs-type +0 -1
  542. data/test/repositories/svn_empty/db/fsfs.conf +0 -125
  543. data/test/repositories/svn_empty/db/min-unpacked-rev +0 -1
  544. data/test/repositories/svn_empty/db/revprops/0/0 +0 -5
  545. data/test/repositories/svn_empty/db/revs/0/0 +0 -11
  546. data/test/repositories/svn_empty/db/txn-current +0 -1
  547. data/test/repositories/svn_empty/db/txn-current-lock +0 -0
  548. data/test/repositories/svn_empty/db/uuid +0 -1
  549. data/test/repositories/svn_empty/db/write-lock +0 -0
  550. data/test/repositories/svn_empty/format +0 -1
  551. data/test/repositories/svn_empty/hooks/post-commit.tmpl +0 -52
  552. data/test/repositories/svn_empty/hooks/post-lock.tmpl +0 -45
  553. data/test/repositories/svn_empty/hooks/post-revprop-change.tmpl +0 -57
  554. data/test/repositories/svn_empty/hooks/post-unlock.tmpl +0 -43
  555. data/test/repositories/svn_empty/hooks/pre-commit.tmpl +0 -85
  556. data/test/repositories/svn_empty/hooks/pre-lock.tmpl +0 -73
  557. data/test/repositories/svn_empty/hooks/pre-revprop-change.tmpl +0 -66
  558. data/test/repositories/svn_empty/hooks/pre-unlock.tmpl +0 -65
  559. data/test/repositories/svn_empty/hooks/start-commit.tmpl +0 -74
  560. data/test/repositories/svn_empty/locks/db-logs.lock +0 -3
  561. data/test/repositories/svn_empty/locks/db.lock +0 -3
  562. data/test/repositories/svn_with_branching.tgz +0 -0
  563. data/test/repositories/svn_with_invalid_encoding.tgz +0 -0
  564. data/test/repositories/svn_with_tree_move/README.txt +0 -5
  565. data/test/repositories/svn_with_tree_move/conf/authz +0 -21
  566. data/test/repositories/svn_with_tree_move/conf/passwd +0 -8
  567. data/test/repositories/svn_with_tree_move/conf/svnserve.conf +0 -30
  568. data/test/repositories/svn_with_tree_move/db/current +0 -1
  569. data/test/repositories/svn_with_tree_move/db/format +0 -1
  570. data/test/repositories/svn_with_tree_move/db/fs-type +0 -1
  571. data/test/repositories/svn_with_tree_move/db/revprops/0 +0 -5
  572. data/test/repositories/svn_with_tree_move/db/revprops/1 +0 -13
  573. data/test/repositories/svn_with_tree_move/db/revprops/2 +0 -13
  574. data/test/repositories/svn_with_tree_move/db/revs/0 +0 -11
  575. data/test/repositories/svn_with_tree_move/db/revs/1 +0 -0
  576. data/test/repositories/svn_with_tree_move/db/revs/2 +0 -44
  577. data/test/repositories/svn_with_tree_move/db/uuid +0 -1
  578. data/test/repositories/svn_with_tree_move/db/write-lock +0 -0
  579. data/test/repositories/svn_with_tree_move/format +0 -1
  580. data/test/repositories/svn_with_tree_move/hooks/post-commit.tmpl +0 -51
  581. data/test/repositories/svn_with_tree_move/hooks/post-lock.tmpl +0 -44
  582. data/test/repositories/svn_with_tree_move/hooks/post-revprop-change.tmpl +0 -56
  583. data/test/repositories/svn_with_tree_move/hooks/post-unlock.tmpl +0 -42
  584. data/test/repositories/svn_with_tree_move/hooks/pre-commit.tmpl +0 -70
  585. data/test/repositories/svn_with_tree_move/hooks/pre-lock.tmpl +0 -64
  586. data/test/repositories/svn_with_tree_move/hooks/pre-revprop-change.tmpl +0 -66
  587. data/test/repositories/svn_with_tree_move/hooks/pre-unlock.tmpl +0 -60
  588. data/test/repositories/svn_with_tree_move/hooks/start-commit.tmpl +0 -54
  589. data/test/repositories/svn_with_tree_move/locks/db-logs.lock +0 -3
  590. data/test/repositories/svn_with_tree_move/locks/db.lock +0 -3
  591. data/test/test_helper.rb +0 -127
  592. data/test/unit/abstract_adapter_test.rb +0 -106
  593. data/test/unit/adapter_factory_test.rb +0 -67
  594. data/test/unit/array_writer_test.rb +0 -33
  595. data/test/unit/bzr_cat_file_test.rb +0 -56
  596. data/test/unit/bzr_commits_test.rb +0 -388
  597. data/test/unit/bzr_head_test.rb +0 -18
  598. data/test/unit/bzr_misc_test.rb +0 -62
  599. data/test/unit/bzr_parser_test.rb +0 -483
  600. data/test/unit/bzr_pull_test.rb +0 -31
  601. data/test/unit/bzr_push_test.rb +0 -61
  602. data/test/unit/bzr_validation_test.rb +0 -61
  603. data/test/unit/bzr_xml_parser_test.rb +0 -409
  604. data/test/unit/bzrlib_cat_file_test.rb +0 -56
  605. data/test/unit/bzrlib_head_test.rb +0 -18
  606. data/test/unit/cvs_branch_number_test.rb +0 -130
  607. data/test/unit/cvs_commits_test.rb +0 -52
  608. data/test/unit/cvs_convert_test.rb +0 -30
  609. data/test/unit/cvs_misc_test.rb +0 -82
  610. data/test/unit/cvs_parser_test.rb +0 -94
  611. data/test/unit/cvs_validation_test.rb +0 -148
  612. data/test/unit/git_cat_file_test.rb +0 -21
  613. data/test/unit/git_commit_all_test.rb +0 -34
  614. data/test/unit/git_commits_test.rb +0 -179
  615. data/test/unit/git_head_test.rb +0 -26
  616. data/test/unit/git_log_parser_test.rb +0 -221
  617. data/test/unit/git_misc_test.rb +0 -100
  618. data/test/unit/git_parser_test.rb +0 -59
  619. data/test/unit/git_patch_test.rb +0 -14
  620. data/test/unit/git_pull_test.rb +0 -50
  621. data/test/unit/git_push_test.rb +0 -46
  622. data/test/unit/git_rev_list_test.rb +0 -89
  623. data/test/unit/git_styled_parser_test.rb +0 -103
  624. data/test/unit/git_svn_cat_file_test.rb +0 -57
  625. data/test/unit/git_svn_commits_test.rb +0 -37
  626. data/test/unit/git_svn_pull_test.rb +0 -51
  627. data/test/unit/git_token_test.rb +0 -45
  628. data/test/unit/git_validation_test.rb +0 -93
  629. data/test/unit/hg_cat_file_test.rb +0 -47
  630. data/test/unit/hg_commits_test.rb +0 -220
  631. data/test/unit/hg_head_test.rb +0 -24
  632. data/test/unit/hg_misc_test.rb +0 -48
  633. data/test/unit/hg_parser_test.rb +0 -184
  634. data/test/unit/hg_patch_test.rb +0 -14
  635. data/test/unit/hg_pull_test.rb +0 -29
  636. data/test/unit/hg_push_test.rb +0 -59
  637. data/test/unit/hg_rev_list_test.rb +0 -63
  638. data/test/unit/hg_validation_test.rb +0 -60
  639. data/test/unit/hglib_cat_file_test.rb +0 -47
  640. data/test/unit/hglib_head_test.rb +0 -18
  641. data/test/unit/ohlog_command_line_test.rb +0 -36
  642. data/test/unit/shellout_test.rb +0 -26
  643. data/test/unit/string_encoder_command_line_test.rb +0 -27
  644. data/test/unit/svn_cat_file_test.rb +0 -22
  645. data/test/unit/svn_chain_cat_file_test.rb +0 -24
  646. data/test/unit/svn_chain_commits_test.rb +0 -176
  647. data/test/unit/svn_chain_test.rb +0 -77
  648. data/test/unit/svn_commits_test.rb +0 -275
  649. data/test/unit/svn_convert_test.rb +0 -28
  650. data/test/unit/svn_head_test.rb +0 -27
  651. data/test/unit/svn_misc_test.rb +0 -142
  652. data/test/unit/svn_parser_test.rb +0 -155
  653. data/test/unit/svn_patch_test.rb +0 -14
  654. data/test/unit/svn_pull_test.rb +0 -60
  655. data/test/unit/svn_push_test.rb +0 -40
  656. data/test/unit/svn_validation_test.rb +0 -176
  657. data/test/unit/svn_xml_parser_test.rb +0 -45
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env bash
2
- exit 0
@@ -1,77 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnAdapter < AbstractAdapter
3
-
4
- def pull(from)
5
- logger.warn { "Pulling #{from.url}" }
6
- yield(0,1) if block_given? # Progress bar callback
7
-
8
- unless self.exist?
9
- svnadmin_create
10
- svnsync_init(from)
11
- end
12
- SvnAdapter.svnsync_sync(from, self)
13
-
14
- yield(1,1) if block_given? # Progress bar callback
15
- end
16
-
17
- # Initialize a new Subversion repository on disk.
18
- #
19
- # This method can work either locally (file://) or on another machine
20
- # in the server cluster (svn+ssh://).
21
- def svnadmin_create
22
- return if exist?
23
- if hostname
24
- svnadmin_create_remote
25
- else
26
- svnadmin_create_local
27
- end
28
- end
29
-
30
- # The local template for the Subversion hook
31
- def pre_revprop_change_template
32
- File.join(File.dirname(__FILE__), 'pre-revprop-change')
33
- end
34
-
35
- # The destination location for the Subversion hook
36
- def pre_revprop_change_path
37
- File.join(path, 'hooks', 'pre-revprop-change')
38
- end
39
-
40
- def svnadmin_create_local
41
- FileUtils.mkdir_p path
42
- FileUtils.rmdir path
43
- run "svnadmin create #{path}"
44
- FileUtils.cp pre_revprop_change_template, pre_revprop_change_path
45
- FileUtils.chmod 0755, pre_revprop_change_path
46
- end
47
-
48
- def svnadmin_create_remote
49
- run "ssh #{hostname} 'mkdir -p #{path} && rmdir #{path} && svnadmin create #{path}'"
50
- run "scp #{pre_revprop_change_template} #{hostname}:#{pre_revprop_change_path}"
51
- end
52
-
53
- def svnsync_init(from)
54
- run "svnsync init --trust-server-cert --non-interactive #{from.opt_auth} '#{url}' #{from.root}"
55
- end
56
-
57
- def self.svnsync_sync(src, dest)
58
- # We might not be pulling from the same repository we pulled from last time.
59
- # We use svnsync to manage multiple backups on our server cluster, as well as to
60
- # pull from the well-known public repository.
61
- # Therefore we have to set the root and UUID of the svnsync every time.
62
- dest.propset('sync-from-url', src.root)
63
- dest.propset('sync-from-uuid', src.uuid)
64
-
65
- run "svnsync sync #{src.opt_auth} --trust-server-cert --non-interactive '#{SvnAdapter.uri_encode(dest.root)}'"
66
- end
67
-
68
- def propget(propname)
69
- run("svn propget --trust-server-cert --non-interactive #{opt_auth} --revprop -r 0 svn:#{propname} '#{SvnAdapter.uri_encode(root)}'").strip!
70
- end
71
-
72
- def propset(propname, value)
73
- run("svn propset --trust-server-cert --non-interactive #{opt_auth} --revprop -r 0 svn:#{propname} #{value} '#{SvnAdapter.uri_encode(root)}'")
74
- end
75
-
76
- end
77
- end
@@ -1,15 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnAdapter < AbstractAdapter
3
-
4
- def push(to)
5
- logger.warn { "Pushing #{to.url}" }
6
-
7
- unless to.exist?
8
- to.svnadmin_create
9
- to.svnsync_init(self)
10
- end
11
- SvnAdapter.svnsync_sync(self, to)
12
- end
13
-
14
- end
15
- end
@@ -1,87 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnAdapter < AbstractAdapter
3
- def self.url_regex
4
- /^(file|http|https|svn):\/\/(\/)?[A-Za-z0-9_\-\.]+(:\d+)?(\/[A-Za-z0-9_@\-\.\/\+%^~ ]*)?$/
5
- end
6
-
7
- def self.public_url_regex
8
- /^(http|https|svn):\/\/[A-Za-z0-9_\-\.]+(:\d+)?(\/[A-Za-z0-9_\-\.\/\+%^~ ]*)?$/
9
- end
10
-
11
- def normalize
12
- super
13
- @url = path_to_file_url(@url)
14
- @url = force_https_if_sourceforge(@url)
15
- if @branch_name
16
- clean_branch_name
17
- else
18
- @branch_name = recalc_branch_name
19
- end
20
- self
21
- end
22
-
23
- # Subversion usernames have been relaxed from the abstract rules. We allow email names as usernames.
24
- def validate_username
25
- return nil unless @username
26
- return nil if @username.length == 0
27
- return [:username, "The username must not be longer than 32 characters."] unless @username.length <= 32
28
- return [:username, "The username contains illegal characters."] unless @username =~ /^\w[\w@\.\+\-]*$/
29
- end
30
-
31
- # If the URL is a simple directory path, make sure it is prefixed by file://
32
- def path_to_file_url(path)
33
- return nil if path.empty?
34
- url =~ /:\/\// ? url : 'file://' + File.expand_path(path)
35
- end
36
-
37
- def force_https_if_sourceforge(url)
38
- # SourceForge requires https for svnsync
39
- url =~ /http(:\/\/.*svn\.(sourceforge|code\.sf)\.net.*)/ ? "https#{$1}" : url
40
- end
41
-
42
- def validate_server_connection
43
- return unless valid?
44
- begin
45
- if head_token.nil?
46
- @errors << [:failed, "The server did not respond to a 'svn info' command. Is the URL correct?"]
47
- elsif self.url[0..root.length-1] != root
48
- @errors << [:failed, "The URL did not match the Subversion root #{root}. Is the URL correct?"]
49
- elsif recalc_branch_name && ls.nil?
50
- @errors << [:failed, "The server did not respond to a 'svn ls' command. Is the URL correct?"]
51
- end
52
- rescue
53
- logger.error { $!.inspect }
54
- @errors << [:failed, "An error occured connecting to the server. Check the URL, username, and password."]
55
- end
56
- end
57
-
58
- # From the given URL, determine which part of it is the root and which part of it is the branch_name.
59
- # The current branch_name is overwritten.
60
- def recalc_branch_name
61
- begin
62
- @branch_name = @url ? @url[root.length..-1] : @branch_name
63
- rescue RuntimeError => exception
64
- @branch_name = '' if exception.message =~ /(svn:*is not a working copy|Unable to open an ra_local session to URL)/ # we have a file system
65
- end
66
- clean_branch_name
67
- @branch_name
68
- end
69
-
70
- def guess_forge
71
- u = @url =~ /:\/\/(.*\.?svn\.)?([^\/^:]+)(:\d+)?(\/|$)/ ? $2 : nil
72
- case u
73
- when /(googlecode\.com$)/, /(tigris\.org$)/, /(sunsource\.net$)/, /(java\.net$)/,
74
- /(openoffice\.org$)/, /(netbeans\.org$)/, /(dev2dev\.bea\.com$)/, /(rubyforge\.org$)/
75
- $1
76
- else
77
- u
78
- end
79
- end
80
-
81
- private
82
- def clean_branch_name
83
- return unless @branch_name
84
- @branch_name.chop! if @branch_name.end_with?('/')
85
- end
86
- end
87
- end
@@ -1,17 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnAdapter < AbstractAdapter
3
- def english_name
4
- "Subversion"
5
- end
6
- end
7
- end
8
-
9
- require_relative 'svn/validation'
10
- require_relative 'svn/cat_file'
11
- require_relative 'svn/commits'
12
- require_relative 'svn/push'
13
- require_relative 'svn/pull'
14
- require_relative 'svn/head'
15
- require_relative 'svn/misc'
16
- require_relative 'svn/patch'
17
-
@@ -1,8 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnChainAdapter < SvnAdapter
3
- def cat(path, revision)
4
- parent_svn(revision) ? parent_svn.cat(path, revision) : super(path, revision)
5
- end
6
- end
7
- end
8
-
@@ -1,100 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnChainAdapter < SvnAdapter
3
-
4
- # Returns the entire SvnAdapter ancestry chain as a simple array.
5
- def chain
6
- (parent_svn ? parent_svn.chain : []) << self
7
- end
8
-
9
- # If this adapter's branch was created by copying or renaming another branch,
10
- # then return a new adapter that points to that prior branch.
11
- #
12
- # Only commits following +after+ are considered, so if the copy or rename
13
- # occured on or before +after+, then no parent will be found or returned.
14
- def parent_svn(after=0)
15
- @parent_svn ||={} # Poor man's memoize
16
-
17
- @parent_svn[after] ||= begin
18
- parent = nil
19
- c = first_commit(after)
20
- if c
21
- # === Long explanation of real head-scratching bug fix. ===
22
- #
23
- # It is possible for some Subversion commits to include *multiple*
24
- # renames/copies of a source directory. For example:
25
- #
26
- # A /foo (from /trunk:1)
27
- # D /foo/my_branch
28
- # A /foo/bar (from /trunk:1)
29
- # D /trunk
30
- #
31
- # If we simply processed these entries in the order given, then
32
- # we would conclude that /foo/bar/my_branch has parent
33
- # /trunk/bar/my_branch (because the first A matches) and exit.
34
- #
35
- # This is incorrect! We must look for the *longest* A that matches
36
- # our path, and follow that one. In the example above, the correct
37
- # parent for /foo/bar/my_branch is /trunk/my_branch.
38
- #
39
- # Therefore, we must sort diffs by descending filename length, so
40
- # that we choose the longest match.
41
- c.diffs.sort { |a,b| b.path.length <=> a.path.length }.each do |d|
42
-
43
- # If this diff actually creates this branch, then a parent is impossible.
44
- # Stop looking for parents.
45
- #
46
- # This check exists because of the following complicated commit:
47
- # http://dendro.cornell.edu/svn/corina/branches/databasing/src/edu/cornell/dendro@813
48
- # It's long to explain, but basically a directory is renamed and
49
- # then our branch is created within it, all in a single commit.
50
- # Without this check, our code mistakenly thinks there is a parent.
51
- if diff_creates_branch(d)
52
- return nil
53
- end
54
-
55
- if (b = parent_branch_name(d))
56
- parent = SvnChainAdapter.new(
57
- :url => File.join(root, b), :branch_name => b,
58
- :username => username, :password => password,
59
- :final_token => d.from_revision).normalize
60
- break
61
- end
62
-
63
- end
64
- end
65
- parent
66
- end
67
- end
68
-
69
- def first_token(after=0)
70
- c = first_commit(after)
71
- c && c.token
72
- end
73
-
74
- def first_commit(after=0)
75
- @first_commit ||={} # Poor man's memoize
76
- @first_commit[after] ||= OhlohScm::Parsers::SvnXmlParser.parse(next_revision_xml(after)).first
77
- end
78
-
79
- # Returns the first commit with a revision number greater than the provided revision number
80
- def next_revision_xml(after=0)
81
- return "<?xml?>" if after.to_i >= head_token
82
- run "svn log --trust-server-cert --non-interactive --verbose --xml --stop-on-copy -r #{after.to_i+1}:#{final_token || 'HEAD'} --limit 1 #{opt_auth} '#{SvnAdapter.uri_encode(File.join(self.root, self.branch_name.to_s))}@#{final_token || 'HEAD'}' | #{ string_encoder }"
83
- end
84
-
85
- # If the passed diff represents the wholesale movement of the entire
86
- # code tree from one directory to another, this method returns the name
87
- # of the previous directory.
88
- def parent_branch_name(d)
89
- if %w(A R).include?(d.action) && branch_name[0, d.path.size] == d.path && d.from_path && d.from_revision
90
- d.from_path + branch_name[d.path.size..-1]
91
- end
92
- end
93
-
94
- # True if the passed diff represents the initial creation of the
95
- # branch -- not a move or copy from somewhere else.
96
- def diff_creates_branch(d)
97
- d.action == 'A' && branch_name[0, d.path.size] == d.path && !d.from_path
98
- end
99
- end
100
- end
@@ -1,37 +0,0 @@
1
- module OhlohScm::Adapters
2
- class SvnChainAdapter < SvnAdapter
3
-
4
- # Returns the count of commits following revision number 'after'.
5
- def commit_count(opts={})
6
- (parent_svn(opts[:after]) ? parent_svn(opts[:after]).commit_count(opts) : 0) + super(opts)
7
- end
8
-
9
- # Returns an array of revision numbers for all commits following revision number 'after'.
10
- def commit_tokens(opts={})
11
- (parent_svn(opts[:after]) ? parent_svn(opts[:after]).commit_tokens(opts) : []) + super(opts)
12
- end
13
-
14
- # Returns an array of commits following revision number 'after'.
15
- def commits(opts={})
16
- (parent_svn(opts[:after]) ? parent_svn(opts[:after]).commits(opts) : []) + super(opts)
17
- end
18
-
19
- def verbose_commit(rev=0)
20
- parent_svn(rev) ? parent_svn.verbose_commit(rev) : super(rev)
21
- end
22
-
23
- # If the diff points to a file, simply returns the diff.
24
- # If the diff points to a directory, returns an array of diffs for every file in the directory.
25
- def deepen_diff(diff, rev)
26
- if %w(A R).include?(diff.action) && diff.path == '' && parent_svn && rev == first_token
27
- # A very special case that is important for chaining.
28
- # This is the first commit, and the entire tree is being created by copying from parent_svn.
29
- # In this case, there isn't actually any change, just
30
- # a change of branch_name. Return no diffs at all.
31
- nil
32
- else
33
- super(diff, rev)
34
- end
35
- end
36
- end
37
- end
@@ -1,44 +0,0 @@
1
- module OhlohScm::Adapters
2
- # Some explanation is in order about "chaining."
3
- #
4
- # First, realize that a base SvnAdapter only tracks the history of a single
5
- # subdirectory. If you point an adapter at /trunk, then that adapter is
6
- # going to ignore eveything in /branches and /tags.
7
- #
8
- # The problem with this is that directories often get moved about. What is
9
- # called "/trunk" today might have been in a branch directory at some point
10
- # in the past. But after we completely ignore other directories, we never see
11
- # that old history.
12
- #
13
- # Suppose for example that from revisions 1 to 100, development occured in
14
- # /branches/beta. Then at revision 101, /trunk was created by copying
15
- # /branches/beta, and this /trunk lives on to this day.
16
- #
17
- # The log for revision 101 is going to look something like this:
18
- #
19
- # Changed paths:
20
- # D /branches/beta
21
- # A /trunk (from /branches/beta:100)
22
- #
23
- # A single SvnAdapter pointed at today's /trunk will only see revisions 101
24
- # through HEAD, because /trunk didn't even exist before revision 101.
25
- #
26
- # To capture the prior history, we need to create *another* SvnAdapter
27
- # which points at /branches/beta, and which considers revisions from 1 to 100.
28
- #
29
- # That's what chaining is: when we find that the first commit of an adapter
30
- # indicates the wholesale renaming or copying of the entire tree from
31
- # another location, then we generate a new SvnAdapter that points to that
32
- # prior location, and process that SvnAdapter as well.
33
- #
34
- # This behavior recurses ("chains") all the way back to revision 1.
35
- #
36
- # It only works if the *entire branch* moves. We don't chain when
37
- # subdirectories or individual files are copied.
38
- class SvnChainAdapter < SvnAdapter
39
- end
40
- end
41
-
42
- require_relative 'svn_chain/chain'
43
- require_relative 'svn_chain/commits'
44
- require_relative 'svn_chain/cat_file'
@@ -1,19 +0,0 @@
1
- module OhlohScm::Parsers
2
- class ArrayWriter
3
-
4
- attr_accessor :buffer
5
- def initialize(buffer=[])
6
- @buffer = buffer
7
- end
8
-
9
- def write_preamble(opts = {})
10
- end
11
-
12
- def write_commit(commit)
13
- @buffer << commit
14
- end
15
-
16
- def write_postamble
17
- end
18
- end
19
- end
@@ -1,60 +0,0 @@
1
- module OhlohScm::Parsers
2
- class BranchNumber
3
- def initialize(s)
4
- @a = s.split('.').collect { |i| i.to_i }
5
- # Accomodate CVS magic branch numbers by swapping the magic zero
6
- # That is, 1.1.0.2 => 1.1.2.0
7
- if @a.size > 2 and @a[-2]==0
8
- @a[-1],@a[-2] = @a[-2],@a[-1]
9
- end
10
- end
11
-
12
- def to_s
13
- @a.join('.')
14
- end
15
-
16
- def to_a
17
- @a
18
- end
19
-
20
- # Returns true if <branch_number> is an ancestor of this object.
21
- # Also returns true if <branch_number> is the same as this object.
22
- def inherits_from?(branch_number)
23
- b = branch_number.to_a
24
-
25
- return false if b.size > @a.size
26
-
27
- if b.size == 2
28
- return false if b[0] > @a[0]
29
- return false if b[0] == @a[0] and b[1] > @a[1]
30
- else
31
- 0.upto(b.size-2) do |i|
32
- return false if b[i] != @a[i]
33
- end
34
- return false if b[-1] > @a[b.size-1]
35
- end
36
-
37
- true
38
- end
39
-
40
- # Returns true if <branch_number> is an ancestor of this object,
41
- # or if this object follows <branch_number> on the same line.
42
- def on_same_line?(branch_number)
43
- b = branch_number.to_a
44
-
45
- if b.size > @a.size
46
- # b has been branched more times than this object.
47
- return false
48
- elsif b.size == @a.size
49
- # b and a have the same number of branch events.
50
- # If either one inherits from the other then they
51
- # are on the same line.
52
- return (inherits_from?(branch_number) or branch_number.inherits_from?(self))
53
- elsif b.size < @a.size
54
- # b has not been branched as often as this object.
55
- # That's OK if b is an ancestor of this object.
56
- return inherits_from?(branch_number)
57
- end
58
- end
59
- end
60
- end