summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-11-24 01:10:45 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-11-24 01:10:45 -0400
commitb09c5a6a53c424f0c68187592e949cb47b0e02c5 (patch)
tree97b86510912141d60072e3a834c63bb0ff25622a
parent65e776cff0fdd03d676bb9381bb7ce58b2637903 (diff)
update
-rw-r--r--doc/design/assistant/upgrading.mdwn49
-rw-r--r--doc/design/roadmap.mdwn2
2 files changed, 50 insertions, 1 deletions
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