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)
+ 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
- Distinguish from logging and reporting (so we can easily send mail
to users)
- - Remove "already migrated" cruft that will accumulate if we do small
- --limit and then increase.
- 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.
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
- - Log files that already exist should be initialized with some sort
- of separator THAT CONTAINS THE LOCATION OF THE INSTALL
- 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
- 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.
- - Log files need to have dates, since it looks like upgrades will be
- multi-day affairs
- Failed migration should report how many unmerged files there are
(so we can auto-punt if it's over a threshold)
- - Verification failures should be written to a report file, possibly
- with short HTML fingerprints so we can inspect them easily and
- numbers to look at the log files
- Let users use Wizard when ssh'ed into Scripts
- Make single user mass-migrate work when not logged in as root
repo = d.application.repository(options.srv_path)
version = calculate_newest_version(sh, repo)
if version == d.app_version.scripts_tag and not options.force:
- raise AlreadyUpgraded
+ # don't log this error
+ # XXX: maybe we should build this in as a flag to add
+ # to exceptions w/ our exception handler
+ sys.stderr.write("Traceback:\n (n/a)\nAlreadyUpgraded\n")
+ sys.exit(1)
+ logging.info("Upgrading %s" % os.getcwd())
if not options.dry_run:
perform_pre_commit(sh)
# If /dev/shm exists, it's a tmpfs and we can use it
except shell.CallError:
sh.call("git", "checkout", "-q", "master", "--")
sh.call("git", "reset", "-q", "--hard", final_commit)
+ # This is a quick sanity check to make sure we didn't completely
+ # mess up the merge
d.verifyVersion()
# Till now, all of our operations were in a tmp sandbox.
if options.dry_run: