|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 1/2] scripts: Add script to do the repetitive bits of the release process
Hi. Thanks for looking into this. Sorry about the delay to the
review. I found it, unsent, while recovering a crashed mailreader
session...
George Dunlap writes ("[PATCH RFC 1/2] scripts: Add script to do the repetitive
bits of the release process"):
> With this script, once the main checks are out of the way, doing a
> release (either an RC or the final release) should mostly be a matter
> of executing a sequence of 4 commands given by the `help` function in
> this script.
Script is missing set -e. I'm generally not happy with the || fail
pattern, except for improving error messages. It makes it far too
easy to accidentally miss an error check. Your script has at least a
few missing error checks and I don't want to read it and try to spot
them all. Can you change this ?
> +###
> +# George's bash library core
> +###
You've cloned (and presumably not hacked) some personal library of
your own ? What's wrong with getopt(1) eg
eval "$(getopt -s bash ... "$@")"
See /usr/share/doc/util-linux/examples/getopt-parse.bash.
Although, it's not clear to me that a full-blown option parser is
a better approach than
var1=DEFAULT1
var2=DEFAULT2
for x in "$@"; do eval "$x"; done
for this script, since it will have few users.
> +function cmdline()
I think the keyword `function' here is unidiomatic shell. (I think the
brace place is too but I don't want to quibble about style.)
+ info Running "${args[0]}"
+ "${args[0]}" "${args[@]:1}" || exit 1
You should probably namespace these with an appropriate prefix, rather
than exposing every internal function as a toplevel verb.
> +function xen-make-prefix-config() {
> + $arg_parse
> +
> + # TODO: Ping drall.uk.xensource.com to see if we can reach it?
> +
> + default cache_prefix "git://drall.uk.xensource.com:9419/" ; $default_post
> +
> + perl -ne "if(/^([A-Z_]+_URL) \?= (git.*)/) { print \"\$1 ?=
> ${cache_prefix}\$2\n\"; }" Config.mk >> .config || fail "Generating .config"
> + cat .config
> +}
Maybe we can expect the caller to have this in their global git
config. I do this:
mariner:~> git-config -l | grep instead
url.git://git-cache.xs.citrite.net:9419/git://.insteadof=git://
url.git://git-cache.xs.citrite.net:9419/.insteadof=git://git-cache.xs.citrite.net:9419/
url.git://drall:9419/http://.insteadof=git://drall:9419/http://
url.git://drall:9419/https://.insteadof=git://drall:9419/https://
url.git://drall:9419/git://.insteadof=git://drall:9419/git://
mariner:~>
> +function set-tdir() {
> + if [[ -z "$tdir" || ! -e "$tdir" ]] ; then
> + info "$tdir doesn't exist, using /tmp"
> + tdir="/tmp"
> + fi
It is not OK to use /tmp/$v, because of tmpfile races. If you don't
want to use somewhere in ~ then you need to mess with mktemp.
> +function tag() {
> + $arg_parse
Overall I am surprised at how much code there is in this script. It
seems much longer than the current runes in the release checklist.
> + if [[ -n "$c" ]] ; then
> + info "Checking out commit $c"
> + git checkout $c || fail
> + else
> + local q
> + git checkout stable-$x || fail "Couldn't check out stable branch"
> + git merge || fail "Merge"
Surely we rarely want to do this, and never automatically.
> + git log -n 10
> + read -p "Enter to continue, anything else to quit: " q
Better to ask for a "y". read might return "" due to eof.
> + cvs ci -m $v || fail "cvs checkin"
> +
> + ssh mail.xenproject.org "cd /data/downloads.xenproject.org/xen.org &&
> cvs -q up -d" || fail "Deploying tarball"
Should surely read ssh downloads.xenproject.org and then it should
be a variable. Also the scriptlet could be formatted across
multiple lines (and start with set -e, rather than using &&).
Thanks,
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |