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.
- checksums.yaml +5 -5
- data/{bin → .bin}/accept_svn_ssl_certificate +0 -0
- data/.bin/check_scm_version +28 -0
- data/.bin/run-test +3 -0
- data/.bin/run-tests +3 -0
- data/{bin → .bin}/string_encoder +0 -0
- data/.git_hooks/pre-commit +20 -0
- data/.gitignore +1 -4
- data/.rubocop.yml +13 -0
- data/.ruby-version +1 -2
- data/.travis.yml +3 -2
- data/Dockerfile +8 -4
- data/Gemfile +14 -0
- data/Gemfile.lock +54 -0
- data/{COPYING → LICENSE.txt} +0 -0
- data/README.md +52 -116
- data/Rakefile +7 -29
- data/lib/ohloh_scm.rb +26 -32
- data/lib/ohloh_scm/activity.rb +38 -0
- data/lib/ohloh_scm/bzr.rb +12 -0
- data/lib/ohloh_scm/bzr/activity.rb +191 -0
- data/lib/ohloh_scm/bzr/scm.rb +24 -0
- data/lib/ohloh_scm/bzr/status.rb +8 -0
- data/lib/ohloh_scm/bzr/validation.rb +18 -0
- data/lib/ohloh_scm/commit.rb +44 -41
- data/lib/ohloh_scm/core.rb +22 -0
- data/lib/ohloh_scm/cvs.rb +11 -0
- data/lib/ohloh_scm/cvs/activity.rb +149 -0
- data/lib/ohloh_scm/cvs/scm.rb +149 -0
- data/lib/ohloh_scm/cvs/status.rb +14 -0
- data/lib/ohloh_scm/cvs/validation.rb +106 -0
- data/lib/ohloh_scm/data/git_ignore_list.rb +29 -0
- data/lib/ohloh_scm/diff.rb +42 -39
- data/lib/ohloh_scm/factory.rb +11 -0
- data/lib/ohloh_scm/git.rb +11 -0
- data/lib/ohloh_scm/git/activity.rb +317 -0
- data/lib/ohloh_scm/git/scm.rb +137 -0
- data/lib/ohloh_scm/git/status.rb +13 -0
- data/lib/ohloh_scm/git/validation.rb +18 -0
- data/lib/ohloh_scm/git_svn.rb +11 -0
- data/lib/ohloh_scm/git_svn/activity.rb +84 -0
- data/lib/ohloh_scm/git_svn/scm.rb +91 -0
- data/lib/ohloh_scm/git_svn/status.rb +8 -0
- data/lib/ohloh_scm/git_svn/validation.rb +8 -0
- data/lib/ohloh_scm/hg.rb +12 -0
- data/lib/ohloh_scm/hg/activity.rb +188 -0
- data/lib/ohloh_scm/hg/scm.rb +51 -0
- data/lib/ohloh_scm/hg/status.rb +8 -0
- data/lib/ohloh_scm/hg/validation.rb +18 -0
- data/lib/ohloh_scm/parser.rb +30 -0
- data/lib/ohloh_scm/parser/array_writer.rb +15 -0
- data/lib/ohloh_scm/parser/branch_number.rb +63 -0
- data/lib/ohloh_scm/{parsers → parser}/bzr_xml_parser.rb +65 -55
- data/lib/ohloh_scm/parser/cvs_parser.rb +161 -0
- data/lib/ohloh_scm/parser/git_parser.rb +128 -0
- data/lib/ohloh_scm/parser/hg_parser.rb +78 -0
- data/lib/ohloh_scm/{parsers → parser}/hg_style +0 -0
- data/lib/ohloh_scm/{parsers → parser}/hg_verbose_style +0 -0
- data/lib/ohloh_scm/parser/svn_parser.rb +83 -0
- data/lib/ohloh_scm/py_bridge.rb +9 -0
- data/lib/ohloh_scm/py_bridge/bzr_client.rb +28 -0
- data/lib/ohloh_scm/{adapters/bzrlib/bzrlib_pipe_server.py → py_bridge/bzr_server.py} +1 -1
- data/lib/ohloh_scm/py_bridge/hg_client.rb +30 -0
- data/lib/ohloh_scm/{adapters/hglib/server.py → py_bridge/hg_server.py} +0 -0
- data/lib/ohloh_scm/py_bridge/py_client.rb +45 -0
- data/lib/ohloh_scm/scm.rb +26 -0
- data/lib/ohloh_scm/status.rb +24 -0
- data/lib/ohloh_scm/string_extensions.rb +11 -0
- data/lib/ohloh_scm/svn.rb +11 -0
- data/lib/ohloh_scm/svn/activity.rb +95 -0
- data/lib/ohloh_scm/svn/scm.rb +95 -0
- data/lib/ohloh_scm/svn/status.rb +8 -0
- data/lib/ohloh_scm/svn/validation.rb +56 -0
- data/lib/ohloh_scm/system.rb +44 -0
- data/lib/ohloh_scm/validation.rb +83 -0
- data/lib/ohloh_scm/version.rb +8 -1
- data/ohloh_scm.gemspec +18 -15
- data/spec/.rubocop.yml +22 -0
- data/spec/benchmarks/hg_bzr_bash_vs_py_api.rb +39 -0
- data/spec/benchmarks/process_spawn_benchmark.rb +133 -0
- data/spec/helpers/assert_scm_attr_helper.rb +31 -0
- data/spec/helpers/commit_tokens_helper.rb +26 -0
- data/spec/helpers/generic_helper.rb +5 -0
- data/spec/helpers/repository_helper.rb +36 -0
- data/spec/helpers/system_helper.rb +25 -0
- data/spec/ohloh_scm/bzr/activity_spec.rb +460 -0
- data/spec/ohloh_scm/bzr/scm_spec.rb +17 -0
- data/spec/ohloh_scm/bzr/validation_spec.rb +37 -0
- data/spec/ohloh_scm/cvs/activity_spec.rb +93 -0
- data/spec/ohloh_scm/cvs/scm_spec.rb +112 -0
- data/spec/ohloh_scm/cvs/validation_spec.rb +78 -0
- data/spec/ohloh_scm/factory_spec.rb +16 -0
- data/spec/ohloh_scm/git/activity_spec.rb +402 -0
- data/spec/ohloh_scm/git/scm_spec.rb +57 -0
- data/spec/ohloh_scm/git/status_spec.rb +11 -0
- data/spec/ohloh_scm/git/validation_spec.rb +57 -0
- data/spec/ohloh_scm/git_svn/activity_spec.rb +89 -0
- data/spec/ohloh_scm/git_svn/scm_spec.rb +22 -0
- data/spec/ohloh_scm/hg/activity_spec.rb +323 -0
- data/spec/ohloh_scm/hg/scm_spec.rb +23 -0
- data/spec/ohloh_scm/hg/status_spec.rb +12 -0
- data/spec/ohloh_scm/hg/validation_spec.rb +32 -0
- data/spec/ohloh_scm/parser/array_writer_spec.rb +29 -0
- data/spec/ohloh_scm/parser/branch_number_spec.rb +126 -0
- data/spec/ohloh_scm/parser/cvs_parser_spec.rb +77 -0
- data/spec/ohloh_scm/parser/git_parser_spec.rb +102 -0
- data/spec/ohloh_scm/parser/hg_parser_spec.rb +194 -0
- data/spec/ohloh_scm/svn/activity_spec.rb +55 -0
- data/spec/ohloh_scm/svn/scm_spec.rb +75 -0
- data/spec/ohloh_scm/svn/validation_spec.rb +89 -0
- data/spec/ohloh_scm/svn_parser_spec.rb +146 -0
- data/spec/ohloh_scm/system_spec.rb +32 -0
- data/spec/ohloh_scm/version_spec.rb +9 -0
- data/{test/data → spec/raw_fixtures}/basic.rlog +0 -0
- data/{test/data → spec/raw_fixtures}/file_created_on_branch.rlog +0 -0
- data/{test/data → spec/raw_fixtures}/invalid-utf-word +0 -0
- data/{test/data → spec/raw_fixtures}/multiple_revisions.rlog +0 -0
- data/{test/data → spec/raw_fixtures}/sample-content +0 -0
- data/{test/data → spec/raw_fixtures}/simple.ohlog +1 -1
- data/{test/data → spec/raw_fixtures}/simple.svn_log +0 -0
- data/{test/data → spec/raw_fixtures}/simultaneous_checkins.rlog +0 -0
- data/{test/data → spec/raw_fixtures}/simultaneous_checkins_2.rlog +0 -0
- data/spec/scm_fixtures/bzr.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/bzr_colon.tgz +0 -0
- data/spec/scm_fixtures/bzr_large.tgz +0 -0
- data/spec/scm_fixtures/bzr_with_authors.tgz +0 -0
- data/spec/scm_fixtures/bzr_with_branch.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/bzr_with_invalid_encoding.tgz +0 -0
- data/spec/scm_fixtures/bzr_with_nested_branches.tgz +0 -0
- data/spec/scm_fixtures/bzr_with_subdirectories.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/cvs.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_dupe_delete.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_svn.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_walk.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_with_invalid_encoding.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_with_master_tag.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_with_multiple_branch.tgz +0 -0
- data/spec/scm_fixtures/git_with_mv.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/git_with_null_merge.tgz +0 -0
- data/spec/scm_fixtures/git_with_submodules.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/hg.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/hg_dupe_delete.tgz +0 -0
- data/spec/scm_fixtures/hg_large.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/hg_walk.tgz +0 -0
- data/{test/repositories → spec/scm_fixtures}/hg_with_invalid_encoding.tgz +0 -0
- data/spec/scm_fixtures/svn.tgz +0 -0
- data/spec/scm_fixtures/svn_subdir.tgz +0 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/string_encoder_spec.rb +32 -0
- metadata +224 -1052
- data/bin/ohlog +0 -152
- data/lib/ohloh_scm/adapters/abstract/misc.rb +0 -12
- data/lib/ohloh_scm/adapters/abstract/sha1.rb +0 -48
- data/lib/ohloh_scm/adapters/abstract/system.rb +0 -60
- data/lib/ohloh_scm/adapters/abstract/validation.rb +0 -77
- data/lib/ohloh_scm/adapters/abstract_adapter.rb +0 -32
- data/lib/ohloh_scm/adapters/bzr/cat_file.rb +0 -25
- data/lib/ohloh_scm/adapters/bzr/commits.rb +0 -100
- data/lib/ohloh_scm/adapters/bzr/head.rb +0 -19
- data/lib/ohloh_scm/adapters/bzr/misc.rb +0 -61
- data/lib/ohloh_scm/adapters/bzr/pull.rb +0 -22
- data/lib/ohloh_scm/adapters/bzr/push.rb +0 -51
- data/lib/ohloh_scm/adapters/bzr/validation.rb +0 -16
- data/lib/ohloh_scm/adapters/bzr_adapter.rb +0 -15
- data/lib/ohloh_scm/adapters/bzrlib/bzrlib_pipe_client.rb +0 -71
- data/lib/ohloh_scm/adapters/bzrlib/cat_file.rb +0 -9
- data/lib/ohloh_scm/adapters/bzrlib/head.rb +0 -9
- data/lib/ohloh_scm/adapters/bzrlib_adapter.rb +0 -25
- data/lib/ohloh_scm/adapters/cvs/commits.rb +0 -97
- data/lib/ohloh_scm/adapters/cvs/misc.rb +0 -212
- data/lib/ohloh_scm/adapters/cvs/validation.rb +0 -77
- data/lib/ohloh_scm/adapters/cvs_adapter.rb +0 -18
- data/lib/ohloh_scm/adapters/factory.rb +0 -38
- data/lib/ohloh_scm/adapters/git/cat_file.rb +0 -16
- data/lib/ohloh_scm/adapters/git/commit_all.rb +0 -141
- data/lib/ohloh_scm/adapters/git/commits.rb +0 -122
- data/lib/ohloh_scm/adapters/git/head.rb +0 -21
- data/lib/ohloh_scm/adapters/git/misc.rb +0 -107
- data/lib/ohloh_scm/adapters/git/patch.rb +0 -9
- data/lib/ohloh_scm/adapters/git/pull.rb +0 -124
- data/lib/ohloh_scm/adapters/git/push.rb +0 -39
- data/lib/ohloh_scm/adapters/git/token.rb +0 -53
- data/lib/ohloh_scm/adapters/git/validation.rb +0 -50
- data/lib/ohloh_scm/adapters/git_adapter.rb +0 -18
- data/lib/ohloh_scm/adapters/git_svn/cat_file.rb +0 -22
- data/lib/ohloh_scm/adapters/git_svn/commits.rb +0 -57
- data/lib/ohloh_scm/adapters/git_svn/head.rb +0 -9
- data/lib/ohloh_scm/adapters/git_svn/misc.rb +0 -24
- data/lib/ohloh_scm/adapters/git_svn/pull.rb +0 -80
- data/lib/ohloh_scm/adapters/git_svn_adapter.rb +0 -13
- data/lib/ohloh_scm/adapters/hg/cat_file.rb +0 -28
- data/lib/ohloh_scm/adapters/hg/commits.rb +0 -112
- data/lib/ohloh_scm/adapters/hg/head.rb +0 -29
- data/lib/ohloh_scm/adapters/hg/misc.rb +0 -40
- data/lib/ohloh_scm/adapters/hg/patch.rb +0 -9
- data/lib/ohloh_scm/adapters/hg/pull.rb +0 -23
- data/lib/ohloh_scm/adapters/hg/push.rb +0 -51
- data/lib/ohloh_scm/adapters/hg/validation.rb +0 -26
- data/lib/ohloh_scm/adapters/hg_adapter.rb +0 -21
- data/lib/ohloh_scm/adapters/hglib/cat_file.rb +0 -14
- data/lib/ohloh_scm/adapters/hglib/client.rb +0 -62
- data/lib/ohloh_scm/adapters/hglib/head.rb +0 -9
- data/lib/ohloh_scm/adapters/hglib_adapter.rb +0 -25
- data/lib/ohloh_scm/adapters/svn/cat_file.rb +0 -19
- data/lib/ohloh_scm/adapters/svn/commits.rb +0 -195
- data/lib/ohloh_scm/adapters/svn/head.rb +0 -19
- data/lib/ohloh_scm/adapters/svn/misc.rb +0 -171
- data/lib/ohloh_scm/adapters/svn/patch.rb +0 -8
- data/lib/ohloh_scm/adapters/svn/pre-revprop-change +0 -2
- data/lib/ohloh_scm/adapters/svn/pull.rb +0 -77
- data/lib/ohloh_scm/adapters/svn/push.rb +0 -15
- data/lib/ohloh_scm/adapters/svn/validation.rb +0 -87
- data/lib/ohloh_scm/adapters/svn_adapter.rb +0 -17
- data/lib/ohloh_scm/adapters/svn_chain/cat_file.rb +0 -8
- data/lib/ohloh_scm/adapters/svn_chain/chain.rb +0 -100
- data/lib/ohloh_scm/adapters/svn_chain/commits.rb +0 -37
- data/lib/ohloh_scm/adapters/svn_chain_adapter.rb +0 -44
- data/lib/ohloh_scm/parsers/array_writer.rb +0 -19
- data/lib/ohloh_scm/parsers/branch_number.rb +0 -60
- data/lib/ohloh_scm/parsers/bzr_parser.rb +0 -128
- data/lib/ohloh_scm/parsers/cvs_parser.rb +0 -182
- data/lib/ohloh_scm/parsers/git_parser.rb +0 -67
- data/lib/ohloh_scm/parsers/git_styled_parser.rb +0 -95
- data/lib/ohloh_scm/parsers/hg_parser.rb +0 -63
- data/lib/ohloh_scm/parsers/hg_styled_parser.rb +0 -65
- data/lib/ohloh_scm/parsers/human_writer.rb +0 -49
- data/lib/ohloh_scm/parsers/parser.rb +0 -34
- data/lib/ohloh_scm/parsers/svn_parser.rb +0 -77
- data/lib/ohloh_scm/parsers/svn_xml_parser.rb +0 -62
- data/lib/ohloh_scm/parsers/xml_writer.rb +0 -62
- data/lib/ohloh_scm/scratch_dir.rb +0 -59
- data/lib/ohloh_scm/shellout.rb +0 -40
- data/log/.gitignore +0 -1
- data/test/bin/svn +0 -7
- data/test/data/basic.ohlog +0 -11
- data/test/data/branch_merge.bzr_xml_log +0 -87
- data/test/data/git_patch.diff +0 -19
- data/test/data/helloworld.log +0 -41
- data/test/data/hg_patch.diff +0 -9
- data/test/data/intelliglue.rlog +0 -1216
- data/test/data/multiple_commits.rlog +0 -64
- data/test/data/simple.bzr_xml_log +0 -41
- data/test/data/simple.svn_xml_log +0 -66
- data/test/data/svn_patch.diff +0 -9
- data/test/data/svn_with_invalid_encoding.log +0 -33
- data/test/repositories/bzr/.bzr/README +0 -3
- data/test/repositories/bzr/.bzr/branch-format +0 -1
- data/test/repositories/bzr/.bzr/branch/branch.conf +0 -0
- data/test/repositories/bzr/.bzr/branch/format +0 -1
- data/test/repositories/bzr/.bzr/branch/last-revision +0 -1
- data/test/repositories/bzr/.bzr/branch/tags +0 -1
- data/test/repositories/bzr/.bzr/checkout/conflicts +0 -1
- data/test/repositories/bzr/.bzr/checkout/dirstate +0 -0
- data/test/repositories/bzr/.bzr/checkout/format +0 -1
- data/test/repositories/bzr/.bzr/repository/format +0 -1
- data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.tix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/62f9cada7c58bce361b9b852d180ff56.tix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.tix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.tix +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.tix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.tix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.iix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.rix +0 -0
- data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.six +0 -5
- data/test/repositories/bzr/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.tix +0 -0
- data/test/repositories/bzr/.bzr/repository/pack-names +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/0428489d1a03d05c496c2c429fe96e90.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/62f9cada7c58bce361b9b852d180ff56.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/71af8bae249bcb824a4ff17c62029142.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/7202eb77b81a80eca5296f317ed42149.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/8a571ba35ee54cd133b71e967442fe17.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/a06b9c10004fc3e05affee8cf0a9febd.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/packs/f35e1020b6a55c81b6d2fe4c7bcd4645.pack +0 -0
- data/test/repositories/bzr/.bzr/repository/upload/.gitignore +0 -1
- data/test/repositories/bzr/C/303/251dric.txt +0 -2
- data/test/repositories/bzr/file1.txt +0 -2
- data/test/repositories/bzr/file3.txt +0 -1
- data/test/repositories/bzr/file4.txt +0 -1
- data/test/repositories/bzr/file5.txt +0 -4
- data/test/repositories/bzr_hello_world/.bzr/README +0 -3
- data/test/repositories/bzr_hello_world/.bzr/branch-format +0 -1
- data/test/repositories/bzr_hello_world/.bzr/branch/branch.conf +0 -0
- data/test/repositories/bzr_hello_world/.bzr/branch/format +0 -1
- data/test/repositories/bzr_hello_world/.bzr/branch/last-revision +0 -1
- data/test/repositories/bzr_hello_world/.bzr/branch/tags +0 -0
- data/test/repositories/bzr_hello_world/.bzr/checkout/conflicts +0 -1
- data/test/repositories/bzr_hello_world/.bzr/checkout/dirstate +0 -0
- data/test/repositories/bzr_hello_world/.bzr/checkout/format +0 -1
- data/test/repositories/bzr_hello_world/.bzr/repository/format +0 -1
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.iix +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.rix +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.six +0 -5
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/a7cd0d6de5d8b3efdd5f61a4caeda296.tix +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.iix +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.rix +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.six +0 -5
- data/test/repositories/bzr_hello_world/.bzr/repository/indices/ed1e97c1213220a92ff857169867a7b3.tix +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/pack-names +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/packs/a7cd0d6de5d8b3efdd5f61a4caeda296.pack +0 -0
- data/test/repositories/bzr_hello_world/.bzr/repository/packs/ed1e97c1213220a92ff857169867a7b3.pack +0 -0
- data/test/repositories/bzr_hello_world/helloworld.c +0 -6
- data/test/repositories/bzr_with_authors/.bzr/README +0 -3
- data/test/repositories/bzr_with_authors/.bzr/branch-format +0 -1
- data/test/repositories/bzr_with_authors/.bzr/branch/branch.conf +0 -0
- data/test/repositories/bzr_with_authors/.bzr/branch/format +0 -1
- data/test/repositories/bzr_with_authors/.bzr/branch/last-revision +0 -1
- data/test/repositories/bzr_with_authors/.bzr/branch/tags +0 -0
- data/test/repositories/bzr_with_authors/.bzr/checkout/conflicts +0 -1
- data/test/repositories/bzr_with_authors/.bzr/checkout/dirstate +0 -0
- data/test/repositories/bzr_with_authors/.bzr/checkout/format +0 -1
- data/test/repositories/bzr_with_authors/.bzr/checkout/views +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/format +0 -1
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.cix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.iix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.rix +0 -6
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.six +0 -5
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/1326ecee2f4f69991771137c5307689a.tix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.cix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.iix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.rix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.six +0 -5
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/adf730b6cf7c7959afcedb87e155654d.tix +0 -6
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.cix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.iix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.rix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.six +0 -5
- data/test/repositories/bzr_with_authors/.bzr/repository/indices/d2613fcfb5e48e79073b96270782f95c.tix +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/pack-names +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/packs/1326ecee2f4f69991771137c5307689a.pack +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/packs/adf730b6cf7c7959afcedb87e155654d.pack +0 -0
- data/test/repositories/bzr_with_authors/.bzr/repository/packs/d2613fcfb5e48e79073b96270782f95c.pack +0 -0
- data/test/repositories/bzr_with_authors/test.txt +0 -1
- data/test/repositories/bzr_with_branch/.bzr/README +0 -3
- data/test/repositories/bzr_with_branch/.bzr/branch-format +0 -1
- data/test/repositories/bzr_with_branch/.bzr/branch/branch.conf +0 -1
- data/test/repositories/bzr_with_branch/.bzr/branch/format +0 -1
- data/test/repositories/bzr_with_branch/.bzr/branch/last-revision +0 -1
- data/test/repositories/bzr_with_branch/.bzr/branch/tags +0 -0
- data/test/repositories/bzr_with_branch/.bzr/checkout/conflicts +0 -1
- data/test/repositories/bzr_with_branch/.bzr/checkout/dirstate +0 -0
- data/test/repositories/bzr_with_branch/.bzr/checkout/format +0 -1
- data/test/repositories/bzr_with_branch/.bzr/checkout/merge-hashes +0 -3
- data/test/repositories/bzr_with_branch/.bzr/repository/format +0 -1
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.iix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.rix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.six +0 -5
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/3336f250dbe86a7eec2de4c1b1f97db7.tix +0 -5
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.iix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.rix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.six +0 -5
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/47cfe65310e6d462bb87a68fff0bc162.tix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.iix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.rix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.six +0 -5
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/64e98edbf1aebe6f532f2f93b24eead8.tix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.iix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.rix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.six +0 -5
- data/test/repositories/bzr_with_branch/.bzr/repository/indices/8008794e258fc3fa4be68d538312a91c.tix +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/pack-names +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/packs/3336f250dbe86a7eec2de4c1b1f97db7.pack +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/packs/47cfe65310e6d462bb87a68fff0bc162.pack +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/packs/64e98edbf1aebe6f532f2f93b24eead8.pack +0 -0
- data/test/repositories/bzr_with_branch/.bzr/repository/packs/8008794e258fc3fa4be68d538312a91c.pack +0 -0
- data/test/repositories/bzr_with_branch/goodbyeworld.c +0 -5
- data/test/repositories/bzr_with_branch/helloworld.c +0 -6
- data/test/repositories/bzr_with_nested_branches/.bzr/README +0 -3
- data/test/repositories/bzr_with_nested_branches/.bzr/branch-format +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/branch/branch.conf +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/branch/format +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/branch/last-revision +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/branch/tags +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/checkout/conflicts +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/checkout/dirstate +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/checkout/format +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/checkout/merge-hashes +0 -6
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/format +0 -1
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/0428489d1a03d05c496c2c429fe96e90.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/30fcaac048e328a7727156986055f6e8.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/673cc297ed321f667e1d8d4fff600829.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/71af8bae249bcb824a4ff17c62029142.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/7202eb77b81a80eca5296f317ed42149.tix +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/8a571ba35ee54cd133b71e967442fe17.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/a06b9c10004fc3e05affee8cf0a9febd.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/da6c79a024c70fd6831e323430a96cc8.tix +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.iix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.rix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.six +0 -5
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/indices/f35e1020b6a55c81b6d2fe4c7bcd4645.tix +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/pack-names +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/0428489d1a03d05c496c2c429fe96e90.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/30fcaac048e328a7727156986055f6e8.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/673cc297ed321f667e1d8d4fff600829.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/71af8bae249bcb824a4ff17c62029142.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/7202eb77b81a80eca5296f317ed42149.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/8a571ba35ee54cd133b71e967442fe17.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/a06b9c10004fc3e05affee8cf0a9febd.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/da6c79a024c70fd6831e323430a96cc8.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/packs/f35e1020b6a55c81b6d2fe4c7bcd4645.pack +0 -0
- data/test/repositories/bzr_with_nested_branches/.bzr/repository/upload/.gitignore +0 -1
- data/test/repositories/bzr_with_nested_branches/file1.txt +0 -2
- data/test/repositories/bzr_with_nested_branches/file3.txt +0 -1
- data/test/repositories/bzr_with_nested_branches/file4.txt +0 -1
- data/test/repositories/bzr_with_nested_branches/file5.txt +0 -4
- data/test/repositories/bzr_with_nested_branches/file6.txt +0 -2
- data/test/repositories/bzr_with_nested_branches/file7.txt +0 -2
- data/test/repositories/bzr_with_subdirectories/.bzr/README +0 -3
- data/test/repositories/bzr_with_subdirectories/.bzr/branch-format +0 -1
- data/test/repositories/bzr_with_subdirectories/.bzr/branch/branch.conf +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/branch/format +0 -1
- data/test/repositories/bzr_with_subdirectories/.bzr/branch/last-revision +0 -1
- data/test/repositories/bzr_with_subdirectories/.bzr/branch/tags +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/checkout/conflicts +0 -1
- data/test/repositories/bzr_with_subdirectories/.bzr/checkout/dirstate +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/checkout/format +0 -1
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/format +0 -1
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.iix +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.rix +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.six +0 -5
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/indices/6eb92b11d9f811881dd08e0ca71e136d.tix +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/pack-names +0 -0
- data/test/repositories/bzr_with_subdirectories/.bzr/repository/packs/6eb92b11d9f811881dd08e0ca71e136d.pack +0 -0
- data/test/repositories/bzr_with_subdirectories/foo/helloworld.c +0 -0
- data/test/repositories/deep_svn/README.txt +0 -5
- data/test/repositories/deep_svn/conf/authz +0 -21
- data/test/repositories/deep_svn/conf/passwd +0 -8
- data/test/repositories/deep_svn/conf/svnserve.conf +0 -30
- data/test/repositories/deep_svn/db/current +0 -1
- data/test/repositories/deep_svn/db/format +0 -1
- data/test/repositories/deep_svn/db/fs-type +0 -1
- data/test/repositories/deep_svn/db/revprops/0 +0 -5
- data/test/repositories/deep_svn/db/revprops/1 +0 -14
- data/test/repositories/deep_svn/db/revprops/2 +0 -14
- data/test/repositories/deep_svn/db/revprops/3 +0 -14
- data/test/repositories/deep_svn/db/revprops/4 +0 -14
- data/test/repositories/deep_svn/db/revs/0 +0 -11
- data/test/repositories/deep_svn/db/revs/1 +0 -122
- data/test/repositories/deep_svn/db/revs/2 +0 -19
- data/test/repositories/deep_svn/db/revs/3 +0 -44
- data/test/repositories/deep_svn/db/revs/4 +0 -48
- data/test/repositories/deep_svn/db/uuid +0 -1
- data/test/repositories/deep_svn/db/write-lock +0 -0
- data/test/repositories/deep_svn/format +0 -1
- data/test/repositories/deep_svn/hooks/post-commit.tmpl +0 -51
- data/test/repositories/deep_svn/hooks/post-lock.tmpl +0 -44
- data/test/repositories/deep_svn/hooks/post-revprop-change.tmpl +0 -56
- data/test/repositories/deep_svn/hooks/post-unlock.tmpl +0 -42
- data/test/repositories/deep_svn/hooks/pre-commit.tmpl +0 -70
- data/test/repositories/deep_svn/hooks/pre-lock.tmpl +0 -64
- data/test/repositories/deep_svn/hooks/pre-revprop-change.tmpl +0 -66
- data/test/repositories/deep_svn/hooks/pre-unlock.tmpl +0 -60
- data/test/repositories/deep_svn/hooks/start-commit.tmpl +0 -54
- data/test/repositories/deep_svn/locks/db-logs.lock +0 -3
- data/test/repositories/deep_svn/locks/db.lock +0 -3
- data/test/repositories/git_with_empty_merge.tgz +0 -0
- data/test/repositories/svn/README.txt +0 -5
- data/test/repositories/svn/conf/authz +0 -21
- data/test/repositories/svn/conf/passwd +0 -8
- data/test/repositories/svn/conf/svnserve.conf +0 -30
- data/test/repositories/svn/db/current +0 -1
- data/test/repositories/svn/db/format +0 -1
- data/test/repositories/svn/db/fs-type +0 -1
- data/test/repositories/svn/db/revprops/0 +0 -5
- data/test/repositories/svn/db/revprops/1 +0 -14
- data/test/repositories/svn/db/revprops/2 +0 -13
- data/test/repositories/svn/db/revprops/3 +0 -13
- data/test/repositories/svn/db/revprops/4 +0 -13
- data/test/repositories/svn/db/revprops/5 +0 -13
- data/test/repositories/svn/db/revprops/6 +0 -12
- data/test/repositories/svn/db/revs/0 +0 -11
- data/test/repositories/svn/db/revs/1 +0 -0
- data/test/repositories/svn/db/revs/2 +0 -0
- data/test/repositories/svn/db/revs/3 +0 -0
- data/test/repositories/svn/db/revs/4 +0 -0
- data/test/repositories/svn/db/revs/5 +0 -64
- data/test/repositories/svn/db/revs/6 +0 -50
- data/test/repositories/svn/db/uuid +0 -1
- data/test/repositories/svn/db/write-lock +0 -0
- data/test/repositories/svn/format +0 -1
- data/test/repositories/svn/hooks/post-commit.tmpl +0 -51
- data/test/repositories/svn/hooks/post-lock.tmpl +0 -44
- data/test/repositories/svn/hooks/post-revprop-change.tmpl +0 -56
- data/test/repositories/svn/hooks/post-unlock.tmpl +0 -42
- data/test/repositories/svn/hooks/pre-commit.tmpl +0 -70
- data/test/repositories/svn/hooks/pre-lock.tmpl +0 -64
- data/test/repositories/svn/hooks/pre-revprop-change +0 -67
- data/test/repositories/svn/hooks/pre-unlock.tmpl +0 -60
- data/test/repositories/svn/hooks/start-commit.tmpl +0 -54
- data/test/repositories/svn/locks/db-logs.lock +0 -3
- data/test/repositories/svn/locks/db.lock +0 -3
- data/test/repositories/svn_empty/README.txt +0 -5
- data/test/repositories/svn_empty/conf/authz +0 -32
- data/test/repositories/svn_empty/conf/hooks-env.tmpl +0 -19
- data/test/repositories/svn_empty/conf/passwd +0 -8
- data/test/repositories/svn_empty/conf/svnserve.conf +0 -76
- data/test/repositories/svn_empty/db/current +0 -1
- data/test/repositories/svn_empty/db/format +0 -2
- data/test/repositories/svn_empty/db/fs-type +0 -1
- data/test/repositories/svn_empty/db/fsfs.conf +0 -125
- data/test/repositories/svn_empty/db/min-unpacked-rev +0 -1
- data/test/repositories/svn_empty/db/revprops/0/0 +0 -5
- data/test/repositories/svn_empty/db/revs/0/0 +0 -11
- data/test/repositories/svn_empty/db/txn-current +0 -1
- data/test/repositories/svn_empty/db/txn-current-lock +0 -0
- data/test/repositories/svn_empty/db/uuid +0 -1
- data/test/repositories/svn_empty/db/write-lock +0 -0
- data/test/repositories/svn_empty/format +0 -1
- data/test/repositories/svn_empty/hooks/post-commit.tmpl +0 -52
- data/test/repositories/svn_empty/hooks/post-lock.tmpl +0 -45
- data/test/repositories/svn_empty/hooks/post-revprop-change.tmpl +0 -57
- data/test/repositories/svn_empty/hooks/post-unlock.tmpl +0 -43
- data/test/repositories/svn_empty/hooks/pre-commit.tmpl +0 -85
- data/test/repositories/svn_empty/hooks/pre-lock.tmpl +0 -73
- data/test/repositories/svn_empty/hooks/pre-revprop-change.tmpl +0 -66
- data/test/repositories/svn_empty/hooks/pre-unlock.tmpl +0 -65
- data/test/repositories/svn_empty/hooks/start-commit.tmpl +0 -74
- data/test/repositories/svn_empty/locks/db-logs.lock +0 -3
- data/test/repositories/svn_empty/locks/db.lock +0 -3
- data/test/repositories/svn_with_branching.tgz +0 -0
- data/test/repositories/svn_with_invalid_encoding.tgz +0 -0
- data/test/repositories/svn_with_tree_move/README.txt +0 -5
- data/test/repositories/svn_with_tree_move/conf/authz +0 -21
- data/test/repositories/svn_with_tree_move/conf/passwd +0 -8
- data/test/repositories/svn_with_tree_move/conf/svnserve.conf +0 -30
- data/test/repositories/svn_with_tree_move/db/current +0 -1
- data/test/repositories/svn_with_tree_move/db/format +0 -1
- data/test/repositories/svn_with_tree_move/db/fs-type +0 -1
- data/test/repositories/svn_with_tree_move/db/revprops/0 +0 -5
- data/test/repositories/svn_with_tree_move/db/revprops/1 +0 -13
- data/test/repositories/svn_with_tree_move/db/revprops/2 +0 -13
- data/test/repositories/svn_with_tree_move/db/revs/0 +0 -11
- data/test/repositories/svn_with_tree_move/db/revs/1 +0 -0
- data/test/repositories/svn_with_tree_move/db/revs/2 +0 -44
- data/test/repositories/svn_with_tree_move/db/uuid +0 -1
- data/test/repositories/svn_with_tree_move/db/write-lock +0 -0
- data/test/repositories/svn_with_tree_move/format +0 -1
- data/test/repositories/svn_with_tree_move/hooks/post-commit.tmpl +0 -51
- data/test/repositories/svn_with_tree_move/hooks/post-lock.tmpl +0 -44
- data/test/repositories/svn_with_tree_move/hooks/post-revprop-change.tmpl +0 -56
- data/test/repositories/svn_with_tree_move/hooks/post-unlock.tmpl +0 -42
- data/test/repositories/svn_with_tree_move/hooks/pre-commit.tmpl +0 -70
- data/test/repositories/svn_with_tree_move/hooks/pre-lock.tmpl +0 -64
- data/test/repositories/svn_with_tree_move/hooks/pre-revprop-change.tmpl +0 -66
- data/test/repositories/svn_with_tree_move/hooks/pre-unlock.tmpl +0 -60
- data/test/repositories/svn_with_tree_move/hooks/start-commit.tmpl +0 -54
- data/test/repositories/svn_with_tree_move/locks/db-logs.lock +0 -3
- data/test/repositories/svn_with_tree_move/locks/db.lock +0 -3
- data/test/test_helper.rb +0 -127
- data/test/unit/abstract_adapter_test.rb +0 -106
- data/test/unit/adapter_factory_test.rb +0 -67
- data/test/unit/array_writer_test.rb +0 -33
- data/test/unit/bzr_cat_file_test.rb +0 -56
- data/test/unit/bzr_commits_test.rb +0 -388
- data/test/unit/bzr_head_test.rb +0 -18
- data/test/unit/bzr_misc_test.rb +0 -62
- data/test/unit/bzr_parser_test.rb +0 -483
- data/test/unit/bzr_pull_test.rb +0 -31
- data/test/unit/bzr_push_test.rb +0 -61
- data/test/unit/bzr_validation_test.rb +0 -61
- data/test/unit/bzr_xml_parser_test.rb +0 -409
- data/test/unit/bzrlib_cat_file_test.rb +0 -56
- data/test/unit/bzrlib_head_test.rb +0 -18
- data/test/unit/cvs_branch_number_test.rb +0 -130
- data/test/unit/cvs_commits_test.rb +0 -52
- data/test/unit/cvs_convert_test.rb +0 -30
- data/test/unit/cvs_misc_test.rb +0 -82
- data/test/unit/cvs_parser_test.rb +0 -94
- data/test/unit/cvs_validation_test.rb +0 -148
- data/test/unit/git_cat_file_test.rb +0 -21
- data/test/unit/git_commit_all_test.rb +0 -34
- data/test/unit/git_commits_test.rb +0 -179
- data/test/unit/git_head_test.rb +0 -26
- data/test/unit/git_log_parser_test.rb +0 -221
- data/test/unit/git_misc_test.rb +0 -100
- data/test/unit/git_parser_test.rb +0 -59
- data/test/unit/git_patch_test.rb +0 -14
- data/test/unit/git_pull_test.rb +0 -50
- data/test/unit/git_push_test.rb +0 -46
- data/test/unit/git_rev_list_test.rb +0 -89
- data/test/unit/git_styled_parser_test.rb +0 -103
- data/test/unit/git_svn_cat_file_test.rb +0 -57
- data/test/unit/git_svn_commits_test.rb +0 -37
- data/test/unit/git_svn_pull_test.rb +0 -51
- data/test/unit/git_token_test.rb +0 -45
- data/test/unit/git_validation_test.rb +0 -93
- data/test/unit/hg_cat_file_test.rb +0 -47
- data/test/unit/hg_commits_test.rb +0 -220
- data/test/unit/hg_head_test.rb +0 -24
- data/test/unit/hg_misc_test.rb +0 -48
- data/test/unit/hg_parser_test.rb +0 -184
- data/test/unit/hg_patch_test.rb +0 -14
- data/test/unit/hg_pull_test.rb +0 -29
- data/test/unit/hg_push_test.rb +0 -59
- data/test/unit/hg_rev_list_test.rb +0 -63
- data/test/unit/hg_validation_test.rb +0 -60
- data/test/unit/hglib_cat_file_test.rb +0 -47
- data/test/unit/hglib_head_test.rb +0 -18
- data/test/unit/ohlog_command_line_test.rb +0 -36
- data/test/unit/shellout_test.rb +0 -26
- data/test/unit/string_encoder_command_line_test.rb +0 -27
- data/test/unit/svn_cat_file_test.rb +0 -22
- data/test/unit/svn_chain_cat_file_test.rb +0 -24
- data/test/unit/svn_chain_commits_test.rb +0 -176
- data/test/unit/svn_chain_test.rb +0 -77
- data/test/unit/svn_commits_test.rb +0 -275
- data/test/unit/svn_convert_test.rb +0 -28
- data/test/unit/svn_head_test.rb +0 -27
- data/test/unit/svn_misc_test.rb +0 -142
- data/test/unit/svn_parser_test.rb +0 -155
- data/test/unit/svn_patch_test.rb +0 -14
- data/test/unit/svn_pull_test.rb +0 -60
- data/test/unit/svn_push_test.rb +0 -40
- data/test/unit/svn_validation_test.rb +0 -176
- data/test/unit/svn_xml_parser_test.rb +0 -45
@@ -1,19 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class BzrAdapter < AbstractAdapter
|
3
|
-
def head_token
|
4
|
-
run("bzr log --limit 1 --show-id #{url} 2> /dev/null | grep ^revision-id | cut -f2 -d' '").strip
|
5
|
-
end
|
6
|
-
|
7
|
-
def head
|
8
|
-
verbose_commit(head_token)
|
9
|
-
end
|
10
|
-
|
11
|
-
def parent_tokens(commit)
|
12
|
-
run("cd '#{url}' && bzr log --long --show-id --limit 1 -c #{to_rev_param(commit.token)} | grep ^parent | cut -f2 -d' '").split("\n")
|
13
|
-
end
|
14
|
-
|
15
|
-
def parents(commit)
|
16
|
-
parent_tokens(commit).collect { |token| verbose_commit(token) }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class BzrAdapter < AbstractAdapter
|
3
|
-
def exist?
|
4
|
-
begin
|
5
|
-
head_token.to_s.length > 0
|
6
|
-
rescue
|
7
|
-
logger.debug { $! }
|
8
|
-
false
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def ls_tree(token)
|
13
|
-
run("cd #{path} && bzr ls -V -r #{to_rev_param(token)}").split("\n")
|
14
|
-
end
|
15
|
-
|
16
|
-
def to_rev_param(r=nil)
|
17
|
-
case r
|
18
|
-
when nil
|
19
|
-
1
|
20
|
-
when Fixnum
|
21
|
-
r.to_s
|
22
|
-
when /^\d+$/
|
23
|
-
r
|
24
|
-
else
|
25
|
-
"'revid:#{r.to_s}'"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def is_merge_commit?(commit)
|
30
|
-
parent_tokens(commit).size > 1
|
31
|
-
end
|
32
|
-
|
33
|
-
def export_tag(dest_dir, tag_name)
|
34
|
-
run "cd '#{path}' && bzr export -r #{tag_name} #{dest_dir}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def export(dest_dir, token=head_token)
|
38
|
-
# Unlike other SCMs, Bzr doesn't simply place the contents into dest_dir.
|
39
|
-
# It actually *creates* dest_dir. Since it should already exist at this point,
|
40
|
-
# first we have to delete it.
|
41
|
-
Dir.delete(dest_dir) if File.exist?(dest_dir)
|
42
|
-
|
43
|
-
run "cd '#{url}' && bzr export --format=dir -r #{to_rev_param(token)} '#{dest_dir}'"
|
44
|
-
end
|
45
|
-
|
46
|
-
def tags
|
47
|
-
tag_strings = run("cd '#{url}' && bzr tags").split(/\n/)
|
48
|
-
tag_strings.map do |tag_string|
|
49
|
-
parse_tag_names_and_revision = tag_string.split(/\s+/)
|
50
|
-
if parse_tag_names_and_revision.size > 1
|
51
|
-
tag_name, rev = parse_tag_names_and_revision[0..-2].join(' '), parse_tag_names_and_revision.last
|
52
|
-
else
|
53
|
-
tag_name, rev = parse_tag_names_and_revision.first, nil
|
54
|
-
end
|
55
|
-
next if rev == '?' || tag_name == '....'
|
56
|
-
time_string = run("cd '#{ url }' && bzr log -r #{ rev } | grep 'timestamp:' | sed 's/timestamp://'")
|
57
|
-
[tag_name, rev, Time.parse(time_string)]
|
58
|
-
end.compact
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class BzrAdapter < AbstractAdapter
|
3
|
-
|
4
|
-
def pull(from, &block)
|
5
|
-
raise ArgumentError.new("Cannot pull from #{from.inspect}") unless from.is_a?(BzrAdapter)
|
6
|
-
logger.info { "Pulling #{from.url}" }
|
7
|
-
|
8
|
-
yield(0,1) if block_given? # Progress bar callback
|
9
|
-
|
10
|
-
unless self.exist?
|
11
|
-
run "mkdir -p '#{self.url}'"
|
12
|
-
run "rm -rf '#{self.url}'"
|
13
|
-
run "bzr branch '#{from.url}' '#{self.url}'"
|
14
|
-
else
|
15
|
-
run "cd '#{self.url}' && bzr revert && bzr pull --overwrite '#{from.url}'"
|
16
|
-
end
|
17
|
-
|
18
|
-
yield(1,1) if block_given? # Progress bar callback
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class BzrAdapter < AbstractAdapter
|
3
|
-
|
4
|
-
def push(to, &block)
|
5
|
-
raise ArgumentError.new("Cannot push to #{to.inspect}") unless to.is_a?(BzrAdapter)
|
6
|
-
logger.info { "Pushing to #{to.url}" }
|
7
|
-
|
8
|
-
yield(0,1) if block_given? # Progress bar callback
|
9
|
-
|
10
|
-
unless to.exist?
|
11
|
-
if to.local?
|
12
|
-
# Create a new repo on the same local machine. Just use existing pull code in reverse.
|
13
|
-
to.pull(self)
|
14
|
-
else
|
15
|
-
run "ssh #{to.hostname} 'mkdir -p #{to.path}'"
|
16
|
-
run "scp -rpqB #{bzr_path} #{to.hostname}:#{to.path}"
|
17
|
-
end
|
18
|
-
else
|
19
|
-
run "cd '#{self.url}' && bzr revert && bzr push '#{to.url}'"
|
20
|
-
end
|
21
|
-
|
22
|
-
yield(1,1) if block_given? # Progress bar callback
|
23
|
-
end
|
24
|
-
|
25
|
-
def local?
|
26
|
-
return true if hostname == Socket.gethostname
|
27
|
-
return true if url =~ /^file:\/\//
|
28
|
-
return true if url !~ /:/
|
29
|
-
false
|
30
|
-
end
|
31
|
-
|
32
|
-
def hostname
|
33
|
-
$1 if url =~ /^bzr\+ssh:\/\/([^\/]+)/
|
34
|
-
end
|
35
|
-
|
36
|
-
def path
|
37
|
-
case url
|
38
|
-
when /^file:\/\/(.+)$/
|
39
|
-
$1
|
40
|
-
when /^bzr\+ssh:\/\/[^\/]+(\/.+)$/
|
41
|
-
$1
|
42
|
-
when /^[^:]*$/
|
43
|
-
url
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
def bzr_path
|
48
|
-
path && File.join(path, '.bzr')
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class BzrAdapter < AbstractAdapter
|
3
|
-
def self.url_regex
|
4
|
-
/^((((http|https|bzr|bzr\+ssh|file):\/\/((\w+@)?[A-Za-z0-9_\-\.]+(:\d+)?\/)?)|(lp:[A-Za-z0-9_\-\.\~])))?[A-Za-z0-9_@\-\.\/\~\+]*$/
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.public_url_regex
|
8
|
-
/^(((http|https|bzr):\/\/(\w+@)?[A-Za-z0-9_\-\.]+(:\d+)?\/)|(lp:[A-Za-z0-9_\-\.\~]))[A-Za-z0-9_\-\.\/\~\+]*$/
|
9
|
-
end
|
10
|
-
|
11
|
-
def validate_server_connection
|
12
|
-
return unless valid?
|
13
|
-
@errors << [:failed, "The server did not respond to the 'bzr revno' command. Is the URL correct?"] unless self.exist?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class BzrAdapter < AbstractAdapter
|
3
|
-
def english_name
|
4
|
-
"Bazaar"
|
5
|
-
end
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
require_relative 'bzr/validation'
|
10
|
-
require_relative 'bzr/commits'
|
11
|
-
require_relative 'bzr/head'
|
12
|
-
require_relative 'bzr/cat_file'
|
13
|
-
require_relative 'bzr/misc'
|
14
|
-
require_relative 'bzr/pull'
|
15
|
-
require_relative 'bzr/push'
|
@@ -1,71 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'posix/spawn'
|
3
|
-
|
4
|
-
class BzrPipeClient
|
5
|
-
def initialize(repository_url)
|
6
|
-
@repository_url = repository_url
|
7
|
-
@py_script = File.dirname(__FILE__) + '/bzrlib_pipe_server.py'
|
8
|
-
end
|
9
|
-
|
10
|
-
def start
|
11
|
-
@pid, @stdin, @stdout, @stderr = POSIX::Spawn::popen4 "python #{@py_script}"
|
12
|
-
open_repository
|
13
|
-
end
|
14
|
-
|
15
|
-
def open_repository
|
16
|
-
send_command("REPO_OPEN|#{@repository_url}")
|
17
|
-
end
|
18
|
-
def cat_file(revision, file)
|
19
|
-
send_command("CAT_FILE|#{revision}|#{file}")
|
20
|
-
end
|
21
|
-
|
22
|
-
def parent_tokens(revision)
|
23
|
-
send_command("PARENT_TOKENS|#{revision}").split('|')
|
24
|
-
end
|
25
|
-
|
26
|
-
def send_command(cmd)
|
27
|
-
# send the command
|
28
|
-
@stdin.puts cmd
|
29
|
-
@stdin.flush
|
30
|
-
return if cmd == "QUIT"
|
31
|
-
|
32
|
-
# get status on stderr, first letter indicates state,
|
33
|
-
# remaing value indicates length of the file content
|
34
|
-
status = @stderr.read(10)
|
35
|
-
flag = status[0,1]
|
36
|
-
size = status[1,9].to_i
|
37
|
-
if flag == 'F'
|
38
|
-
return nil
|
39
|
-
elsif flag == 'E'
|
40
|
-
error = @stdout.read(size)
|
41
|
-
raise RuntimeError.new("Exception in server process\n#{error}")
|
42
|
-
end
|
43
|
-
|
44
|
-
# read content from stdout
|
45
|
-
return @stdout.read(size)
|
46
|
-
end
|
47
|
-
|
48
|
-
def shutdown
|
49
|
-
send_command("QUIT")
|
50
|
-
[@stdout, @stdin, @stderr].each { |io| io.close unless io.closed? }
|
51
|
-
Process.waitpid(@pid, Process::WNOHANG)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def cat_all_files(client, datafile)
|
56
|
-
count = 0
|
57
|
-
bytes = 0
|
58
|
-
File.open(datafile).each do |line|
|
59
|
-
parts = line.split('|')
|
60
|
-
count = count + 1
|
61
|
-
bytes = bytes + client.cat_file(parts[0], parts[1]).size
|
62
|
-
puts "file=#{count}, bytes=#{bytes}"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def all_parent_tokens(client, datafile)
|
67
|
-
File.open(datafile).each do |line|
|
68
|
-
parts = line.split('|')
|
69
|
-
puts client.parent_tokens(parts[0])
|
70
|
-
end
|
71
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
require_relative 'bzrlib/bzrlib_pipe_client'
|
4
|
-
module OhlohScm::Adapters
|
5
|
-
class BzrlibAdapter < BzrAdapter
|
6
|
-
|
7
|
-
def setup
|
8
|
-
bzr_client = BzrPipeClient.new(url)
|
9
|
-
bzr_client.start
|
10
|
-
bzr_client
|
11
|
-
end
|
12
|
-
|
13
|
-
def bzr_client
|
14
|
-
@bzr_client ||= setup
|
15
|
-
end
|
16
|
-
|
17
|
-
def cleanup
|
18
|
-
@bzr_client.shutdown
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
require_relative 'bzrlib/head'
|
25
|
-
require_relative 'bzrlib/cat_file'
|
@@ -1,97 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class CvsAdapter
|
3
|
-
def commits(opts={})
|
4
|
-
after = opts[:after]
|
5
|
-
result = []
|
6
|
-
|
7
|
-
open_log_file(opts) do |io|
|
8
|
-
result = OhlohScm::Parsers::CvsParser.parse(io, :branch_name => branch_name)
|
9
|
-
end
|
10
|
-
|
11
|
-
# Git converter needs a backpointer to the scm for each commit
|
12
|
-
result.each { |c| c.scm = self }
|
13
|
-
|
14
|
-
return result if result.size == 0 # Nothing found; we're done here.
|
15
|
-
return result if after.to_s == '' # We requested everything, so just return everything.
|
16
|
-
|
17
|
-
# We must now remove any duplicates caused by timestamp fudge factors,
|
18
|
-
# and only return commits with timestamp > after.
|
19
|
-
|
20
|
-
# If the first commit is newer than after, then the whole list is new and we can simply return.
|
21
|
-
return result if parse_time(result.first.token) > parse_time(after)
|
22
|
-
|
23
|
-
# Walk the list of commits to find the first new one, throwing away all of the old ones.
|
24
|
-
|
25
|
-
# I want to string-compare timestamps without converting to dates objects (I think it's faster).
|
26
|
-
# Some CVS servers print dates as 2006/01/02 03:04:05, others as 2006-01-02 03:04:05.
|
27
|
-
# To work around this, we'll build a regex that matches either date format.
|
28
|
-
re = Regexp.new(after.gsub(/[\/-]/, '.'))
|
29
|
-
|
30
|
-
result.each_index do |i|
|
31
|
-
if result[i].token =~ re # We found the match for after
|
32
|
-
if i == result.size-1
|
33
|
-
return [] # There aren't any new commits.
|
34
|
-
else
|
35
|
-
return result[i+1..-1]
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Something bad is going on: 'after' does not match any timestamp in the rlog.
|
41
|
-
# This is very rare, but it can happen.
|
42
|
-
#
|
43
|
-
# Often this means that the *last* time we ran commits(), there was some kind of
|
44
|
-
# undetected problem (CVS was in an intermediate state?) so the list of timestamps we
|
45
|
-
# calculated last time does not match the list of timestamps we calculated this time.
|
46
|
-
#
|
47
|
-
# There's no work around for this condition here in the code, but there are some things
|
48
|
-
# you can try manually to fix the problem. Typically, you can try throwing way the
|
49
|
-
# commit associated with 'after' and fetching it again (git reset --hard HEAD^).
|
50
|
-
raise RuntimeError.new("token '#{after}' not found in rlog.")
|
51
|
-
end
|
52
|
-
|
53
|
-
# Gets the rlog of the repository and saves it in a temporary file.
|
54
|
-
# If you pass a timestamp token, then only commits after the timestamp will be returned.
|
55
|
-
#
|
56
|
-
# Warning!
|
57
|
-
#
|
58
|
-
# CVS servers are apparently unreliable when you truncate the log by timestamp -- perhaps round-off error?
|
59
|
-
# In any case, to be sure not to miss any commits, this method subtracts 10 seconds from the provided timestamp.
|
60
|
-
# This means that the returned log might actually contain a few revisions that predate the requested time.
|
61
|
-
# That's better than missing revisions completely! Just be sure to check for duplicates.
|
62
|
-
def open_log_file(opts={})
|
63
|
-
after = opts[:after]
|
64
|
-
begin
|
65
|
-
ensure_host_key
|
66
|
-
has_lock!
|
67
|
-
run("cvsnt -d #{self.url} rlog #{opt_branch} #{opt_time(after)} '#{self.module_name}' | #{ string_encoder } > #{ rlog_filename }")
|
68
|
-
File.open(rlog_filename, 'r') do |file|
|
69
|
-
yield file
|
70
|
-
end
|
71
|
-
ensure
|
72
|
-
File.delete rlog_filename if FileTest.exists?(rlog_filename)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def opt_time(after=nil)
|
77
|
-
if after
|
78
|
-
most_recent_time = parse_time(after) - 10
|
79
|
-
" -d '#{most_recent_time.strftime('%Y-%m-%d %H:%M:%S')}Z<#{Time.now.utc.strftime('%Y-%m-%d %H:%M:%S')}Z' "
|
80
|
-
else
|
81
|
-
""
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def rlog_filename
|
86
|
-
File.join(temp_folder, (self.url + self.module_name.to_s + self.branch_name.to_s).gsub(/\W/,'') + '.rlog')
|
87
|
-
end
|
88
|
-
|
89
|
-
# Converts a CVS time string to a Ruby Time object
|
90
|
-
def parse_time(token)
|
91
|
-
case token
|
92
|
-
when /(\d\d\d\d).(\d\d).(\d\d) (\d\d):(\d\d):(\d\d)/
|
93
|
-
Time.gm( $1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i )
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
@@ -1,212 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class CvsAdapter
|
3
|
-
# Returns an array of file and directory names from the remote server.
|
4
|
-
# Directory names will end with a trailing '/' character.
|
5
|
-
#
|
6
|
-
# Directories named "CVSROOT" are always ignored, and thus never returned.
|
7
|
-
#
|
8
|
-
# An empty array means that the call succeeded, but the remote directory is empty.
|
9
|
-
# A nil result means that the call failed and the remote server could not be queried.
|
10
|
-
def ls(path=nil)
|
11
|
-
path = File.join(@module_name, path.to_s)
|
12
|
-
|
13
|
-
cmd = "cvsnt -q -d #{url} ls -e '#{path}'"
|
14
|
-
|
15
|
-
ensure_host_key
|
16
|
-
|
17
|
-
stdout, stderr = run_with_err(cmd)
|
18
|
-
|
19
|
-
files = []
|
20
|
-
stdout.each_line do |s|
|
21
|
-
s.strip!
|
22
|
-
s = $1 + '/' if s =~ /^D\/(.*)\/\/\/\/$/
|
23
|
-
s = $1 if s =~ /^\/(.*)\/.*\/.*\/.*\/$/
|
24
|
-
next if s == "CVSROOT/"
|
25
|
-
files << s if s and s.length > 0
|
26
|
-
end
|
27
|
-
|
28
|
-
# Some of the cvs 'errors' are just harmless problems with some directories.
|
29
|
-
# If we recognize all the error messages, then nothing is really wrong.
|
30
|
-
# If some error messages go unhandled, then there really is an error.
|
31
|
-
stderr.each_line do |s|
|
32
|
-
s.strip!
|
33
|
-
error_handled = false
|
34
|
-
|
35
|
-
ignored_error_messages = [
|
36
|
-
/Listing modules on server/,
|
37
|
-
/Listing module: #{Regexp.escape(path.to_s)}/,
|
38
|
-
/-m wrapper option is not supported remotely; ignored/,
|
39
|
-
/cannot open directory .* No such file or directory/,
|
40
|
-
/ignoring module/,
|
41
|
-
/skipping directory/,
|
42
|
-
/existing repository .* does not match/,
|
43
|
-
/nothing known about/,
|
44
|
-
|
45
|
-
# The signal 11 error should not really be ignored, but many CVS servers
|
46
|
-
# including dev.eclipse.org return it at the end of every ls.
|
47
|
-
/Terminated with fatal signal 11/
|
48
|
-
]
|
49
|
-
|
50
|
-
if s.length == 0
|
51
|
-
error_handled = true
|
52
|
-
elsif s =~ /cvs server: New directory `(#{Regexp.escape(path.to_s)}\/)?(.*)' -- ignored/
|
53
|
-
files << "#{$2}/"
|
54
|
-
error_handled = true
|
55
|
-
end
|
56
|
-
|
57
|
-
ignored_error_messages.each do |m|
|
58
|
-
error_handled = true if s =~ m
|
59
|
-
end
|
60
|
-
|
61
|
-
logger.warn { "'#{cmd}' resulted in unhandled error '#{s}'" } unless error_handled
|
62
|
-
return nil unless error_handled
|
63
|
-
end
|
64
|
-
|
65
|
-
files.sort
|
66
|
-
end
|
67
|
-
|
68
|
-
def log(most_recent_token=nil)
|
69
|
-
ensure_host_key
|
70
|
-
run "cvsnt -d #{self.url} rlog #{opt_branch} #{opt_time(most_recent_token)} '#{self.module_name}' | #{ string_encoder }"
|
71
|
-
end
|
72
|
-
|
73
|
-
def export_tag(dest_dir, tag_name = 'HEAD')
|
74
|
-
run "cvsnt -d #{self.url} export -d'#{dest_dir}' -r #{tag_name} '#{self.module_name}'"
|
75
|
-
end
|
76
|
-
|
77
|
-
def checkout(r, local_directory)
|
78
|
-
opt_D = r.token ? "-D'#{r.token}Z'" : ""
|
79
|
-
|
80
|
-
ensure_host_key
|
81
|
-
if FileTest.exists?(local_directory + '/CVS/Root')
|
82
|
-
# We already have a local enlistment, so do a quick update.
|
83
|
-
if r.directories.size > 0
|
84
|
-
build_ordered_directory_list(r.directories).each do |d|
|
85
|
-
if d.length == 0
|
86
|
-
run "cd #{local_directory} && cvsnt update -d -l -C #{opt_D} ."
|
87
|
-
else
|
88
|
-
run "cd #{local_directory} && cvsnt update -d -l -C #{opt_D} '#{d}'"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
else
|
92
|
-
# Brute force: get all updates
|
93
|
-
logger.warn("Revision #{r.token} did not contain any directories. Using brute force update of entire module.")
|
94
|
-
run "cd #{local_directory} && cvsnt update -d -R -C #{opt_D}"
|
95
|
-
end
|
96
|
-
else
|
97
|
-
# We do not have a local enlistment, so do a slow checkout to create one.
|
98
|
-
# Silly cvsnt won't accept an absolute path. We'll have to play some games and cd to the parent directory.
|
99
|
-
parent_path, checkout_dir = File.split(local_directory)
|
100
|
-
FileUtils.mkdir_p(parent_path) unless FileTest.exist?(parent_path)
|
101
|
-
run "cd #{parent_path} && cvsnt -d #{self.url} checkout #{opt_D} -A -d'#{checkout_dir}' '#{self.module_name}'"
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
# A revision can contain an arbitrary collection of directories.
|
106
|
-
# We need to ensure that for every directory we want to fetch, we also have its parent directories.
|
107
|
-
def build_ordered_directory_list(directories)
|
108
|
-
# Integration Test Limitation
|
109
|
-
# cvsnt has problems with absolute path names, so we are stuck with
|
110
|
-
# using cvs modules that are only a single directory deep when testing.
|
111
|
-
# We'll check if the url begins with '/' to detect an integration test,
|
112
|
-
# then return an empty string (ie, the default root directory) if so.
|
113
|
-
return [''] if self.url =~ /^\//
|
114
|
-
|
115
|
-
list = []
|
116
|
-
directories.collect{ |a| trim_directory(a.to_s).to_s }.each do |d|
|
117
|
-
# We always ignore Attic directories, which just contain deleted files
|
118
|
-
# Update the parent directory of the Attic instead.
|
119
|
-
if d =~ /^(.*)Attic$/
|
120
|
-
d = $1
|
121
|
-
d = d[0..-2] if d.length > 0 and d[-1,1]=='/'
|
122
|
-
end
|
123
|
-
|
124
|
-
unless list.include? d
|
125
|
-
list << d
|
126
|
-
# We also need to include every parent directory of the directory
|
127
|
-
# we are interested in, all the way up to the root.
|
128
|
-
while d.rindex('/') and d.rindex('/') > 0 do
|
129
|
-
d = d[0..(d.rindex('/')-1)]
|
130
|
-
if list.include? d
|
131
|
-
break
|
132
|
-
else
|
133
|
-
list << d
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
# Sort the list by length because we need to update parent directories before children
|
139
|
-
list.sort! { |a,b| a.length <=> b.length }
|
140
|
-
end
|
141
|
-
|
142
|
-
def trim_directory(d)
|
143
|
-
# If we are connecting to a remote server (basically anytime we are not
|
144
|
-
# running the integration test) then we need to create a relative path
|
145
|
-
# by trimming the prefix from the directory.
|
146
|
-
# The prefix can be determined by examining the url and the module name.
|
147
|
-
# For example, if url = ':pserver:anonymous:@moodle.cvs.sourceforge.net:/cvsroot/moodle'
|
148
|
-
# and module = 'contrib', then the directory prefix = '/cvsroot/moodle/contrib/'
|
149
|
-
if root
|
150
|
-
d[root.length..-1]
|
151
|
-
else
|
152
|
-
d # If not remote, just leave the directory name as-is
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def root
|
157
|
-
"#{$3}/#{self.module_name}/" if self.url =~ /^:(pserver|ext):.*@[^:]+:(\d+)?(\/.*)$/
|
158
|
-
end
|
159
|
-
|
160
|
-
def opt_branch
|
161
|
-
if branch_name != nil and branch_name.length > 0 and branch_name != 'HEAD'
|
162
|
-
"-r'#{branch_name}'"
|
163
|
-
else
|
164
|
-
"-b -r1:"
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
# returns the host this adapter is connecting to
|
169
|
-
def host
|
170
|
-
@host ||= begin
|
171
|
-
self.url =~ /@([^:]*):/
|
172
|
-
$1
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# returns the protocol this adapter connects with
|
177
|
-
def protocol
|
178
|
-
@protocol ||= case self.url
|
179
|
-
when /^:pserver/ then :pserver
|
180
|
-
when /^:ext/ then :ext
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
# using :ext (ssh) protocol might trigger ssh to confirm accepting the host's
|
185
|
-
# ssh key. This causes the UI to hang asking for manual confirmation. To avoid
|
186
|
-
# this we pre-populate the ~/.ssh/known_hosts file with the host's key.
|
187
|
-
def ensure_host_key
|
188
|
-
if self.protocol == :ext
|
189
|
-
ensure_key_file = File.dirname(__FILE__) + "/../../../../bin/ensure_key"
|
190
|
-
cmd = "#{ensure_key_file} '#{ self.host }'"
|
191
|
-
stdout, stderr = run_with_err(cmd)
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
def has_lock!
|
196
|
-
begin
|
197
|
-
run "timeout 2m cvsnt -q -d #{self.url} rlog '#{self.module_name}'"
|
198
|
-
false
|
199
|
-
rescue => e
|
200
|
-
raise RuntimeError.new('CVS lock has been found') if e.message.match(/waiting for.*lock in/)
|
201
|
-
end
|
202
|
-
end
|
203
|
-
|
204
|
-
def tags
|
205
|
-
tag_strings = run("cvs -Q -d #{ url } rlog -h #{ module_name } | awk -F\"[.:]\" '/^\\t/&&$(NF-1)!=0'").split(/\n/)
|
206
|
-
tag_strings.map do |tag_string|
|
207
|
-
tag_name, version = tag_string.split(':')
|
208
|
-
[tag_name.gsub(/\t/, ''), version.strip]
|
209
|
-
end
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|