-The Git Autoinstaller
-
-TODO NOW:
-
-- Make it faster
- - Certain classes of error will continually fail, so they should
- put in a different "seen" file which also skips them, unless
- we have some sort of gentle force
-
-- Keep my sanity when upgrading 1000 installs
- - Distinguish between errors(?)
- - Custom merge algo: absolute php.ini symlinks to relative symlinks (this
- does not seem to have been a problem in practice)
- - Custom merge algo: check if it's got extra \r's in the file,
- and dos2unix it if it does, before performing the merge
- - `vos exa` in order to check what a person's quota is. We can
- figure out roughly how big the upgrade is going to be by
- doing a size comparison of the tars: `git pull` MUST NOT
- fail, otherwise things are left conflicted, and not easy to fix.
- - Prune -7 call errors and automatically reprocess them (with a
- strike out counter of 3)--this requires better error parsing
- - Snap-in conflict resolution teaching:
- 1. View the merge conflicts after doing a short run
- 2. Identify common merge conflicts
- 3. Copypaste the conflict markers to the application. Scrub
- user-specific data; this may mean removing the entire
- upper bit which is the user-version.
- 4. Specify which section to keep. /Usually/ this means
- punting the new change, but if the top was specified
- it means we get a little more flexibility. Try to
- minimize wildcarding: those things need to be put into
- subpatterns and then reconstituted into the output.
-
-- Distinguish from logging and reporting (so we can easily send mail
- to users)
- - Logs aren't actually useful, /because/ most operations are idempotent.
- Thus, scratch logfile and make our report files more useful: error.log
- needs error information; we don't care too much about machinability.
- All report files should be overwritten on the next run, since we like
- using --limit to incrementally increase the number of things we run. Note
- that if we add soft ignores, you /do/ lose information, so there needs
- to be some way to also have the soft ignore report a "cached error"
- - Report the identifier number at the beginning of all of the stdout logs
- - Don't really care about having the name in the logfile name, but
- have a lookup txt file
- - Figure out a way of collecting blacklist data from .scripts/blacklisted
- and aggregate it together
- - Failed migrations should be wired to have wizard commands in them
- automatically log to the relevant file. In addition, the seen file
- should get updated when one of them gets fixed.
- - Failed migration should report how many unmerged files there are
- (so we can auto-punt if it's over a threshold)
-
-- Let users use Wizard when ssh'ed into Scripts
- - Make single user mass-migrate work when not logged in as root
-
-- Make the rest of the world use Wizard
- - Make parallel-find.pl use `sudo -u username git describe --tags`
- to determine version. Make parallel-find.pl have this have greater
- precedence. This also means, however, that we get
- full mediawiki-1.2.3-2-abcdef names (Have patch, pending testing and commit)
- - Make deployed installer use 'wizard install' /or/ do a migration
- after doing a normal install (the latter makes it easier
- for mass-rollbacks).
-
-- Pre-emptively check if daemon/scripts-security-upd
- is not on scripts-security-upd list (/mit/moira/bin/blanche)
-
-- Redo Wordpress conversion, with an eye for automating everything
- possible (such as downloading the tarball and unpacking)
+- Make scripts_plugin email heuristic less stupid, or maybe even ask for an
+ email. This is tracked as Scripts #224 (this issue) and Scripts #193
+ (tracking a contact address).
+- Current parallelization probably does a bad job distributing
+ working tasks over different components of the pipeline. Fix
+ this by adding jitter? Trying to smear things out?
+
+- Test head doesn't do quite the right thing with version numbers
+ (shouldn't git describe, instead should give a version infinitely
+ in the future.)
+- Strategy introspection and disabling.
+- prepare-config (and others) create .wizard dir even
+ when not strictly necessary
+- Bug out immediately if tags are not present in the master tip
+ of the repository
+- pending doesn't seem to get written out properly sometimes (or
+ it's being deleted); this makes it hard to --continue on the
+ event of an upgrade failure. Also, we seem to bounce back to
+ the production copy to check pending even when we run --continue
+ from the working dir.
+- Newline checks are /really really/ expensive on AFS; see if
+ we can minimize them or something. Right now, we're testing
+ a fix where we don't clone with --shared.
+- Replace .split("\n") with .splitlines()
+
+- Need to fix existing repo history? (not adding extra commits;
+ that'll be more difficult)
+
+ git rebase -i -p --root --onto COMMITID
+
+ This won't work if you need to change the very root of the
+ repository. You'll probably end up with conflicts and have
+ to manually resolve everything afterwards.
+
+ But usually you won't need --root --onto unless you really
+ fucked up the pristine branch. If you just need to change
+ the scripts spine,
+
+ git rebase -i -p COMMITID
+
+ should work.
+
+- [SCRIPTS] MediaWiki 1.6.7, 1.9.3 and 1.10.0
+
+- geofft comments:
+ "Connection to scripts.mit.edu closed" is confusing (tracked #393)
+ the URL should be easier to copy and paste, which means we should
+ move it out of dialog
+ We should ... upgrade our autoinstaller
+ Apparently installing WordPress updates or themes never indicates
+ completion, and just says "Downloading..", and you have to guess
+ when it's done
+
+- [SCRIPTS] phpBB
+ - phpBB or phpbb? (right now it's the former)
+ - need an upgrade story; srv needs more versions
+ - need a story about install/ contrib/
+
+- Give users a "certificate" of their merge, which they can
+ use to reuse that merge commit if something unrelated fails.
+
+- Human readable quota output
+- Nice error message on --continue if you forgot to git add your
+ resolved file (look for conflict markers)
+- The merge interface is a kind of major UI disaster; you won't
+ be able to use it unless you know how Git works. Also, the
+ merges can be quite difficult to resolve if upstream has made
+ large formatting changes like reindenting. We may also consider
+ providing a --rebase option, which seems to do better when
+ big problems like this show up.
+
+- Better mass-* support for just one user (this includes letting
+ a user mass upgrade just his own autoinstalls)
+
+- Show progress or something when upgrading
+- Allow 'sticky notes' for future upgraders to notice
+- .wizard/url semantics are subtly wrong: in particular, if we
+ explicitly configure a URL at install, we should be able to
+ detect this URL as baked in from the configuration
+
+- Rerere support doesn't actually work
+- "Version 3.0.0 doesn't exist; did you mean 3.0?"
+- Be a little more intelligent when perform web checks; for example,
+ if we get a forbidden message, that probably means we go the right
+ address but it's blocked off; if we get a 404 message, that probably
+ means wrong address. Account Unknown is something particularly good
+ to check for.
+- Wordpress module can do something intelligent if we get redirected
+ to the installation page.
+- wizardResolve* files seem to get left in tmp en-mass, and we don't
+ know why.
+
+- [SCRIPTS] Wordpress needs to get rid of the siteurl hack, so that it
+ actually has a fully-qualified URL http://foo.scripts.mit.edu/blah.
+ This will also fix Wordpress's cron functionality. We should be
+ careful not to write over users who are on vhosts. We should figure
+ out who is still on twiddle paths. We should make sure the redirect
+ is handled correctly.
+
+- Remerges aren't reflected in the parent files, so `git diff` output is
+ spurious. Not sure how to fix this w/o tree hackery.
+- Sometimes users remove files. Well, if those files change, they automatically
+ get marked as conflicted. Maybe we should say for certain files "if they're
+ gone, they're gone forever"? What is the proper resolution?
+
+- Parse output HTML for class="error" and give those errors back to the user (done),
+ then boot them back into configure so they can enter in something different
+
+- [SCRIPTS] If you try to do an install on scripts w/o sql, it will sign
+ you up but fail to write the sql.cnf file. This sucks.
+
+- [SCRIPTS] Web application for installing autoinstalls has a hard
+ problem with credentials (as well as installations that are not
+ conducted on an Athena machine.) We have some crazy ideas involving a
+ signed Java applet that uses jsch to SSH into athena.dialup and
+ perform operations.