From b09c5a6a53c424f0c68187592e949cb47b0e02c5 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 24 Nov 2013 01:10:45 -0400 Subject: update --- doc/design/assistant/upgrading.mdwn | 49 +++++++++++++++++++++++++++++++++++++ doc/design/roadmap.mdwn | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 doc/design/assistant/upgrading.mdwn (limited to 'doc') diff --git a/doc/design/assistant/upgrading.mdwn b/doc/design/assistant/upgrading.mdwn new file mode 100644 index 000000000..b1be31457 --- /dev/null +++ b/doc/design/assistant/upgrading.mdwn @@ -0,0 +1,49 @@ +The assistant should support upgrading itself. + +## non-distro upgrades + +When git-annex was installed from this website, the assistant should poll +periodically (once a day or so) to see if there is a new version. +It downloads, over https, a .info file, which contains a serialized data +type containing upgrade information. The url it's downloaded from is +configured by setting `UPGRADE_LOCATION` when building git-annex on the +autobuilders. + +When a new version is found, the webapp prompts the user to start the +upgrade. (annex.autoupgrade can be set to true to upgrade w/o prompting.) + +The upgrade process is automatic, and rather tricky. The file is downloaded +using git-annex (as a regular key!), and is then unpacked into a new +directory, and the programfile updated to point to it. Then git-annex +restarts itself. + +### manifest files + +To clean up the old installation, a git-annex.MANIFEST file is looked for +in it, and the files listed, as well as empty directories, are deleted. +I don't want to accidentially delete something I didn't ship! + +## restart on upgrade + +When git-annex is installed from a proper distribution package, there is no +need for the above. But, the assistant still needs to notice when git-annex +get upgraded, and offer to restart (or automatically restart when +annex.autoupgrade is set). + +This is done using the DirWatcher, watching the directory containing the +git-annex binary. Or, in the case of a non-distro install, watching the +directory where eg git-annex.linux/ was unpacked. + +When an change is detected, restart. + +## multi-daemon upgrades + +A single system may have multiple assistant daemons running in different +repositories. + +In this case, one daemon should do the non-distro upgrade, and the rest +should notice the upgrade and restart. + +I don't want every daemon trying to download the file at once.. + +TODO Add locking to prevent that. diff --git a/doc/design/roadmap.mdwn b/doc/design/roadmap.mdwn index 2b8ccc67f..34ddf0ed5 100644 --- a/doc/design/roadmap.mdwn +++ b/doc/design/roadmap.mdwn @@ -6,7 +6,7 @@ Now in the * Month 1 [[!traillink assistant/encrypted_git_remotes]] * Month 2 [[!traillink assistant/disaster_recovery]] -* **Month 3 user-driven features and polishing** +* **Month 3 user-driven features and polishing** [[todo/direct_mode_guard]] [[assistant/upgrading]] * Month 4 improve special remote interface & git-annex enhancement contest * Month 5 [[!traillink assistant/xmpp_security]] * Month 6 Windows assistant and webapp -- cgit v1.2.3