)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"b0dc740ef8bc8b7c8fcbc34ac705b3d0ffded235","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     AKamyshnikova \u003cakamyshnikova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-08 18:18:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-branch HEAD files for conflict management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ie4b727e55a0b1ecb12e915a0037094a928d8f975"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a2fa921_a2057014","line":7,"updated":"2015-10-09 12:28:28.000000000","message":"I am not convinced that we need to maintain those files. Can we have some public discussion on the matter before we flip-flop the direction we choose?\n\nThere are both benefits and drawbacks in this approach, and I wonder whether the former justify additional complexity. Personally, I hate git conflicts on head changes, because there is no reasonable way for a reviewer to distinguish the reason of the failure on excessive branching from legitimate git conflicts that justify more cautious reviews for updates.","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"1479839c202f05ebeef09590265a6317ef9fa890","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     AKamyshnikova \u003cakamyshnikova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-08 18:18:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-branch HEAD files for conflict management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ie4b727e55a0b1ecb12e915a0037094a928d8f975"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a2fa921_c552f634","line":7,"in_reply_to":"7a2fa921_85a71ebc","updated":"2015-10-09 12:46:30.000000000","message":"It did not in my case. Let\u0027s have broader and public discussion since the intended benefits are for developers, so they should decide how we break on branching.","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d54be0dbbeca283af7d9b4e01bb391b53032d7f2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     AKamyshnikova \u003cakamyshnikova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-08 18:18:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-branch HEAD files for conflict management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ie4b727e55a0b1ecb12e915a0037094a928d8f975"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a2fa921_85a71ebc","line":7,"in_reply_to":"7a2fa921_a2057014","updated":"2015-10-09 12:37:34.000000000","message":"The email conversation with Kevin has convinced me and Henry that we need to have HEAD files. I\u0027 ll send email to openstack-dev later today.","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b3127cb184f7a886e7bca8c3cf22658ebab1874f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     AKamyshnikova \u003cakamyshnikova@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-10-08 18:18:21 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-branch HEAD files for conflict management"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ie4b727e55a0b1ecb12e915a0037094a928d8f975"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a2fa921_5698de1b","line":7,"in_reply_to":"7a2fa921_c552f634","updated":"2015-10-09 13:35:06.000000000","message":"I started conversation \"Returning of HEAD files?\" in openstack-dev.","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"outdated changes go into merge queue. To prevent this added"},{"line_number":11,"context_line":"CONTRACT_HEAD, EXPAND_HEAD files."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ie4b727e55a0b1ecb12e915a0037094a928d8f975"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a2ca52d_48bec200","line":13,"updated":"2015-10-13 13:54:52.000000000","message":"Bug?","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"outdated changes go into merge queue. To prevent this added"},{"line_number":11,"context_line":"CONTRACT_HEAD, EXPAND_HEAD files."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ie4b727e55a0b1ecb12e915a0037094a928d8f975"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5a2ca52d_4331c4a1","line":13,"in_reply_to":"5a2ca52d_48bec200","updated":"2015-10-13 14:19:57.000000000","message":"Filed https://bugs.launchpad.net/neutron/+bug/1505701, will update commit message in next patch set.","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"}],"doc/source/devref/alembic_migrations.rst":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"78ec4d0698d4f0a8b9d61b0547d2fd64bf58f0d1","unresolved":false,"context_lines":[{"line_number":323,"context_line":"if another migration got merged you will need to resolve conflict manually by"},{"line_number":324,"context_line":"putting appropriate revision id in HEAD file and changing ``down_revision`` in"},{"line_number":325,"context_line":"migration script."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Applying database migration rules"},{"line_number":329,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a26ad4f_2214b9f3","line":326,"updated":"2015-10-28 01:44:12.000000000","message":"Thanks Ann! I am going to submit a minor grammar update for this.","commit_id":"48b57111ca42ec283886052054302a1d5ea635bc"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"12686f5e91af9f782f0000be1495bed5bf8cc2de","unresolved":false,"context_lines":[{"line_number":323,"context_line":"if another migration got merged you will need to resolve conflict manually by"},{"line_number":324,"context_line":"putting appropriate revision id in HEAD file and changing ``down_revision`` in"},{"line_number":325,"context_line":"migration script."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Applying database migration rules"},{"line_number":329,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":12,"id":"1a26ad4f_207a6c25","line":326,"in_reply_to":"1a26ad4f_2214b9f3","updated":"2015-10-28 07:04:09.000000000","message":"Thanks!","commit_id":"48b57111ca42ec283886052054302a1d5ea635bc"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"f569a69e942f827829e710d9835074c0c430740d","unresolved":false,"context_lines":[{"line_number":320,"context_line":"head revision in each branch. The purpose of these files is to validate the"},{"line_number":321,"context_line":"revision timelines and prevent non-linear changes from entering the merge queue."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"When you create new a migration script these files will be updated"},{"line_number":324,"context_line":"automatically. But if another migration script is merged while your change is"},{"line_number":325,"context_line":"under review, you will need to resolve the conflict manually by changing the"},{"line_number":326,"context_line":"``down_revision`` in your migration script."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1a26ad4f_377a39be","line":323,"updated":"2015-11-02 12:15:24.000000000","message":"a new","commit_id":"940a2049347567936f8aa7d2bc6a706bab973502"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8e72abba101d1d6f7358c0dfefe14bf7c8e43229","unresolved":false,"context_lines":[{"line_number":320,"context_line":"head revision in each branch. The purpose of these files is to validate the"},{"line_number":321,"context_line":"revision timelines and prevent non-linear changes from entering the merge queue."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"When you create new a migration script these files will be updated"},{"line_number":324,"context_line":"automatically. But if another migration script is merged while your change is"},{"line_number":325,"context_line":"under review, you will need to resolve the conflict manually by changing the"},{"line_number":326,"context_line":"``down_revision`` in your migration script."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1a26ad4f_b73969a6","line":323,"updated":"2015-11-02 13:04:47.000000000","message":"new a migration script -\u003e a new migration script\n\nIn addition, I would suggest to add \u0027by neutron-db-manage\u0027 because a migration script can be created manually.","commit_id":"940a2049347567936f8aa7d2bc6a706bab973502"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"b761cd1e3912f430cca200679d82e24a4077ade1","unresolved":false,"context_lines":[{"line_number":320,"context_line":"head revision in each branch. The purpose of these files is to validate the"},{"line_number":321,"context_line":"revision timelines and prevent non-linear changes from entering the merge queue."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"When you create new a migration script these files will be updated"},{"line_number":324,"context_line":"automatically. But if another migration script is merged while your change is"},{"line_number":325,"context_line":"under review, you will need to resolve the conflict manually by changing the"},{"line_number":326,"context_line":"``down_revision`` in your migration script."}],"source_content_type":"text/x-rst","patch_set":13,"id":"1a26ad4f_ede392a2","line":323,"in_reply_to":"1a26ad4f_b73969a6","updated":"2015-11-02 13:07:18.000000000","message":"Lets make it perfect. Done","commit_id":"940a2049347567936f8aa7d2bc6a706bab973502"}],"neutron/db/migration/cli.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"196178e098fca00acc8aaf1b56e0ede6c585d42d","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                                            \u0027head\u0027: head})"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"def _validate_heads_file(config):"},{"line_number":380,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":381,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"},{"line_number":382,"context_line":"    expand_head \u003d _get_expand_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_5fb90314","line":379,"updated":"2015-10-08 16:01:48.000000000","message":"Nit: I would name this \u0027_validate_head_files\u0027 to avoid confusion with what we had in Liberty.","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d54be0dbbeca283af7d9b4e01bb391b53032d7f2","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                                            \u0027head\u0027: head})"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"def _validate_heads_file(config):"},{"line_number":380,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":381,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"},{"line_number":382,"context_line":"    expand_head \u003d _get_expand_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_fdf6bb5b","line":379,"in_reply_to":"7a2fa921_5fb90314","updated":"2015-10-09 12:37:34.000000000","message":"Done","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"196178e098fca00acc8aaf1b56e0ede6c585d42d","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    _check_head(EXPAND_BRANCH, expand_head, head_map[\u0027expand\u0027])"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"def update_heads_file(config):"},{"line_number":388,"context_line":"    \u0027\u0027\u0027Update HEADS file with the latest branch heads.\u0027\u0027\u0027"},{"line_number":389,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_df5af3f1","line":387,"updated":"2015-10-08 16:01:48.000000000","message":"Nit: update_head_files","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"d54be0dbbeca283af7d9b4e01bb391b53032d7f2","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    _check_head(EXPAND_BRANCH, expand_head, head_map[\u0027expand\u0027])"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"def update_heads_file(config):"},{"line_number":388,"context_line":"    \u0027\u0027\u0027Update HEADS file with the latest branch heads.\u0027\u0027\u0027"},{"line_number":389,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a2fa921_9d98e71d","line":387,"in_reply_to":"7a2fa921_df5af3f1","updated":"2015-10-09 12:37:34.000000000","message":"Done","commit_id":"7d8b641d378c02e5e7d216cd4fdb93e853e126ab"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":327,"context_line":"def validate_head_file(config):"},{"line_number":328,"context_line":"    \u0027\u0027\u0027Check that HEAD file contains the latest head for the branch.\u0027\u0027\u0027"},{"line_number":329,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":330,"context_line":"        _validate_head_files(config)"},{"line_number":331,"context_line":"    else:"},{"line_number":332,"context_line":"        _validate_head_file(config)"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_c898926d","line":330,"updated":"2015-10-13 13:54:52.000000000","message":"You enforce validation, while other repos don\u0027t contain the file now, so you break them all once it\u0027s merged.","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7ff9662a5c277e8a858f94544130bb01b0e5df0e","unresolved":false,"context_lines":[{"line_number":327,"context_line":"def validate_head_file(config):"},{"line_number":328,"context_line":"    \u0027\u0027\u0027Check that HEAD file contains the latest head for the branch.\u0027\u0027\u0027"},{"line_number":329,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":330,"context_line":"        _validate_head_files(config)"},{"line_number":331,"context_line":"    else:"},{"line_number":332,"context_line":"        _validate_head_file(config)"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_862ccaac","line":330,"in_reply_to":"5a2ca52d_c898926d","updated":"2015-10-13 14:42:44.000000000","message":"I\u0027ll push changes to other repos in a short time.","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":327,"context_line":"def validate_head_file(config):"},{"line_number":328,"context_line":"    \u0027\u0027\u0027Check that HEAD file contains the latest head for the branch.\u0027\u0027\u0027"},{"line_number":329,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":330,"context_line":"        _validate_head_files(config)"},{"line_number":331,"context_line":"    else:"},{"line_number":332,"context_line":"        _validate_head_file(config)"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_c334f54b","line":330,"in_reply_to":"5a2ca52d_c898926d","updated":"2015-10-13 14:19:57.000000000","message":"Thanks for pointing this.","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    heads \u003d script.get_heads()"},{"line_number":356,"context_line":"    head_map \u003d {}"},{"line_number":357,"context_line":"    for head in heads:"},{"line_number":358,"context_line":"        if \u0027contract\u0027 in script.get_revision(head).branch_labels:"},{"line_number":359,"context_line":"            head_map[\u0027contract\u0027] \u003d head"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            head_map[\u0027expand\u0027] \u003d head"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_08d3ea39","line":358,"updated":"2015-10-13 13:54:52.000000000","message":"I think we have constants for branch labels somewhere: EXPAND_BRANCH, EXPAND_BRANCH, ...","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":355,"context_line":"    heads \u003d script.get_heads()"},{"line_number":356,"context_line":"    head_map \u003d {}"},{"line_number":357,"context_line":"    for head in heads:"},{"line_number":358,"context_line":"        if \u0027contract\u0027 in script.get_revision(head).branch_labels:"},{"line_number":359,"context_line":"            head_map[\u0027contract\u0027] \u003d head"},{"line_number":360,"context_line":"        else:"},{"line_number":361,"context_line":"            head_map[\u0027expand\u0027] \u003d head"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_c3e715ab","line":358,"in_reply_to":"5a2ca52d_08d3ea39","updated":"2015-10-13 14:19:57.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    _check_head(EXPAND_BRANCH, expand_head, head_map[\u0027expand\u0027])"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"def update_head_files(config):"},{"line_number":388,"context_line":"    \u0027\u0027\u0027Update HEADS file with the latest branch heads.\u0027\u0027\u0027"},{"line_number":389,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_a8d8b6f0","line":387,"updated":"2015-10-13 13:54:52.000000000","message":"I don\u0027t see code for old, branchless chains (you unconditionally generate new files for it).","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    _check_head(EXPAND_BRANCH, expand_head, head_map[\u0027expand\u0027])"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"def update_head_files(config):"},{"line_number":388,"context_line":"    \u0027\u0027\u0027Update HEADS file with the latest branch heads.\u0027\u0027\u0027"},{"line_number":389,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_23f36975","line":387,"in_reply_to":"5a2ca52d_a8d8b6f0","updated":"2015-10-13 14:19:57.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"4db29eb0789085aa1b49e7de7435d248b1d73bdd","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"def update_head_files(config):"},{"line_number":388,"context_line":"    \u0027\u0027\u0027Update HEADS file with the latest branch heads.\u0027\u0027\u0027"},{"line_number":389,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"},{"line_number":391,"context_line":"    expand_head \u003d _get_expand_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_a810b64f","line":388,"updated":"2015-10-13 13:41:52.000000000","message":"Nit: HEAD files","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7dda337b88eda0797e500b8cdd796a5e068da4c2","unresolved":false,"context_lines":[{"line_number":385,"context_line":""},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"def update_head_files(config):"},{"line_number":388,"context_line":"    \u0027\u0027\u0027Update HEADS file with the latest branch heads.\u0027\u0027\u0027"},{"line_number":389,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"},{"line_number":391,"context_line":"    expand_head \u003d _get_expand_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_283106a3","line":388,"in_reply_to":"5a2ca52d_a810b64f","updated":"2015-10-13 13:45:37.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"},{"line_number":391,"context_line":"    expand_head \u003d _get_expand_head_file_path(config)"},{"line_number":392,"context_line":"    with open(contract_head, \u0027w+\u0027) as f:"},{"line_number":393,"context_line":"        f.write(head_map[\u0027contract\u0027] + \u0027\\n\u0027)"},{"line_number":394,"context_line":"    with open(expand_head, \u0027w+\u0027) as f:"},{"line_number":395,"context_line":"        f.write(head_map[\u0027expand\u0027] + \u0027\\n\u0027)"},{"line_number":396,"context_line":"    if _use_separate_migration_branches(config):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_28e266d6","line":393,"updated":"2015-10-13 13:54:52.000000000","message":"ditto for constants","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":390,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"},{"line_number":391,"context_line":"    expand_head \u003d _get_expand_head_file_path(config)"},{"line_number":392,"context_line":"    with open(contract_head, \u0027w+\u0027) as f:"},{"line_number":393,"context_line":"        f.write(head_map[\u0027contract\u0027] + \u0027\\n\u0027)"},{"line_number":394,"context_line":"    with open(expand_head, \u0027w+\u0027) as f:"},{"line_number":395,"context_line":"        f.write(head_map[\u0027expand\u0027] + \u0027\\n\u0027)"},{"line_number":396,"context_line":"    if _use_separate_migration_branches(config):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_e3ec9191","line":393,"in_reply_to":"5a2ca52d_28e266d6","updated":"2015-10-13 14:19:57.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"4db29eb0789085aa1b49e7de7435d248b1d73bdd","unresolved":false,"context_lines":[{"line_number":396,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":397,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":398,"context_line":"        if os.path.exists(old_head_file):"},{"line_number":399,"context_line":"            os.remove(old_head_file)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"@debtcollector.removals.remove(message\u003dBRANCHLESS_WARNING)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_a86516e2","line":399,"updated":"2015-10-13 13:41:52.000000000","message":"Do we also need to clean up the old HEADS file from Liberty?","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":396,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":397,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":398,"context_line":"        if os.path.exists(old_head_file):"},{"line_number":399,"context_line":"            os.remove(old_head_file)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"@debtcollector.removals.remove(message\u003dBRANCHLESS_WARNING)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_28302656","line":399,"in_reply_to":"5a2ca52d_a86516e2","updated":"2015-10-13 13:54:52.000000000","message":"+, HEADS file cleanup is missing now.","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"7dda337b88eda0797e500b8cdd796a5e068da4c2","unresolved":false,"context_lines":[{"line_number":396,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":397,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":398,"context_line":"        if os.path.exists(old_head_file):"},{"line_number":399,"context_line":"            os.remove(old_head_file)"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"@debtcollector.removals.remove(message\u003dBRANCHLESS_WARNING)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_a8f676d5","line":399,"in_reply_to":"5a2ca52d_a86516e2","updated":"2015-10-13 13:45:37.000000000","message":"Yes, I think we should. Thanks!","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"@debtcollector.removals.remove(message\u003dBRANCHLESS_WARNING)"},{"line_number":403,"context_line":"def update_head_file(config):"},{"line_number":404,"context_line":"    script \u003d alembic_script.ScriptDirectory.from_config(config)"},{"line_number":405,"context_line":"    head \u003d script.get_heads()"},{"line_number":406,"context_line":"    with open(_get_head_file_path(config), \u0027w+\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_88029a3d","line":403,"updated":"2015-10-13 13:54:52.000000000","message":"I don\u0027t see who calls it now. It should be triggered for old, branchless repos.","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"@debtcollector.removals.remove(message\u003dBRANCHLESS_WARNING)"},{"line_number":403,"context_line":"def update_head_file(config):"},{"line_number":404,"context_line":"    script \u003d alembic_script.ScriptDirectory.from_config(config)"},{"line_number":405,"context_line":"    head \u003d script.get_heads()"},{"line_number":406,"context_line":"    with open(_get_head_file_path(config), \u0027w+\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_4306a521","line":403,"in_reply_to":"5a2ca52d_88029a3d","updated":"2015-10-13 14:19:57.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"def _get_contract_head_file_path(config):"},{"line_number":503,"context_line":"    \u0027\u0027\u0027"},{"line_number":504,"context_line":"    Return the path of the file that was once used to maintain contract head"},{"line_number":505,"context_line":"    \u0027\u0027\u0027"},{"line_number":506,"context_line":"    return os.path.join("},{"line_number":507,"context_line":"        _get_root_versions_dir(config),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_08952ae3","line":504,"updated":"2015-10-13 13:54:52.000000000","message":"once used, but not anymore?..","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":501,"context_line":""},{"line_number":502,"context_line":"def _get_contract_head_file_path(config):"},{"line_number":503,"context_line":"    \u0027\u0027\u0027"},{"line_number":504,"context_line":"    Return the path of the file that was once used to maintain contract head"},{"line_number":505,"context_line":"    \u0027\u0027\u0027"},{"line_number":506,"context_line":"    return os.path.join("},{"line_number":507,"context_line":"        _get_root_versions_dir(config),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_23ffe802","line":504,"in_reply_to":"5a2ca52d_08952ae3","updated":"2015-10-13 14:19:57.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c5339f57c81412396a06c1b77c19b9365e159a9e","unresolved":false,"context_lines":[{"line_number":510,"context_line":""},{"line_number":511,"context_line":"def _get_expand_head_file_path(config):"},{"line_number":512,"context_line":"    \u0027\u0027\u0027"},{"line_number":513,"context_line":"    Return the path of the file that was once used to maintain contract head"},{"line_number":514,"context_line":"    \u0027\u0027\u0027"},{"line_number":515,"context_line":"    return os.path.join("},{"line_number":516,"context_line":"        _get_root_versions_dir(config),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_289a6615","line":513,"updated":"2015-10-13 13:54:52.000000000","message":"ditto","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"e8b9acc8cfbe49319505533ecf49aae715c956e1","unresolved":false,"context_lines":[{"line_number":510,"context_line":""},{"line_number":511,"context_line":"def _get_expand_head_file_path(config):"},{"line_number":512,"context_line":"    \u0027\u0027\u0027"},{"line_number":513,"context_line":"    Return the path of the file that was once used to maintain contract head"},{"line_number":514,"context_line":"    \u0027\u0027\u0027"},{"line_number":515,"context_line":"    return os.path.join("},{"line_number":516,"context_line":"        _get_root_versions_dir(config),"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a2ca52d_030e6c34","line":513,"in_reply_to":"5a2ca52d_289a6615","updated":"2015-10-13 14:19:57.000000000","message":"Done","commit_id":"88329a9cc94484fcbacc9fb92404367d3df5a64b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    else:"},{"line_number":376,"context_line":"        if observed_head !\u003d head:"},{"line_number":377,"context_line":"            alembic_util.err("},{"line_number":378,"context_line":"                _(\u0027%(branch)s HEAD file does not match migration timeline \u0027"},{"line_number":379,"context_line":"                  \u0027head, expected: %(head)s\u0027) % {\u0027branch\u0027: branch_name,"},{"line_number":380,"context_line":"                                                 \u0027head\u0027: head})"},{"line_number":381,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_461e890d","line":378,"updated":"2015-10-14 10:17:41.000000000","message":"nit: since %(branch)s is lower-case, I think we should call .title() on it so that the sentence is correct.","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    else:"},{"line_number":376,"context_line":"        if observed_head !\u003d head:"},{"line_number":377,"context_line":"            alembic_util.err("},{"line_number":378,"context_line":"                _(\u0027%(branch)s HEAD file does not match migration timeline \u0027"},{"line_number":379,"context_line":"                  \u0027head, expected: %(head)s\u0027) % {\u0027branch\u0027: branch_name,"},{"line_number":380,"context_line":"                                                 \u0027head\u0027: head})"},{"line_number":381,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_3a759eca","line":378,"in_reply_to":"5a2ca52d_461e890d","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":385,"context_line":"    if (not os.path.exists(_get_contract_head_file_path(config)) or"},{"line_number":386,"context_line":"            not os.path.exists(_get_expand_head_file_path(config))):"},{"line_number":387,"context_line":"        alembic_util.warn(_(\"Repository does not contain HEAD files for \""},{"line_number":388,"context_line":"                            \"contract and expand branch.\"))"},{"line_number":389,"context_line":"        return"},{"line_number":390,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":391,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_66f3850b","line":388,"updated":"2015-10-14 10:17:41.000000000","message":"branches","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":385,"context_line":"    if (not os.path.exists(_get_contract_head_file_path(config)) or"},{"line_number":386,"context_line":"            not os.path.exists(_get_expand_head_file_path(config))):"},{"line_number":387,"context_line":"        alembic_util.warn(_(\"Repository does not contain HEAD files for \""},{"line_number":388,"context_line":"                            \"contract and expand branch.\"))"},{"line_number":389,"context_line":"        return"},{"line_number":390,"context_line":"    head_map \u003d _get_heads_map(config)"},{"line_number":391,"context_line":"    contract_head \u003d _get_contract_head_file_path(config)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_da810a91","line":388,"in_reply_to":"5a2ca52d_66f3850b","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    with open(expand_head, \u0027w+\u0027) as f:"},{"line_number":405,"context_line":"        f.write(head_map[EXPAND_BRANCH] + \u0027\\n\u0027)"},{"line_number":406,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":407,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":408,"context_line":"        if os.path.exists(old_head_file):"},{"line_number":409,"context_line":"            os.remove(old_head_file)"},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_665865fb","line":407,"updated":"2015-10-14 10:17:41.000000000","message":"nit: for file_ in (old_head_file, old_heads_file): fileutils.delete_if_exists(file_)","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    with open(expand_head, \u0027w+\u0027) as f:"},{"line_number":405,"context_line":"        f.write(head_map[EXPAND_BRANCH] + \u0027\\n\u0027)"},{"line_number":406,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":407,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":408,"context_line":"        if os.path.exists(old_head_file):"},{"line_number":409,"context_line":"            os.remove(old_head_file)"},{"line_number":410,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_7a49d68a","line":407,"in_reply_to":"5a2ca52d_665865fb","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"d8b3d133ac1e8f28011176aa5d5693ebe263361d","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        f.write(head_map[CONTRACT_BRANCH] + \u0027\\n\u0027)"},{"line_number":404,"context_line":"    with open(expand_head, \u0027w+\u0027) as f:"},{"line_number":405,"context_line":"        f.write(head_map[EXPAND_BRANCH] + \u0027\\n\u0027)"},{"line_number":406,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":407,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":408,"context_line":"        old_heads_file \u003d _get_heads_file_path(config)"},{"line_number":409,"context_line":"        for file_ in (old_head_file, old_heads_file):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a29b11f_6e52ba68","line":406,"updated":"2015-10-23 13:19:59.000000000","message":"We are already in branches context, no need for the check.","commit_id":"3bdde224922fa9562d68f8f17f58aea2e6dedd97"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"317c308c5a6355847a7c304b96c4e150d40c8a57","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        f.write(head_map[CONTRACT_BRANCH] + \u0027\\n\u0027)"},{"line_number":404,"context_line":"    with open(expand_head, \u0027w+\u0027) as f:"},{"line_number":405,"context_line":"        f.write(head_map[EXPAND_BRANCH] + \u0027\\n\u0027)"},{"line_number":406,"context_line":"    if _use_separate_migration_branches(config):"},{"line_number":407,"context_line":"        old_head_file \u003d _get_head_file_path(config)"},{"line_number":408,"context_line":"        old_heads_file \u003d _get_heads_file_path(config)"},{"line_number":409,"context_line":"        for file_ in (old_head_file, old_heads_file):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a29b11f_345e5013","line":406,"in_reply_to":"3a29b11f_6e52ba68","updated":"2015-10-23 13:25:05.000000000","message":"Indeed, thanks!","commit_id":"3bdde224922fa9562d68f8f17f58aea2e6dedd97"}],"neutron/tests/unit/db/test_migration.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":333,"context_line":"    def test_upgrade_rejects_delta_with_relative_revision(self, use_mock):"},{"line_number":334,"context_line":"        self.assert_command_fails([\u0027prog\u0027, \u0027upgrade\u0027, \u0027+2\u0027, \u0027--delta\u0027, \u00273\u0027])"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def _test_validate_head_file_helper(self, heads, file_heads\u003dNone,"},{"line_number":337,"context_line":"                                        contract_head\u003d\u0027\u0027,"},{"line_number":338,"context_line":"                                        expand_head\u003d\u0027\u0027,"},{"line_number":339,"context_line":"                                        branchless\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_6699456e","line":336,"updated":"2015-10-14 10:17:41.000000000","message":"(No action required) that helper becomes hard to perceive. We should probably split it at least into two cases: branchless and with branches.","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":333,"context_line":"    def test_upgrade_rejects_delta_with_relative_revision(self, use_mock):"},{"line_number":334,"context_line":"        self.assert_command_fails([\u0027prog\u0027, \u0027upgrade\u0027, \u0027+2\u0027, \u0027--delta\u0027, \u00273\u0027])"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    def _test_validate_head_file_helper(self, heads, file_heads\u003dNone,"},{"line_number":337,"context_line":"                                        contract_head\u003d\u0027\u0027,"},{"line_number":338,"context_line":"                                        expand_head\u003d\u0027\u0027,"},{"line_number":339,"context_line":"                                        branchless\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_60f284d4","line":336,"in_reply_to":"5a2ca52d_6699456e","updated":"2015-10-14 13:38:29.000000000","message":"I agree that this function needs to be split up, will update in next patch set.","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                mock_open.assert_called_with("},{"line_number":389,"context_line":"                    cli._get_head_file_path(fake_config))"},{"line_number":390,"context_line":"            elif contract_head in heads and expand_head in heads:"},{"line_number":391,"context_line":"                mock_open_ex.assert_called_with("},{"line_number":392,"context_line":"                    cli._get_expand_head_file_path(fake_config))"},{"line_number":393,"context_line":"                mock_open_con.assert_called_with("},{"line_number":394,"context_line":"                    cli._get_contract_head_file_path(fake_config))"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_c67e19e4","line":391,"updated":"2015-10-14 10:17:41.000000000","message":"(No action required) in that helper, we do some kind of whitebox testing. I wonder whether this should eventually move to functional tests and switch to behavioural checks.","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            if not head_files_not_exist:"},{"line_number":397,"context_line":"                fc.assert_called_once_with(fake_config)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def test_validate_head_file_multiple_heads(self):"},{"line_number":400,"context_line":"        self._test_validate_head_file_helper([\u0027a\u0027, \u0027b\u0027],"},{"line_number":401,"context_line":"                                             contract_head\u003d\u0027a\u0027,"},{"line_number":402,"context_line":"                                             expand_head\u003d\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_0675f1f7","line":399,"updated":"2015-10-14 10:17:41.000000000","message":"Should we rename the cases to reflect what we target (validate_head_files, not validate_head_file)?","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":396,"context_line":"            if not head_files_not_exist:"},{"line_number":397,"context_line":"                fc.assert_called_once_with(fake_config)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"    def test_validate_head_file_multiple_heads(self):"},{"line_number":400,"context_line":"        self._test_validate_head_file_helper([\u0027a\u0027, \u0027b\u0027],"},{"line_number":401,"context_line":"                                             contract_head\u003d\u0027a\u0027,"},{"line_number":402,"context_line":"                                             expand_head\u003d\u0027b\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_e0b454f3","line":399,"in_reply_to":"5a2ca52d_0675f1f7","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def test_validate_head_file_branchless_success(self, *args):"},{"line_number":420,"context_line":"        self._test_validate_head_file_helper([\u0027a\u0027], [\u0027a\u0027], branchless\u003dTrue)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def test_update_heads_file_two_heads(self):"},{"line_number":423,"context_line":"        heads \u003d [\u0027b\u0027, \u0027a\u0027]"},{"line_number":424,"context_line":"        mock_open_con \u003d self.useFixture("},{"line_number":425,"context_line":"                    tools.OpenFixture(cli._get_contract_head_file_path("}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_a6c75d11","line":422,"updated":"2015-10-14 10:17:41.000000000","message":"Does the case name reflect the targeted function name?","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":419,"context_line":"    def test_validate_head_file_branchless_success(self, *args):"},{"line_number":420,"context_line":"        self._test_validate_head_file_helper([\u0027a\u0027], [\u0027a\u0027], branchless\u003dTrue)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def test_update_heads_file_two_heads(self):"},{"line_number":423,"context_line":"        heads \u003d [\u0027b\u0027, \u0027a\u0027]"},{"line_number":424,"context_line":"        mock_open_con \u003d self.useFixture("},{"line_number":425,"context_line":"                    tools.OpenFixture(cli._get_contract_head_file_path("}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_63828e96","line":422,"in_reply_to":"5a2ca52d_a6c75d11","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                self.configs[0]))).mock_open"},{"line_number":430,"context_line":"        with mock.patch(\u0027alembic.script.ScriptDirectory.from_config\u0027) as fc:"},{"line_number":431,"context_line":"            fc.return_value.get_heads.return_value \u003d heads"},{"line_number":432,"context_line":"            revs \u003d {heads[0]: FakeRevision(labels\u003d\u0027contract\u0027),"},{"line_number":433,"context_line":"                    heads[1]: FakeRevision(labels\u003d\u0027expand\u0027)}"},{"line_number":434,"context_line":"            fc.return_value.get_revision.side_effect \u003d revs.__getitem__"},{"line_number":435,"context_line":"            cli.update_head_files(self.configs[0])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_66d145cd","line":432,"updated":"2015-10-14 10:17:41.000000000","message":"I think we should use constants here too","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                self.configs[0]))).mock_open"},{"line_number":430,"context_line":"        with mock.patch(\u0027alembic.script.ScriptDirectory.from_config\u0027) as fc:"},{"line_number":431,"context_line":"            fc.return_value.get_heads.return_value \u003d heads"},{"line_number":432,"context_line":"            revs \u003d {heads[0]: FakeRevision(labels\u003d\u0027contract\u0027),"},{"line_number":433,"context_line":"                    heads[1]: FakeRevision(labels\u003d\u0027expand\u0027)}"},{"line_number":434,"context_line":"            fc.return_value.get_revision.side_effect \u003d revs.__getitem__"},{"line_number":435,"context_line":"            cli.update_head_files(self.configs[0])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_837d6ab3","line":432,"in_reply_to":"5a2ca52d_66d145cd","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                       return_value\u003dTrue)"},{"line_number":442,"context_line":"    @mock.patch(\u0027os.path.exists\u0027)"},{"line_number":443,"context_line":"    @mock.patch(\u0027os.remove\u0027)"},{"line_number":444,"context_line":"    def test_update_heads_file_success(self, *mocks):"},{"line_number":445,"context_line":"        heads \u003d [\u0027a\u0027, \u0027b\u0027]"},{"line_number":446,"context_line":"        mock_open_con \u003d self.useFixture("},{"line_number":447,"context_line":"                    tools.OpenFixture(cli._get_contract_head_file_path("}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_c6f37972","line":444,"updated":"2015-10-14 10:17:41.000000000","message":"ditto","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":441,"context_line":"                       return_value\u003dTrue)"},{"line_number":442,"context_line":"    @mock.patch(\u0027os.path.exists\u0027)"},{"line_number":443,"context_line":"    @mock.patch(\u0027os.remove\u0027)"},{"line_number":444,"context_line":"    def test_update_heads_file_success(self, *mocks):"},{"line_number":445,"context_line":"        heads \u003d [\u0027a\u0027, \u0027b\u0027]"},{"line_number":446,"context_line":"        mock_open_con \u003d self.useFixture("},{"line_number":447,"context_line":"                    tools.OpenFixture(cli._get_contract_head_file_path("}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_2627c4b7","line":444,"in_reply_to":"5a2ca52d_c6f37972","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                self.configs[0]))).mock_open"},{"line_number":452,"context_line":"        with mock.patch(\u0027alembic.script.ScriptDirectory.from_config\u0027) as fc:"},{"line_number":453,"context_line":"            fc.return_value.get_heads.return_value \u003d heads"},{"line_number":454,"context_line":"            revs \u003d {heads[0]: FakeRevision(labels\u003d\u0027contract\u0027),"},{"line_number":455,"context_line":"                    heads[1]: FakeRevision(labels\u003d\u0027expand\u0027)}"},{"line_number":456,"context_line":"            fc.return_value.get_revision.side_effect \u003d revs.__getitem__"},{"line_number":457,"context_line":"            cli.update_head_files(self.configs[0])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_66e8657d","line":454,"updated":"2015-10-14 10:17:41.000000000","message":"ditto","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":7249,"name":"Ann Taraday","email":"akamyshnikova@mirantis.com","username":"AKamyshnikova"},"change_message_id":"1f3907a3e1fd0bb08d4800667544100fff58fcfa","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                self.configs[0]))).mock_open"},{"line_number":452,"context_line":"        with mock.patch(\u0027alembic.script.ScriptDirectory.from_config\u0027) as fc:"},{"line_number":453,"context_line":"            fc.return_value.get_heads.return_value \u003d heads"},{"line_number":454,"context_line":"            revs \u003d {heads[0]: FakeRevision(labels\u003d\u0027contract\u0027),"},{"line_number":455,"context_line":"                    heads[1]: FakeRevision(labels\u003d\u0027expand\u0027)}"},{"line_number":456,"context_line":"            fc.return_value.get_revision.side_effect \u003d revs.__getitem__"},{"line_number":457,"context_line":"            cli.update_head_files(self.configs[0])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_062408ad","line":454,"in_reply_to":"5a2ca52d_66e8657d","updated":"2015-10-14 13:38:29.000000000","message":"Done","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"ad3baa1195dc82c4c291959e8f1acdb1d3a875eb","unresolved":false,"context_lines":[{"line_number":463,"context_line":"                self.configs[0])"},{"line_number":464,"context_line":"            old_heads_file \u003d cli._get_heads_file_path("},{"line_number":465,"context_line":"                self.configs[0])"},{"line_number":466,"context_line":"            for mock_ in mocks[:-1]:"},{"line_number":467,"context_line":"                self.assertIn(mock.call(old_head_file), mock_.call_args_list)"},{"line_number":468,"context_line":"                self.assertIn(mock.call(old_heads_file), mock_.call_args_list)"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a2ca52d_e69315f9","line":466,"updated":"2015-10-14 10:17:41.000000000","message":"Too much whitebox testing: you should not check that exists is called before remove: it could as well be e.g.:\n\ntry:\n   os.remove(...)\nexcept OSError:\n   pass","commit_id":"169a9b33e2b3c707ca45a8103b05164e468b4671"}]}
