)]}'
{"pbr/git.py":[{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"0fc8a75b926b3b96530256b64791686686c79a78","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    :return: An iterator of (hash, tags_set, 1st_line) tuples."},{"line_number":197,"context_line":"    \"\"\""},{"line_number":198,"context_line":"    log.info(\u0027[pbr] Generating ChangeLog\u0027)"},{"line_number":199,"context_line":"    log_cmd \u003d [\u0027log\u0027, \"--format\u003d%h %s%x00%d\"]"},{"line_number":200,"context_line":"    changelog \u003d _run_git_command(log_cmd, git_dir)"},{"line_number":201,"context_line":"    for line in changelog.split(\u0027\\n\u0027):"},{"line_number":202,"context_line":"        line_parts \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_4bc14053","line":199,"updated":"2016-01-06 00:05:10.000000000","message":"Would changing the format to \u0027--format\u003d%h%x00%s%x00%d\u0027 make since?\n\nThis would remove the need to do the split below, and the line:\nmsg, refname \u003d \" \".join(line_parts[1:]).split(\u0027\\x00\u0027)\ncould become\nhash, msg, refname \u003d line.split(\u0027\\x00\u0027)","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"f8f06be2bd94fd225249d74bd3dc045fe8b292bb","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    :return: An iterator of (hash, tags_set, 1st_line) tuples."},{"line_number":197,"context_line":"    \"\"\""},{"line_number":198,"context_line":"    log.info(\u0027[pbr] Generating ChangeLog\u0027)"},{"line_number":199,"context_line":"    log_cmd \u003d [\u0027log\u0027, \"--format\u003d%h %s%x00%d\"]"},{"line_number":200,"context_line":"    changelog \u003d _run_git_command(log_cmd, git_dir)"},{"line_number":201,"context_line":"    for line in changelog.split(\u0027\\n\u0027):"},{"line_number":202,"context_line":"        line_parts \u003d line.split()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_68ad5183","line":199,"in_reply_to":"fa69d971_4bc14053","updated":"2016-01-10 16:28:56.000000000","message":"Brilliant.","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"0fc8a75b926b3b96530256b64791686686c79a78","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    changelog \u003d _run_git_command(log_cmd, git_dir)"},{"line_number":201,"context_line":"    for line in changelog.split(\u0027\\n\u0027):"},{"line_number":202,"context_line":"        line_parts \u003d line.split()"},{"line_number":203,"context_line":"        if len(line_parts) \u003c 2:"},{"line_number":204,"context_line":"            continue"},{"line_number":205,"context_line":"        # Tags are in a list contained in ()\u0027s. If a commit"},{"line_number":206,"context_line":"        # subject that is tagged happens to have ()\u0027s in it"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_cbf8d0c5","line":203,"updated":"2016-01-06 00:05:10.000000000","message":"This seems to be attempting to gate the string so that old string modification code did not fail too hard.  I don\u0027t see the check actually doing anything useful, as pretty much anything with two words passes this check.\n\nCould we be more thorough by checking that there is a valid hash and msg is not empty after splitting the nulls?  Or even just checking for the nulls in the string?","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"f8f06be2bd94fd225249d74bd3dc045fe8b292bb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    changelog \u003d _run_git_command(log_cmd, git_dir)"},{"line_number":201,"context_line":"    for line in changelog.split(\u0027\\n\u0027):"},{"line_number":202,"context_line":"        line_parts \u003d line.split()"},{"line_number":203,"context_line":"        if len(line_parts) \u003c 2:"},{"line_number":204,"context_line":"            continue"},{"line_number":205,"context_line":"        # Tags are in a list contained in ()\u0027s. If a commit"},{"line_number":206,"context_line":"        # subject that is tagged happens to have ()\u0027s in it"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_c8bc7dbd","line":203,"in_reply_to":"fa69d971_cbf8d0c5","updated":"2016-01-10 16:28:56.000000000","message":"I actually think this is pretty pointless. git will put the nulls in each line - we\u0027d basically be checking that git --format works, which is a waste I think.","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"be5334440c09f266820ac99941bdb00350b0859b","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            continue"},{"line_number":205,"context_line":"        # Tags are in a list contained in ()\u0027s. If a commit"},{"line_number":206,"context_line":"        # subject that is tagged happens to have ()\u0027s in it"},{"line_number":207,"context_line":"        # this will fail"},{"line_number":208,"context_line":"        msg, refname \u003d \" \".join(line_parts[1:]).split(\u0027\\x00\u0027)"},{"line_number":209,"context_line":"        if \"tag:\" in refname:"},{"line_number":210,"context_line":"            refname \u003d refname[1:-1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_195ac52a","line":207,"range":{"start_line":207,"start_character":20,"end_line":207,"end_character":24},"updated":"2016-01-05 22:40:09.000000000","message":"this comment needs an update.","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"f8f06be2bd94fd225249d74bd3dc045fe8b292bb","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            continue"},{"line_number":205,"context_line":"        # Tags are in a list contained in ()\u0027s. If a commit"},{"line_number":206,"context_line":"        # subject that is tagged happens to have ()\u0027s in it"},{"line_number":207,"context_line":"        # this will fail"},{"line_number":208,"context_line":"        msg, refname \u003d \" \".join(line_parts[1:]).split(\u0027\\x00\u0027)"},{"line_number":209,"context_line":"        if \"tag:\" in refname:"},{"line_number":210,"context_line":"            refname \u003d refname[1:-1]"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_08a85576","line":207,"in_reply_to":"fa69d971_195ac52a","updated":"2016-01-10 16:28:56.000000000","message":"Done","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"0fc8a75b926b3b96530256b64791686686c79a78","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        # this will fail"},{"line_number":208,"context_line":"        msg, refname \u003d \" \".join(line_parts[1:]).split(\u0027\\x00\u0027)"},{"line_number":209,"context_line":"        if \"tag:\" in refname:"},{"line_number":210,"context_line":"            refname \u003d refname[1:-1]"},{"line_number":211,"context_line":"            tags \u003d set(["},{"line_number":212,"context_line":"                tag.split(\",\")[0]"},{"line_number":213,"context_line":"                for tag in refname.split(\"tag: \")[1:]])"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_1915e547","line":210,"range":{"start_line":210,"start_character":19,"end_line":210,"end_character":20},"updated":"2016-01-06 00:05:10.000000000","message":"With the log format change is there any reason to continue to abuse the string as was done previously?  It doesn\u0027t seem necessary any more as that was done just to get the data out of the string in a simi-reliable manner.\n\nDoing so much to the string seemingly needlessly makes this code way more complex and harder to read in my opinion.","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"f8f06be2bd94fd225249d74bd3dc045fe8b292bb","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        # this will fail"},{"line_number":208,"context_line":"        msg, refname \u003d \" \".join(line_parts[1:]).split(\u0027\\x00\u0027)"},{"line_number":209,"context_line":"        if \"tag:\" in refname:"},{"line_number":210,"context_line":"            refname \u003d refname[1:-1]"},{"line_number":211,"context_line":"            tags \u003d set(["},{"line_number":212,"context_line":"                tag.split(\",\")[0]"},{"line_number":213,"context_line":"                for tag in refname.split(\"tag: \")[1:]])"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_28cc3969","line":210,"in_reply_to":"fa69d971_1915e547","updated":"2016-01-10 16:28:56.000000000","message":"Unfortunately we still need to do string yuck - largely because %d give us things like:\n\n(HEAD, tag: 1.4.0, origin/master, master)\n\nIt is cleaner with the other updates though.","commit_id":"d7ddd6ff552ec6efcf3e7e3f20996e6d7ee86026"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"3701dd4135724e22933fe37d0feabdde1dc5c13b","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        #  (HEAD, tag: 1.4.0, origin/master, master)"},{"line_number":209,"context_line":"        #  (tag: 1.3.4)"},{"line_number":210,"context_line":"        if \"tag:\" in refname:"},{"line_number":211,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":212,"context_line":"            tags \u003d set(["},{"line_number":213,"context_line":"                tag.split(\",\")[0]"},{"line_number":214,"context_line":"                for tag in refname.split(\"tag: \")[1:]])"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_8beaff72","line":211,"range":{"start_line":211,"start_character":66,"end_line":211,"end_character":67},"updated":"2016-01-10 21:45:51.000000000","message":"I\u0027d also like a test added for tags like (12) and 1()2 and 1(2 and 1)2 and so on...\n\n git tag\n (12)","commit_id":"588342b7852bb9cc0742c145093148e967d4a437"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"880d8d3585b19fd49e30096f0b65e4aeb5dd8c60","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--format\u003d%h%x00%s%x00%d\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":4,"id":"da6ed579_c887f55f","line":208,"range":{"start_line":208,"start_character":22,"end_line":208,"end_character":48},"updated":"2016-01-12 18:18:13.000000000","message":"--format\u003d%h%x00%s%x00%d","commit_id":"167996bfc7b99fb1d976acd03b3eb35ef2692e12"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"880d8d3585b19fd49e30096f0b65e4aeb5dd8c60","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\",\")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"},{"line_number":226,"context_line":"            tags \u003d set(tag_list)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_0860adcd","line":223,"updated":"2016-01-12 18:18:13.000000000","message":"whats this for? Looks like it will do the wrong thing on\n\ngit tag -m \u0027fred\u0027 1.2,3","commit_id":"167996bfc7b99fb1d976acd03b3eb35ef2692e12"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"641aa2a93d39cf708be529b694459cdb55b9a80c","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\",\")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"},{"line_number":226,"context_line":"            tags \u003d set(tag_list)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da6ed579_8846dd21","line":223,"in_reply_to":"da6ed579_0860adcd","updated":"2016-01-12 18:20:39.000000000","message":"(HEAD, tag: 1.4.0, origin/master, master) can be in the output - ti\u0027s what you get from %d. I suppose maybe we should split on \", \" instead?","commit_id":"167996bfc7b99fb1d976acd03b3eb35ef2692e12"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b3b6b23563c224f2bb6a7e60db8f23956749de7d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        #  (HEAD, tag: 1.4.0, origin/master, master)"},{"line_number":218,"context_line":"        #  (tag: 1.3.4)"},{"line_number":219,"context_line":"        if \"tag:\" in refname:"},{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_5c574a02","line":220,"updated":"2016-01-12 18:39:25.000000000","message":"so if we start with \"(tag: 1.2b1, tag: 1.2)\" we now have \"tag: 1.2b1, tag: 1.2\"","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"06634f4143a0cea66eac3215d91e4ba427ddfaaf","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        #  (HEAD, tag: 1.4.0, origin/master, master)"},{"line_number":218,"context_line":"        #  (tag: 1.3.4)"},{"line_number":219,"context_line":"        if \"tag:\" in refname:"},{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_ae2b9693","line":220,"in_reply_to":"da6ed579_5c574a02","updated":"2016-01-13 04:45:54.000000000","message":"If we switch the log format to use %D we can then drop this line, 220, as it will already be formatted how we would like it.\n\n\u0027--format\u003d%h%x00%s%x00%D\u0027\n\nThe output would now look like this before we start modifying it.\n\"\"\"\n04316fe\\x00Make python\\x00review/monty_taylor/27519\n3c373ac\\x00Merge \"Lib\\x00HEAD, tag: 2013.2.rc2, tag: 2013.2, mile-proposed\n\"\"\"","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"700237a44956509b05859819067ee59b5016efc8","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        #  (HEAD, tag: 1.4.0, origin/master, master)"},{"line_number":218,"context_line":"        #  (tag: 1.3.4)"},{"line_number":219,"context_line":"        if \"tag:\" in refname:"},{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_160e613b","line":220,"in_reply_to":"da6ed579_ae2b9693","updated":"2016-01-13 14:37:17.000000000","message":"%D does not seem to work locally for me in my git. :(","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b3b6b23563c224f2bb6a7e60db8f23956749de7d","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        if \"tag:\" in refname:"},{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_1c979291","line":222,"updated":"2016-01-12 18:39:25.000000000","message":"And now we\u0027ll be iterating over: [\u00271.2b1, \u0027, \u00271.2\u0027] (because the split gives\n  \u003e\u003e\u003e \"tag: 1.2b1, tag: 1.2\".split(\"tag: \")\n [\u0027\u0027, \u00271.2b1, \u0027, \u00271.2\u0027]","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b3b6b23563c224f2bb6a7e60db8f23956749de7d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"},{"line_number":226,"context_line":"            tags \u003d set(tag_list)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_3cc29686","line":223,"updated":"2016-01-12 18:39:25.000000000","message":"and ok - I see how this is needed now. Ick :/.\n\nPlease put a comment that git prohibits : and \u0027 \u0027 in tags, so that the import of the \", \" vs \",\" is clearer for future us.","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"700237a44956509b05859819067ee59b5016efc8","unresolved":false,"context_lines":[{"line_number":220,"context_line":"            refname \u003d refname.strip()[1:-1]  # remove wrapping ()\u0027s"},{"line_number":221,"context_line":"            tag_list \u003d []"},{"line_number":222,"context_line":"            for tag_string in refname.split(\"tag: \")[1:]:"},{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"},{"line_number":226,"context_line":"            tags \u003d set(tag_list)"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_f602ad0a","line":223,"in_reply_to":"da6ed579_3cc29686","updated":"2016-01-13 14:37:17.000000000","message":"Done","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b3b6b23563c224f2bb6a7e60db8f23956749de7d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"},{"line_number":226,"context_line":"            tags \u003d set(tag_list)"},{"line_number":227,"context_line":"        else:"},{"line_number":228,"context_line":"            tags \u003d set()"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_bc0a06d1","line":226,"updated":"2016-01-12 18:39:25.000000000","message":"since we\u0027re setifying, why not just build up a set in the first place?","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"700237a44956509b05859819067ee59b5016efc8","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                candidate \u003d tag_string.split(\", \")[0]"},{"line_number":224,"context_line":"                if _is_valid_version(candidate):"},{"line_number":225,"context_line":"                    tag_list.append(candidate)"},{"line_number":226,"context_line":"            tags \u003d set(tag_list)"},{"line_number":227,"context_line":"        else:"},{"line_number":228,"context_line":"            tags \u003d set()"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_99004203","line":226,"in_reply_to":"da6ed579_bc0a06d1","updated":"2016-01-13 14:37:17.000000000","message":"Done","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"}],"pbr/tests/test_setup.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"3701dd4135724e22933fe37d0feabdde1dc5c13b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"a793ea1\\x00Merge \"Skip git-checkout related tests when .git is missing\"\\x00"},{"line_number":109,"context_line":"6c27ce7\\x00Skip git-checkout related tests when .git is missing\\x00"},{"line_number":110,"context_line":"04984a5\\x00Refactor hooks file.\\x00"},{"line_number":111,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: 0.5.14, tag: 0.5.13)"},{"line_number":112,"context_line":"\"\"\""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_abefc385","line":111,"range":{"start_line":111,"start_character":58,"end_line":111,"end_character":59},"updated":"2016-01-10 21:45:51.000000000","message":"I would like to have another entry here showing the thing that set us off on this change. Will avoid someone in future trying to \u0027clean it up\u0027.","commit_id":"588342b7852bb9cc0742c145093148e967d4a437"},{"author":{"_account_id":12612,"name":"Sachi King","email":"nakato@nakato.io","username":"nakato"},"change_message_id":"06634f4143a0cea66eac3215d91e4ba427ddfaaf","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"_changelog_content \u003d \"\"\"04316fe\\x00Make python\\x00 (review/monty_taylor/27519)"},{"line_number":103,"context_line":"378261a\\x00Add an integration test script.\\x00"},{"line_number":104,"context_line":"3c373ac\\x00Merge \"Lib\\x00(HEAD, tag: 2013.2.rc2, tag: 2013.2, mile-proposed)"},{"line_number":105,"context_line":"182feb3\\x00Fix pip invocation for old versions of pip.\\x00 (tag: 0.5.17)"},{"line_number":106,"context_line":"fa4f46e\\x00Remove explicit depend on distribute.\\x00 (tag: 0.5.16)"},{"line_number":107,"context_line":"d1c53dd\\x00Use pip instead of easy_install for installation.\\x00"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_ee9f4e4e","line":104,"range":{"start_line":104,"start_character":25,"end_line":104,"end_character":26},"updated":"2016-01-13 04:45:54.000000000","message":"This line is missing a space before the refs","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"700237a44956509b05859819067ee59b5016efc8","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"_changelog_content \u003d \"\"\"04316fe\\x00Make python\\x00 (review/monty_taylor/27519)"},{"line_number":103,"context_line":"378261a\\x00Add an integration test script.\\x00"},{"line_number":104,"context_line":"3c373ac\\x00Merge \"Lib\\x00(HEAD, tag: 2013.2.rc2, tag: 2013.2, mile-proposed)"},{"line_number":105,"context_line":"182feb3\\x00Fix pip invocation for old versions of pip.\\x00 (tag: 0.5.17)"},{"line_number":106,"context_line":"fa4f46e\\x00Remove explicit depend on distribute.\\x00 (tag: 0.5.16)"},{"line_number":107,"context_line":"d1c53dd\\x00Use pip instead of easy_install for installation.\\x00"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_597dea6c","line":104,"in_reply_to":"da6ed579_ee9f4e4e","updated":"2016-01-13 14:37:17.000000000","message":"Done","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b3b6b23563c224f2bb6a7e60db8f23956749de7d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"c47ec15\\x00Consider \u0027in-use\u0027 a non-pending volume for caching\\x00 (tag: ev)il)"},{"line_number":114,"context_line":"8696fbd\\x00Improve test coverage: private extension API\\x00 (tag: ev(il)"},{"line_number":115,"context_line":"f0440f8\\x00Improve test coverage: hypervisor list\\x00 (tag: e(vi)l)"},{"line_number":116,"context_line":"04984a5\\x00Refactor hooks file.\\x00 (HEAD, tag: f,b, tag: (12), master)"},{"line_number":117,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: 0.5.14, tag: 0.5.13)"},{"line_number":118,"context_line":"\"\"\""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_7cb9eee8","line":116,"updated":"2016-01-12 18:39:25.000000000","message":"For my comfort could you make f,b here be a valid version prefix followed by ,b ?","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"700237a44956509b05859819067ee59b5016efc8","unresolved":false,"context_lines":[{"line_number":113,"context_line":"c47ec15\\x00Consider \u0027in-use\u0027 a non-pending volume for caching\\x00 (tag: ev)il)"},{"line_number":114,"context_line":"8696fbd\\x00Improve test coverage: private extension API\\x00 (tag: ev(il)"},{"line_number":115,"context_line":"f0440f8\\x00Improve test coverage: hypervisor list\\x00 (tag: e(vi)l)"},{"line_number":116,"context_line":"04984a5\\x00Refactor hooks file.\\x00 (HEAD, tag: f,b, tag: (12), master)"},{"line_number":117,"context_line":"a65e8ee\\x00Remove jinja pin.\\x00 (tag: 0.5.14, tag: 0.5.13)"},{"line_number":118,"context_line":"\"\"\""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_7980ee46","line":116,"in_reply_to":"da6ed579_7cb9eee8","updated":"2016-01-13 14:37:17.000000000","message":"Done","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"b3b6b23563c224f2bb6a7e60db8f23956749de7d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.assertNotIn(\"ev()il\", changelog_contents)"},{"line_number":156,"context_line":"            self.assertNotIn(\"ev(il\", changelog_contents)"},{"line_number":157,"context_line":"            self.assertNotIn(\"ev)il\", changelog_contents)"},{"line_number":158,"context_line":"            self.assertNotIn(\"e(vi)l\", changelog_contents)"},{"line_number":159,"context_line":"            self.assertNotIn(\u0027Merge \"\u0027, changelog_contents)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test_generate_authors(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_5cabca89","line":158,"updated":"2016-01-12 18:39:25.000000000","message":"and add that whatever version prefix you chose doesn\u0027t show up. Nor should 12, which derived from (12) isn\u0027t appropriate to include.","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"700237a44956509b05859819067ee59b5016efc8","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            self.assertNotIn(\"ev()il\", changelog_contents)"},{"line_number":156,"context_line":"            self.assertNotIn(\"ev(il\", changelog_contents)"},{"line_number":157,"context_line":"            self.assertNotIn(\"ev)il\", changelog_contents)"},{"line_number":158,"context_line":"            self.assertNotIn(\"e(vi)l\", changelog_contents)"},{"line_number":159,"context_line":"            self.assertNotIn(\u0027Merge \"\u0027, changelog_contents)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def test_generate_authors(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"da6ed579_1998d2bf","line":158,"in_reply_to":"da6ed579_5cabca89","updated":"2016-01-13 14:37:17.000000000","message":"Done","commit_id":"3f0934cbbc80469788559332116012d00e0e50df"}]}
