)]}'
{"tools/fast-specs.sh":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a358913e15589875fafcee4c4f24ba38a3ab0d41","unresolved":false,"context_lines":[{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Takes no arguments."},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"# Outputs the full path of built files, for paste-into-browser convenience."},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"# How it works:"},{"line_number":10,"context_line":"# - Determines files changed since last commit"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_942d9747","line":7,"updated":"2019-08-19 15:35:42.000000000","message":"yup:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nfast-specs built:\n/home/osboxes/git/nova-specs/doc/build/html/specs/train/approved/cross-cell-resize.html","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a358913e15589875fafcee4c4f24ba38a3ab0d41","unresolved":false,"context_lines":[{"line_number":24,"context_line":"# Temp file storing the full path to built specs"},{"line_number":25,"context_line":"tmpf\u003d/tmp/specs.$$"},{"line_number":26,"context_line":"function cleanup {"},{"line_number":27,"context_line":"  rm -f $tmpf"},{"line_number":28,"context_line":"}"},{"line_number":29,"context_line":"trap cleanup EXIT"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_74b6dbfb","line":27,"updated":"2019-08-19 15:35:42.000000000","message":"Seems to work:\n\nosboxes@osboxes:~/git/nova-specs$ ls -l /tmp | grep specs\nosboxes@osboxes:~/git/nova-specs$","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":29,"context_line":"trap cleanup EXIT"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Map, keyed by release dir name, of spec files thereunder"},{"line_number":32,"context_line":"declare -A by_rele"},{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_b9e1aed2","line":32,"range":{"start_line":32,"start_character":11,"end_line":32,"end_character":18},"updated":"2019-08-19 15:07:05.000000000","message":"release_dict","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"46bb6ab08ddb8d80657a2ee1adeff84517500c6b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"trap cleanup EXIT"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"# Map, keyed by release dir name, of spec files thereunder"},{"line_number":32,"context_line":"declare -A by_rele"},{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_14944743","line":32,"range":{"start_line":32,"start_character":11,"end_line":32,"end_character":18},"in_reply_to":"7faddb67_b9e1aed2","updated":"2019-08-19 15:39:12.000000000","message":"release_dict implies it\u0027s a dict of releases, which it\u0027s not. specs_by_release would be more precise.","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Map, keyed by release dir name, of spec files thereunder"},{"line_number":32,"context_line":"declare -A by_rele"},{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_3947fe1f","line":34,"range":{"start_line":34,"start_character":9,"end_line":34,"end_character":77},"updated":"2019-08-19 15:07:05.000000000","message":"just as a general stype think $() is generall preferable the backticks\n\nthe signal to noise ration fo ` vs \u0027 is rather low so it can be hard to tell that you are createing a subshell when you use backtics vs storaeing a command to execute in the current shell later.\n\nyou can also use grep -E instead of egrep but that is not that important.\n\ni would rewirte this as\n\n$(git diff --name-only HEAD~1 | grep -E \u0027specs/.*\\.rst\u0027)","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"46bb6ab08ddb8d80657a2ee1adeff84517500c6b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Map, keyed by release dir name, of spec files thereunder"},{"line_number":32,"context_line":"declare -A by_rele"},{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_94891727","line":34,"range":{"start_line":34,"start_character":9,"end_line":34,"end_character":77},"in_reply_to":"7faddb67_3947fe1f","updated":"2019-08-19 15:39:12.000000000","message":"Those are all personal preferences rather than \"best practices\".\n\nExcept for reducing the regex. I specifically don\u0027t want to get e.g. stuff in the priorities directory, because then the logic below won\u0027t work.","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"d5b793da3e13dffea1d7c8596a292a100a4c2809","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Map, keyed by release dir name, of spec files thereunder"},{"line_number":32,"context_line":"declare -A by_rele"},{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_c1c10c82","line":34,"range":{"start_line":34,"start_character":9,"end_line":34,"end_character":77},"in_reply_to":"7faddb67_7e131902","updated":"2019-08-19 16:37:26.000000000","message":"\u003e shellcheck has a nice online checker\n \u003e https://www.shellcheck.net/\n\nThings sure have changed since ksh88\n\n \u003e ^-- SC2196: egrep is non-standard and deprecated. Use grep -E\n \u003e instead.\n\nWell golly, I didn\u0027t know it was actually *deprecated*. [Later] though it doesn\u0027t sound like there\u0027s a good reason other than \"we wanted it all to be in one command\".\n\nDone.\n\n \u003e Line 53:\n \u003e sphinx-build -c doc/source $src $bld $files\n \u003e ^-- SC2086: Double quote to prevent globbing and word splitting.\n \u003e ^-- SC2086: Double quote to prevent globbing and word splitting.\n \u003e ^-- SC2086: Double quote to prevent globbing and word splitting.\n\nThis is me deliberately\n- playing fast and loose with $src and $bld since I know they won\u0027t have special characters or whitespace, so extra punctuation is just noise.\n- not quoting $files since it *will* have whitespace if there\u0027s more than one and I *want* that to split.\n\n \u003e Line 57:\n \u003e p\u003d`echo $f | sed \u0027s,/source/,/build/html/,; s/rst$/html/\u0027`\n \u003e ^-- SC2006: Use $(...) notation instead of legacy backticked `...`.\n\nDone\n\n \u003e ^-- SC2001: See if you can use ${variable//search/replace} instead.\n\nYeah, I\u0027m always a fan of doing this stuff within bash when reasonable, but not at the cost of severe LTS:\n\n p\u003d${f//\\/source\\//\\/build\\/html\\/}\n\nAnd then this doesn\u0027t take regexes anyway, so I can\u0027t specify the end anchor, so this will replace \u0027rst\u0027 within e.g. a filename\n\n p\u003d${p//rst/html}\n\ne.g.\n\n # f\u003ddoc/source/specs/train/approved/foo-first-bar.rst\n # p\u003d${f//\\/source\\//\\/build\\/html\\/}\n # echo \"${p//rst/html}\"\n doc/build/html/specs/train/approved/foo-fihtml-bar.html\n                                           ^^^^\n\nThough this would work\n\n p\u003d${p%.rst}.html\n\nAnyway, I\u0027m going to leave this one alone for the sake of the LTS.","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"835c35769263a1b2a3d9ff456f0bcc1a71219743","unresolved":false,"context_lines":[{"line_number":31,"context_line":"# Map, keyed by release dir name, of spec files thereunder"},{"line_number":32,"context_line":"declare -A by_rele"},{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_7e131902","line":34,"range":{"start_line":34,"start_character":9,"end_line":34,"end_character":77},"in_reply_to":"7faddb67_94891727","updated":"2019-08-19 16:04:35.000000000","message":"actully use of backticks is consider bad practice by several comuntities\n\nwe do not check for it in bash8\nhttps://github.com/openstack/bashate\n\nbut\nhttps://wiki.bash-hackers.org/scripting/obsolete\nand https://github.com/progrium/bashstyle#big-rules\n\nboth discuage it and bashstyle forbid it.\nas does shellcheck\nhttps://github.com/koalaman/shellcheck/wiki/SC2006\n\nshellcheck has a nice online checker\nhttps://www.shellcheck.net/\n\n\nif i run the v3 version of this script through it i get these wranings\n\n-------------------------------------------------\n\n shellcheck myscript\n \nLine 34:\nfor f in $(git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027); do\n                                         ^-- SC2196: egrep is non-standard and deprecated. Use grep -E instead.\n \nLine 53:\n  sphinx-build -c doc/source $src $bld $files\n                             ^-- SC2086: Double quote to prevent globbing and word splitting.\n                                  ^-- SC2086: Double quote to prevent globbing and word splitting.\n                                       ^-- SC2086: Double quote to prevent globbing and word splitting.\n\nDid you mean: (apply this, apply all SC2086)\n  sphinx-build -c doc/source \"$src\" \"$bld\" \"$files\"\n \nLine 57:\n    p\u003d`echo $f | sed \u0027s,/source/,/build/html/,; s/rst$/html/\u0027`\n      ^-- SC2006: Use $(...) notation instead of legacy backticked `...`.\n       ^-- SC2001: See if you can use ${variable//search/replace} instead.\n            ^-- SC2086: Double quote to prevent globbing and word splitting.\n\nDid you mean: (apply this, apply all SC2006, apply all SC2086)\n    p\u003d$(echo \"$f\" | sed \u0027s,/source/,/build/html/,; s/rst$/html/\u0027)\n \nLine 58:\n    realpath $p \u003e\u003e $tmpf\n             ^-- SC2086: Double quote to prevent globbing and word splitting.\n\nDid you mean: (apply this, apply all SC2086)\n    realpath \"$p\" \u003e\u003e $tmpf","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"},{"line_number":38,"context_line":"  # doc/source/... has symlinks, and is where sphinx-build expects sources"},{"line_number":39,"context_line":"  by_rele[$rele]\u003d${by_rele[$rele]}\" doc/source/$f\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_59943a36","line":36,"range":{"start_line":36,"start_character":2,"end_line":36,"end_character":6},"updated":"2019-08-19 15:07:05.000000000","message":"release or release_name","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"46bb6ab08ddb8d80657a2ee1adeff84517500c6b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"},{"line_number":38,"context_line":"  # doc/source/... has symlinks, and is where sphinx-build expects sources"},{"line_number":39,"context_line":"  by_rele[$rele]\u003d${by_rele[$rele]}\" doc/source/$f\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_74849b0b","line":36,"range":{"start_line":36,"start_character":2,"end_line":36,"end_character":6},"in_reply_to":"7faddb67_59943a36","updated":"2019-08-19 15:39:12.000000000","message":"Is rele really that hard to grok as meaning \"release\"?","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"835c35769263a1b2a3d9ff456f0bcc1a71219743","unresolved":false,"context_lines":[{"line_number":33,"context_line":"# Look for specs changed since last commit"},{"line_number":34,"context_line":"for f in `git diff --name-only HEAD~1 | egrep \u0027specs/[^/]+/[^/]+/[^/]+\\.rst\u0027`; do"},{"line_number":35,"context_line":"  # echo $f | cut -d/ -f2, but faster"},{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"},{"line_number":38,"context_line":"  # doc/source/... has symlinks, and is where sphinx-build expects sources"},{"line_number":39,"context_line":"  by_rele[$rele]\u003d${by_rele[$rele]}\" doc/source/$f\""}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_7e6f995f","line":36,"range":{"start_line":36,"start_character":2,"end_line":36,"end_character":6},"in_reply_to":"7faddb67_74849b0b","updated":"2019-08-19 16:04:35.000000000","message":"yes i had to run it to figure out what it was.","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":36,"context_line":"  rele\u003d${f#*/}"},{"line_number":37,"context_line":"  rele\u003d${rele%%/*}"},{"line_number":38,"context_line":"  # doc/source/... has symlinks, and is where sphinx-build expects sources"},{"line_number":39,"context_line":"  by_rele[$rele]\u003d${by_rele[$rele]}\" doc/source/$f\""},{"line_number":40,"context_line":"done"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"if [[ ${#by_rele[@]} -eq 0 ]]; then"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_59099a81","line":39,"range":{"start_line":39,"start_character":1,"end_line":39,"end_character":50},"updated":"2019-08-19 15:07:05.000000000","message":"personally i would split this into too to make it more clear you are appending to the list of files for that release\n\nrelease_list \u003d \"${release_dict[release]} doc/source/$f\"\nrelease_dict[release] \u003d release_list","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  by_rele[$rele]\u003d${by_rele[$rele]}\" doc/source/$f\""},{"line_number":40,"context_line":"done"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"if [[ ${#by_rele[@]} -eq 0 ]]; then"},{"line_number":43,"context_line":"  echo \"No spec files changed, nothing to build.\""},{"line_number":44,"context_line":"  exit 0"},{"line_number":45,"context_line":"fi"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_1927a214","line":42,"range":{"start_line":42,"start_character":9,"end_line":42,"end_character":16},"updated":"2019-08-19 15:07:05.000000000","message":"release_dict","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a358913e15589875fafcee4c4f24ba38a3ab0d41","unresolved":false,"context_lines":[{"line_number":40,"context_line":"done"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"if [[ ${#by_rele[@]} -eq 0 ]]; then"},{"line_number":43,"context_line":"  echo \"No spec files changed, nothing to build.\""},{"line_number":44,"context_line":"  exit 0"},{"line_number":45,"context_line":"fi"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_d499cf79","line":43,"updated":"2019-08-19 15:35:42.000000000","message":"Yup got this before changing cross-cell-resize.rst:\n\nfast-specs runtests: commands[0] | bash tools/fast-specs.sh\nNo spec files changed, nothing to build.","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":45,"context_line":"fi"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Build all changed specs per release directory"},{"line_number":48,"context_line":"for rele in \"${!by_rele[@]}\"; do"},{"line_number":49,"context_line":"  src\u003ddoc/source/specs/$rele"},{"line_number":50,"context_line":"  bld\u003ddoc/build/html/specs/$rele"},{"line_number":51,"context_line":"  files\u003d${by_rele[$rele]}"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_196c8234","line":48,"range":{"start_line":48,"start_character":4,"end_line":48,"end_character":8},"updated":"2019-08-19 15:07:05.000000000","message":"release","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":45,"context_line":"fi"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Build all changed specs per release directory"},{"line_number":48,"context_line":"for rele in \"${!by_rele[@]}\"; do"},{"line_number":49,"context_line":"  src\u003ddoc/source/specs/$rele"},{"line_number":50,"context_line":"  bld\u003ddoc/build/html/specs/$rele"},{"line_number":51,"context_line":"  files\u003d${by_rele[$rele]}"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_f91966d0","line":48,"range":{"start_line":48,"start_character":16,"end_line":48,"end_character":24},"updated":"2019-08-19 15:07:05.000000000","message":"release_dict","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f28f24cfdf9f88fdd6481c76eb74c6b0676caeae","unresolved":false,"context_lines":[{"line_number":48,"context_line":"for rele in \"${!by_rele[@]}\"; do"},{"line_number":49,"context_line":"  src\u003ddoc/source/specs/$rele"},{"line_number":50,"context_line":"  bld\u003ddoc/build/html/specs/$rele"},{"line_number":51,"context_line":"  files\u003d${by_rele[$rele]}"},{"line_number":52,"context_line":"  echo \"fast-specs: Building for ${rele}:$files\""},{"line_number":53,"context_line":"  sphinx-build -c doc/source $src $bld $files"},{"line_number":54,"context_line":"  # Save the full path to built files. (Wait until the end to output these, so"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_798336cc","line":51,"range":{"start_line":51,"start_character":8,"end_line":51,"end_character":25},"updated":"2019-08-19 15:07:05.000000000","message":"release_dict[release]","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a358913e15589875fafcee4c4f24ba38a3ab0d41","unresolved":false,"context_lines":[{"line_number":49,"context_line":"  src\u003ddoc/source/specs/$rele"},{"line_number":50,"context_line":"  bld\u003ddoc/build/html/specs/$rele"},{"line_number":51,"context_line":"  files\u003d${by_rele[$rele]}"},{"line_number":52,"context_line":"  echo \"fast-specs: Building for ${rele}:$files\""},{"line_number":53,"context_line":"  sphinx-build -c doc/source $src $bld $files"},{"line_number":54,"context_line":"  # Save the full path to built files. (Wait until the end to output these, so"},{"line_number":55,"context_line":"  # they\u0027re not lost between subdirectories.)"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_b48e932b","line":52,"updated":"2019-08-19 15:35:42.000000000","message":"ack:\n\nfast-specs: Building for train: doc/source/specs/train/approved/cross-cell-resize.rst","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a358913e15589875fafcee4c4f24ba38a3ab0d41","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"echo \"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\""},{"line_number":63,"context_line":"echo \"fast-specs built:\""},{"line_number":64,"context_line":"cat $tmpf"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"exit 0"}],"source_content_type":"text/x-sh","patch_set":1,"id":"7faddb67_f4a40ba5","line":64,"updated":"2019-08-19 15:35:42.000000000","message":"Also tested for two different releases and approved vs implemented, works as expected:\n\nfast-specs built:\n/home/osboxes/git/nova-specs/doc/build/html/specs/train/approved/cross-cell-resize.html\n/home/osboxes/git/nova-specs/doc/build/html/specs/stein/implemented/vmware-live-migration.html","commit_id":"c26dc44d7a5cbd0d0844c9af4430b24377d45415"}]}
