summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-05-28 14:25:33 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-05-28 14:26:06 -0400
commit5a270415ef8ce94fee3ed1eb6ddc00f6e579dfcc (patch)
tree00019aae9f28840db1b6f3cd4e60c1fa2dfceabf
parent7a505a807b2f05046bc8d0093066a915af44279b (diff)
update
-rw-r--r--doc/design/assistant/android.mdwn64
1 files changed, 52 insertions, 12 deletions
diff --git a/doc/design/assistant/android.mdwn b/doc/design/assistant/android.mdwn
index 24791501d..e8f192748 100644
--- a/doc/design/assistant/android.mdwn
+++ b/doc/design/assistant/android.mdwn
@@ -3,6 +3,8 @@ Porting git-annex to Android will use the Android native SDK.
A hopefully small Java app will be developed, which runs the webapp
daemon, and a web browser to display it.
+[[!toc]]
+
### programs to port
These will probably need to be bundled into the Android app, unless already
@@ -11,21 +13,59 @@ available in the App Store.
* ssh (native ssh needed for scp, not a client like ConnectBot)
* rsync
* gpg
-* git (not all git commands are needed, but a core plumbing and a few like `git-add` are.)
+* git (not all git commands are needed,
+ but core plumbing and a few like `git-add` are.)
### FAT sucks
The main media partition will use some awful FAT filesystem format from
-1982 that cannot support git-annex's symlinks. Hopefully it can at least
-handle all of git's filenames. Possible approaches to this:
-
-* Keep only a bare git repo on Android. The app would then need to include
- a file browser to access the files in there, and adding a file would move
- it into the repo. Not ideal.
-* Implement [[smudge]] filters to avoid needing symlinks. Difficult.
-* Use a bare git repo but don't keep files in `annex/objects`, instead
- leave them outside the repo, and add some local mapping to find them.
- Seems best?
-* Use a `LD_PRELOAD` wrapper to do Something Crazy.
+1982 that cannot support git-annex's symlinks. (Hopefully it can at least
+handle all of git's filenames.) Possible approaches to this follow.
(May want to consider which of these would make a Windows port easier too.)
+
+#### bare git repo with file browser
+
+Keep only a bare git repo on Android. The app would then need to include
+a file browser to access the files in there, and adding a file would move
+it into the repo.
+
+Not ideal.
+
+#### implement git smudge filters
+
+See [[smudge]].
+
+Difficult. Would make git-annex generally better.
+
+#### keep files outside bare git repo
+
+Use a bare git repo but don't keep files in `annex/objects`, instead
+leave them outside the repo, and add some local mapping to find them.
+
+Problem: Would leave files unlocked to modification, which might lose a
+version git-annex dependend upon existing on the phone. (Maybe the phone
+would have to be always considered an untrusted repo, which probably
+makes sense anyway.)
+
+Problem:
+
+#### crazy `LD_PRELOAD` wrapper
+
+Need I say more? (Also, Android's linker may not even support it.)
+
+### partial content
+
+On a regular system, a reasonable simplifying assumption is that all the
+files in the folder will be synced to the system. A user might want to
+disable syncing of some subdirectories, for eg, archived files. But in
+general, things are simpler to understand and implement if all files sync.
+
+But, a phone probably cannot hold all a user's files. Indeed, it's likely
+that old files will be aggressively dropped from the phone after syncing to
+elsewhere, in order to keep enough free space on it for new files.
+
+There needs to be a way for the user to browse files not on the phone and
+request they be transferred to it. This could be done as a browser in the
+web app, or using a subdirectory full of placeholder files (not symlinks;
+see above) that start transfer of the real file when accessed.