)]}'
{"pbr/packaging.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"3dee4c3b6d75ab2c69f05eeb40708917fede1208","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    if root:"},{"line_number":99,"context_line":"        root_cmd \u003d \"--root\u003d%s\" % root"},{"line_number":100,"context_line":"    _run_shell_command(["},{"line_number":101,"context_line":"        sys.executable, \u0027-m\u0027, \u0027pip.__init__\u0027 \u0027install\u0027,"},{"line_number":102,"context_line":"        root_cmd,"},{"line_number":103,"context_line":"        \" \".join(links),"},{"line_number":104,"context_line":"        \" \".join(_wrap_in_quotes(requires))],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARH%2F%2F0RE%3D","line":101,"updated":"2013-08-16 20:21:11.000000000","message":"missing a comma after init__\u0027 and before \u0027install\u0027.","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5714a9aed394618325acd12087698b43fd3839d9","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    if root:"},{"line_number":99,"context_line":"        root_cmd \u003d \"--root\u003d%s\" % root"},{"line_number":100,"context_line":"    _run_shell_command(["},{"line_number":101,"context_line":"        sys.executable, \u0027-m\u0027, \u0027pip.__init__\u0027 \u0027install\u0027,"},{"line_number":102,"context_line":"        root_cmd,"},{"line_number":103,"context_line":"        \" \".join(links),"},{"line_number":104,"context_line":"        \" \".join(_wrap_in_quotes(requires))],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARX%2F%2F%2F9A%3D","line":101,"in_reply_to":"AAAARH%2F%2F0RE%3D","updated":"2013-08-18 02:53:10.000000000","message":"Done","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"3dee4c3b6d75ab2c69f05eeb40708917fede1208","unresolved":false,"context_lines":[{"line_number":108,"context_line":"def read_git_mailmap(root_dir\u003dNone, mailmap\u003d\u0027.mailmap\u0027):"},{"line_number":109,"context_line":"    if not root_dir:"},{"line_number":110,"context_line":"        root_dir \u003d _run_shell_command("},{"line_number":111,"context_line":"            shlex.split(\u0027git rev-parse --show-toplevel\u0027))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    mailmap \u003d os.path.join(root_dir, mailmap)"},{"line_number":114,"context_line":"    if os.path.exists(mailmap):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARH%2F%2F0Qw%3D","line":111,"updated":"2013-08-16 20:21:11.000000000","message":"Do we need shlex at all? Can\u0027t we just pass in the list? I think this is preferable.","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5714a9aed394618325acd12087698b43fd3839d9","unresolved":false,"context_lines":[{"line_number":108,"context_line":"def read_git_mailmap(root_dir\u003dNone, mailmap\u003d\u0027.mailmap\u0027):"},{"line_number":109,"context_line":"    if not root_dir:"},{"line_number":110,"context_line":"        root_dir \u003d _run_shell_command("},{"line_number":111,"context_line":"            shlex.split(\u0027git rev-parse --show-toplevel\u0027))"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    mailmap \u003d os.path.join(root_dir, mailmap)"},{"line_number":114,"context_line":"    if os.path.exists(mailmap):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARX%2F%2F%2F84%3D","line":111,"in_reply_to":"AAAARH%2F%2F0Qw%3D","updated":"2013-08-18 02:53:10.000000000","message":"Done","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"3dee4c3b6d75ab2c69f05eeb40708917fede1208","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"def _get_git_directory():"},{"line_number":238,"context_line":"    return _run_shell_command(shlex.split(\u0027git rev-parse --git-dir\u0027))"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"def get_boolean_option(option_dict, option_name, env_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARH%2F%2F0QA%3D","line":238,"updated":"2013-08-16 20:21:11.000000000","message":"Again can we just skip using shlex completely?","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"176e73657893f5dc0040e87f7c2a1885131f2a22","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"def _run_git_command(cmd, git_dir, **kwargs):"},{"line_number":203,"context_line":"    if isinstance(cmd, string_type):"},{"line_number":204,"context_line":"        cmd \u003d [cmd]"},{"line_number":205,"context_line":"    return _run_shell_command("},{"line_number":206,"context_line":"        [\u0027git\u0027, \u0027--git-dir\u003d%s\u0027 % git_dir] + cmd, **kwargs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2Fa5E%3D","line":203,"updated":"2013-09-27 07:51:37.000000000","message":"If instead you said\nif not isinstance(cmd, (list, tuple)):\n...\n\nyou wouldn\u0027t need to have the version specific check for Python 2/3.","commit_id":"6c09b19f2134ce9b04e6f109e96f2f7743df8ae0"}],"pbr/tests/test_setup.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"3dee4c3b6d75ab2c69f05eeb40708917fede1208","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        git_log_cmd \u003d (\"git --git-dir\u003d%s log --format\" % self.git_dir)"},{"line_number":180,"context_line":"        git_co_log_cmd \u003d (\"git --git-dir\u003d%s log\" % self.git_dir)"},{"line_number":181,"context_line":"        git_top_level \u003d \"git rev-parse --show-toplevel\""},{"line_number":182,"context_line":"        cmd_map \u003d {"},{"line_number":183,"context_line":"            git_log_cmd: author_new,"},{"line_number":184,"context_line":"            git_co_log_cmd: co_author_by,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARH%2F%2F0Kk%3D","line":181,"updated":"2013-08-16 20:21:11.000000000","message":"You join the commands below but here they are just strings. Should they be lists instead?","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5714a9aed394618325acd12087698b43fd3839d9","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        git_log_cmd \u003d (\"git --git-dir\u003d%s log --format\" % self.git_dir)"},{"line_number":180,"context_line":"        git_co_log_cmd \u003d (\"git --git-dir\u003d%s log\" % self.git_dir)"},{"line_number":181,"context_line":"        git_top_level \u003d \"git rev-parse --show-toplevel\""},{"line_number":182,"context_line":"        cmd_map \u003d {"},{"line_number":183,"context_line":"            git_log_cmd: author_new,"},{"line_number":184,"context_line":"            git_co_log_cmd: co_author_by,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARX%2F%2F%2F80%3D","line":181,"in_reply_to":"AAAARH%2F%2F0Kk%3D","updated":"2013-08-18 02:53:10.000000000","message":"It\u0027s not this that gets joined - it\u0027s the list passed in to _fake_run_shell_command so that we can match them against these strings","commit_id":"f8c22e4c444f534fbc1973ab625fb7ea4245dc57"}]}
