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,77 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class CvsAdapter
|
3
|
-
def self.url_regex
|
4
|
-
/^(:(pserver|ext):[\w\-\+\_]*(:[\w\-\+\_]*)?@[A-Za-z0-9_\-\+\.]+:[0-9]*)?\/[A-Za-z0-9_\-\+\.\/]*$/
|
5
|
-
end
|
6
|
-
|
7
|
-
def self.public_url_regex
|
8
|
-
/^:(pserver|ext):[\w\-\+\_]*(:[\w\-\+\_]*)?@[A-Za-z0-9_\-\+\.]+:[0-9]*\/[A-Za-z0-9_\-\+\.\/]*$/
|
9
|
-
end
|
10
|
-
|
11
|
-
def validate
|
12
|
-
super
|
13
|
-
@errors << validate_module_name
|
14
|
-
@errors.compact!
|
15
|
-
end
|
16
|
-
|
17
|
-
def validate_module_name
|
18
|
-
return [:module_name, "The module name can't be blank."] if @module_name.to_s.length == 0
|
19
|
-
return [:module_name, "The module name must not be longer than 120 characters."] unless @module_name.length <= 120
|
20
|
-
return [:module_name, "The module name may contain only letters, numbers, spaces, and the special characters '_', '-', '+', '/', and '.'"] unless @module_name =~ /^[A-Za-z0-9_\-\+\.\/\ ]+$/
|
21
|
-
end
|
22
|
-
|
23
|
-
def normalize
|
24
|
-
super
|
25
|
-
@module_name = @module_name.strip if @module_name
|
26
|
-
|
27
|
-
# Some CVS forges publish an URL which is actually a symlink, which causes CVSNT to crash.
|
28
|
-
# For some forges, we can work around this by using an alternate directory.
|
29
|
-
case guess_forge
|
30
|
-
when 'java.net', 'netbeans.org'
|
31
|
-
@url.gsub!(/:\/cvs\/?$/, ':/shared/data/ccvs/repository')
|
32
|
-
when 'gna.org'
|
33
|
-
@url.gsub!(/:\/cvs\b/, ':/var/cvs')
|
34
|
-
end
|
35
|
-
|
36
|
-
sync_pserver_username_password
|
37
|
-
|
38
|
-
self
|
39
|
-
end
|
40
|
-
|
41
|
-
# This bit of code patches up any inconsistencies that may arise because there
|
42
|
-
# is both a @password attribute and a password embedded in the :pserver: url.
|
43
|
-
# This method guarantees that they are both the same.
|
44
|
-
#
|
45
|
-
# It's assumed that if the user specified a @password attribute, then that is
|
46
|
-
# the preferred value and it should take precedence over any password found
|
47
|
-
# in the :pserver: url.
|
48
|
-
#
|
49
|
-
# If the user did not specify a @password attribute, then the value
|
50
|
-
# found in the :pserver: url is assigned to both.
|
51
|
-
def sync_pserver_username_password
|
52
|
-
# Do nothing unless pserver connection string is well-formed.
|
53
|
-
return unless self.url =~ /:pserver:([\w\-\_]*)(:([\w\-\_]*))?@(.*)$/
|
54
|
-
|
55
|
-
pserver_username = $1
|
56
|
-
pserver_password = $3
|
57
|
-
pserver_remainder = $4
|
58
|
-
|
59
|
-
@username = pserver_username if @username.to_s == ''
|
60
|
-
@password = pserver_password if @password.to_s == ''
|
61
|
-
|
62
|
-
self.url = ":pserver:#{@username}:#{password}@#{pserver_remainder}"
|
63
|
-
end
|
64
|
-
|
65
|
-
def validate_server_connection
|
66
|
-
return unless valid?
|
67
|
-
if ls.nil?
|
68
|
-
@errors << [:failed, "The cvs server did not respond to an 'ls' command. Are the URL and module name correct?"]
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
# Based on the URL, take a guess about which forge this code is hosted on.
|
73
|
-
def guess_forge
|
74
|
-
@url =~ /.*(pserver|ext).*@(([^\.]+\.)?(cvs|dev)\.)?([^:]+):\//i ? $5.downcase : nil
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class CvsAdapter < AbstractAdapter
|
3
|
-
attr_accessor :module_name
|
4
|
-
|
5
|
-
def english_name
|
6
|
-
'CVS'
|
7
|
-
end
|
8
|
-
|
9
|
-
def initialize(params={})
|
10
|
-
super
|
11
|
-
@module_name = params[:module_name]
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
require_relative 'cvs/validation'
|
17
|
-
require_relative 'cvs/commits'
|
18
|
-
require_relative 'cvs/misc'
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class Factory
|
3
|
-
|
4
|
-
# Given a local path on disk, try to guess what kind of repository it is,
|
5
|
-
# and return an appropriate adapter.
|
6
|
-
def self.from_path(path)
|
7
|
-
|
8
|
-
if FileTest.exist?(File.join(path, '.git'))
|
9
|
-
GitAdapter.new(:url => File.expand_path(path)).normalize
|
10
|
-
|
11
|
-
elsif FileTest.exist?(File.join(path, '.hg'))
|
12
|
-
HgAdapter.new(:url => File.expand_path(path)).normalize
|
13
|
-
|
14
|
-
elsif FileTest.exist?(File.join(path, '.bzr'))
|
15
|
-
BzrAdapter.new(:url => File.expand_path(path)).normalize
|
16
|
-
|
17
|
-
elsif FileTest.exist?(File.join(path, 'db'))
|
18
|
-
SvnAdapter.new(:url => File.expand_path(path)).normalize
|
19
|
-
|
20
|
-
elsif FileTest.exist?(File.join(path, '.svn'))
|
21
|
-
# It's a local checkout. Use the secret info stashed by Subversion to find the server URL.
|
22
|
-
info = `cd #{path} && svn info`
|
23
|
-
if info =~ /^URL: (.+)$/
|
24
|
-
svn = SvnAdapter.new(:url => $1).normalize
|
25
|
-
svn.recalc_branch_name
|
26
|
-
svn
|
27
|
-
end
|
28
|
-
|
29
|
-
elsif FileTest.exist?(File.join(path, 'CVS', 'Root'))
|
30
|
-
# It's a local CVS checkout. Use the secret info to find the server URL.
|
31
|
-
root = File.read(File.join(path, 'CVS', 'Root')).strip
|
32
|
-
repo = File.read(File.join(path, 'CVS', 'Repository')).strip
|
33
|
-
CvsAdapter.new(:url => root, :repository => repo).normalize
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class GitAdapter < AbstractAdapter
|
3
|
-
def cat_file(commit, diff)
|
4
|
-
cat(diff.sha1)
|
5
|
-
end
|
6
|
-
|
7
|
-
def cat_file_parent(commit, diff)
|
8
|
-
cat(diff.parent_sha1)
|
9
|
-
end
|
10
|
-
|
11
|
-
def cat(sha1)
|
12
|
-
return '' if sha1 == NULL_SHA1
|
13
|
-
run "cd '#{url}' && git cat-file -p #{sha1}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,141 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class GitAdapter < AbstractAdapter
|
3
|
-
|
4
|
-
#---------------------------------------------------------------------------
|
5
|
-
# COMMIT-RELATED CODE
|
6
|
-
#-------------------------------------------------------------------------
|
7
|
-
|
8
|
-
# Commit all changes in the working directory, using metadata from the passed commit.
|
9
|
-
def commit_all(commit=Commit.new)
|
10
|
-
init_db
|
11
|
-
ensure_gitignore
|
12
|
-
write_token(commit.token)
|
13
|
-
|
14
|
-
# Establish the author, email, message, etc. for the git-commit.
|
15
|
-
message_filename = set_commit_metadata(commit)
|
16
|
-
|
17
|
-
run "cd '#{self.url}' && git add ."
|
18
|
-
if anything_to_commit?
|
19
|
-
run "cd '#{self.url}' && git commit -a -F #{message_filename}"
|
20
|
-
else
|
21
|
-
logger.info { "nothing to commit" }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Store all of the commit metadata in the GIT environment variables
|
26
|
-
# where they will be picked up by the git-commit command.
|
27
|
-
#
|
28
|
-
# Commit info is required.
|
29
|
-
# Author info is optional, and defaults to committer info.
|
30
|
-
def set_commit_metadata(commit)
|
31
|
-
|
32
|
-
ENV['GIT_COMMITTER_NAME'] = commit.committer_name || '[anonymous]'
|
33
|
-
ENV['GIT_AUTHOR_NAME'] = commit.author_name || ENV['GIT_COMMITTER_NAME']
|
34
|
-
|
35
|
-
ENV['GIT_COMMITTER_EMAIL'] = commit.committer_email || ENV['GIT_COMMITTER_NAME']
|
36
|
-
ENV['GIT_AUTHOR_EMAIL'] = commit.author_email || ENV['GIT_AUTHOR_NAME']
|
37
|
-
|
38
|
-
ENV['GIT_COMMITTER_DATE'] = commit.committer_date.to_s
|
39
|
-
ENV['GIT_AUTHOR_DATE'] = (commit.author_date || commit.committer_date).to_s
|
40
|
-
|
41
|
-
# This is a one-off fix for DrJava, which includes some escape characters
|
42
|
-
# in one of its Subversion messages. This might lead to a more generalized
|
43
|
-
# cleanup of message text, but for now...
|
44
|
-
commit.message.gsub!(/\\027/,'') if commit.message
|
45
|
-
|
46
|
-
# Git requires a non-empty message
|
47
|
-
if commit.message.nil? || commit.message =~ /\A\s*\z/
|
48
|
-
commit.message = '[no message]'
|
49
|
-
end
|
50
|
-
|
51
|
-
# We need to store the message in a file in case it contains crazy characters
|
52
|
-
# that would corrupt a bash command line.
|
53
|
-
File.open(message_filename, 'w') do |f|
|
54
|
-
f.write commit.message
|
55
|
-
end
|
56
|
-
message_filename
|
57
|
-
end
|
58
|
-
|
59
|
-
# By hiding the message file inside the .git directory, we
|
60
|
-
# avoid it being found by the commit-all.
|
61
|
-
def message_filename
|
62
|
-
File.expand_path(File.join(git_path, 'ohloh_message'))
|
63
|
-
end
|
64
|
-
|
65
|
-
# True if there are pending changes to commit.
|
66
|
-
def anything_to_commit?
|
67
|
-
run("cd '#{self.url}' && git status | tail -1") =~ /nothing to commit/ ? false : true
|
68
|
-
end
|
69
|
-
|
70
|
-
# Ensures that the repository directory exists, and that the git database has been initialized.
|
71
|
-
def init_db
|
72
|
-
unless FileTest.exist? url
|
73
|
-
run "mkdir -p '#{url}'"
|
74
|
-
end
|
75
|
-
unless FileTest.exist? git_path
|
76
|
-
run "cd '#{url}' && git init-db"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
|
81
|
-
#-------------------------------------------------------------------------
|
82
|
-
# GIT IGNORE CODE
|
83
|
-
# Ensures that we do not waste storage space on non-source code files
|
84
|
-
#-------------------------------------------------------------------------
|
85
|
-
|
86
|
-
unless defined?(IGNORE)
|
87
|
-
IGNORE = [
|
88
|
-
".svn",
|
89
|
-
"CVS",
|
90
|
-
"*.jar",
|
91
|
-
"*.tar",
|
92
|
-
"*.gz",
|
93
|
-
"*.tgz",
|
94
|
-
"*.zip",
|
95
|
-
"*.gif",
|
96
|
-
"*.jpg",
|
97
|
-
"*.jpeg",
|
98
|
-
"*.bmp",
|
99
|
-
"*.png",
|
100
|
-
"*.tif",
|
101
|
-
"*.tiff",
|
102
|
-
"*.ogg",
|
103
|
-
"*.aiff",
|
104
|
-
"*.wav",
|
105
|
-
"*.mp3",
|
106
|
-
"*.au",
|
107
|
-
"*.ra",
|
108
|
-
"*.m4a",
|
109
|
-
"*.pdf",
|
110
|
-
"*.mpg",
|
111
|
-
"*.mov",
|
112
|
-
"*.qt",
|
113
|
-
"*.avi",
|
114
|
-
"*.xbm"
|
115
|
-
]
|
116
|
-
end
|
117
|
-
|
118
|
-
# The .gitignore file will be created if it does not exist.
|
119
|
-
# If our desired filespec is not found in .gitignore, it will be appended
|
120
|
-
# to the end of .gitignore.
|
121
|
-
def ensure_gitignore
|
122
|
-
IGNORE.each do |ignore|
|
123
|
-
gitignore_filename = File.join(self.url, '.gitignore')
|
124
|
-
found = false
|
125
|
-
File.open(gitignore_filename, File::CREAT | File::RDONLY) do |io|
|
126
|
-
io.readlines.each do |l|
|
127
|
-
if l.chomp == ignore
|
128
|
-
found = true
|
129
|
-
break
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
unless found
|
134
|
-
File.open(gitignore_filename, File::APPEND | File::WRONLY) do |io|
|
135
|
-
io.puts ignore
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
@@ -1,122 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class GitAdapter < AbstractAdapter
|
3
|
-
|
4
|
-
# Returns the number of commits in the repository following the commit with SHA1 'after'.
|
5
|
-
def commit_count(opts={})
|
6
|
-
run("#{rev_list_command(opts)} | wc -l").to_i
|
7
|
-
end
|
8
|
-
|
9
|
-
# Returns the SHA1 hash for every commit in the repository following the commit with SHA1 'after'.
|
10
|
-
def commit_tokens(opts={})
|
11
|
-
run(rev_list_command(opts)).split("\n")
|
12
|
-
end
|
13
|
-
|
14
|
-
# Yields each commit following the commit with SHA1 'after'.
|
15
|
-
# Officially, this method isn't required to provide diffs with these commits,
|
16
|
-
# and the Subversion equivalent of this method does not,
|
17
|
-
# so if you really require the diffs you should be using each_commit() instead.
|
18
|
-
def commits(opts={})
|
19
|
-
result = []
|
20
|
-
each_commit(opts) { |c| result << c }
|
21
|
-
result
|
22
|
-
end
|
23
|
-
|
24
|
-
# Yields each commit in the repository following the commit with SHA1 'after'.
|
25
|
-
# These commits are populated with diffs.
|
26
|
-
def each_commit(opts={})
|
27
|
-
|
28
|
-
# Bug fix (hack) follows.
|
29
|
-
#
|
30
|
-
# git-whatchanged emits a merge commit multiple times, once for each parent, giving the
|
31
|
-
# delta to each parent in turn.
|
32
|
-
#
|
33
|
-
# This causes us to emit too many commits, with repeated merge commits.
|
34
|
-
#
|
35
|
-
# To fix this, we track the previous commit, and emit a new commit only if it is distinct
|
36
|
-
# from the previous.
|
37
|
-
#
|
38
|
-
# This means that the diffs for a merge commit yielded by this method will be the diffs
|
39
|
-
# vs. the first parent only, and diffs vs. other parents are lost. For Ohloh, this is fine
|
40
|
-
# because Ohloh ignores merge diffs anyway.
|
41
|
-
|
42
|
-
previous = nil
|
43
|
-
open_log_file(opts) do |io|
|
44
|
-
OhlohScm::Parsers::GitStyledParser.parse(io) do |e|
|
45
|
-
yield fixup_null_merge(e) unless previous && previous.token == e.token
|
46
|
-
previous = e
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# Returns a single commit, including its diffs
|
52
|
-
def verbose_commit(token)
|
53
|
-
c = OhlohScm::Parsers::GitStyledParser.parse(run("cd '#{url}' && #{OhlohScm::Parsers::GitStyledParser.whatchanged} #{token} | #{ string_encoder }")).first
|
54
|
-
fixup_null_merge(c)
|
55
|
-
end
|
56
|
-
|
57
|
-
# For a merge commit, we ask `git whatchanged` to output the changes relative to each parent.
|
58
|
-
# It is possible, through developer hackery, to create a merge commit which does not change the tree.
|
59
|
-
# When this happens, `git whatchanged` will suppress its output relative to the first parent,
|
60
|
-
# and jump immediately to the second (branch) parent. Our code mistakenly interprets this output
|
61
|
-
# as the missing changes relative to the first parent.
|
62
|
-
#
|
63
|
-
# To avoid this calamity, we must compare the tree hash of this commit with its first parent's.
|
64
|
-
# If they are the same, then the diff should be empty, regardless of what `git whatchanged` says.
|
65
|
-
#
|
66
|
-
# Yes, this is a convoluted, time-wasting hack to address a very rare circumstance. Ultimatley
|
67
|
-
# we should stop parsing `git whatchanged` to extract commit data.
|
68
|
-
def fixup_null_merge(c)
|
69
|
-
first_parent_token = parent_tokens(c).first
|
70
|
-
if first_parent_token && get_commit_tree(first_parent_token) == get_commit_tree(c.token)
|
71
|
-
c.diffs = []
|
72
|
-
end
|
73
|
-
c
|
74
|
-
end
|
75
|
-
|
76
|
-
# Retrieves the git log in the format expected by GitStyledParser.
|
77
|
-
# We get the log forward chronological order (oldest first)
|
78
|
-
def log(opts={})
|
79
|
-
if has_branch?
|
80
|
-
if opts[:after] && opts[:after]==self.head_token
|
81
|
-
'' # Nothing new.
|
82
|
-
else
|
83
|
-
run "#{rev_list_command(opts)} | xargs -n 1 #{OhlohScm::Parsers::GitStyledParser.whatchanged} | #{ string_encoder }"
|
84
|
-
end
|
85
|
-
else
|
86
|
-
''
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
|
91
|
-
# Same as log() method above, except that it writes the log to
|
92
|
-
# a file.
|
93
|
-
def open_log_file(opts={})
|
94
|
-
if has_branch?
|
95
|
-
if opts[:after] && opts[:after]==self.head_token
|
96
|
-
'' # Nothing new.
|
97
|
-
else
|
98
|
-
begin
|
99
|
-
run "#{rev_list_command(opts)} | xargs -n 1 #{OhlohScm::Parsers::GitStyledParser.whatchanged} | #{ string_encoder } > #{log_filename}"
|
100
|
-
File.open(log_filename, 'r') { |io| yield io }
|
101
|
-
ensure
|
102
|
-
File.delete(log_filename) if FileTest.exist?(log_filename)
|
103
|
-
end
|
104
|
-
end
|
105
|
-
else
|
106
|
-
''
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def log_filename
|
111
|
-
File.join(temp_folder, (self.url).gsub(/\W/,'') + '.log')
|
112
|
-
end
|
113
|
-
|
114
|
-
def rev_list_command(opts={})
|
115
|
-
up_to = opts[:up_to] || "heads/#{branch_name}"
|
116
|
-
range = opts[:after] ? "#{opts[:after]}..#{up_to}" : up_to
|
117
|
-
|
118
|
-
trunk_only = opts[:trunk_only] ? "--first-parent" : ""
|
119
|
-
"cd '#{url}' && git rev-list --topo-order --reverse #{trunk_only} #{range}"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class GitAdapter < AbstractAdapter
|
3
|
-
|
4
|
-
def head_token
|
5
|
-
run("git ls-remote --heads '#{url}' #{branch_name}") =~ /^(^[a-z0-9]{40})\s+\S+$/
|
6
|
-
$1
|
7
|
-
end
|
8
|
-
|
9
|
-
def head
|
10
|
-
verbose_commit(head_token)
|
11
|
-
end
|
12
|
-
|
13
|
-
def parent_tokens(commit)
|
14
|
-
run("cd '#{url}' && git cat-file commit #{commit.token} | grep ^parent | cut -f 2 -d ' '").split("\n") || []
|
15
|
-
end
|
16
|
-
|
17
|
-
def parents(commit)
|
18
|
-
parent_tokens(commit).collect { |token| verbose_commit(token) }
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,107 +0,0 @@
|
|
1
|
-
module OhlohScm::Adapters
|
2
|
-
class GitAdapter < AbstractAdapter
|
3
|
-
def git_path
|
4
|
-
File.join(self.url, '/.git')
|
5
|
-
end
|
6
|
-
|
7
|
-
def exist?
|
8
|
-
begin
|
9
|
-
!!(head_token)
|
10
|
-
rescue
|
11
|
-
logger.debug { $! }
|
12
|
-
false
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def export(dest_dir, commit_id = 'HEAD')
|
17
|
-
run "cd #{url} && git archive #{commit_id} | tar -C #{ dest_dir } -x"
|
18
|
-
end
|
19
|
-
|
20
|
-
def ls_tree(token='HEAD')
|
21
|
-
run("cd #{url} && git ls-tree -r #{token} | cut -f 2 -d '\t'").split("\n")
|
22
|
-
end
|
23
|
-
|
24
|
-
# For a given commit ID, returns the SHA1 hash of its tree
|
25
|
-
def get_commit_tree(token='HEAD')
|
26
|
-
run("cd #{url} && git cat-file commit #{token} | grep '^tree' | cut -d ' ' -f 2").strip
|
27
|
-
end
|
28
|
-
|
29
|
-
# Moves us the correct branch and checks out the most recent files.
|
30
|
-
#
|
31
|
-
# Anything not tracked by Git is deleted.
|
32
|
-
#
|
33
|
-
# This method may not seem like the most efficient way to accomplish this,
|
34
|
-
# but we need very high reliability and this sequence gets the job done every time.
|
35
|
-
def checkout
|
36
|
-
if FileTest.exist? git_path
|
37
|
-
run "cd '#{url}' && git clean -f -d -x"
|
38
|
-
if self.has_branch?
|
39
|
-
run "cd '#{url}' && git checkout #{self.branch_name} --"
|
40
|
-
run "cd '#{url}' && git reset --hard heads/#{self.branch_name} --"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
#---------------------------------------------------------------------------
|
46
|
-
# BRANCH-RELATED CODE
|
47
|
-
#-------------------------------------------------------------------------
|
48
|
-
|
49
|
-
# Returns an array of all branch names
|
50
|
-
def branches
|
51
|
-
run("cd '#{self.url}' && git branch | #{ string_encoder }").split.collect { |b| b =~ /\b(.+)$/ ; $1 }.compact
|
52
|
-
end
|
53
|
-
|
54
|
-
def has_branch?(name=self.branch_name)
|
55
|
-
return false unless FileTest.exist?(self.git_path)
|
56
|
-
self.branches.include?(name)
|
57
|
-
end
|
58
|
-
|
59
|
-
# Create a new local branch to mirror the remote one
|
60
|
-
# If a branch of this name already exist, nothing happens.
|
61
|
-
def create_tracking_branch(name)
|
62
|
-
return if name.to_s == ''
|
63
|
-
|
64
|
-
unless self.branches.include? name
|
65
|
-
run "cd '#{self.url}' && git branch -f #{name} origin/#{name}"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def is_merge_commit?(commit)
|
70
|
-
parent_tokens(commit).size > 1
|
71
|
-
end
|
72
|
-
|
73
|
-
def no_tags?
|
74
|
-
run("cd #{ url } && git tag | head -1").empty?
|
75
|
-
end
|
76
|
-
|
77
|
-
def tags
|
78
|
-
return [] if no_tags?
|
79
|
-
tag_strings = run("cd #{url} && git tag --format='%(creatordate:iso-strict) %(objectname) %(refname)' | sed 's/refs\\/tags\\///'").split(/\n/)
|
80
|
-
tag_strings.map do |tag_string|
|
81
|
-
timestamp_string, commit_hash, tag_name = tag_string.split(/\s/)
|
82
|
-
[tag_name, dereferenced_sha(tag_name) || commit_hash, time_object(timestamp_string)]
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
private
|
87
|
-
|
88
|
-
def dereferenced_sha(tag_name)
|
89
|
-
dtag_sha_and_name = dtag_sha_and_names.find { |sha_and_name| sha_and_name.last == tag_name }
|
90
|
-
dtag_sha_and_name.first if dtag_sha_and_name
|
91
|
-
end
|
92
|
-
|
93
|
-
def dtag_sha_and_names
|
94
|
-
@dtag_sha_and_names ||= dereferenced_tag_strings.map(&:split)
|
95
|
-
end
|
96
|
-
|
97
|
-
def dereferenced_tag_strings
|
98
|
-
# Pattern: b6e9220c3cabe53a4ed7f32952aeaeb8a822603d refs/tags/v1.0.0^{}
|
99
|
-
run("cd #{url} && git show-ref --tags -d | grep '\\^{}' | sed 's/\\^{}//' | sed 's/refs\\/tags\\///'").split(/\n/)
|
100
|
-
end
|
101
|
-
|
102
|
-
def time_object(timestamp_string)
|
103
|
-
timestamp_string = '1970-01-01' if timestamp_string.strip.empty?
|
104
|
-
timestamp = Time.parse(timestamp_string)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|