)]}'
{"pbr/git.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"e478b15b5090685ed86a23546e6c307dff3cb550","unresolved":false,"context_lines":[{"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":"    decorate_log_cmd \u003d [\u0027log\u0027, \u0027--oneline\u0027, \u0027--decorate\u0027]"},{"line_number":211,"context_line":"    decorate_changelog \u003d _run_git_command(decorate_log_cmd, git_dir)"},{"line_number":212,"context_line":"    for line, decorate_line in zip("},{"line_number":213,"context_line":"            changelog.split(\u0027\\n\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_7e19fc87","line":210,"updated":"2016-04-18 23:37:05.000000000","message":"I\u0027m worried about the performance impact of running two entire-history log operations. Perhaps we should version-check git ?","commit_id":"66fae2ce29fbbe29d4e6512c610f366162fad5ad"},{"author":{"_account_id":16366,"name":"Randall Nortman","email":"openstack@nortman.net","username":"rnortman"},"change_message_id":"e726b7f0d9aaa4fdc87e5094304ec614af696980","unresolved":false,"context_lines":[{"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":"    decorate_log_cmd \u003d [\u0027log\u0027, \u0027--oneline\u0027, \u0027--decorate\u0027]"},{"line_number":211,"context_line":"    decorate_changelog \u003d _run_git_command(decorate_log_cmd, git_dir)"},{"line_number":212,"context_line":"    for line, decorate_line in zip("},{"line_number":213,"context_line":"            changelog.split(\u0027\\n\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_01b22d94","line":210,"in_reply_to":"1a122d0e_7e19fc87","updated":"2016-04-19 00:27:03.000000000","message":"Doing a version check would be the right thing to do.  But I don\u0027t actually know which git version made the switch, and I\u0027m too lazy to go bisect git and figure it out.  ;)  It seems to me, though, that (a) pbr is not super performance-sensitive, and (b) I speculate that most of the work in \u0027git log\u0027 is disk I/O, and everything will already be in page cache for the second command.  One data point: \u0027git log --oneline --decoate\u0027 on the nova tree (with 40k commits) runs in ~0.8s in a VM on my workstation.\n\nAll that said, if you still want a version check, I\u0027ll go bisect git and figure out when the change happened.","commit_id":"66fae2ce29fbbe29d4e6512c610f366162fad5ad"}],"pbr/tests/test_setup.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"e478b15b5090685ed86a23546e6c307dff3cb550","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            }"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.useFixture(fixtures.FakePopen("},{"line_number":182,"context_line":"            functools.partial("},{"line_number":183,"context_line":"                pick_changelog,"},{"line_number":184,"context_line":"                changelog_content, _decorate_changelog_content)))"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_3e83049a","line":182,"updated":"2016-04-18 23:37:05.000000000","message":"AIUI this picking is 100% deterministic based on whether we\u0027re testing with new/old git - so rather than than needing this closure etc, why not just supply the needed content directly from test_write_{old_,}git_changelog ?","commit_id":"66fae2ce29fbbe29d4e6512c610f366162fad5ad"},{"author":{"_account_id":16366,"name":"Randall Nortman","email":"openstack@nortman.net","username":"rnortman"},"change_message_id":"e726b7f0d9aaa4fdc87e5094304ec614af696980","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            }"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        self.useFixture(fixtures.FakePopen("},{"line_number":182,"context_line":"            functools.partial("},{"line_number":183,"context_line":"                pick_changelog,"},{"line_number":184,"context_line":"                changelog_content, _decorate_changelog_content)))"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_7c3bc49c","line":182,"in_reply_to":"1a122d0e_3e83049a","updated":"2016-04-19 00:27:03.000000000","message":"Yeah, the flow here is hard to follow.  The issue is that on each test run, the FakePopen fixture needs to supply two different sets of content, one for the --format invocation, and a different one for the --decorate invocation.  You can\u0027t have two different fixtures; you can only have one fixture, and it uses a callback (pick_changelog) to return the content, and that callback picks the --format content vs --decorate content based on the invocation args.  None of that has anything to do with the old vs new git difference.  The different old/new content (for the --format case; the --decorate content is unchanged between old and new git) is being passed in just as you suggest, via the changelog_content argument.\n\nIt hope that\u0027s clear enough.  Like I said, it\u0027s necessarily a little convoluted because of how FakePopen works.","commit_id":"66fae2ce29fbbe29d4e6512c610f366162fad5ad"}]}
