)]}'
{"openstack_releases/cmds/get_contacts.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c5fa19aa9750980f5759b485de4c44efb3b7d633","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            for liaison in liaison_data.get(team_name.lower(), []):"},{"line_number":62,"context_line":"                print_contact(liaison)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    return 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_02968df0","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":12},"updated":"2019-11-15 09:09:39.000000000","message":"Maybe sys.exit(0) is more appropriate here, thoughts?\n\nIt can help us to handle execution status in shell script.","commit_id":"3aa51ef71f9fbf04a2bce11e12f94f29e61c90b2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"60c0ad089c1f8857ed22243b9e691092f6dda84c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            for liaison in liaison_data.get(team_name.lower(), []):"},{"line_number":62,"context_line":"                print_contact(liaison)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    return 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_94aaa9cf","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":12},"in_reply_to":"3fa7e38b_02968df0","updated":"2019-11-16 22:33:14.000000000","message":"PBR based tools get called with:\n\n   sys.exit(main())\n\nso return 0 will ultimately be called the way you suggest","commit_id":"3aa51ef71f9fbf04a2bce11e12f94f29e61c90b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"174e84d05632054fd23c63c4b380cacf06d0721b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                           help\u003d\u0027Find PTL details\u0027)"},{"line_number":40,"context_line":"    who_group.add_argument(\u0027--liaisons\u0027, action\u003d\u0027store_true\u0027, default\u003dFalse,"},{"line_number":41,"context_line":"                           help\u003d\u0027Find Liaisons details\u0027)"},{"line_number":42,"context_line":"    who_group.add_argument(\u0027--all\u0027, action\u003d\u0027store_true\u0027, default\u003dFalse,"},{"line_number":43,"context_line":"                           help\u003d\u0027Find Liaisons details\u0027)"},{"line_number":44,"context_line":"    args \u003d parser.parse_args()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e4716fe1","line":42,"range":{"start_line":42,"start_character":65,"end_line":42,"end_character":70},"updated":"2019-11-26 20:48:53.000000000","message":"I think this should be True and required\u003dTrue should be removed from the who_group creation.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"c34761735b7f3ffa9f740918c7328ca06be14041","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                           help\u003d\u0027Find PTL details\u0027)"},{"line_number":40,"context_line":"    who_group.add_argument(\u0027--liaisons\u0027, action\u003d\u0027store_true\u0027, default\u003dFalse,"},{"line_number":41,"context_line":"                           help\u003d\u0027Find Liaisons details\u0027)"},{"line_number":42,"context_line":"    who_group.add_argument(\u0027--all\u0027, action\u003d\u0027store_true\u0027, default\u003dFalse,"},{"line_number":43,"context_line":"                           help\u003d\u0027Find Liaisons details\u0027)"},{"line_number":44,"context_line":"    args \u003d parser.parse_args()"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_26340bac","line":42,"range":{"start_line":42,"start_character":65,"end_line":42,"end_character":70},"in_reply_to":"3fa7e38b_e4716fe1","updated":"2019-12-04 10:15:42.000000000","message":"haha I hesitated there too.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"63217c1cbfbf2cfebc0dfacb417f52a5d617fb39","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if args.liaisons or args.all:"},{"line_number":61,"context_line":"            for liaison in liaison_data.get(team_name.lower(), []):"},{"line_number":62,"context_line":"                print_contact(liaison)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    return 0"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_45095682","line":63,"updated":"2019-11-27 11:02:52.000000000","message":"if args.all it could mean that some contacts appear twice, as sometimes they are both PTL and still remain in the liaison list.\n\nIf it\u0027s fine for everyone it\u0027s fine for me.\n\nElse we should probably instead add_contacts to a set, and only print contacts at the end based on the set.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bae6fe8197d1e8e47ba8195650a55e06b1ce0682","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if args.liaisons or args.all:"},{"line_number":61,"context_line":"            for liaison in liaison_data.get(team_name.lower(), []):"},{"line_number":62,"context_line":"                print_contact(liaison)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    return 0"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0bcb6f73","line":63,"in_reply_to":"3fa7e38b_45095682","updated":"2019-11-27 12:56:23.000000000","message":"Good call. Using a set would seem safer to get rid of any duplication. Mostly harmless, but would be good to avoid any potential issues with that.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"}],"openstack_releases/cmds/get_ptl.py":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"42dd9f5901bf1395fd3b9cfe9aabfaa02e175950","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack_governance import governance"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def main():"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser()"},{"line_number":28,"context_line":"    parser.add_argument(\u0027team\u0027, help\u003d\u0027The team to lookup\u0027)"},{"line_number":29,"context_line":"    args \u003d parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_497caab4","line":26,"updated":"2019-06-07 17:50:47.000000000","message":"This would be a good addition to the governance library itself, too.","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"a24ba8dce95d278ad220b3eb9a6fb47db2d67c12","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from openstack_governance import governance"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def main():"},{"line_number":27,"context_line":"    parser \u003d argparse.ArgumentParser()"},{"line_number":28,"context_line":"    parser.add_argument(\u0027team\u0027, help\u003d\u0027The team to lookup\u0027)"},{"line_number":29,"context_line":"    args \u003d parser.parse_args()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2c75c232","line":26,"in_reply_to":"9fb8cfa7_497caab4","updated":"2019-11-15 04:14:26.000000000","message":"I shall do that next ;P","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"}],"tools/bulk_review.sh":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8ad7854f6dbab6a04308f5a04f00a60dc6558478","unresolved":false,"context_lines":[{"line_number":22,"context_line":"base_sha\u003d$(git rev-parse HEAD)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Find the team associated with each modified deliverable file"},{"line_number":25,"context_line":"declare -a deliverables\u003d($(git ls-files -m | grep deliverables/))"},{"line_number":26,"context_line":"for file in \"${deliverables[@]}\" ; do"},{"line_number":27,"context_line":"    team\u003d\"$(awk -F\u0027: \u0027 \u0027/^team/ {print $2}\u0027 $file | tr -d \"[\u0027]\" )\""},{"line_number":28,"context_line":"    files_by_team[\"$team\"]+\u003d\" $file\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_19a5c504","line":25,"updated":"2019-04-15 21:47:35.000000000","message":"You can pass the path as an argument to ls-files:\n\n  git ls-files -m deliverables/","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"18f74cb59f4231eccbc9a80c976b911c2441e3d4","unresolved":false,"context_lines":[{"line_number":22,"context_line":"base_sha\u003d$(git rev-parse HEAD)"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# Find the team associated with each modified deliverable file"},{"line_number":25,"context_line":"declare -a deliverables\u003d($(git ls-files -m | grep deliverables/))"},{"line_number":26,"context_line":"for file in \"${deliverables[@]}\" ; do"},{"line_number":27,"context_line":"    team\u003d\"$(awk -F\u0027: \u0027 \u0027/^team/ {print $2}\u0027 $file | tr -d \"[\u0027]\" )\""},{"line_number":28,"context_line":"    files_by_team[\"$team\"]+\u003d\" $file\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_5c2b3bea","line":25,"in_reply_to":"3fce034c_19a5c504","updated":"2019-04-15 23:56:46.000000000","message":"Thanks","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"18f74cb59f4231eccbc9a80c976b911c2441e3d4","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    review_by_team[\"$team\"]\u003d\"$(git rev-parse HEAD)\""},{"line_number":55,"context_line":"done"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"# Here we\u0027re flattening the series into the topic that the release team wants."},{"line_number":58,"context_line":"# Also find the PTL for each team and add them as a reviewer"},{"line_number":59,"context_line":"# TODO(tonyb): get the Liaison data and add them also.  This is a little harder"}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_dc272b12","line":56,"updated":"2019-04-15 23:56:46.000000000","message":"Top posting. ... I could save the HEAD here that way we could recover.\n\nI could also add meta-data to the commit message (like we do with new-releases) then it\u0027d be possible to re-flatten the branch from this point.","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"8ad7854f6dbab6a04308f5a04f00a60dc6558478","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    git cherry-pick ${review_by_team[$team]}"},{"line_number":66,"context_line":"    git review -t $topic --reviewers $ptl_email"},{"line_number":67,"context_line":"done"},{"line_number":68,"context_line":"git reset --hard $base_sha"}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_b9e1112d","line":68,"updated":"2019-04-15 21:47:35.000000000","message":"Does this leave the local repo with a bunch of branches in case changes are needed? Or are you assuming someone would \"git review -d\" to get a nice editable copy of the changes?","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c377ee9cddd649f8f74ebeb9c4fb4b4e18fd7255","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    git cherry-pick ${review_by_team[$team]}"},{"line_number":66,"context_line":"    git review -t $topic --reviewers $ptl_email"},{"line_number":67,"context_line":"done"},{"line_number":68,"context_line":"git reset --hard $base_sha"}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_ff453916","line":68,"in_reply_to":"3fce034c_9cfd233c","updated":"2019-04-16 00:45:15.000000000","message":"I did think of trying that but thought it wouldn\u0027t work, but I really can\u0027t see why it wouldn\u0027t when I see it set out like that.\n\nI guess I\u0027ll try it.","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"18f74cb59f4231eccbc9a80c976b911c2441e3d4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    git cherry-pick ${review_by_team[$team]}"},{"line_number":66,"context_line":"    git review -t $topic --reviewers $ptl_email"},{"line_number":67,"context_line":"done"},{"line_number":68,"context_line":"git reset --hard $base_sha"}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_fc222701","line":68,"in_reply_to":"3fce034c_b9e1112d","updated":"2019-04-15 23:56:46.000000000","message":"The SHAs and changes are all in the reflog but that isn\u0027t super easy to use.  so I was expecting people would use git review -d to get them.","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"1397394a638894948df884893d081fa20b84beae","unresolved":false,"context_lines":[{"line_number":65,"context_line":"    git cherry-pick ${review_by_team[$team]}"},{"line_number":66,"context_line":"    git review -t $topic --reviewers $ptl_email"},{"line_number":67,"context_line":"done"},{"line_number":68,"context_line":"git reset --hard $base_sha"}],"source_content_type":"text/x-sh","patch_set":1,"id":"3fce034c_9cfd233c","line":68,"in_reply_to":"3fce034c_fc222701","updated":"2019-04-16 00:05:58.000000000","message":"Ah, ok. You can also explicitly create the branches and then just check the patch in on each branch. That would save from having to track the patch series and then cherry pick them back onto master. Something like\n\n  # starting at master\n  for team in $(list of unique team names); do\n    git checkout -b ${team}-${slug}\n    git add $(list of modified files for $team)\n    git commit\n    git stash\n    git review\n    git checkout master\n    git stash pop\n  done","commit_id":"ec18e82ea514bbb6b63c25bea127ad3387cdaa26"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"42dd9f5901bf1395fd3b9cfe9aabfaa02e175950","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and relies on master being a safe\u0027"},{"line_number":63,"context_line":"echo \u0027branch.\u0027"},{"line_number":64,"context_line":"echo \u0027If you have any uncommited work abort now\u0027"},{"line_number":65,"context_line":"echo \u0027If you have not saved the modified deliverables somewhere abort now\u0027"},{"line_number":66,"context_line":"echo"},{"line_number":67,"context_line":"echo \u0027sleeping for 15seconds to give you time to you time to consider\u0027"}],"source_content_type":"text/x-sh","patch_set":2,"id":"9fb8cfa7_a946867b","line":64,"updated":"2019-06-07 17:50:47.000000000","message":"Could it check and do that for us?","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"a24ba8dce95d278ad220b3eb9a6fb47db2d67c12","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and relies on master being a safe\u0027"},{"line_number":63,"context_line":"echo \u0027branch.\u0027"},{"line_number":64,"context_line":"echo \u0027If you have any uncommited work abort now\u0027"},{"line_number":65,"context_line":"echo \u0027If you have not saved the modified deliverables somewhere abort now\u0027"},{"line_number":66,"context_line":"echo"},{"line_number":67,"context_line":"echo \u0027sleeping for 15seconds to give you time to you time to consider\u0027"}],"source_content_type":"text/x-sh","patch_set":2,"id":"3fa7e38b_6ca09a92","line":64,"in_reply_to":"9fb8cfa7_a946867b","updated":"2019-11-15 04:14:26.000000000","message":"I don\u0027t think there is a way to differentiate between \"modified and we want to submit\", \"modified latent change we don\u0027t want\" and \"tony committed to master instead of a working branch\"","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"42dd9f5901bf1395fd3b9cfe9aabfaa02e175950","unresolved":false,"context_lines":[{"line_number":66,"context_line":"echo"},{"line_number":67,"context_line":"echo \u0027sleeping for 15seconds to give you time to you time to consider\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"sleep 15s"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"declare -A files_by_team_release\u003d()"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"9fb8cfa7_c9497a8b","line":69,"updated":"2019-06-07 17:50:47.000000000","message":"Press return to continue?","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"a24ba8dce95d278ad220b3eb9a6fb47db2d67c12","unresolved":false,"context_lines":[{"line_number":66,"context_line":"echo"},{"line_number":67,"context_line":"echo \u0027sleeping for 15seconds to give you time to you time to consider\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"sleep 15s"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"declare -A files_by_team_release\u003d()"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"3fa7e38b_8c9b9662","line":69,"in_reply_to":"9fb8cfa7_c9497a8b","updated":"2019-11-15 04:14:26.000000000","message":"Yeah that\u0027s provably safer","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"42dd9f5901bf1395fd3b9cfe9aabfaa02e175950","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# Find the team associated with each modified deliverable file"},{"line_number":74,"context_line":"declare -a deliverables\u003d($(git ls-files -m deliverables))"},{"line_number":75,"context_line":"for file in \"${deliverables[@]}\" ; do"},{"line_number":76,"context_line":"    team\u003d\"$(awk -F\u0027: \u0027 \u0027/^team/ {print $2}\u0027 $file | tr -d \"[\u0027]\" )\""},{"line_number":77,"context_line":"    files_by_team_release[\"$team\"]+\u003d\" $file\""},{"line_number":78,"context_line":"done"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"9fb8cfa7_292ff6a1","line":76,"updated":"2019-06-07 17:50:47.000000000","message":"https://github.com/kislyuk/yq might be safer here but that\u0027s not a blocker.","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"a24ba8dce95d278ad220b3eb9a6fb47db2d67c12","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# Find the team associated with each modified deliverable file"},{"line_number":74,"context_line":"declare -a deliverables\u003d($(git ls-files -m deliverables))"},{"line_number":75,"context_line":"for file in \"${deliverables[@]}\" ; do"},{"line_number":76,"context_line":"    team\u003d\"$(awk -F\u0027: \u0027 \u0027/^team/ {print $2}\u0027 $file | tr -d \"[\u0027]\" )\""},{"line_number":77,"context_line":"    files_by_team_release[\"$team\"]+\u003d\" $file\""},{"line_number":78,"context_line":"done"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-sh","patch_set":2,"id":"3fa7e38b_ecb56ad1","line":76,"in_reply_to":"9fb8cfa7_292ff6a1","updated":"2019-11-15 04:14:26.000000000","message":"I wanted to avoid a dependency on another tool, but yes yq would be better.  I wonder if I should just write deliverable2team ... oh look at that get-deliverable-owner if almost what I need ... it is now :)","commit_id":"60e66f96354eb8d646b0653964ec1b2333d5cb41"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"c5fa19aa9750980f5759b485de4c44efb3b7d633","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    exit 1"},{"line_number":60,"context_line":"fi"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and relies on master being a safe\u0027"},{"line_number":63,"context_line":"echo \u0027branch.\u0027"},{"line_number":64,"context_line":"echo \u0027If you have any uncommited work abort now\u0027"},{"line_number":65,"context_line":"echo \u0027If you have not saved the modified deliverables somewhere abort now\u0027"},{"line_number":66,"context_line":"echo"},{"line_number":67,"context_line":"echo \u0027press return to continue or \u003cctrl\u003e-C to abort\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"read _continue"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"3fa7e38b_42dd65db","line":67,"range":{"start_line":62,"start_character":0,"end_line":67,"end_character":52},"updated":"2019-11-15 09:09:39.000000000","message":"Not an earth quake but maybe we can do something like this to automatically abort if changes exists and avoid errors:\n\n```\nif [ ! -z \"$(git status -s)\" ]; then # it will detect changes and untracked changes\n    echo \u0027This script will modifiy git branches and relies on master being a safe\u0027 \n    echo \u0027branch.\u0027\n    echo \u0027If you have any uncommited work abort now\u0027\n    echo \u0027If you have not saved the modified deliverables somewhere abort now\u0027\n    echo \u0027aborting!\u0027\n    exit 1\nfi \n```","commit_id":"3aa51ef71f9fbf04a2bce11e12f94f29e61c90b2"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e79611321987fa02d8874b9cf976ebd77520d76f","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    exit 1"},{"line_number":60,"context_line":"fi"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and relies on master being a safe\u0027"},{"line_number":63,"context_line":"echo \u0027branch.\u0027"},{"line_number":64,"context_line":"echo \u0027If you have any uncommited work abort now\u0027"},{"line_number":65,"context_line":"echo \u0027If you have not saved the modified deliverables somewhere abort now\u0027"},{"line_number":66,"context_line":"echo"},{"line_number":67,"context_line":"echo \u0027press return to continue or \u003cctrl\u003e-C to abort\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"read _continue"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"3fa7e38b_cf35eef7","line":67,"range":{"start_line":62,"start_character":0,"end_line":67,"end_character":52},"in_reply_to":"3fa7e38b_42dd65db","updated":"2019-11-18 01:27:44.000000000","message":"It\u0027s supposed to be called from a \u0027dirty\u0027 tree.  I\u0027ll change \u0027uncommitted\u0027 to \u0027unrelated\u0027.","commit_id":"3aa51ef71f9fbf04a2bce11e12f94f29e61c90b2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9ae1daf39d824206cbdce1a6ad990b8588e14522","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    echo \u0027local branch per-team of the modified deliverable files and then\u0027"},{"line_number":32,"context_line":"    echo \u0027submit that branch for review\u0027"},{"line_number":33,"context_line":"    echo"},{"line_number":34,"context_line":"    echo \u0027PTLs and liaisons will be CC\\\u0027d on the review\u0027"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# NOTE: It might be worth switching getopt but I don\u0027t knwo if that is"}],"source_content_type":"text/x-sh","patch_set":4,"id":"3fa7e38b_ff08182f","line":34,"range":{"start_line":34,"start_character":38,"end_line":34,"end_character":40},"updated":"2019-11-26 20:56:24.000000000","message":"Looks like it\u0027s this. It doesn\u0027t like the escaped \u0027 in the string. Getting rid of the \\ and changing the outer quotes to \" seems to work fine.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"57e5a158b1b01319820b05c2ab6ff91955911b78","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    echo \u0027PTLs and liaisons will be CC\\\u0027d on the review\u0027"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# NOTE: It might be worth switching getopt but I don\u0027t knwo if that is"},{"line_number":38,"context_line":"# available and the same on MacOS"},{"line_number":39,"context_line":"while getopts \"t:s:b:\" arg ; do"},{"line_number":40,"context_line":"    case \"$arg\" in"}],"source_content_type":"text/x-sh","patch_set":4,"id":"3fa7e38b_a18da9d5","line":37,"range":{"start_line":37,"start_character":55,"end_line":37,"end_character":60},"updated":"2019-11-26 18:40:53.000000000","message":"s/knwo/know","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"174e84d05632054fd23c63c4b380cacf06d0721b","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    exit 1"},{"line_number":60,"context_line":"fi"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and and submit reviews.\u0027"},{"line_number":63,"context_line":"echo \u0027It relies on master being a safe/clean branch.\u0027"},{"line_number":64,"context_line":"echo"},{"line_number":65,"context_line":"echo \u0027If master contains private changes, abort now\u0027"}],"source_content_type":"text/x-sh","patch_set":4,"id":"3fa7e38b_e45acf4f","line":62,"range":{"start_line":62,"start_character":48,"end_line":62,"end_character":51},"updated":"2019-11-26 20:48:53.000000000","message":"Stutter","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"174e84d05632054fd23c63c4b380cacf06d0721b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"fi"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and and submit reviews.\u0027"},{"line_number":63,"context_line":"echo \u0027It relies on master being a safe/clean branch.\u0027"},{"line_number":64,"context_line":"echo"},{"line_number":65,"context_line":"echo \u0027If master contains private changes, abort now\u0027"},{"line_number":66,"context_line":"echo \u0027If you have any unrelated work, abort now\u0027"}],"source_content_type":"text/x-sh","patch_set":4,"id":"3fa7e38b_c426b3cc","line":63,"updated":"2019-11-26 20:48:53.000000000","message":"Here it says clean, above it says dirty.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"63217c1cbfbf2cfebc0dfacb417f52a5d617fb39","unresolved":false,"context_lines":[{"line_number":60,"context_line":"fi"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \u0027This script will modifiy git branches and and submit reviews.\u0027"},{"line_number":63,"context_line":"echo \u0027It relies on master being a safe/clean branch.\u0027"},{"line_number":64,"context_line":"echo"},{"line_number":65,"context_line":"echo \u0027If master contains private changes, abort now\u0027"},{"line_number":66,"context_line":"echo \u0027If you have any unrelated work, abort now\u0027"}],"source_content_type":"text/x-sh","patch_set":4,"id":"3fa7e38b_855d0e7e","line":63,"in_reply_to":"3fa7e38b_c426b3cc","updated":"2019-11-27 11:02:52.000000000","message":"yeah that would be nice to clarify how/when we should use this in the \u0027usage\u0027.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"174e84d05632054fd23c63c4b380cacf06d0721b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    files_by_team_release[\"$team\"]+\u003d\" $file\""},{"line_number":80,"context_line":"done"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"#for x in \"${!files_by_team_release[@]}\"; do printf \"[%q]\u003d%q\\n\" \"$x\" \"${files_by_team_release[$x]}\" ; done"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"for team in \"${!files_by_team_release[@]}\" ; do"},{"line_number":85,"context_line":"    branch_name\u003d${team/ /_}-${topic}"}],"source_content_type":"text/x-sh","patch_set":4,"id":"3fa7e38b_642c9fb2","line":82,"updated":"2019-11-26 20:48:53.000000000","message":"Probably good to remove this, or clean up if it\u0027s needed for some kind of reference.","commit_id":"08c03768a9a533dc1f7c05d58d944bc8242f54ff"}]}
