)]}'
{"pbr/git.py":[{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"2f08b534f7e56867a6bc5acd84db842404f51dd9","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    :return: An iterator of (hash, tags_set, 1st_line) tuples."},{"line_number":206,"context_line":"    \"\"\""},{"line_number":207,"context_line":"    log.info(\u0027[pbr] Generating ChangeLog\u0027)"},{"line_number":208,"context_line":"    log_cmd \u003d [\u0027log\u0027, \u0027--decorate\u003dfull\u0027, \u0027--format\u003d\\\u0027%h%x00%s%x00%d\\\u0027\u0027]"},{"line_number":209,"context_line":"    changelog \u003d _run_git_command(log_cmd, git_dir)"},{"line_number":210,"context_line":"    for line in changelog.split(\u0027\\n\u0027):"},{"line_number":211,"context_line":"        line_parts \u003d line.split(\u0027\\x00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_d56af580","line":208,"range":{"start_line":208,"start_character":51,"end_line":208,"end_character":53},"updated":"2016-07-14 07:17:01.000000000","message":"The quotes here are not required as we aren\u0027t in a shell, as such they\u0027re getting passed to the --format argument and causing some formatting issues here.","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"d3bb9df7e49657e362a1b8a8de46b624a1d26eb2","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    :return: An iterator of (hash, tags_set, 1st_line) tuples."},{"line_number":206,"context_line":"    \"\"\""},{"line_number":207,"context_line":"    log.info(\u0027[pbr] Generating ChangeLog\u0027)"},{"line_number":208,"context_line":"    log_cmd \u003d [\u0027log\u0027, \u0027--decorate\u003dfull\u0027, \u0027--format\u003d\\\u0027%h%x00%s%x00%d\\\u0027\u0027]"},{"line_number":209,"context_line":"    changelog \u003d _run_git_command(log_cmd, git_dir)"},{"line_number":210,"context_line":"    for line in changelog.split(\u0027\\n\u0027):"},{"line_number":211,"context_line":"        line_parts \u003d line.split(\u0027\\x00\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_3553466e","line":208,"range":{"start_line":208,"start_character":51,"end_line":208,"end_character":53},"in_reply_to":"1aa78d24_d56af580","updated":"2016-07-15 03:30:32.000000000","message":"Thanks, I think that\u0027s fixed in the new version.","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"680ff44e588da42b72321af2c94d79d8a39c411a","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        sha, msg, refname \u003d line_parts"},{"line_number":215,"context_line":"        tags \u003d set()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # refname can be:"},{"line_number":218,"context_line":"        #  \u003cempty\u003e"},{"line_number":219,"context_line":"        #  HEAD, tag: 1.4.0, origin/master, master"},{"line_number":220,"context_line":"        #  tag: 1.3.4"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_9cad3aed","line":217,"range":{"start_line":217,"start_character":8,"end_line":217,"end_character":9},"updated":"2016-07-14 06:27:21.000000000","message":"The comments in this section are very implementation specific, so they\u0027ll need to be updated to reflect the new format.\n\nSeeing as this does a lot of work to mangle a string out, I think the comments here are quite important, as it\u0027s not the most obvious thing what\u0027s going on in this block.\n\nNote that \u0027tag: \u0027 may or may not exist depending on git version.","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"d3bb9df7e49657e362a1b8a8de46b624a1d26eb2","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        sha, msg, refname \u003d line_parts"},{"line_number":215,"context_line":"        tags \u003d set()"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # refname can be:"},{"line_number":218,"context_line":"        #  \u003cempty\u003e"},{"line_number":219,"context_line":"        #  HEAD, tag: 1.4.0, origin/master, master"},{"line_number":220,"context_line":"        #  tag: 1.3.4"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_786b0386","line":217,"range":{"start_line":217,"start_character":8,"end_line":217,"end_character":9},"in_reply_to":"1aa78d24_9cad3aed","updated":"2016-07-15 03:30:32.000000000","message":"I think I\u0027ve done this in the most recent version","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"680ff44e588da42b72321af2c94d79d8a39c411a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        #  \u003cempty\u003e"},{"line_number":219,"context_line":"        #  HEAD, tag: 1.4.0, origin/master, master"},{"line_number":220,"context_line":"        #  tag: 1.3.4"},{"line_number":221,"context_line":"        if \"tag:\" in refname:"},{"line_number":222,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":223,"context_line":"            # If we start with \"tag: 1.2b1, tag: 1.2\""},{"line_number":224,"context_line":"            # The first split gives us \"[\u0027\u0027, \u00271.2b1, \u0027, \u00271.2\u0027]\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_696b72f2","line":221,"updated":"2016-07-14 06:27:21.000000000","message":"\u0027tag:\u0027 won\u0027t exist in the pre 1.8.3 git versions.  You\u0027ll need to look for \u0027refs/tags/\u0027 as the indicator that a tag exists in it.","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"d3bb9df7e49657e362a1b8a8de46b624a1d26eb2","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        #  \u003cempty\u003e"},{"line_number":219,"context_line":"        #  HEAD, tag: 1.4.0, origin/master, master"},{"line_number":220,"context_line":"        #  tag: 1.3.4"},{"line_number":221,"context_line":"        if \"tag:\" in refname:"},{"line_number":222,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":223,"context_line":"            # If we start with \"tag: 1.2b1, tag: 1.2\""},{"line_number":224,"context_line":"            # The first split gives us \"[\u0027\u0027, \u00271.2b1, \u0027, \u00271.2\u0027]\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_38717b78","line":221,"in_reply_to":"1aa78d24_696b72f2","updated":"2016-07-15 03:30:32.000000000","message":"Done.","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"94c828e1c1523eca789a5a4abab991e91736e6a5","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        if \"refs/tags/\" in refname:"},{"line_number":222,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":223,"context_line":"            # If we start with \"tag: 1.2b1, tag: 1.2\""},{"line_number":224,"context_line":"            # The first split gives us \"[\u0027\u0027, \u00271.2b1, \u0027, \u00271.2\u0027]\""},{"line_number":225,"context_line":"            # Which is why we do the second split below on the comma"},{"line_number":226,"context_line":"            for tag_string in refname.split(\"refs/tags/\")[1:]:"},{"line_number":227,"context_line":"                # git tag does not allow : or \" \" in tag names, so we split"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_7eb80b2b","line":224,"range":{"start_line":224,"start_character":39,"end_line":224,"end_character":63},"updated":"2016-07-15 04:41:57.000000000","message":"This needs to be updated to show the new version.\n\n\"[\u0027tag: \u0027, \u00271.2b1, tag: \u00271.2\u0027]\"","commit_id":"4d1e059d9ee3f46d20029fdc844effadf709d035"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"8b2cf281475ca0e8dde7d861ac75bfea924206b8","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        if \"refs/tags/\" in refname:"},{"line_number":222,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":223,"context_line":"            # If we start with \"tag: 1.2b1, tag: 1.2\""},{"line_number":224,"context_line":"            # The first split gives us \"[\u0027\u0027, \u00271.2b1, \u0027, \u00271.2\u0027]\""},{"line_number":225,"context_line":"            # Which is why we do the second split below on the comma"},{"line_number":226,"context_line":"            for tag_string in refname.split(\"refs/tags/\")[1:]:"},{"line_number":227,"context_line":"                # git tag does not allow : or \" \" in tag names, so we split"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_bec8ae22","line":224,"range":{"start_line":224,"start_character":39,"end_line":224,"end_character":63},"in_reply_to":"1aa78d24_7eb80b2b","updated":"2016-07-15 08:00:14.000000000","message":"Done","commit_id":"4d1e059d9ee3f46d20029fdc844effadf709d035"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"04f07591602a78c87585915ebf7042f6455b620c","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # refname can be:"},{"line_number":218,"context_line":"        #  \u003cempty\u003e"},{"line_number":219,"context_line":"        #  HEAD, tag: refs/tags/1.4.0, origin/master, master"},{"line_number":220,"context_line":"        #  refs/tags/1.3.4"},{"line_number":221,"context_line":"        if \"refs/tags/\" in refname:"},{"line_number":222,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_dfdaffe8","line":219,"updated":"2016-07-22 18:27:58.000000000","message":"Tiny nit, you don\u0027t get just origin/master or master anymore its refs/remotes/origin/master and refs/heads/master. None of which overlap with refs/tags/ so not fatal to understanding the code below.","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"},{"author":{"_account_id":9453,"name":"James Polley","email":"jp@jamezpolley.com","username":"tchaypo"},"change_message_id":"c25a08a58816f3d27b0cde2859a545ff90c89559","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # refname can be:"},{"line_number":218,"context_line":"        #  \u003cempty\u003e"},{"line_number":219,"context_line":"        #  HEAD, tag: refs/tags/1.4.0, origin/master, master"},{"line_number":220,"context_line":"        #  refs/tags/1.3.4"},{"line_number":221,"context_line":"        if \"refs/tags/\" in refname:"},{"line_number":222,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_06ef1688","line":219,"in_reply_to":"dada55a8_dfdaffe8","updated":"2016-08-16 02:19:02.000000000","message":"Done","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"}],"pbr/tests/test_setup.py":[{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"680ff44e588da42b72321af2c94d79d8a39c411a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"8696fbd\\x00Improve test coverage: private extension API\\x00 (tag: refs/tags/ev(il)"},{"line_number":116,"context_line":"f0440f8\\x00Improve test coverage: hypervisor list\\x00 (tag: refs/tags/e(vi)l)"},{"line_number":117,"context_line":"04984a5\\x00Refactor hooks file.\\x00 (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master)"},{"line_number":118,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13)\\"},{"line_number":119,"context_line":"\"\"\""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_1ce78a47","line":118,"range":{"start_line":118,"start_character":79,"end_line":118,"end_character":80},"updated":"2016-07-14 06:27:21.000000000","message":"Backslash?","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"680ff44e588da42b72321af2c94d79d8a39c411a","unresolved":false,"context_lines":[{"line_number":119,"context_line":"\"\"\""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_decorate_changelog_format(line):"},{"line_number":123,"context_line":"    \"\"\"Convert null-delimited log format to --oneline --decorate format\"\"\""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    if not line.strip():"},{"line_number":126,"context_line":"        return line"},{"line_number":127,"context_line":"    sha, msg, refname \u003d line.split(\u0027\\x00\u0027)"},{"line_number":128,"context_line":"    if not refname:"},{"line_number":129,"context_line":"        return \u0027 \u0027.join((sha, msg))"},{"line_number":130,"context_line":"    return \u0027 \u0027.join((sha, refname.lstrip(\u0027 \u0027), msg))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"_decorate_changelog_content \u003d \u0027\\n\u0027.join("},{"line_number":133,"context_line":"    _make_decorate_changelog_format(line)"},{"line_number":134,"context_line":"    for line in _changelog_content.split(\u0027\\n\u0027))"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_9a3ffab4","line":134,"range":{"start_line":122,"start_character":0,"end_line":134,"end_character":47},"updated":"2016-07-14 06:27:21.000000000","message":"This section should be good to be deleted","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"680ff44e588da42b72321af2c94d79d8a39c411a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.useFixture("},{"line_number":162,"context_line":"            fixtures.EnvironmentVariable(\u0027SKIP_WRITE_GIT_CHANGELOG\u0027))"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def test_write_git_changelog(self):"},{"line_number":165,"context_line":"        return self._test_write_git_changelog(emulate_old_git\u003dFalse)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    def test_write_old_git_changelog(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_7f4fa0be","line":164,"range":{"start_line":164,"start_character":8,"end_line":164,"end_character":32},"updated":"2016-07-14 06:27:21.000000000","message":"Change `_test_write_git_changelog` back to `test_write_git_changelog` and remove these two that just call that.\n\nAdd a scenarios for\n```\n[\u0027pre1.8.3\u0027: {\u0027changelog\u0027: _old_git_changelog_content}, \u0027post1.8.3\u0027: {\u0027changelog\u0027: _changelog_content}]\n```\n\nThere are many scenario examples in PBRs tests, such as in test_integration.\n\nWhich should allow test_write_git_changelog update into just changing the fixture to `BytesIO(self.changelog.encode(\u0027utf-8\u0027))`","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"680ff44e588da42b72321af2c94d79d8a39c411a","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            self.assertNotIn(\"e(vi)l\", changelog_contents)"},{"line_number":212,"context_line":"            self.assertNotIn(\u0027Merge \"\u0027, changelog_contents)"},{"line_number":213,"context_line":"            self.assertNotIn(\u00271_foo.1\u0027, changelog_contents)"},{"line_number":214,"context_line":"            self.assertNotIn(\u0027123.456.789\u0027, changelog_contents)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def test_generate_authors(self):"},{"line_number":217,"context_line":"        author_old \u003d u\"Foo Foo \u003cemail@foo.com\u003e\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1aa78d24_fcd27e5a","line":214,"range":{"start_line":214,"start_character":12,"end_line":214,"end_character":63},"updated":"2016-07-14 06:27:21.000000000","message":"This isn\u0027t in the changelog, should be removed.","commit_id":"a44a84ef57aefdde78650231f5c46ead22823b62"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"04f07591602a78c87585915ebf7042f6455b620c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"f0440f8\\x00Improve test coverage: hypervisor list\\x00 (tag: refs/tags/e(vi)l)"},{"line_number":117,"context_line":"04984a5\\x00Refactor hooks file.\\x00 (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master)"},{"line_number":118,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13)"},{"line_number":119,"context_line":"\"\"\"  # noqa"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_old_git_changelog_format(line):"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_bfd74bbe","line":119,"updated":"2016-07-22 18:27:58.000000000","message":"I agree with Sachi, having the literal string that can easily be compared to git\u0027s output is handy and worth making the linter be quiet about line lengths.","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f4529b443f78b8413bfd4b28c3c71fb72e78fd28","unresolved":false,"context_lines":[{"line_number":116,"context_line":"f0440f8\\x00Improve test coverage: hypervisor list\\x00 (tag: refs/tags/e(vi)l)"},{"line_number":117,"context_line":"04984a5\\x00Refactor hooks file.\\x00 (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master)"},{"line_number":118,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13)"},{"line_number":119,"context_line":"\"\"\"  # noqa"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_old_git_changelog_format(line):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_94a95327","line":119,"updated":"2016-07-15 08:53:33.000000000","message":"maybe you could do EG:\n\n  \"\\n\".join(\"%s\\x00%s\\x00%s\" % t for t in [\n    (\u00277780758\u0027, \u0027Break parser\u0027, \u0027 (tag: refs/tags/1_foo.1)\u0027),\n    ...\n  ])\n\nthen if any tuple gets too long, it can be broken across multiple lines. It\u0027ll be pre-split for L133 too.","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"56aa942c3a62db81be5b8601f986d57aa0472fb5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"f0440f8\\x00Improve test coverage: hypervisor list\\x00 (tag: refs/tags/e(vi)l)"},{"line_number":117,"context_line":"04984a5\\x00Refactor hooks file.\\x00 (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master)"},{"line_number":118,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13)"},{"line_number":119,"context_line":"\"\"\"  # noqa"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"def _make_old_git_changelog_format(line):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_f08895c8","line":119,"in_reply_to":"1aa78d24_94a95327","updated":"2016-07-15 13:42:07.000000000","message":"I don\u0027t like the `noqa` either, however, I think there is enough of a benefit to having \u003e 80char for this hunk that it should be allowed.\n\nThe more processing we do here, the greater the chance we end up creating a line that misses a space or does something that causes the format to differ from what git gives us.  Every character has a large amount of significance in the code we are testing here.\n\nAs such, I think we should do as little processing as possible in the creation of this string, and I think there is substantial benefit to being able to look at it as a raw string and be able to say \"Yes, that matches what get outputs\".","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"f4529b443f78b8413bfd4b28c3c71fb72e78fd28","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    refname \u003d refname.replace(\u0027tag: \u0027, \u0027\u0027)"},{"line_number":129,"context_line":"    return \u0027\\x00\u0027.join((sha, msg, refname))"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"_old_git_changelog_content \u003d \u0027\\n\u0027.join("},{"line_number":132,"context_line":"    _make_old_git_changelog_format(line)"},{"line_number":133,"context_line":"    for line in _changelog_content.split(\u0027\\n\u0027))"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_b44baf85","line":131,"updated":"2016-07-15 08:53:33.000000000","message":"it\u0027d be better to just have this as a literal IMO, otherwise you risk sharing a bug between the code and the test","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"56aa942c3a62db81be5b8601f986d57aa0472fb5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    refname \u003d refname.replace(\u0027tag: \u0027, \u0027\u0027)"},{"line_number":129,"context_line":"    return \u0027\\x00\u0027.join((sha, msg, refname))"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"_old_git_changelog_content \u003d \u0027\\n\u0027.join("},{"line_number":132,"context_line":"    _make_old_git_changelog_format(line)"},{"line_number":133,"context_line":"    for line in _changelog_content.split(\u0027\\n\u0027))"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_336ce79b","line":131,"in_reply_to":"1aa78d24_b44baf85","updated":"2016-07-15 13:42:07.000000000","message":"I think that\u0027s more acceptable than the possibility that the tested strings diverge based on one blob getting updated and not the other.  If this code breaks I would hope that it would fail rather spectacularly, but diverging _changelog_content would be less readily spotted.\n\nThough it would be nice if _make_old_git_changelog_format would return the blob of text rather than a line.  But at this point I think that\u0027s rather insignificant.","commit_id":"0424493df966709b08e0d225d7345a364bc0378c"}]}
