)]}'
{"jenkins/scripts/common_translation_update.sh":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":486,"context_line":"function cleanup_po_files {"},{"line_number":487,"context_line":"    local modulename\u003d$1"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    for i in $(find $modulename/locale -name *.po) ; do"},{"line_number":490,"context_line":"        check_po_file \"$i\""},{"line_number":491,"context_line":"        if [ $RATIO -lt 20 ]; then"},{"line_number":492,"context_line":"            git rm -f --ignore-unmatch $i"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_686334b2","side":"PARENT","line":489,"updated":"2016-04-18 06:02:01.000000000","message":"Why do you drop \u0027/locale/\u0027?","commit_id":"0af0f35a2af53905171290ae8b082c9289a0ae05"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a4c5842b240eae29c9f7fefe3957d8233b04de44","unresolved":false,"context_lines":[{"line_number":486,"context_line":"function cleanup_po_files {"},{"line_number":487,"context_line":"    local modulename\u003d$1"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    for i in $(find $modulename/locale -name *.po) ; do"},{"line_number":490,"context_line":"        check_po_file \"$i\""},{"line_number":491,"context_line":"        if [ $RATIO -lt 20 ]; then"},{"line_number":492,"context_line":"            git rm -f --ignore-unmatch $i"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_c85a4883","side":"PARENT","line":489,"in_reply_to":"1a122d0e_686334b2","updated":"2016-04-18 06:17:16.000000000","message":"To be able to handle releasenotes - if we call this with \"releasesnotes\", then it won\u0027t look into releasenotes/source/locale but only releasenotes/locale","commit_id":"0af0f35a2af53905171290ae8b082c9289a0ae05"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d36af5e1de62844c760a9cc2f6d56d8e3f3f547b","unresolved":false,"context_lines":[{"line_number":486,"context_line":"function cleanup_po_files {"},{"line_number":487,"context_line":"    local modulename\u003d$1"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    for i in $(find $modulename/locale -name *.po) ; do"},{"line_number":490,"context_line":"        check_po_file \"$i\""},{"line_number":491,"context_line":"        if [ $RATIO -lt 20 ]; then"},{"line_number":492,"context_line":"            git rm -f --ignore-unmatch $i"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_689a1416","side":"PARENT","line":489,"in_reply_to":"1a122d0e_c85a4883","updated":"2016-04-18 06:20:19.000000000","message":"Makes sense. Thanks.","commit_id":"0af0f35a2af53905171290ae8b082c9289a0ae05"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":500,"context_line":"function cleanup_pot_files {"},{"line_number":501,"context_line":"    local modulename\u003d$1"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    for i in $(find $modulename/locale -name *.pot) ; do"},{"line_number":504,"context_line":"        local bi"},{"line_number":505,"context_line":"        local bi_po"},{"line_number":506,"context_line":"        local count_po"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_a85d4ceb","side":"PARENT","line":503,"updated":"2016-04-18 06:02:01.000000000","message":"Same question as for the above.","commit_id":"0af0f35a2af53905171290ae8b082c9289a0ae05"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    shift 2"},{"line_number":63,"context_line":"    # All argument(s) contain module names now."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    local EXCLUDE\u003d\u0027.tox/**\u0027"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    # For projects with one module on stable/mitaka, we use \"old\" setup."},{"line_number":68,"context_line":"    # Note that stable/mitaka is only stable translated branch for"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_288e5c78","line":65,"range":{"start_line":65,"start_character":10,"end_line":65,"end_character":17},"updated":"2016-04-18 06:02:01.000000000","message":"I suggest to use a lower-case name for a local variable.\nUppercase names are usually used for global, so it is confusing.","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"ad021dc0c49a6943b11ef73f63bab427e707e18a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    shift 2"},{"line_number":63,"context_line":"    # All argument(s) contain module names now."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    local EXCLUDE\u003d\u0027.tox/**\u0027"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    # For projects with one module on stable/mitaka, we use \"old\" setup."},{"line_number":68,"context_line":"    # Note that stable/mitaka is only stable translated branch for"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_6ba68ec2","line":65,"range":{"start_line":65,"start_character":10,"end_line":65,"end_character":17},"in_reply_to":"1a122d0e_288e5c78","updated":"2016-04-18 06:49:42.000000000","message":"Done","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    # Project setup and updating POT files for release notes."},{"line_number":162,"context_line":"    if [[ $project \u003d\u003d \"openstack-manuals\" ]] \u0026\u0026 [[ $version \u003d\u003d \"master\" ]]; then"},{"line_number":163,"context_line":"        ZANATA_RULES\u003d\"$ZANATA_RULES -r ./releasenotes/source/locale/releasenotes.pot releasenotes/source/locale/{locale_with_underscore}/LC_MESSAGES/releasenotes.po\""},{"line_number":164,"context_line":"    fi"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    /usr/local/jenkins/slave_scripts/create-zanata-xml.py \\"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_a8f8ace6","line":163,"range":{"start_line":163,"start_character":20,"end_line":163,"end_character":21},"updated":"2016-04-18 06:02:01.000000000","message":"We assume bash 4, so I\u0027d suggest to use \u0027+\u003d\u0027 instead.","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"ad021dc0c49a6943b11ef73f63bab427e707e18a","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    # Project setup and updating POT files for release notes."},{"line_number":162,"context_line":"    if [[ $project \u003d\u003d \"openstack-manuals\" ]] \u0026\u0026 [[ $version \u003d\u003d \"master\" ]]; then"},{"line_number":163,"context_line":"        ZANATA_RULES\u003d\"$ZANATA_RULES -r ./releasenotes/source/locale/releasenotes.pot releasenotes/source/locale/{locale_with_underscore}/LC_MESSAGES/releasenotes.po\""},{"line_number":164,"context_line":"    fi"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    /usr/local/jenkins/slave_scripts/create-zanata-xml.py \\"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_2bc65667","line":163,"range":{"start_line":163,"start_character":20,"end_line":163,"end_character":21},"in_reply_to":"1a122d0e_a8f8ace6","updated":"2016-04-18 06:49:42.000000000","message":"That can be done as a followup-cleanup, we do it this way above everywhere...","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"}],"jenkins/scripts/propose_translation_update.sh":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    local version\u003d$1"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # This function does not check whether releasenote publishing and"},{"line_number":121,"context_line":"    # testing is set up in zuul/layout.yaml, if releasenotes exist,"},{"line_number":122,"context_line":"    # they get pushed to the translation server."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    if [ \"$version\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_28013caf","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":47},"updated":"2016-04-18 06:02:01.000000000","message":", if -\u003e . If","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    local version\u003d$1"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # This function does not check whether releasenote publishing and"},{"line_number":121,"context_line":"    # testing is set up in zuul/layout.yaml, if releasenotes exist,"},{"line_number":122,"context_line":"    # they get pushed to the translation server."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    if [ \"$version\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_08fa80bd","line":121,"range":{"start_line":121,"start_character":14,"end_line":121,"end_character":16},"updated":"2016-04-18 06:02:01.000000000","message":"are?","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"ad021dc0c49a6943b11ef73f63bab427e707e18a","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    local version\u003d$1"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    # This function does not check whether releasenote publishing and"},{"line_number":121,"context_line":"    # testing is set up in zuul/layout.yaml, if releasenotes exist,"},{"line_number":122,"context_line":"    # they get pushed to the translation server."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    if [ \"$version\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_ab87060e","line":121,"range":{"start_line":121,"start_character":43,"end_line":121,"end_character":47},"in_reply_to":"1a122d0e_28013caf","updated":"2016-04-18 06:49:42.000000000","message":"Done","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # testing is set up in zuul/layout.yaml, if releasenotes exist,"},{"line_number":122,"context_line":"    # they get pushed to the translation server."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    if [ \"$version\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"},{"line_number":125,"context_line":"        extract_messages_releasenotes"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # Remove obsolete files."}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_481bd81b","line":124,"updated":"2016-04-18 06:02:01.000000000","message":"Even though it works, I prefer either of :\n\n (bash style)\n  if [[ \"$version\" \u003d\u003d \"master\" \u0026\u0026 -f releasenotes/source/conf.py ]]; then\n\nor\n\n (sh style)\n  if [ \"$version\" \u003d \"master\" -a -f releasenotes/source/conf.py ]; then","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"ad021dc0c49a6943b11ef73f63bab427e707e18a","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    # testing is set up in zuul/layout.yaml, if releasenotes exist,"},{"line_number":122,"context_line":"    # they get pushed to the translation server."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    if [ \"$version\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"},{"line_number":125,"context_line":"        extract_messages_releasenotes"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        # Remove obsolete files."}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_0b7d5a1c","line":124,"in_reply_to":"1a122d0e_481bd81b","updated":"2016-04-18 06:49:42.000000000","message":"Done","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"}],"jenkins/scripts/upstream_translation_update.sh":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"0cd0743fc307704a7713b06b5298e6b151f5cf2a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        init_manuals \"$PROJECT\""},{"line_number":37,"context_line":"        # POT file extraction is done in setup_manuals."},{"line_number":38,"context_line":"        setup_manuals \"$PROJECT\" \"$ZANATA_VERSION\""},{"line_number":39,"context_line":"        if [ \"$ZANATA_VERSION\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"},{"line_number":40,"context_line":"            extract_messages_releasenotes"},{"line_number":41,"context_line":"        fi"},{"line_number":42,"context_line":"        ;;"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_a8e26c01","line":39,"updated":"2016-04-18 06:02:01.000000000","message":"same comment as for proposed_translation.sh","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"ad021dc0c49a6943b11ef73f63bab427e707e18a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        init_manuals \"$PROJECT\""},{"line_number":37,"context_line":"        # POT file extraction is done in setup_manuals."},{"line_number":38,"context_line":"        setup_manuals \"$PROJECT\" \"$ZANATA_VERSION\""},{"line_number":39,"context_line":"        if [ \"$ZANATA_VERSION\" \u003d\u003d \"master\" ] \u0026\u0026 [ -f releasenotes/source/conf.py ]; then"},{"line_number":40,"context_line":"            extract_messages_releasenotes"},{"line_number":41,"context_line":"        fi"},{"line_number":42,"context_line":"        ;;"}],"source_content_type":"text/x-sh","patch_set":1,"id":"1a122d0e_8bb68ada","line":39,"in_reply_to":"1a122d0e_a8e26c01","updated":"2016-04-18 06:49:42.000000000","message":"Done","commit_id":"e5c91bee9858070f00cf139d65ac7c22d7d68480"}]}
