)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9101,"name":"wanghong","email":"reviewwanghong@126.com","username":"wanghong"},"change_message_id":"829a1dac3cf533e1757546eef628c846e29dd52d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Helper function to determine init version for migrate repository. We"},{"line_number":10,"context_line":"need single automated entry point to determine an initial versions of"},{"line_number":11,"context_line":"repositories."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I89616a2cf7a752fbe97591d5694b14f8b86e4539"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a890539_f7a3c7ae","line":12,"updated":"2014-12-02 01:50:16.000000000","message":"I think you should give the reason for this patch.","commit_id":"7bec5cdf0f4e9da1720f59e2e18386e7ac6563bf"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2b7842084385ab8135c3350856ebac777f55b8c9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Helper function to determine init version for migrate repository. We"},{"line_number":10,"context_line":"need single automated entry point to determine an initial versions of"},{"line_number":11,"context_line":"repositories."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I89616a2cf7a752fbe97591d5694b14f8b86e4539"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a890539_b5fdbfb3","line":12,"updated":"2014-12-01 21:57:18.000000000","message":"is this related to a bug?","commit_id":"7bec5cdf0f4e9da1720f59e2e18386e7ac6563bf"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"1d908ec300acb359503a6726534841fdf03223e5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Helper function to determine init version for migrate repository. We"},{"line_number":10,"context_line":"need single automated entry point to determine an initial versions of"},{"line_number":11,"context_line":"repositories."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I89616a2cf7a752fbe97591d5694b14f8b86e4539"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a890539_adc9b45b","line":12,"in_reply_to":"5a890539_b5fdbfb3","updated":"2014-12-03 12:21:13.000000000","message":"Done","commit_id":"7bec5cdf0f4e9da1720f59e2e18386e7ac6563bf"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"1d908ec300acb359503a6726534841fdf03223e5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Helper function to determine init version for migrate repository. We"},{"line_number":10,"context_line":"need single automated entry point to determine an initial versions of"},{"line_number":11,"context_line":"repositories."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I89616a2cf7a752fbe97591d5694b14f8b86e4539"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a890539_cdc60049","line":12,"in_reply_to":"5a890539_f7a3c7ae","updated":"2014-12-03 12:21:13.000000000","message":"Done","commit_id":"7bec5cdf0f4e9da1720f59e2e18386e7ac6563bf"}],"keystone/common/sql/migrate_repo/__init__.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4c0e9bf612b8cbab060770dff1ba2e4be730cfd2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5aef4532_210c66ec","updated":"2016-03-09 10:35:28.000000000","message":"i think you\u0027re leaving a single blank line in this file? it should be marked for deletion, but i\u0027m not seeing that in gerrit. weird!","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"7013da53158bea1ebefa1419644e8e008e89d3d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"5aef4532_8ec29e32","in_reply_to":"5aef4532_210c66ec","updated":"2016-03-09 19:23:29.000000000","message":"ls -l  keystone/common/sql/migrate_repo/__init__.py\n-rw-rw-r-- 1 perryse perryse 0 Mar  9 11:11 keystone/common/sql/migrate_repo/__init__.py\n\nLooks empty to me......\n\nWe do not want it deleted, we need the file so this directory is still a valid Python import.","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"}],"keystone/common/sql/migration_helpers.py":[{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"aa33feb3e28e9e158cf5676e6547fed4186c3a5f","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    path \u003d path or find_migrate_repo()"},{"line_number":139,"context_line":"    v_dir \u003d os.listdir(os.path.join(path, \u0027versions\u0027))"},{"line_number":140,"context_line":"    m_scripts \u003d filter(lambda x: x.endswith(\u0027py\u0027) and x[:3].isdigit(), v_dir)"},{"line_number":141,"context_line":"    versions \u003d map(lambda x: int(x[:3]), m_scripts)"},{"line_number":142,"context_line":"    init_version \u003d min(versions) - 1"},{"line_number":143,"context_line":"    return init_version if init_version \u003e 0 else None"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_74c8ec56","line":141,"updated":"2014-11-28 13:40:01.000000000","message":"nit: I\u0027d prefer to use list comprehensions in lines 140-141","commit_id":"d3cb018514c450d6b4a274d478ab948ef4d728cd"},{"author":{"_account_id":7536,"name":"Ilya Pekelny","email":"ipekelny@mirantis.com","username":"I159"},"change_message_id":"ccb9eb91204a879ed09afeff727346c9306febc7","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    path \u003d path or find_migrate_repo()"},{"line_number":139,"context_line":"    v_dir \u003d os.listdir(os.path.join(path, \u0027versions\u0027))"},{"line_number":140,"context_line":"    m_scripts \u003d filter(lambda x: x.endswith(\u0027py\u0027) and x[:3].isdigit(), v_dir)"},{"line_number":141,"context_line":"    versions \u003d map(lambda x: int(x[:3]), m_scripts)"},{"line_number":142,"context_line":"    init_version \u003d min(versions) - 1"},{"line_number":143,"context_line":"    return init_version if init_version \u003e 0 else None"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_a1568f28","line":141,"in_reply_to":"5a890539_74c8ec56","updated":"2014-11-28 16:35:11.000000000","message":"I should file some bugs for the patches. I\u0027ll do it Monday.","commit_id":"d3cb018514c450d6b4a274d478ab948ef4d728cd"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"1085b59170d21c9c1bd5eca71a5bd02328b475e4","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def get_init_version(path\u003dNone):"},{"line_number":140,"context_line":"    \"\"\"Get init version of a migrate repo.\"\"\""},{"line_number":141,"context_line":"    path \u003d path or find_migrate_repo()"},{"line_number":142,"context_line":"    v_dir \u003d os.listdir(os.path.join(path, \u0027versions\u0027))"},{"line_number":143,"context_line":"    m_scripts \u003d filter(lambda x: x.endswith(\u0027py\u0027) and x[:3].isdigit(), v_dir)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_e459498f","line":140,"updated":"2015-01-05 14:34:26.000000000","message":"nit: \n\n Get an initial version of a migrate repository","commit_id":"7dde336368b4d67e86e4a6ed8ee982bc80b17929"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"153382d4341bd1b8a09b0c6e12a10343c852ee13","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def get_init_version(path\u003dNone):"},{"line_number":140,"context_line":"    \"\"\"Get init version of a migrate repo.\"\"\""},{"line_number":141,"context_line":"    path \u003d path or find_migrate_repo()"},{"line_number":142,"context_line":"    v_dir \u003d os.listdir(os.path.join(path, \u0027versions\u0027))"},{"line_number":143,"context_line":"    m_scripts \u003d filter(lambda x: x.endswith(\u0027py\u0027) and x[:3].isdigit(), v_dir)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_c1e5e109","line":140,"in_reply_to":"3a961159_e459498f","updated":"2015-02-04 18:51:38.000000000","message":"adding the docstring for path would be useful too, along with the return value, even though it may be self explanatory to us.","commit_id":"7dde336368b4d67e86e4a6ed8ee982bc80b17929"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"1085b59170d21c9c1bd5eca71a5bd02328b475e4","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    path \u003d path or find_migrate_repo()"},{"line_number":142,"context_line":"    v_dir \u003d os.listdir(os.path.join(path, \u0027versions\u0027))"},{"line_number":143,"context_line":"    m_scripts \u003d filter(lambda x: x.endswith(\u0027py\u0027) and x[:3].isdigit(), v_dir)"},{"line_number":144,"context_line":"    versions \u003d map(lambda x: int(x[:3]), m_scripts)"},{"line_number":145,"context_line":"    init_version \u003d min(versions) - 1"},{"line_number":146,"context_line":"    return init_version if init_version \u003e 0 else None"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_64e479ac","line":144,"updated":"2015-01-05 14:34:26.000000000","message":"I\u0027d prefer to use list comprehensions in these two lines","commit_id":"7dde336368b4d67e86e4a6ed8ee982bc80b17929"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"153382d4341bd1b8a09b0c6e12a10343c852ee13","unresolved":false,"context_lines":[{"line_number":141,"context_line":"    path \u003d path or find_migrate_repo()"},{"line_number":142,"context_line":"    v_dir \u003d os.listdir(os.path.join(path, \u0027versions\u0027))"},{"line_number":143,"context_line":"    m_scripts \u003d filter(lambda x: x.endswith(\u0027py\u0027) and x[:3].isdigit(), v_dir)"},{"line_number":144,"context_line":"    versions \u003d map(lambda x: int(x[:3]), m_scripts)"},{"line_number":145,"context_line":"    init_version \u003d min(versions) - 1"},{"line_number":146,"context_line":"    return init_version if init_version \u003e 0 else None"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_e173c54b","line":144,"in_reply_to":"3a961159_64e479ac","updated":"2015-02-04 18:51:38.000000000","message":"++\n\n    migration_scripts \u003d []\n    for script in migration_directory:\n        if script.endswith(\u0027py\u0027) and script[:3].isdigit()\n            migration_scripts.append(script)\n    migration_versions \u003d []\n    for script in migration_scripts:\n        migration_versions.append(int(script[:3]))\n\n    init_version \u003d min(migration_versions) - 1","commit_id":"7dde336368b4d67e86e4a6ed8ee982bc80b17929"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"1085b59170d21c9c1bd5eca71a5bd02328b475e4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        package_name \u003d \u0027.\u0027.join((contrib.__name__, extension))"},{"line_number":193,"context_line":"        package \u003d importutils.import_module(package_name)"},{"line_number":194,"context_line":"        abs_path \u003d find_migrate_repo(package)"},{"line_number":195,"context_line":"        init_version \u003d get_init_version(abs_path)"},{"line_number":196,"context_line":"    except ImportError:"},{"line_number":197,"context_line":"        raise ImportError(_(\"%s extension does not exist.\")"},{"line_number":198,"context_line":"                          % package_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_2488b1c5","line":195,"updated":"2015-01-05 14:34:26.000000000","message":"nit: IMO, these two lines should be outside this try...except block","commit_id":"7dde336368b4d67e86e4a6ed8ee982bc80b17929"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"9ad3a50a05675de6e59e4dbaa38cf5132b8d1cc7","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    \"\"\"Get an initial version of a migrate repository"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    param path: path to migrate repository."},{"line_number":155,"context_line":"    return:     initial version number or None, is DB is empty."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    if path is None:"},{"line_number":158,"context_line":"        path \u003d find_migrate_repo()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9b358b_f55b122d","line":155,"updated":"2015-03-29 12:22:37.000000000","message":"s/is/if ?","commit_id":"097a3f7cae47ea83e2909e4db1e4a3fb07c4ec95"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"04bb8a04b9a6bd6dbb3b93ffcd4e318b4d386255","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    \"\"\"Get an initial version of a migrate repository"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    param path: path to migrate repository."},{"line_number":155,"context_line":"    return:     initial version number or None, is DB is empty."},{"line_number":156,"context_line":"    \"\"\""},{"line_number":157,"context_line":"    if path is None:"},{"line_number":158,"context_line":"        path \u003d find_migrate_repo()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da9b358b_47a687c2","line":155,"in_reply_to":"da9b358b_f55b122d","updated":"2015-03-30 12:15:55.000000000","message":"that\u0027s true :)","commit_id":"097a3f7cae47ea83e2909e4db1e4a3fb07c4ec95"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"212b8d046f2847e2866f75746670a8ae2c787155","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    try:"},{"line_number":210,"context_line":"        package_name \u003d \u0027.\u0027.join((contrib.__name__, extension))"},{"line_number":211,"context_line":"        package \u003d importutils.import_module(package_name)"},{"line_number":212,"context_line":"        abs_path \u003d find_migrate_repo(package)"},{"line_number":213,"context_line":"        init_version \u003d get_init_version(abs_path)"},{"line_number":214,"context_line":"    except ImportError:"},{"line_number":215,"context_line":"        raise ImportError(_(\"%s extension does not exist.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"da9b358b_0cf752f6","line":212,"updated":"2015-03-31 09:44:20.000000000","message":"so before, this was inside a try block catching exception.MigrationNotProvided...do we know what it will throw?","commit_id":"415e2e932e545e14beb6f465a754e76ee5bcd651"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"5bb77ee752dbefb064b08f2f5085b6f91a80f531","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    try:"},{"line_number":210,"context_line":"        package_name \u003d \u0027.\u0027.join((contrib.__name__, extension))"},{"line_number":211,"context_line":"        package \u003d importutils.import_module(package_name)"},{"line_number":212,"context_line":"        abs_path \u003d find_migrate_repo(package)"},{"line_number":213,"context_line":"        init_version \u003d get_init_version(abs_path)"},{"line_number":214,"context_line":"    except ImportError:"},{"line_number":215,"context_line":"        raise ImportError(_(\"%s extension does not exist.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"da9b358b_2c8456d2","line":212,"in_reply_to":"da9b358b_0cf752f6","updated":"2015-03-31 09:57:08.000000000","message":"I actually don\u0027t know, why this was moved here... Will try to investigate.","commit_id":"415e2e932e545e14beb6f465a754e76ee5bcd651"},{"author":{"_account_id":7491,"name":"Viktor Serhieiev","email":"viktor.sergeyev@gmail.com","username":"vsergeyev"},"change_message_id":"e5c4318c84ad5a048ef96bd352e834a1e2bcc9f6","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    try:"},{"line_number":210,"context_line":"        package_name \u003d \u0027.\u0027.join((contrib.__name__, extension))"},{"line_number":211,"context_line":"        package \u003d importutils.import_module(package_name)"},{"line_number":212,"context_line":"        abs_path \u003d find_migrate_repo(package)"},{"line_number":213,"context_line":"        init_version \u003d get_init_version(abs_path)"},{"line_number":214,"context_line":"    except ImportError:"},{"line_number":215,"context_line":"        raise ImportError(_(\"%s extension does not exist.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"da9b358b_5b9f24b4","line":212,"in_reply_to":"da9b358b_2c8456d2","updated":"2015-04-01 09:19:28.000000000","message":"moved back :)","commit_id":"415e2e932e545e14beb6f465a754e76ee5bcd651"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":150,"context_line":"def get_init_version(abs_path\u003dNone):"},{"line_number":151,"context_line":"    \"\"\"Get an initial version of a migrate repository"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    param abs_path: Absolute path to migrate repository."},{"line_number":154,"context_line":"    return:         initial version number or None, if DB is empty."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if abs_path is None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_22ff0f03","line":153,"updated":"2015-04-19 15:31:37.000000000","message":"the format for params in rst is\n\n :param abs_path:\n\nsee http://sphinx-doc.org/domains.html#info-field-lists","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":150,"context_line":"def get_init_version(abs_path\u003dNone):"},{"line_number":151,"context_line":"    \"\"\"Get an initial version of a migrate repository"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    param abs_path: Absolute path to migrate repository."},{"line_number":154,"context_line":"    return:         initial version number or None, if DB is empty."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if abs_path is None:"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_534aa628","line":153,"in_reply_to":"dac4157f_22ff0f03","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    \"\"\"Get an initial version of a migrate repository"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    param abs_path: Absolute path to migrate repository."},{"line_number":154,"context_line":"    return:         initial version number or None, if DB is empty."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if abs_path is None:"},{"line_number":157,"context_line":"        abs_path \u003d find_migrate_repo()"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_82101b50","line":154,"updated":"2015-04-19 15:31:37.000000000","message":"use\n\n :return:\n\nfor rst.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    \"\"\"Get an initial version of a migrate repository"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    param abs_path: Absolute path to migrate repository."},{"line_number":154,"context_line":"    return:         initial version number or None, if DB is empty."},{"line_number":155,"context_line":"    \"\"\""},{"line_number":156,"context_line":"    if abs_path is None:"},{"line_number":157,"context_line":"        abs_path \u003d find_migrate_repo()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_d35cf6f2","line":154,"in_reply_to":"dac4157f_82101b50","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"34bf923946e5d1ebad3edd1255fb45ce587145fa","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        abs_path \u003d find_migrate_repo()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    repo \u003d migrate.versioning.repository.Repository(abs_path)"},{"line_number":149,"context_line":"    init_version \u003d int(min(repo.versions.versions)) - 1"},{"line_number":150,"context_line":"    return init_version if init_version \u003e 0 else None"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5aef4532_337e9c19","line":149,"updated":"2016-03-08 20:27:27.000000000","message":"We should add a comment why we are - 1\u0027ing this value.","commit_id":"5536ef398b3ca977d2d5e29025b9e1d9ef6107d8"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"9d20a08dfca8b3b5bf31f0950601b41dbb545509","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        abs_path \u003d find_migrate_repo()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    repo \u003d migrate.versioning.repository.Repository(abs_path)"},{"line_number":149,"context_line":"    init_version \u003d int(min(repo.versions.versions)) - 1"},{"line_number":150,"context_line":"    return init_version if init_version \u003e 0 else None"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5aef4532_d13c8be4","line":149,"in_reply_to":"5aef4532_337e9c19","updated":"2016-03-08 23:34:02.000000000","message":"Yeah, good point. Will do.","commit_id":"5536ef398b3ca977d2d5e29025b9e1d9ef6107d8"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4c0e9bf612b8cbab060770dff1ba2e4be730cfd2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                          init_version\u003dinit_version, sanity_check\u003dFalse)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def get_init_version(abs_path\u003dNone):"},{"line_number":140,"context_line":"    \"\"\"Get the initial version of a migrate repository"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    :param abs_path: Absolute path to migrate repository."}],"source_content_type":"text/x-python","patch_set":22,"id":"5aef4532_01196a22","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":20},"updated":"2016-03-09 10:35:28.000000000","message":"nit: we can mark this as private with an underscore","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"7013da53158bea1ebefa1419644e8e008e89d3d1","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                          init_version\u003dinit_version, sanity_check\u003dFalse)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"def get_init_version(abs_path\u003dNone):"},{"line_number":140,"context_line":"    \"\"\"Get the initial version of a migrate repository"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    :param abs_path: Absolute path to migrate repository."}],"source_content_type":"text/x-python","patch_set":22,"id":"5aef4532_0e816ec3","line":139,"range":{"start_line":139,"start_character":4,"end_line":139,"end_character":20},"in_reply_to":"5aef4532_01196a22","updated":"2016-03-09 19:23:29.000000000","message":"I had not because I was considering also using this code with the extensions in a subsequent patch. No need to hard code the initial version as 0 there.","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"},{"author":{"_account_id":16523,"name":"ZhangLei","display_name":"ZhangLei","email":"zhang.lei@99cloud.net","username":"zhang.lei"},"change_message_id":"d768f55e90b6dd1aa47644610e1e0a1e9711d331","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # Sadly, Repository has a `latest` but not an `oldest`."},{"line_number":153,"context_line":"    init_version \u003d int(min(repo.versions.versions)) - 1"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    if init_version \u003c 0:"},{"line_number":156,"context_line":"        return None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    return init_version"}],"source_content_type":"text/x-python","patch_set":22,"id":"5aef4532_a1719678","line":155,"updated":"2016-03-09 10:31:16.000000000","message":"whether the init_version can be zero?","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"7013da53158bea1ebefa1419644e8e008e89d3d1","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # Sadly, Repository has a `latest` but not an `oldest`."},{"line_number":153,"context_line":"    init_version \u003d int(min(repo.versions.versions)) - 1"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    if init_version \u003c 0:"},{"line_number":156,"context_line":"        return None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    return init_version"}],"source_content_type":"text/x-python","patch_set":22,"id":"5aef4532_aecdda32","line":155,"in_reply_to":"5aef4532_0b47a577","updated":"2016-03-09 19:23:29.000000000","message":"If \u00271\u0027 is the first script number then \u00270\u0027 is the initial version. \u00270\u0027 is valid if rare. I\u0027d rather save None to match the function\u0027s comment where it means no data found.","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4c0e9bf612b8cbab060770dff1ba2e4be730cfd2","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # Sadly, Repository has a `latest` but not an `oldest`."},{"line_number":153,"context_line":"    init_version \u003d int(min(repo.versions.versions)) - 1"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    if init_version \u003c 0:"},{"line_number":156,"context_line":"        return None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    return init_version"}],"source_content_type":"text/x-python","patch_set":22,"id":"5aef4532_c1d02222","line":155,"in_reply_to":"5aef4532_a1719678","updated":"2016-03-09 10:35:28.000000000","message":"this is if \"init_version\" is 0, which would be the first migration, so returning None is fine here. I don\u0027t think we\u0027ll ever hit this condition.","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"efbe2338db922ed3dc344ab309eabe1d5107ac18","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # Sadly, Repository has a `latest` but not an `oldest`."},{"line_number":153,"context_line":"    init_version \u003d int(min(repo.versions.versions)) - 1"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    if init_version \u003c 0:"},{"line_number":156,"context_line":"        return None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    return init_version"}],"source_content_type":"text/x-python","patch_set":22,"id":"5aef4532_0b47a577","line":155,"in_reply_to":"5aef4532_c1d02222","updated":"2016-03-09 17:49:50.000000000","message":"This is \"if the init_version is less than 0\" which doesn\u0027t include if the init_version is 0. If that\u0027s what we want then we\u0027d have to do:\n\n    if init_version \u003c\u003d 0:","commit_id":"fb657419ca11871bf983b87dd82b0b265211a66e"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            self.max_version - 1)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":701,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027,"},{"line_number":702,"context_line":"                       return_value\u003d\u0027/keystone/migrate_repo/\u0027)"},{"line_number":703,"context_line":"    def test_get_init_version_no_path(self, find_migrate_repo, repo):"},{"line_number":704,"context_line":"        migrate_versions \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_2274af9a","line":701,"updated":"2015-04-19 15:31:37.000000000","message":"it\u0027s strange to mock our own functions.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":698,"context_line":"            self.max_version - 1)"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":701,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027,"},{"line_number":702,"context_line":"                       return_value\u003d\u0027/keystone/migrate_repo/\u0027)"},{"line_number":703,"context_line":"    def test_get_init_version_no_path(self, find_migrate_repo, repo):"},{"line_number":704,"context_line":"        migrate_versions \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_93bd4e05","line":701,"in_reply_to":"dac4157f_2274af9a","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":700,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":701,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027,"},{"line_number":702,"context_line":"                       return_value\u003d\u0027/keystone/migrate_repo/\u0027)"},{"line_number":703,"context_line":"    def test_get_init_version_no_path(self, find_migrate_repo, repo):"},{"line_number":704,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_e21fd759","line":703,"updated":"2015-04-19 15:31:37.000000000","message":"there should be a comment that says what this is testing, because it\u0027s not obvious.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":700,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":701,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027,"},{"line_number":702,"context_line":"                       return_value\u003d\u0027/keystone/migrate_repo/\u0027)"},{"line_number":703,"context_line":"    def test_get_init_version_no_path(self, find_migrate_repo, repo):"},{"line_number":704,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_33c0ba7c","line":703,"in_reply_to":"dac4157f_e21fd759","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":702,"context_line":"                       return_value\u003d\u0027/keystone/migrate_repo/\u0027)"},{"line_number":703,"context_line":"    def test_get_init_version_no_path(self, find_migrate_repo, repo):"},{"line_number":704,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        migration_helpers.get_init_version()"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_0252cb13","line":705,"updated":"2015-04-19 15:31:37.000000000","message":"This needs a comment what this is doing.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":702,"context_line":"                       return_value\u003d\u0027/keystone/migrate_repo/\u0027)"},{"line_number":703,"context_line":"    def test_get_init_version_no_path(self, find_migrate_repo, repo):"},{"line_number":704,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        migration_helpers.get_init_version()"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_13c93ead","line":705,"in_reply_to":"dac4157f_0252cb13","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        migration_helpers.get_init_version()"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        find_migrate_repo.assert_called_with()"},{"line_number":711,"context_line":"        repo.assert_called_with(\u0027/keystone/migrate_repo/\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_4231e3eb","line":708,"updated":"2015-04-19 15:31:37.000000000","message":"The test should assert that get_init_version returns what\u0027s expected.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5a21052bb1be03433349f2fa2a1d99910087ec61","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        migration_helpers.get_init_version()"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        find_migrate_repo.assert_called_with()"},{"line_number":711,"context_line":"        repo.assert_called_with(\u0027/keystone/migrate_repo/\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3acd31a7_682da045","line":708,"in_reply_to":"dac4157f_4231e3eb","updated":"2015-05-01 15:26:38.000000000","message":"++","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":706,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        migration_helpers.get_init_version()"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        find_migrate_repo.assert_called_with()"},{"line_number":711,"context_line":"        repo.assert_called_with(\u0027/keystone/migrate_repo/\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_73e36234","line":708,"in_reply_to":"dac4157f_4231e3eb","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":714,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027)"},{"line_number":715,"context_line":"    def test_get_init_version_none(self, find_migrate_repo, repo):"},{"line_number":716,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":717,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":718,"context_line":"        repo.return_value \u003d migrate_versions"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_a241df3b","line":715,"updated":"2015-04-19 15:31:37.000000000","message":"this needs a comment what it\u0027s testing, because it\u0027s not obvious.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":714,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027)"},{"line_number":715,"context_line":"    def test_get_init_version_none(self, find_migrate_repo, repo):"},{"line_number":716,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":717,"context_line":"        migrate_versions.versions.versions \u003d [0, 1, 2, 3, 4, 5]"},{"line_number":718,"context_line":"        repo.return_value \u003d migrate_versions"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_33d9da84","line":715,"in_reply_to":"dac4157f_a241df3b","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":724,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027)"},{"line_number":725,"context_line":"    def test_get_init_version(self, find_migrate_repo, repo):"},{"line_number":726,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":727,"context_line":"        migrate_versions.versions.versions \u003d [11, 12, 13, 14, 15]"},{"line_number":728,"context_line":"        repo.return_value \u003d migrate_versions"}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_c25bb32d","line":725,"updated":"2015-04-19 15:31:37.000000000","message":"rename to test_get_init_version_with_path to differentiate it from the other tests.\n\nAlso, this needs a comment what it\u0027s testing because it\u0027s not obvious.","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":722,"context_line":""},{"line_number":723,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"},{"line_number":724,"context_line":"    @mock.patch.object(migration_helpers, \u0027find_migrate_repo\u0027)"},{"line_number":725,"context_line":"    def test_get_init_version(self, find_migrate_repo, repo):"},{"line_number":726,"context_line":"        migrate_versions \u003d mock.MagicMock()"},{"line_number":727,"context_line":"        migrate_versions.versions.versions \u003d [11, 12, 13, 14, 15]"},{"line_number":728,"context_line":"        repo.return_value \u003d migrate_versions"}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_13f2de06","line":725,"in_reply_to":"dac4157f_c25bb32d","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":10795,"name":"Rajesh Tailor","email":"tailor.rajesh88@gmail.com","username":"rajeshtailor"},"change_message_id":"94147bab1075343b09ea7f24d17ad87905973a3f","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        version \u003d migration_helpers.get_init_version(\u0027/keystone/migrate_repo/\u0027)"},{"line_number":731,"context_line":"        self.assertEqual(10, version)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_extension_not_controlled(self):"},{"line_number":734,"context_line":"        \"\"\"When get the version before controlling, raises DbMigrationError.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"3a50d1a3_94cbffa3","line":731,"updated":"2015-08-03 13:10:18.000000000","message":"++","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"4a055b385646b66ed72b16f9faaf3a1b2e26d4b0","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        version \u003d migration_helpers.get_init_version(\u0027/keystone/migrate_repo/\u0027)"},{"line_number":731,"context_line":"        self.assertEqual(10, version)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_extension_not_controlled(self):"},{"line_number":734,"context_line":"        \"\"\"When get the version before controlling, raises DbMigrationError.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"dac4157f_624bc75a","line":731,"updated":"2015-04-19 15:31:37.000000000","message":"if there\u0027s a relationship between migrate_versions.versions.versions[0] then make that clear by referencing a common variable.\n\n initial_version \u003d 10\n ...\n migrate_versions.versions.versions \u003d [initial_version+1, initial_version+2, ...]\n ...\n self.assertEqual(intial_version, version)","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":17026,"name":"Sean Perry","email":"sean.perry@hpe.com","username":"sean_perry"},"change_message_id":"dc4291f41e9269c2b95f5c51ec52d87158ec887f","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        repo.return_value \u003d migrate_versions"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        version \u003d migration_helpers.get_init_version(\u0027/keystone/migrate_repo/\u0027)"},{"line_number":731,"context_line":"        self.assertEqual(10, version)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    def test_extension_not_controlled(self):"},{"line_number":734,"context_line":"        \"\"\"When get the version before controlling, raises DbMigrationError.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"7af24918_738c0280","line":731,"in_reply_to":"dac4157f_624bc75a","updated":"2016-03-04 19:51:32.000000000","message":"Done","commit_id":"90bf4d0ca1d37cad37fb98ad6cec15fe9f637a77"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8eab79b1b8fd19a837607977974b678bca6fdb76","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            path \u003d \u0027/keystone/migrate_repo/\u0027"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            # since 0 is the smallest version expect None"},{"line_number":160,"context_line":"            version \u003d migration_helpers.get_init_version(path)"},{"line_number":161,"context_line":"            self.assertIsNone(version)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @mock.patch.object(repository, \u0027Repository\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5aef4532_5d565706","line":160,"updated":"2016-03-10 16:22:29.000000000","message":"nit: We should be passing this as a kwarg since abs_path is a kwarg in the method signature, right?","commit_id":"9dd4c457bd47359def8b83f1d254437229e69c33"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"8eab79b1b8fd19a837607977974b678bca6fdb76","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        with mock.patch(\u0027os.path.isdir\u0027, return_value\u003dTrue):"},{"line_number":175,"context_line":"            path \u003d \u0027/keystone/migrate_repo/\u0027"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"            version \u003d migration_helpers.get_init_version(path)"},{"line_number":178,"context_line":"            self.assertEqual(initial_version, version)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"5aef4532_bd45db43","line":177,"updated":"2016-03-10 16:22:29.000000000","message":"Same comment applies here.","commit_id":"9dd4c457bd47359def8b83f1d254437229e69c33"}]}
