)]}'
{"release/branch-repo.sh":[{"author":{"_account_id":28607,"name":"Saul Wold","email":"saul.wold@windriver.com","username":"sgw-starlingx"},"change_message_id":"5b53020927fd5bfcb0831f8bd88e3d99d162530b","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    fi"},{"line_number":116,"context_line":"}"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"# branch_repo \u003crepo-uri\u003e \u003csha\u003e \u003cbranch-base\u003e"},{"line_number":119,"context_line":"function branch_repo {"},{"line_number":120,"context_line":"    local repo\u003d$1"},{"line_number":121,"context_line":"    local path\u003d$2"}],"source_content_type":"text/x-sh","patch_set":3,"id":"7faddb67_5fb2a5e6","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":44},"updated":"2019-08-06 17:19:27.000000000","message":"This does not seem to match the locals below.","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1d06a8b88c73c9fb1ca1e77ab2501913d7480208","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    fi"},{"line_number":116,"context_line":"}"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"# branch_repo \u003crepo-uri\u003e \u003csha\u003e \u003cbranch-base\u003e"},{"line_number":119,"context_line":"function branch_repo {"},{"line_number":120,"context_line":"    local repo\u003d$1"},{"line_number":121,"context_line":"    local path\u003d$2"}],"source_content_type":"text/x-sh","patch_set":3,"id":"7faddb67_12788929","line":118,"range":{"start_line":118,"start_character":2,"end_line":118,"end_character":44},"in_reply_to":"7faddb67_5fb2a5e6","updated":"2019-08-07 20:16:16.000000000","message":"Done","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"}],"release/build-context.py":[{"author":{"_account_id":28410,"name":"Scott Little","email":"scott.little@windriver.com","username":"slittle1"},"change_message_id":"a04e96a90d485b365880f16a664b41f82f60ca08","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        metavar\u003d\"\u003cname-or-url\u003e\","},{"line_number":30,"context_line":"        help\u003d\"Manifest file name or direct URL\","},{"line_number":31,"context_line":"    )"},{"line_number":32,"context_line":"    parser.add_argument("},{"line_number":33,"context_line":"        \"context\","},{"line_number":34,"context_line":"        metavar\u003d\"\u003cname-or-url\u003e\","},{"line_number":35,"context_line":"        help\u003d\"Contest file name or direct URL\","},{"line_number":36,"context_line":"    )"},{"line_number":37,"context_line":"    parser.add_argument("},{"line_number":38,"context_line":"        \u0027--remote\u0027,"},{"line_number":39,"context_line":"        metavar\u003d\"\u003cremote-name\u003e\","}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_8400d002","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":5},"updated":"2019-08-06 16:29:23.000000000","message":"I\u0027m thinking context should be optional, and be --context","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1d06a8b88c73c9fb1ca1e77ab2501913d7480208","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        metavar\u003d\"\u003cname-or-url\u003e\","},{"line_number":30,"context_line":"        help\u003d\"Manifest file name or direct URL\","},{"line_number":31,"context_line":"    )"},{"line_number":32,"context_line":"    parser.add_argument("},{"line_number":33,"context_line":"        \"context\","},{"line_number":34,"context_line":"        metavar\u003d\"\u003cname-or-url\u003e\","},{"line_number":35,"context_line":"        help\u003d\"Contest file name or direct URL\","},{"line_number":36,"context_line":"    )"},{"line_number":37,"context_line":"    parser.add_argument("},{"line_number":38,"context_line":"        \u0027--remote\u0027,"},{"line_number":39,"context_line":"        metavar\u003d\"\u003cremote-name\u003e\","}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_d298b176","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":5},"in_reply_to":"7faddb67_8400d002","updated":"2019-08-07 20:16:16.000000000","message":"Would we print \u0027HEAD\" for the commit-ish when there is no SHA from CONTEXT.sh?  Or just leave it off?  branch-repo.sh does not require it...hmmm, it assumes HEAD so let\u0027s leave it blank?","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4bbb5e690b1b1a420cfd1e464313de28fab230d3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        metavar\u003d\"\u003cname-or-url\u003e\","},{"line_number":30,"context_line":"        help\u003d\"Manifest file name or direct URL\","},{"line_number":31,"context_line":"    )"},{"line_number":32,"context_line":"    parser.add_argument("},{"line_number":33,"context_line":"        \"context\","},{"line_number":34,"context_line":"        metavar\u003d\"\u003cname-or-url\u003e\","},{"line_number":35,"context_line":"        help\u003d\"Contest file name or direct URL\","},{"line_number":36,"context_line":"    )"},{"line_number":37,"context_line":"    parser.add_argument("},{"line_number":38,"context_line":"        \u0027--remote\u0027,"},{"line_number":39,"context_line":"        metavar\u003d\"\u003cremote-name\u003e\","}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_3771f4df","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":5},"in_reply_to":"7faddb67_d298b176","updated":"2019-08-07 22:35:35.000000000","message":"I made this change in PS4, without --context no sha is printed.","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":28410,"name":"Scott Little","email":"scott.little@windriver.com","username":"slittle1"},"change_message_id":"a04e96a90d485b365880f16a664b41f82f60ca08","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    line \u003d fd.readline()"},{"line_number":70,"context_line":"    while line:"},{"line_number":71,"context_line":"        s \u003d line.split(\u0027 \u0027)"},{"line_number":72,"context_line":"        # Don\u0027t forget that readline() leaves \\n at the end of a line"},{"line_number":73,"context_line":"        # Strip \u0027./\u0027 from the beginning of the path and \u0027)\\n\u0027 from"},{"line_number":74,"context_line":"        # the end of the SHA"},{"line_number":75,"context_line":"        ctx[s[1][2:]] \u003d s[6][:-2]"},{"line_number":76,"context_line":"        line \u003d fd.readline()"},{"line_number":77,"context_line":"    fd.close()"},{"line_number":78,"context_line":"    return ctx"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_392109b5","line":75,"range":{"start_line":72,"start_character":0,"end_line":75,"end_character":33},"updated":"2019-08-06 16:29:23.000000000","message":"Suggest you test for the \u0027./\u0027 path prefix before blindly deleting first two characters.","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1d06a8b88c73c9fb1ca1e77ab2501913d7480208","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    line \u003d fd.readline()"},{"line_number":70,"context_line":"    while line:"},{"line_number":71,"context_line":"        s \u003d line.split(\u0027 \u0027)"},{"line_number":72,"context_line":"        # Don\u0027t forget that readline() leaves \\n at the end of a line"},{"line_number":73,"context_line":"        # Strip \u0027./\u0027 from the beginning of the path and \u0027)\\n\u0027 from"},{"line_number":74,"context_line":"        # the end of the SHA"},{"line_number":75,"context_line":"        ctx[s[1][2:]] \u003d s[6][:-2]"},{"line_number":76,"context_line":"        line \u003d fd.readline()"},{"line_number":77,"context_line":"    fd.close()"},{"line_number":78,"context_line":"    return ctx"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_9278f98f","line":75,"range":{"start_line":72,"start_character":0,"end_line":75,"end_character":33},"in_reply_to":"7faddb67_392109b5","updated":"2019-08-07 20:16:16.000000000","message":"Good point.  Is there anything else we should consider in normalizing these paths?","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4bbb5e690b1b1a420cfd1e464313de28fab230d3","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    line \u003d fd.readline()"},{"line_number":70,"context_line":"    while line:"},{"line_number":71,"context_line":"        s \u003d line.split(\u0027 \u0027)"},{"line_number":72,"context_line":"        # Don\u0027t forget that readline() leaves \\n at the end of a line"},{"line_number":73,"context_line":"        # Strip \u0027./\u0027 from the beginning of the path and \u0027)\\n\u0027 from"},{"line_number":74,"context_line":"        # the end of the SHA"},{"line_number":75,"context_line":"        ctx[s[1][2:]] \u003d s[6][:-2]"},{"line_number":76,"context_line":"        line \u003d fd.readline()"},{"line_number":77,"context_line":"    fd.close()"},{"line_number":78,"context_line":"    return ctx"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_5743506d","line":75,"range":{"start_line":72,"start_character":0,"end_line":75,"end_character":33},"in_reply_to":"7faddb67_9278f98f","updated":"2019-08-07 22:35:35.000000000","message":"I cleaned this up a bit, if there is more normalization we can add in a follow-up?","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":28410,"name":"Scott Little","email":"scott.little@windriver.com","username":"slittle1"},"change_message_id":"a04e96a90d485b365880f16a664b41f82f60ca08","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            remotes[r[\u0027@name\u0027]] \u003d r[\u0027@fetch\u0027]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    # Get the repos"},{"line_number":94,"context_line":"    for r in manifest[\u0027manifest\u0027][\u0027project\u0027]:"},{"line_number":95,"context_line":"        if opts.remotes \u003d\u003d [] or r[\u0027@remote\u0027] in opts.remotes:"},{"line_number":96,"context_line":"            if r[\u0027@path\u0027] in context.keys():"},{"line_number":97,"context_line":"                print(\"%s/%s %s %s\" % ("},{"line_number":98,"context_line":"                    remotes[r[\u0027@remote\u0027]],"},{"line_number":99,"context_line":"                    r[\u0027@name\u0027],"},{"line_number":100,"context_line":"                    r[\u0027@path\u0027],"},{"line_number":101,"context_line":"                    context[r[\u0027@path\u0027]],"},{"line_number":102,"context_line":"                ))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_64dd943f","line":102,"range":{"start_line":94,"start_character":0,"end_line":102,"end_character":18},"updated":"2019-08-06 16:29:23.000000000","message":"the manifest doesn\u0027t list itself, but we will want to branch it in most scenarios.  Need to print it as well.","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"1d06a8b88c73c9fb1ca1e77ab2501913d7480208","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            remotes[r[\u0027@name\u0027]] \u003d r[\u0027@fetch\u0027]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    # Get the repos"},{"line_number":94,"context_line":"    for r in manifest[\u0027manifest\u0027][\u0027project\u0027]:"},{"line_number":95,"context_line":"        if opts.remotes \u003d\u003d [] or r[\u0027@remote\u0027] in opts.remotes:"},{"line_number":96,"context_line":"            if r[\u0027@path\u0027] in context.keys():"},{"line_number":97,"context_line":"                print(\"%s/%s %s %s\" % ("},{"line_number":98,"context_line":"                    remotes[r[\u0027@remote\u0027]],"},{"line_number":99,"context_line":"                    r[\u0027@name\u0027],"},{"line_number":100,"context_line":"                    r[\u0027@path\u0027],"},{"line_number":101,"context_line":"                    context[r[\u0027@path\u0027]],"},{"line_number":102,"context_line":"                ))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_d2c3d156","line":102,"range":{"start_line":94,"start_character":0,"end_line":102,"end_character":18},"in_reply_to":"7faddb67_64dd943f","updated":"2019-08-07 20:16:16.000000000","message":"CONTEXT.sh points at .repo/manifest.  My flat workspace doesn\u0027t have that and if manifest is pulled from a local file rather than URL we don\u0027t have a URL for a manifest repo.  This is partly why I have always handled it as a separate case, and of course why I forgot it yesterday.\n\nCan we come up with all of the conditions to handle this or should we just add manifest to itself?  I don\u0027t think that would hurt anything, it would appear in the workspace somewhere too so we don\u0027t monkey around in the .repo copy?","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"4bbb5e690b1b1a420cfd1e464313de28fab230d3","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            remotes[r[\u0027@name\u0027]] \u003d r[\u0027@fetch\u0027]"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    # Get the repos"},{"line_number":94,"context_line":"    for r in manifest[\u0027manifest\u0027][\u0027project\u0027]:"},{"line_number":95,"context_line":"        if opts.remotes \u003d\u003d [] or r[\u0027@remote\u0027] in opts.remotes:"},{"line_number":96,"context_line":"            if r[\u0027@path\u0027] in context.keys():"},{"line_number":97,"context_line":"                print(\"%s/%s %s %s\" % ("},{"line_number":98,"context_line":"                    remotes[r[\u0027@remote\u0027]],"},{"line_number":99,"context_line":"                    r[\u0027@name\u0027],"},{"line_number":100,"context_line":"                    r[\u0027@path\u0027],"},{"line_number":101,"context_line":"                    context[r[\u0027@path\u0027]],"},{"line_number":102,"context_line":"                ))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_b733a413","line":102,"range":{"start_line":94,"start_character":0,"end_line":102,"end_character":18},"in_reply_to":"7faddb67_d2c3d156","updated":"2019-08-07 22:35:35.000000000","message":"I\u0027ve left this one open for now, it feels like something to address in the wrapper script specific to our setup.","commit_id":"6be3c0440fd067402e979be29c5cb0a7406dd3c1"},{"author":{"_account_id":28410,"name":"Scott Little","email":"scott.little@windriver.com","username":"slittle1"},"change_message_id":"0ede96659f464a6fa63224f554821d68d9a3def1","unresolved":false,"context_lines":[{"line_number":82,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":83,"context_line":"    opts \u003d build_parser().parse_args()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    manifest \u003d load_manifest(opts.manifest)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    context \u003d {}"},{"line_number":88,"context_line":"    if opts.context:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_ed6a87eb","line":85,"updated":"2019-08-09 15:19:29.000000000","message":"Perhaps add a virtual manifest entry for itself this way?\n\nmanifest[\u0027manifest\u0027][\u0027project\u0027].append([(u\u0027@remote\u0027, u\u0027starlingx\u0027), (u\u0027@name\u0027, u\u0027manifest.git\u0027), (u\u0027@path\u0027, u\u0027.repo/manifests\u0027)])\n\nOr is this too much knowledge?","commit_id":"8dc7f193ef6ce3a3ae75e2ff506e6fe0a21de0f2"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"bdad0c19695894e0a8d5befe91c4030c3099f1e5","unresolved":false,"context_lines":[{"line_number":82,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":83,"context_line":"    opts \u003d build_parser().parse_args()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    manifest \u003d load_manifest(opts.manifest)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    context \u003d {}"},{"line_number":88,"context_line":"    if opts.context:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_7e14dca0","line":85,"in_reply_to":"7faddb67_ed6a87eb","updated":"2019-09-20 16:04:38.000000000","message":"That adds more hard-coded stuff into what I want to keep as a general tool (recognizing o course that CONTEXT.sh is already pretty specific).\n\nI don\u0027t have any of this in my head anymore, I\u0027m not going to do it now, if you want to do it as a follow-on, go ahead.  Part of the reason for splitting this function out was to try to isolate the bits already specific to stx.","commit_id":"8dc7f193ef6ce3a3ae75e2ff506e6fe0a21de0f2"}]}
