)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":13,"context_line":"of the chroot allows localy cached repositories to be used."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Also the default git reference used (master) can be overriden"},{"line_number":16,"context_line":"with to specify a specific revision."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For example if an element specified a repository-deps file"},{"line_number":19,"context_line":"with the contents"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPH%2F%2Fo6s%3D","line":16,"updated":"2013-05-28 19:28:14.000000000","message":"This doesn\u0027t quite parse right. \"can be overriden with ?? to specify...\"","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"For example if an element specified a repository-deps file"},{"line_number":19,"context_line":"with the contents"},{"line_number":20,"context_line":"git project https://github.com/stackforge/project.git"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"d-i-b will clone https://github.com/stackforge/project.git"},{"line_number":23,"context_line":"into /opt/stack/project, if a more suitable cache of this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPH%2F%2Fo6Y%3D","line":20,"updated":"2013-05-28 19:28:14.000000000","message":"I think this is too much detail for a commit message. I want to see more answers to \"why?\" than \"how?\" here. How to use it and what behavior to expect all belongs in README.md.","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Doing this outside of the chroot allows locally cached"},{"line_number":15,"context_line":"repositories to be used. It also gives the ability to d-i-b"},{"line_number":16,"context_line":"to specify what revision to use if an alternative to the"},{"line_number":17,"context_line":"most recent is required"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Effectively allowing a CI system to test d-i-b and elements"},{"line_number":20,"context_line":"without being effected by unavailable git repositories or"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAPH%2F%2FoP8%3D","line":17,"updated":"2013-05-28 23:14:53.000000000","message":"Missed a period.","commit_id":"3e261233ef7bf56139be9e62ba0d9c487e4f95fc"},{"author":{"_account_id":1926,"name":"Derek Higgins","email":"derekh@redhat.com","username":"derekh"},"unresolved":false,"context_lines":[{"line_number":14,"context_line":"Doing this outside of the chroot allows locally cached"},{"line_number":15,"context_line":"repositories to be used. It also gives the ability to d-i-b"},{"line_number":16,"context_line":"to specify what revision to use if an alternative to the"},{"line_number":17,"context_line":"most recent is required"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Effectively allowing a CI system to test d-i-b and elements"},{"line_number":20,"context_line":"without being effected by unavailable git repositories or"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAPH%2F%2FoPE%3D","line":17,"in_reply_to":"AAAAPH%2F%2FoP8%3D","updated":"2013-05-28 23:26:00.000000000","message":"Darn Periods.","commit_id":"3e261233ef7bf56139be9e62ba0d9c487e4f95fc"},{"author":{"_account_id":6449,"name":"Chris Jones","email":"cmsj@tenshu.net","username":"cmsj"},"unresolved":false,"context_lines":[{"line_number":17,"context_line":"most recent is required."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Effectively allowing a CI system to test d-i-b and elements"},{"line_number":20,"context_line":"without being effected by unavailable git repositories or"},{"line_number":21,"context_line":"breakages in actively developed source code being used by"},{"line_number":22,"context_line":"the elements."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAAPn%2F%2F304%3D","line":20,"updated":"2013-06-19 11:08:16.000000000","message":"I think that should be \"affected\", but since it\u0027s just the commit message I\u0027m not sure it\u0027s worth another round trip.","commit_id":"ef2aa6e8a12aedbd13df7a6227c4b1822263f1cb"}],"README.md":[{"author":{"_account_id":360,"name":"Dan Prince","email":"dprince@redhat.com","username":"dan-prince"},"change_message_id":"091067dacbe50ffe2b10cbfb40ed980ca7d52006","unresolved":false,"context_lines":[{"line_number":173,"context_line":"  be added to the list of elements built into the image at image creation time."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* repository-deps : A plain text, newline separated list of repositories that"},{"line_number":176,"context_line":"  will be retrieved for the element. Currenlty supports svn and tarballs. Retrived "},{"line_number":177,"context_line":"  source will be placed in /opt/stack on the target"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Ramdisk elements support the following files in their element directories:"}],"source_content_type":"text/x-gfm","patch_set":1,"id":"AAAAPH%2F%2FxKc%3D","line":176,"updated":"2013-05-23 14:23:38.000000000","message":"Currently supports git and tarballs right?\n\nAlso there is an extra whitespace at the end here.","commit_id":"b8ef629554bbd66c1e323d7efa97acdbea89dbbd"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":173,"context_line":"  be added to the list of elements built into the image at image creation time."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* repository-deps : A plain text, newline separated list of repositories that"},{"line_number":176,"context_line":"  will be retrieved for the element. Currenlty supports git and tarballs. Retrived"},{"line_number":177,"context_line":"  source will be placed in /opt/stack on the target"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Ramdisk elements support the following files in their element directories:"}],"source_content_type":"text/x-gfm","patch_set":2,"id":"AAAAPH%2F%2Fo%2FM%3D","line":176,"updated":"2013-05-28 19:28:14.000000000","message":"Retrieved","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* repository-deps : A plain text, newline separated list of repositories that"},{"line_number":176,"context_line":"  will be retrieved for the element. Currenlty supports git and tarballs. Retrived"},{"line_number":177,"context_line":"  source will be placed in /opt/stack on the target"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Ramdisk elements support the following files in their element directories:"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":2,"id":"AAAAPH%2F%2Fo%2FE%3D","line":177,"updated":"2013-05-28 19:28:14.000000000","message":"/opt/stack/???\n\nAlso what is the format of each line?","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":172,"context_line":"* element-deps : A plain text, newline separated list of elements which will"},{"line_number":173,"context_line":"  be added to the list of elements built into the image at image creation time."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* repository-deps : A plain text, newline separated list of repositories that"},{"line_number":176,"context_line":"  will be retrieved for the element. Currenlty supports git and tarballs."},{"line_number":177,"context_line":"  Source will be placed in the directory /opt/stack/\\\u003cname\\\u003e on the target"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAPH%2F%2FhhU%3D","line":175,"updated":"2013-05-31 10:17:01.000000000","message":"I\u0027m going to bikeshed on the name; this isn\u0027t part of a dependency graph, it is just source code repositories to clone. So how about we call it \u0027source-repositories\u0027. Boring, I know.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":173,"context_line":"  be added to the list of elements built into the image at image creation time."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* repository-deps : A plain text, newline separated list of repositories that"},{"line_number":176,"context_line":"  will be retrieved for the element. Currenlty supports git and tarballs."},{"line_number":177,"context_line":"  Source will be placed in the directory /opt/stack/\\\u003cname\\\u003e on the target"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Ramdisk elements support the following files in their element directories:"}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAPH%2F%2Fhh8%3D","line":176,"updated":"2013-05-31 10:17:01.000000000","message":"Typo.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"* repository-deps : A plain text, newline separated list of repositories that"},{"line_number":176,"context_line":"  will be retrieved for the element. Currenlty supports git and tarballs."},{"line_number":177,"context_line":"  Source will be placed in the directory /opt/stack/\\\u003cname\\\u003e on the target"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Ramdisk elements support the following files in their element directories:"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAPH%2F%2Fhh4%3D","line":177,"updated":"2013-05-31 10:17:01.000000000","message":"This is a little brief - what Source? Is it a copy of the repo, a clone, or ???. I think best to skip this sentence and instead reference the comprehensive docs further down.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":278,"context_line":"    tar pbr http://tarballs.openstack.org/pbr/pbr-master.tar.gz"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"diskimage-builder will then retrieve the sources specified and place them"},{"line_number":281,"context_line":"into the directory /opt/stack/\\\u003cname\\\u003e"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"A number of environment variables can be set by the process calling"},{"line_number":284,"context_line":"diskimage-builder which can change the details registered by the element, these are"}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAPH%2F%2Fhhk%3D","line":281,"updated":"2013-05-31 10:17:01.000000000","message":"diskimage-builder\u0027s core repository is only concerned with operating system support and quirks; this feature does belong here, but the tying of it to /opt/stack is poor layering.\n\nI suggest putting the whole path in, rather than the codename, which will both be clearer and avoid the layering issue.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":288,"context_line":"    DIB_REPOREF_\u003cname\u003e      : change the registered reference"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"for example if you would like diskimage-builder to get ironic from a local"},{"line_number":291,"context_line":"mirror you could set DIB_REPOLOCATION_ironic\u003dgit://localgitserver/ironic.git"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"tarballs should contain a single topleval directory, regardless if its name"},{"line_number":294,"context_line":"it will be renamed to /opt/stack/\\\u003cname\\\u003e"}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAPH%2F%2Fhgw%3D","line":291,"updated":"2013-05-31 10:17:01.000000000","message":"This seems like it will be awkward to use. Also there is massive overlap with config-manager; perhaps we should just use that? Or mr, which is the cool kids replacement AIUI.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":291,"context_line":"mirror you could set DIB_REPOLOCATION_ironic\u003dgit://localgitserver/ironic.git"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"tarballs should contain a single topleval directory, regardless if its name"},{"line_number":294,"context_line":"it will be renamed to /opt/stack/\\\u003cname\\\u003e"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"Testing Elements"},{"line_number":297,"context_line":"----------------"}],"source_content_type":"text/x-gfm","patch_set":4,"id":"AAAAPH%2F%2Fhgo%3D","line":294,"updated":"2013-05-31 10:17:01.000000000","message":"Missing capital at the start of the sentence, and I can\u0027t quite parse it - could you rephrase?","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"}],"elements/source-repositories/README.md":[{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":1,"context_line":"With this element other elements can register source code repositories by"},{"line_number":2,"context_line":"placing their details in the file source-repository-\\\u003cname\\\u003e. An example"},{"line_number":3,"context_line":"of an element \"custon-element\" that wants to retrieve the ironic source"},{"line_number":4,"context_line":"from git and pbr from a tarball would be"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"*File : elements/custon-element/source-repository-ironic*"}],"source_content_type":"text/x-gfm","patch_set":6,"id":"AAAAPX%2F%2FpoY%3D","line":3,"updated":"2013-06-13 14:06:30.000000000","message":"Was custon meant to be \"custom\" ?","commit_id":"77825785b4a1f25d0d48f39664d6a8a6ea926f92"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    #\u003ctype\u003e \u003cdestination\u003e/\u003cname\u003e \u003clocation\u003e [\u003cref\u003e]"},{"line_number":9,"context_line":"    # \u003cref\u003e defaults to master if not specified"},{"line_number":10,"context_line":"    git /usr/local/ironic git://github.com/openstack/ironic.git"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"*File : elements/custon-element/source-repository-pbr*"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gfm","patch_set":6,"id":"AAAAPX%2F%2FpnU%3D","line":10,"updated":"2013-06-13 14:06:30.000000000","message":"I find it a bit confusing that \u003cname\u003e is derived as \"the last directory part\" in destination, because it is so important. It\u0027s quite possible two things will want to be in /usr/local/something and /opt/stack/something but they won\u0027t be individually addressable.\n\nI\u0027d rather the format be\n\n\u003cname\u003e \u003ctype\u003e \u003cdestination\u003e \u003clocation [\u003cref\u003e]","commit_id":"77825785b4a1f25d0d48f39664d6a8a6ea926f92"}],"elements/source-repositories/extra-data.d/99-getsources":[{"author":{"_account_id":6449,"name":"Chris Jones","email":"cmsj@tenshu.net","username":"cmsj"},"unresolved":false,"context_lines":[{"line_number":8,"context_line":"# \u003ctype\u003e \u003cname\u003e \u003clocation\u003e [\u003cref\u003e]"},{"line_number":9,"context_line":"function get_repos_for_element(){"},{"line_number":10,"context_line":"    local REPO_SOURCES\u003d$1"},{"line_number":11,"context_line":"    local REPO_DIRECTORY\u003d$2"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    local REGEX\u003d\"(git|tar) (/[^ ]+) ([^ ]+) ?([^ ]*)\""},{"line_number":14,"context_line":"    while read line ; do"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"AAAAPX%2F%2FqD0%3D","line":11,"updated":"2013-06-13 10:43:51.000000000","message":"This doesn\u0027t need to be set to $2 - that argument is never passed and would be ignored anyway.","commit_id":"2b55565a78e12a567b4e4bf2741d62bd8e25993a"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"            case $REPOTYPE in"},{"line_number":43,"context_line":"            git)"},{"line_number":44,"context_line":"                sudo git clone $REPOLOCATION $REPO_DIRECTORY/$REPONAME"},{"line_number":45,"context_line":"                pushd $REPO_DIRECTORY/$REPONAME"},{"line_number":46,"context_line":"                sudo git reset --hard $REPOREF"},{"line_number":47,"context_line":"                popd"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"AAAAPX%2F%2FpnE%3D","line":44,"updated":"2013-06-13 14:06:30.000000000","message":"All of these sudo commands have to be added to the sudoers.d file.","commit_id":"77825785b4a1f25d0d48f39664d6a8a6ea926f92"}],"lib/common-functions":[{"author":{"_account_id":6449,"name":"Chris Jones","email":"cmsj@tenshu.net","username":"cmsj"},"change_message_id":"a1b326d89a77edbdf9cb02f50ccb46a9111786c1","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # REPOTYPE can be overridden with REPOTYPE_{name}"},{"line_number":211,"context_line":"            REPOTYPE_OVERRIDE\u003dREPOTYPE_${REPONAME/-/_}"},{"line_number":212,"context_line":"            REPOTYPE\u003d${!REPOTYPE_OVERRIDE:-$REPOTYPE}"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"            # REPOLOCATION can be overridden with REPOLOCATION_{name}"},{"line_number":215,"context_line":"            REPOLOCATION_OVERRIDE\u003dREPOLOCATION_${REPONAME/-/_}"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAPH%2F%2Fqjw%3D","line":212,"updated":"2013-05-28 08:45:16.000000000","message":"Since $REPOTYPE_{name}, $REPOLOCATION_{name} and $REPOREF_{name} are user-overridable defaults, I think it would be better if they followed the DIB_ naming convention, making them $DIB_REPOTYPE_{name}, $DIB_REPOLOCATION_{name} and $DIB_REPOREF_{name}.\n\n(our aim with that DIB_ namespace is to be able to heavily sanitise the build environment without clobbering user overrides).","commit_id":"b8ef629554bbd66c1e323d7efa97acdbea89dbbd"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":186,"context_line":"  done"},{"line_number":187,"context_line":"}"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# Gets Repoitories listed in the a repository file and places them in"},{"line_number":190,"context_line":"# the repository directory"},{"line_number":191,"context_line":"# The format of the repository file is one or more lines matching"},{"line_number":192,"context_line":"# type name location reference?"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAPH%2F%2Fo9s%3D","line":189,"updated":"2013-05-28 19:28:14.000000000","message":"Repositories","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":187,"context_line":"}"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# Gets Repoitories listed in the a repository file and places them in"},{"line_number":190,"context_line":"# the repository directory"},{"line_number":191,"context_line":"# The format of the repository file is one or more lines matching"},{"line_number":192,"context_line":"# type name location reference?"},{"line_number":193,"context_line":"function get_repos_for_element(){"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAPH%2F%2Fo9o%3D","line":190,"updated":"2013-05-28 19:28:14.000000000","message":"Needs a . at the end.","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":191,"context_line":"# The format of the repository file is one or more lines matching"},{"line_number":192,"context_line":"# type name location reference?"},{"line_number":193,"context_line":"function get_repos_for_element(){"},{"line_number":194,"context_line":"    REPO_SOURCES\u003d$1"},{"line_number":195,"context_line":"    REPO_DIRECTORY\u003d$2"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    mkdir -p REPO_DIRECTORY"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAPH%2F%2Fo9k%3D","line":194,"updated":"2013-05-28 19:28:14.000000000","message":"These should be local.","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    while read line ; do"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        # ignore blank lines and lines begining in \u0027#\u0027"},{"line_number":202,"context_line":"        [[ $line \u003d\u003d \\#* ]] || [[ -z $line ]] \u0026\u0026 continue"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        if [[ $line \u003d~ $REGEX ]]  ; then"},{"line_number":205,"context_line":"            REPOTYPE\u003d${BASH_REMATCH[1]}"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAPH%2F%2Fo9U%3D","line":202,"updated":"2013-05-28 19:28:14.000000000","message":"$line needs quotes here, blank lines will cause syntax errors","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            REPOTYPE\u003d${BASH_REMATCH[1]}"},{"line_number":206,"context_line":"            REPONAME\u003d${BASH_REMATCH[2]}"},{"line_number":207,"context_line":"            REPOLOCATION\u003d${BASH_REMATCH[3]}"},{"line_number":208,"context_line":"            REPOREF\u003d${BASH_REMATCH[4]:-master}"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            # REPOTYPE can be overridden with DIB_REPOTYPE_{name}"},{"line_number":211,"context_line":"            REPOTYPE_OVERRIDE\u003dDIB_REPOTYPE_${REPONAME/-/_}"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAPH%2F%2Fo9A%3D","line":208,"updated":"2013-05-28 19:28:14.000000000","message":"more locals","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"788379f55ccdb15ac9f41743e254534f47d24686","unresolved":false,"context_lines":[{"line_number":230,"context_line":"                # The top level directory of the tarball mightn\u0027t have a fixed name i.e."},{"line_number":231,"context_line":"                # it could contain version numbers etc... so we write it to a tmpdir"},{"line_number":232,"context_line":"                # the then move the contents into the directory we want it in, this does"},{"line_number":233,"context_line":"                # assume the tarball only contains a single top level directory"},{"line_number":234,"context_line":"                tmpdir\u003d$(mktemp -d)"},{"line_number":235,"context_line":"                curl $REPOLOCATION | tar -C $tmpdir -xzf -"},{"line_number":236,"context_line":"                mkdir -p $REPO_DIRECTORY/$REPONAME"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"AAAAPH%2F%2Fo7Q%3D","line":233,"updated":"2013-05-28 19:28:14.000000000","message":"That  whole comment block above belongs in README.md.","commit_id":"86f14df2c6bd35e3752958fc1512a4029f3a4e6c"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":173,"context_line":"    echo Gave up trying to detach $loopdev"},{"line_number":174,"context_line":"    return 1"},{"line_number":175,"context_line":"}"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"# Get source repositories for the target"},{"line_number":178,"context_line":"function get_repos(){"},{"line_number":179,"context_line":"  mkdir -p $TMP_MOUNT_PATH/opt/stack"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAPH%2F%2Fhf8%3D","line":176,"updated":"2013-05-31 10:17:01.000000000","message":"I think this wants to be an external script - e.g. a root.d hook as I mention elsewhere.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"}],"lib/img-functions":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"unresolved":false,"context_lines":[{"line_number":63,"context_line":"        IMAGE_ELEMENT\u003d$($SCRIPT_HOME/element-info --expand-dependencies $IMAGE_ELEMENT ubuntu)"},{"line_number":64,"context_line":"\tgenerate_hooks"},{"line_number":65,"context_line":"\techo \"Now building: $IMAGE_ELEMENT\""},{"line_number":66,"context_line":"\tget_repos"},{"line_number":67,"context_line":"\tTARGET_ROOT\u003d$TMP_MOUNT_PATH run_d root"},{"line_number":68,"context_line":"    fi"},{"line_number":69,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"AAAAPH%2F%2FhgE%3D","line":66,"updated":"2013-05-31 10:17:01.000000000","message":"This is the wrong place too hook this in! You want to run this right before we start chrooting everything. I think your docs need to describe that better too.\n\nIn fact, I think your entire patch can be a root.d hook, possibly done in tripleo-image-elements [but lets consider that later]. Rather than a single file, have elements drop a file for each git repository they want cloned, and a single root.d hook can interpret it all. We can introduce arbitrary behaviour by replacing that root.d element.","commit_id":"a798c2f157a28b3f8db43a133ad1be70515feb0d"}]}
