git-annex 4.20130521 → 4.20130521.1
raw patch · 254 files changed
+25988/−1559 lines, 254 filesdep ~yesod-defaultbinary-added
Dependency ranges changed: yesod-default
Files
- Assistant/Install/AutoStart.o binary
- Assistant/Install/Menu.o binary
- Build/BundledPrograms.o binary
- Build/Configure.o binary
- Build/DesktopFile.o binary
- Build/EvilSplicer.o binary
- Build/InstallDesktopFile.o binary
- Build/Standalone.o binary
- Build/SysConfig.o binary
- Build/TestConfig.o binary
- Config/Files.o binary
- Locations/UserConfig.o binary
- Setup.o binary
- Utility/Applicative.o binary
- Utility/CopyFile.o binary
- Utility/Directory.o binary
- Utility/Env.o binary
- Utility/Exception.o binary
- Utility/ExternalSHA.o binary
- Utility/FileSystemEncoding.o binary
- Utility/FreeDesktop.o binary
- Utility/Misc.o binary
- Utility/Monad.o binary
- Utility/OSX.o binary
- Utility/PartialPrelude.o binary
- Utility/Path.o binary
- Utility/Process.o binary
- Utility/SafeCommand.o binary
- Utility/TempFile.o binary
- Utility/Tmp.o binary
- Utility/UserInfo.o binary
- debian/files +1/−0
- debian/git-annex.debhelper.log +47/−0
- debian/git-annex.substvars +2/−0
- debian/git-annex/DEBIAN/conffiles +1/−0
- debian/git-annex/DEBIAN/control +24/−0
- debian/git-annex/DEBIAN/md5sums +232/−0
- debian/git-annex/etc/xdg/autostart/git-annex.desktop +9/−0
- debian/git-annex/usr/bin/git-annex too large to diff
- debian/git-annex/usr/bin/git-annex-shell too large to diff
- debian/git-annex/usr/share/applications/git-annex.desktop +9/−0
- debian/git-annex/usr/share/doc-base/git-annex +9/−0
- debian/git-annex/usr/share/doc/git-annex/NEWS.Debian.gz binary
- debian/git-annex/usr/share/doc/git-annex/changelog.gz binary
- debian/git-annex/usr/share/doc/git-annex/copyright +783/−0
- debian/git-annex/usr/share/doc/git-annex/html/assistant.html +215/−0
- debian/git-annex/usr/share/doc/git-annex/html/assistant/addsshserver.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/buddylist.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/cloudnudge.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/combinerepos.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/controlmenu.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/crashrecovery.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/dashboard.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/example.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/iaitem.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/logs.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/makerepo.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/menu.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/osx-app.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/preferences.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/quickstart.html +158/−0
- debian/git-annex/usr/share/doc/git-annex/html/assistant/release_notes.html +573/−0
- debian/git-annex/usr/share/doc/git-annex/html/assistant/repogroup.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/repogroups.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/repositories.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/rsync.net.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/running.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/thanks.html +379/−0
- debian/git-annex/usr/share/doc/git-annex/html/assistant/thumbnail.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/xmpp.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/xmppnudge.png binary
- debian/git-annex/usr/share/doc/git-annex/html/assistant/xmpppairingend.png binary
- debian/git-annex/usr/share/doc/git-annex/html/backends.html +285/−0
- debian/git-annex/usr/share/doc/git-annex/html/bare_repositories.html +223/−0
- debian/git-annex/usr/share/doc/git-annex/html/coding_style.html +225/−0
- debian/git-annex/usr/share/doc/git-annex/html/comments.html +480/−0
- debian/git-annex/usr/share/doc/git-annex/html/contact.html +137/−0
- debian/git-annex/usr/share/doc/git-annex/html/copies.html +178/−0
- debian/git-annex/usr/share/doc/git-annex/html/design.html +132/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant.html +757/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant/OSX.html +196/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant/cloud.html +324/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant/deltas.html +176/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant/polls.html +375/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant/webapp.html +344/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/assistant/xmpp.html +373/−0
- debian/git-annex/usr/share/doc/git-annex/html/design/encryption.html +524/−0
- debian/git-annex/usr/share/doc/git-annex/html/direct_mode.html +357/−0
- debian/git-annex/usr/share/doc/git-annex/html/download.html +246/−0
- debian/git-annex/usr/share/doc/git-annex/html/encryption.html +240/−0
- debian/git-annex/usr/share/doc/git-annex/html/favicon.ico binary
- debian/git-annex/usr/share/doc/git-annex/html/feeds.html +133/−0
- debian/git-annex/usr/share/doc/git-annex/html/footer/column_a.html +131/−0
- debian/git-annex/usr/share/doc/git-annex/html/footer/column_b.html +149/−0
- debian/git-annex/usr/share/doc/git-annex/html/future_proofing.html +165/−0
- debian/git-annex/usr/share/doc/git-annex/html/git-annex-shell.html +248/−0
- debian/git-annex/usr/share/doc/git-annex/html/git-annex.html +1174/−0
- debian/git-annex/usr/share/doc/git-annex/html/git-union-merge.html +165/−0
- debian/git-annex/usr/share/doc/git-annex/html/how_it_works.html +167/−0
- debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/ikiwiki.js +54/−0
- debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/relativedate.js +75/−0
- debian/git-annex/usr/share/doc/git-annex/html/ikiwiki/toggle.js +29/−0
- debian/git-annex/usr/share/doc/git-annex/html/index.html +306/−0
- debian/git-annex/usr/share/doc/git-annex/html/install.html +219/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/Android.html +172/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/ArchLinux.html +184/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/Debian.html +354/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/Fedora.html +169/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/FreeBSD.html +130/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/Gentoo.html +131/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/NixOS.html +135/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/OSX.html +913/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/Ubuntu.html +161/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/cabal.html +149/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/fromscratch.html +213/−0
- debian/git-annex/usr/share/doc/git-annex/html/install/openSUSE.html +131/−0
- debian/git-annex/usr/share/doc/git-annex/html/internals.html +264/−0
- debian/git-annex/usr/share/doc/git-annex/html/internals/hashing.html +159/−0
- debian/git-annex/usr/share/doc/git-annex/html/internals/key_format.html +155/−0
- debian/git-annex/usr/share/doc/git-annex/html/license.html +140/−0
- debian/git-annex/usr/share/doc/git-annex/html/license/AGPL.gz binary
- debian/git-annex/usr/share/doc/git-annex/html/license/GPL.gz binary
- debian/git-annex/usr/share/doc/git-annex/html/license/LGPL.gz binary
- debian/git-annex/usr/share/doc/git-annex/html/links/key_concepts.html +130/−0
- debian/git-annex/usr/share/doc/git-annex/html/links/other_stuff.html +129/−0
- debian/git-annex/usr/share/doc/git-annex/html/links/the_details.html +131/−0
- debian/git-annex/usr/share/doc/git-annex/html/location_tracking.html +174/−0
- debian/git-annex/usr/share/doc/git-annex/html/logo-bw.svg +60/−0
- debian/git-annex/usr/share/doc/git-annex/html/logo.png binary
- debian/git-annex/usr/share/doc/git-annex/html/logo.svg +77/−0
- debian/git-annex/usr/share/doc/git-annex/html/logo_small.png binary
- debian/git-annex/usr/share/doc/git-annex/html/meta.html +151/−0
- debian/git-annex/usr/share/doc/git-annex/html/news.html +127/−0
- debian/git-annex/usr/share/doc/git-annex/html/not.html +507/−0
- debian/git-annex/usr/share/doc/git-annex/html/preferred_content.html +631/−0
- debian/git-annex/usr/share/doc/git-annex/html/related_software.html +140/−0
- debian/git-annex/usr/share/doc/git-annex/html/repomap.png binary
- debian/git-annex/usr/share/doc/git-annex/html/scalability.html +171/−0
- debian/git-annex/usr/share/doc/git-annex/html/sidebar.html +133/−0
- debian/git-annex/usr/share/doc/git-annex/html/sitemap.html +429/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes.html +573/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/S3.html +451/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/bup.html +461/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/glacier.html +179/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/hook.html +266/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/rsync.html +291/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/web.html +141/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/webdav.html +465/−0
- debian/git-annex/usr/share/doc/git-annex/html/special_remotes/xmpp.html +225/−0
- debian/git-annex/usr/share/doc/git-annex/html/summary.html +129/−0
- debian/git-annex/usr/share/doc/git-annex/html/sync.html +302/−0
- debian/git-annex/usr/share/doc/git-annex/html/templates/bare.tmpl +1/−0
- debian/git-annex/usr/share/doc/git-annex/html/templates/bugtemplate.html +137/−0
- debian/git-annex/usr/share/doc/git-annex/html/templates/walkthrough.tmpl +2/−0
- debian/git-annex/usr/share/doc/git-annex/html/testimonials.html +163/−0
- debian/git-annex/usr/share/doc/git-annex/html/tips.html +390/−0
- debian/git-annex/usr/share/doc/git-annex/html/tips/assume-unstaged.html +188/−0
- debian/git-annex/usr/share/doc/git-annex/html/tips/emacs_integration.html +140/−0
- debian/git-annex/usr/share/doc/git-annex/html/tips/using_Amazon_S3.html +239/−0
- debian/git-annex/usr/share/doc/git-annex/html/transferring_data.html +148/−0
- debian/git-annex/usr/share/doc/git-annex/html/trust.html +198/−0
- debian/git-annex/usr/share/doc/git-annex/html/upgrades.html +227/−0
- debian/git-annex/usr/share/doc/git-annex/html/upgrades/SHA_size.html +189/−0
- debian/git-annex/usr/share/doc/git-annex/html/use_case/Alice.html +144/−0
- debian/git-annex/usr/share/doc/git-annex/html/use_case/Bob.html +153/−0
- debian/git-annex/usr/share/doc/git-annex/html/users.html +148/−0
- debian/git-annex/usr/share/doc/git-annex/html/users/chrysn.html +128/−0
- debian/git-annex/usr/share/doc/git-annex/html/users/fmarier.html +129/−0
- debian/git-annex/usr/share/doc/git-annex/html/users/gebi.html +121/−0
- debian/git-annex/usr/share/doc/git-annex/html/users/joey.html +122/−0
- debian/git-annex/usr/share/doc/git-annex/html/videos.html +275/−0
- debian/git-annex/usr/share/doc/git-annex/html/videos/FOSDEM2012.html +123/−0
- debian/git-annex/usr/share/doc/git-annex/html/videos/LCA2013.html +125/−0
- debian/git-annex/usr/share/doc/git-annex/html/walkthrough.html +607/−0
- debian/git-annex/usr/share/doc/git-annex/html/walkthrough/backups.html +148/−0
- debian/git-annex/usr/share/doc/git-annex/html/walkthrough/more.html +123/−0
- debian/git-annex/usr/share/doc/git-annex/html/walkthrough/syncing.html +146/−0
- debian/git-annex/usr/share/doc/git-annex/html/walkthrough/unused_data.html +205/−0
- debian/git-annex/usr/share/doc/git-annex/html/walkthrough/using_bup.html +164/−0
- debian/git-annex/usr/share/man/man1/git-annex-shell.1.gz binary
- debian/git-annex/usr/share/man/man1/git-annex.1.gz binary
- doc/bugs/3.20121113_build_error___39__not_in_scope_getAddBoxComR__39__.mdwn +0/−33
- doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn +0/−16
- doc/bugs/Huge_annex_out_of_memory_on_switch_to_indirect_mode_and_status.mdwn +0/−61
- doc/bugs/Is_there_any_way_to_rate_limit_uploads_to_an_S3_backend__63__.mdwn +0/−19
- doc/bugs/Lost_S3_Remote/comment_1_6e80e6db6671581d471fc9a54181c04c._comment +0/−10
- doc/bugs/Lost_S3_Remote/comment_2_c99c65882a3924f4890e500f9492b442._comment +0/−8
- doc/bugs/Lost_S3_Remote/comment_3_1e434d5a20a692cd9dc7f6f8f20f30dd._comment +0/−8
- doc/bugs/More_sync__39__ing_weirdness_with_the_assistant_branch_on_OSX.mdwn +0/−15
- doc/bugs/OSX_app_issues/comment_10_54d8f3e429df9a9958370635c890abf0._comment +0/−11
- doc/bugs/OSX_app_issues/comment_10_6d23232fbb15d0ee3ab532a4884f81ed._comment +0/−10
- doc/bugs/OSX_app_issues/comment_11_5db2baa771fd01a284eac8a16c1c8c67._comment +0/−8
- doc/bugs/OSX_app_issues/comment_11_bb2ceb95a844449795addee6986d0763._comment +0/−26
- doc/bugs/OSX_app_issues/comment_12_62170597c7f441d84d48986857998858._comment +0/−10
- doc/bugs/OSX_app_issues/comment_12_f3bc5a4e4895ac9351786f0bdd8005ba._comment +0/−11
- doc/bugs/OSX_app_issues/comment_2_fd560811c57df5cbc3976639642b8b19._comment +0/−8
- doc/bugs/OSX_app_issues/comment_7_93e0bb53ac2d7daef53426fbdc5f92d9._comment +0/−15
- doc/bugs/OSX_app_issues/comment_8_141eac2f3fb25fe18b4268786f00ad6a._comment +0/−8
- doc/bugs/OSX_app_issues/comment_8_f4d5b2645d7f29b80925159efb94a998._comment +0/−8
- doc/bugs/OSX_app_issues/comment_9_2e6dfca0fd8df04066769653724eae28._comment +0/−17
- doc/bugs/OSX_app_issues/comment_9_e1bbe83a1b9a7385ed6d443d0cc22bc7._comment +0/−18
- doc/bugs/Rsync_encrypted_remote_asks_for_ssh_key_password_for_each_file.mdwn +0/−30
- doc/bugs/Switching_from_indirect_mode_to_direct_mode_breaks_duplicates.mdwn +0/−30
- doc/bugs/creating_a_plain_directory_where_a_mountpoint_should_have_been.mdwn +0/−27
- doc/bugs/git-annex_has_issues_with_git_when_staging__47__commiting_logs.mdwn +0/−34
- doc/bugs/git-annex_on_crippled_filesystem_can_still_failed_due_to_case_.mdwn +0/−32
- doc/bugs/git_annex_gets_confused_about_remotes_with_dots_in_their_names.mdwn +0/−34
- doc/bugs/git_defunct_processes___40__child_of_git-annex_assistant__41__.mdwn +0/−34
- doc/bugs/wishlist:_more_descriptive_commit_messages_in_git-annex_branch.mdwn +0/−39
- doc/design/assistant/OSX/comment_1_9290f6e6f265e906b08631224392b7bf._comment +0/−14
- doc/design/assistant/blog/day_81__enabling_pre-existing_special_remotes.mdwn +0/−34
- doc/forum/How_to_prevent_the_assistant_from_downloading_all_data__63__.mdwn +0/−9
- doc/forum/Syncronisation_of_syncronisation_between_3_repositories__63__.mdwn +0/−11
- doc/forum/mistakenly_checked___42__files__42___into_an_annex.__bummer..mdwn +0/−3
- doc/forum/switching_to__47__from_direct_mode_while_assistant_is_running.mdwn +0/−2
- doc/news/version_4.20130323.mdwn +37/−0
- doc/news/version_4.20130521.mdwn +0/−24
- doc/special_remotes/bup/comment_10_f78c1ed97d2e4c6ebffaa7482cfe0c9b._comment +0/−23
- doc/special_remotes/bup/comment_11_b53bceb0058acf4d1ab12ea4853ee443._comment +0/−24
- doc/special_remotes/bup/comment_12_65d923226cf6120349d807c5c60f640c._comment +0/−8
- doc/special_remotes/bup/comment_1_96179a003da4444f6fc08867872cda0a._comment +0/−43
- doc/special_remotes/bup/comment_2_612b038c15206f9f3c2e23c7104ca627._comment +0/−12
- doc/special_remotes/bup/comment_3_1186def82741ddab1ade256fb2e59e6f._comment +0/−17
- doc/special_remotes/bup/comment_4_7d22a805dd2914971e7ca628ceea69be._comment +0/−10
- doc/special_remotes/bup/comment_6_5942333cde09fd98e26c4f1d389cb76f._comment +0/−10
- doc/special_remotes/bup/comment_7_cb1a0d3076e9d06e7a24204478f6fa98._comment +0/−10
- doc/special_remotes/bup/comment_8_4cbc67e5911748d13cee3c483d7ece8a._comment +0/−12
- doc/special_remotes/bup/comment_9_ca7096a759961af375e6bd49663b45b3._comment +0/−10
- doc/special_remotes/hook/comment_1_6a74a25891974a28a8cb42b87cb53c26._comment +0/−32
- doc/special_remotes/xmpp/comment_1_568247938929a2934e8198fca80b7184._comment +0/−11
- doc/special_remotes/xmpp/comment_2_9fc3f512020b7eb2591d6b7b2e8de2d7._comment +0/−10
- doc/tips/assume-unstaged/comment_1_44abd811ef79a85e557418e17a3927be._comment +0/−10
- doc/tips/using_Amazon_S3/comment_1_666a26f95024760c99c627eed37b1966._comment +0/−8
- doc/tips/using_Amazon_S3/comment_2_f5a0883be7dbb421b584c6dc0165f1ef._comment +0/−8
- doc/todo/Use_a_remote_as_a_sharing_site_for_files_with_obfuscated_URLs.mdwn +0/−7
- doc/todo/cache_key_info/comment_1_578df1b3b2cbfdc4aa1805378f35dc48._comment +0/−11
- doc/todo/union_mounting/comment_1_cb08435812dd7766de26199c73f38e8b._comment +0/−8
- doc/todo/union_mounting/comment_2_240b1736f6bd4fbf87c372d3a46e661b._comment +0/−9
- doc/todo/windows_support/comment_1_3cc26ad8101a22e95a8c60cf0c4dedcc._comment +0/−10
- doc/todo/windows_support/comment_2_8acae818ce468967499050bbe3c532ea._comment +0/−12
- doc/todo/windows_support/comment_3_bd0a12f4c9b884ab8a06082842381a01._comment +0/−8
- doc/todo/windows_support/comment_4_ad06b98b2ddac866ffee334e41fee6a8._comment +0/−8
- doc/todo/windows_support/comment_5_444fc7251f57db241b6e80abae41851c._comment +0/−10
- doc/todo/windows_support/comment_6_34f1f60b570c389bb1e741b990064a7e._comment +0/−8
- doc/todo/wishlist:_git_annex_put_--_same_as_get__44___but_for_defaults.mdwn +0/−17
- git-annex.cabal +6/−5
- standalone/android/haskell-patches/gsasl_0.3.5-0001-link-with-libgsasl.patch +0/−25
- standalone/android/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch +0/−71
- standalone/android/haskell-patches/shakespeare-js_1.1.2_0001-remove-TH.patch +0/−308
- standalone/android/haskell-patches/socks_0.4.2_0001-remove-IPv6-stuff.patch +0/−107
- standalone/android/icons/drawable-hdpi/ic_stat_service_notification_icon.png binary
- standalone/android/icons/drawable-ldpi/ic_stat_service_notification_icon.png binary
- standalone/android/icons/drawable-mdpi/ic_stat_service_notification_icon.png binary
- standalone/android/start binary
binary file changed (3364 → 3364 bytes)
binary file changed (3216 → 3216 bytes)
binary file changed (7888 → absent bytes)
binary file changed (53312 → 50336 bytes)
binary file changed (13604 → 13604 bytes)
binary file changed (160444 → absent bytes)
binary file changed (2536 → 2536 bytes)
binary file changed (13632 → absent bytes)
binary file changed (4860 → absent bytes)
binary file changed (33088 → 32380 bytes)
binary file changed (15108 → 13076 bytes)
binary file changed (absent → 21632 bytes)
binary file changed (10440 → 10440 bytes)
binary file changed (1308 → 1308 bytes)
binary file changed (5528 → absent bytes)
binary file changed (15500 → 15324 bytes)
binary file changed (3664 → absent bytes)
binary file changed (8648 → 7228 bytes)
binary file changed (11768 → absent bytes)
binary file changed (5672 → 5668 bytes)
binary file changed (21064 → 21064 bytes)
binary file changed (19232 → 19232 bytes)
binary file changed (7376 → 7376 bytes)
binary file changed (8808 → 8808 bytes)
binary file changed (5448 → 5456 bytes)
binary file changed (24540 → 23740 bytes)
binary file changed (43288 → 42568 bytes)
binary file changed (28136 → 28136 bytes)
binary file changed (absent → 11404 bytes)
binary file changed (12272 → absent bytes)
binary file changed (6304 → 6328 bytes)
@@ -0,0 +1,1 @@+git-annex_4.20130501~bpo70+1_i386.deb utils optional
@@ -0,0 +1,47 @@+dh_auto_configure+dh_auto_build+dh_auto_test+dh_prep+dh_installdirs+dh_auto_install+dh_install+dh_installdocs+dh_installchangelogs+dh_installexamples+dh_installman+dh_installcatalogs+dh_installcron+dh_installdebconf+dh_installemacsen+dh_installifupdown+dh_installinfo+dh_installinit+dh_installmenu+dh_installmime+dh_installmodules+dh_installlogcheck+dh_installlogrotate+dh_installpam+dh_installppp+dh_installudev+dh_installwm+dh_installxfonts+dh_installgsettings+dh_bugfiles+dh_ucf+dh_lintian+dh_gconf+dh_icons+dh_perl+dh_usrlocal+dh_link+dh_compress+dh_fixperms+dh_strip+dh_makeshlibs+dh_shlibdeps+dh_installdeb+dh_gencontrol+dh_md5sums+dh_builddeb+dh_builddeb
@@ -0,0 +1,2 @@+shlibs:Depends=libc6 (>= 2.3.6-6~), libc6 (>= 2.7), libffi5 (>= 3.0.4), libgmp10, libgnutls26 (>= 2.12.17-0), libgsasl7 (>= 1.4), libidn11 (>= 1.13), libxml2 (>= 2.7.4), libyaml-0-2, zlib1g (>= 1:1.1.4)+misc:Depends=
@@ -0,0 +1,1 @@+/etc/xdg/autostart/git-annex.desktop
@@ -0,0 +1,24 @@+Package: git-annex+Version: 4.20130501~bpo70+1+Architecture: i386+Maintainer: Joey Hess <joeyh@debian.org>+Installed-Size: 33901+Depends: libc6 (>= 2.7), libffi5 (>= 3.0.4), libgmp10, libgnutls26 (>= 2.12.17-0), libgsasl7 (>= 1.4), libidn11 (>= 1.13), libxml2 (>= 2.7.4), libyaml-0-2, zlib1g (>= 1:1.1.4), git (>= 1:1.7.7.6), rsync, wget, curl, openssh-client (>= 1:5.6p1)+Recommends: lsof, gnupg, bind9-host+Suggests: graphviz, bup, libnss-mdns+Section: utils+Priority: optional+Homepage: http://git-annex.branchable.com/+Description: manage files with git, without checking their contents into git+ git-annex allows managing files with git, without checking the file+ contents into git. While that may seem paradoxical, it is useful when+ dealing with files larger than git can currently easily handle, whether due+ to limitations in memory, time, or disk space.+ .+ Even without file content tracking, being able to manage files with git,+ move files around and delete files with versioned directory trees, and use+ branches and distributed clones, are all very handy reasons to use git. And+ annexed files can co-exist in the same git repository with regularly+ versioned files, which is convenient for maintaining documents, Makefiles,+ etc that are associated with annexed files but that benefit from full+ revision control.
@@ -0,0 +1,232 @@+de541a7dde3855a51ed868c8863a7ef3 usr/bin/git-annex+938c1214dca79e4e9a876a7b52504dd8 usr/share/applications/git-annex.desktop+2ef419c4a13022ede5561da5b1914f62 usr/share/doc-base/git-annex+008556d24900b7f08cfeea8da49cd464 usr/share/doc/git-annex/NEWS.Debian.gz+03d9278f03320319db5f95f0376023e6 usr/share/doc/git-annex/changelog.gz+dfc4775bd2a7d941b819e734ec9b7e73 usr/share/doc/git-annex/copyright+685b88e3fc5b468399c86462027cc3dd usr/share/doc/git-annex/html/assistant.html+6713a86e655998384c46fb7460988b57 usr/share/doc/git-annex/html/assistant/addsshserver.png+ebcfa646439b9df0b54cb7bd31ae20ec usr/share/doc/git-annex/html/assistant/android/appinstalled.png+9fd3bdafbdc2f5d4266bd313f9b655e8 usr/share/doc/git-annex/html/assistant/android/install.png+e2677873f5ac5d5c97e82e361aca711a usr/share/doc/git-annex/html/assistant/android/terminal.png+163a4e32f8a84b937607c2a8ac649793 usr/share/doc/git-annex/html/assistant/archival_walkthrough.html+07f39d17b252a39776f1bd2dbd9cda90 usr/share/doc/git-annex/html/assistant/buddylist.png+cb7d4d4757a8e6989a77a843e4f867d2 usr/share/doc/git-annex/html/assistant/cloudnudge.png+e8ca3cd2f32161a83ac41bdcd93fdd56 usr/share/doc/git-annex/html/assistant/combinerepos.png+5013fbf9e1bf92e53a1e70bfcc2b222f usr/share/doc/git-annex/html/assistant/controlmenu.png+95ce2bd3ae2466242e470396a99b096a usr/share/doc/git-annex/html/assistant/crashrecovery.png+3494483bd7625aad928c02dbd75507f4 usr/share/doc/git-annex/html/assistant/dashboard.png+a1518dea95aab7eac446bb3d64f7f024 usr/share/doc/git-annex/html/assistant/deleterepository.png+4e6daf0f77faf92c456f93431e0dad32 usr/share/doc/git-annex/html/assistant/example.png+0ad9c7659d23eddbd5bb190a067e165c usr/share/doc/git-annex/html/assistant/iaitem.png+3f599d408676ea4ccd1ee886f31d43ff usr/share/doc/git-annex/html/assistant/inotify_max_limit_alert.png+7a997d502b767e61e20e0b32074378f7 usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough.html+17b6d14b4f3225c9dcf2cbab8a754f8f usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/addrepository.png+e6d3761647be986783f96722e9243098 usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/pairing.png+479f35f53a4bdf29d849a90ae13a5196 usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/pairrequest.png+ebf723435dae6e2c94846a8a30f77bd5 usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/secret.png+1a1cec71fad74012c37ebd7c6ba30288 usr/share/doc/git-annex/html/assistant/local_pairing_walkthrough/secretempty.png+6410869a6b0d0d359f59367f9f928098 usr/share/doc/git-annex/html/assistant/logs.png+bdc41ce7b9f8b67552614bc36aad9080 usr/share/doc/git-annex/html/assistant/makerepo.png+4f5f4f7879d518cf5a759110dfef4ec5 usr/share/doc/git-annex/html/assistant/menu.png+34fc0ab10ba4736b0e28a94784ca8885 usr/share/doc/git-annex/html/assistant/osx-app.png+2e98430eef3a73aa2c6537727e2e6b2a usr/share/doc/git-annex/html/assistant/preferences.png+7f0aa514b0d472fcf8b52c35b7932b87 usr/share/doc/git-annex/html/assistant/quickstart.html+1166f2c729a43b119df50ee9a7e8f00c usr/share/doc/git-annex/html/assistant/release_notes.html+cf5a9f6a60124b7e3f1cf7e8e2856513 usr/share/doc/git-annex/html/assistant/remote_sharing_walkthrough.html+c3b25c8a79014b28a0487a1812be6a86 usr/share/doc/git-annex/html/assistant/repogroup.png+52ec95dc090b11a246dd1026e7cd86fc usr/share/doc/git-annex/html/assistant/repogroups.png+9fc46bce83b5019646e4853065fec9a2 usr/share/doc/git-annex/html/assistant/repositories.png+dcddb85e4ec4dda2ec030ca4307d5bfd usr/share/doc/git-annex/html/assistant/rsync.net.png+2ec2114e89c70340ea64d582396a2773 usr/share/doc/git-annex/html/assistant/running.png+7da8ea5c576b3dc7c3240e6a84ef1d7f usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough.html+5cef90a6c7681efe04db89e4cabb9df1 usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/buddylist.png+91e3719633fb46bd36b7330d4bb2a1e2 usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/pairing.png+db44e11831135b45d578ac6e51b2fe71 usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/repolist.png+4f28f7cdc46d08a70c99b04901f5abd2 usr/share/doc/git-annex/html/assistant/share_with_a_friend_walkthrough/xmppalert.png+106b8cb561294f98e492ac5c0ae489ba usr/share/doc/git-annex/html/assistant/thanks.html+3904b3966640d84f23bcf9c3d3cc3051 usr/share/doc/git-annex/html/assistant/thumbnail.png+2f8c80fcf1340e81979cbd4e9aae951f usr/share/doc/git-annex/html/assistant/xmpp.png+f07e8d8fcc01836de290c0fbc3ea0c92 usr/share/doc/git-annex/html/assistant/xmppnudge.png+eef6deb5ab3028057671f5ff74d1cb10 usr/share/doc/git-annex/html/assistant/xmpppairingend.png+33d16b35775bc1a0697794dee498f5db usr/share/doc/git-annex/html/backends.html+e0d04b4e2fb21e13ba7b83602921d83a usr/share/doc/git-annex/html/bare_repositories.html+df81f75574ec5a0b107f5e7b7136d3cc usr/share/doc/git-annex/html/coding_style.html+73bb5de78b66e09171edd4775eb7fc3e usr/share/doc/git-annex/html/comments.html+35e904ed2bb14883d75763158ab77908 usr/share/doc/git-annex/html/contact.html+55f64a075c5f293966b40649d93d1b87 usr/share/doc/git-annex/html/copies.html+7ff4b3b6c358740420518237ffb2c651 usr/share/doc/git-annex/html/design.html+ceb6d65c9f4521793852dd4fe45ecc03 usr/share/doc/git-annex/html/design/assistant.html+4f32362b61fd1837e70b758c2c8646ea usr/share/doc/git-annex/html/design/assistant/OSX.html+30840f8a6c21709ccdfb2a04de4701c5 usr/share/doc/git-annex/html/design/assistant/android.html+c1046a6779a98c7cf9e186b6b187f27b usr/share/doc/git-annex/html/design/assistant/cloud.html+76303d04cb82cf9a7e7dcef9e6d3b072 usr/share/doc/git-annex/html/design/assistant/configurators.html+39b89dd3a4ba2863b72d17467f6089d9 usr/share/doc/git-annex/html/design/assistant/deltas.html+beab663e881e6629074acaa1dafdf832 usr/share/doc/git-annex/html/design/assistant/desymlink.html+2f472ddacbd08503b893713d8673c149 usr/share/doc/git-annex/html/design/assistant/encrypted_git_remotes.html+921e6f1eb4fab8c1c780dc5ffaec090c usr/share/doc/git-annex/html/design/assistant/inotify.html+cc3266ed19ea93ece3d2eea98364ccc7 usr/share/doc/git-annex/html/design/assistant/leftovers.html+d0480fc2188d5d289dd5ed6c9448d9cc usr/share/doc/git-annex/html/design/assistant/more_cloud_providers.html+4b0644dbf82de4cdcd81e0e27aa28884 usr/share/doc/git-annex/html/design/assistant/pairing.html+4ed1c0405641b159d7cd3cfacaf7824c usr/share/doc/git-annex/html/design/assistant/partial_content.html+98f5246055208f9bb0d1f6289ca900b3 usr/share/doc/git-annex/html/design/assistant/polls.html+20f74a5ee63751559f4d1dc63a3a351a usr/share/doc/git-annex/html/design/assistant/polls/Android.html+b2406103797b363cb1685b556b836295 usr/share/doc/git-annex/html/design/assistant/polls/Android_default_directory.html+22f9d2e081386257200450e101730701 usr/share/doc/git-annex/html/design/assistant/polls/goals_for_April.html+4d1dd8d6c119465f1bdedd8646e083ca usr/share/doc/git-annex/html/design/assistant/polls/prioritizing_special_remotes.html+0cf94fbdecb73699a53023e0c81f9380 usr/share/doc/git-annex/html/design/assistant/polls/what_is_preventing_me_from_using_git-annex_assistant.html+1cf62b2652ab9da9c390a223c9d36a10 usr/share/doc/git-annex/html/design/assistant/progressbars.html+2f8b4bba0f5fe81cb483bb5cc89f8814 usr/share/doc/git-annex/html/design/assistant/rate_limiting.html+db9dde8542ade8b669f7c939b0bcc965 usr/share/doc/git-annex/html/design/assistant/screenshot/firstrun.png+fd2bf9e02e1bcc91ef40b80099592caf usr/share/doc/git-annex/html/design/assistant/screenshot/intro.png+051e46cd1d991f5e10152e48453d01ca usr/share/doc/git-annex/html/design/assistant/syncing.html+1b955f4d8b5e5f15cd991f1c80e66c18 usr/share/doc/git-annex/html/design/assistant/transfer_control.html+d2ad41534251d13f21f92e5011dc7f26 usr/share/doc/git-annex/html/design/assistant/webapp.html+b0295c7c350b5d0fb702923ad6273d6e usr/share/doc/git-annex/html/design/assistant/windows.html+890c87199a3b4e775615b023008ea4ec usr/share/doc/git-annex/html/design/assistant/xmpp.html+5474f8a7c6fa58b53fb4d73f8de471cf usr/share/doc/git-annex/html/design/encryption.html+bf1d04d1a4c67d0bb400c6396c7b59b0 usr/share/doc/git-annex/html/direct_mode.html+914b2d4bd6b0748aea59ba4ee7a10224 usr/share/doc/git-annex/html/distributed_version_control.html+91213cb2c8a82fce54db038f4a16d8a2 usr/share/doc/git-annex/html/download.html+973ddf985bcfa944ae0fa95af148eedd usr/share/doc/git-annex/html/encryption.html+146f97002d28c80a3b783ce50dbad93b usr/share/doc/git-annex/html/favicon.ico+8d9f31e7f913c1e511ab87fc04035da2 usr/share/doc/git-annex/html/feeds.html+0029894dfc9cfa21bf816e03305e9474 usr/share/doc/git-annex/html/footer/column_a.html+1f579f4dc57355a609b3ece84773b631 usr/share/doc/git-annex/html/footer/column_b.html+6f1ef31b1cc3a98c49c09e8a6ba39b7b usr/share/doc/git-annex/html/future_proofing.html+7d759eee5906dcc00511fc7cf5290545 usr/share/doc/git-annex/html/git-annex-shell.html+e4c6a5d68d24233fef08e20d8989c026 usr/share/doc/git-annex/html/git-annex.html+34180496be3df363b22e8dda866e132b usr/share/doc/git-annex/html/git-union-merge.html+365320869f7e9ca2e4e053d2be065055 usr/share/doc/git-annex/html/how_it_works.html+7edcc34e82cc270a3a0b84244c003ec0 usr/share/doc/git-annex/html/ikiwiki/ikiwiki.js+531101fb991d25633961400bd5b018c5 usr/share/doc/git-annex/html/ikiwiki/relativedate.js+4329a38aa265e63db16f6c8eb629b15c usr/share/doc/git-annex/html/ikiwiki/toggle.js+da1a729d57a875c4f1f764fdb61bc5be usr/share/doc/git-annex/html/index.html+1ddf7910567895a2880b0ae61ca2ef98 usr/share/doc/git-annex/html/install.html+d632c3767328adf55bfc133aa41e2c85 usr/share/doc/git-annex/html/install/Android.html+20d16bef5d64869f044e608a08ea799a usr/share/doc/git-annex/html/install/ArchLinux.html+68a4d40fef0159e8e987b06dddf47402 usr/share/doc/git-annex/html/install/Debian.html+13a675d7e677f7a9ae20c1f460aee625 usr/share/doc/git-annex/html/install/Fedora.html+5e8b78918385f354a6696e6fcfff3a5d usr/share/doc/git-annex/html/install/FreeBSD.html+c95ed84f3ea9f8ba7957da3515d72df1 usr/share/doc/git-annex/html/install/Gentoo.html+a9c336cf0bab595a1e3fdb2e28073a8e usr/share/doc/git-annex/html/install/Linux_standalone.html+4769deab931e8a1f4bad23b37c72e396 usr/share/doc/git-annex/html/install/NixOS.html+7c16dd93fdf2324aa12c131b5f0f383c usr/share/doc/git-annex/html/install/OSX.html+1415f3223530c98d6347f73520994aa7 usr/share/doc/git-annex/html/install/OSX/old_comments.html+170d0970d091180289d157d51fc7edca usr/share/doc/git-annex/html/install/ScientificLinux5.html+7eed2fe9312590ee289406b7fb0f5cef usr/share/doc/git-annex/html/install/Ubuntu.html+7090ab7ac51b974e1ca4a908e3e77609 usr/share/doc/git-annex/html/install/cabal.html+3308a0f87459f2f96d7351bfa626a74f usr/share/doc/git-annex/html/install/fromscratch.html+8d014f709de9b617f9118308b456a08e usr/share/doc/git-annex/html/install/openSUSE.html+2771ca10fbc2f5364ffc7ddd74561a95 usr/share/doc/git-annex/html/internals.html+4b67d79d75113a55d6834322d95320c2 usr/share/doc/git-annex/html/internals/hashing.html+f8dbafcbd7801a8a8d239a50a8f23cbc usr/share/doc/git-annex/html/internals/key_format.html+7ace89f41893972f1960cd80e0175253 usr/share/doc/git-annex/html/license.html+55e7b8cb55b0cc3efdde9ee52cce4c3b usr/share/doc/git-annex/html/license/AGPL.gz+4e0ca2bc63e61797836c39b9a6e33ddc usr/share/doc/git-annex/html/license/GPL.gz+68f10b63c785bc6767f61275f6a65da9 usr/share/doc/git-annex/html/license/LGPL.gz+c4f6eae5a8691c4f7eb722a0001c9b46 usr/share/doc/git-annex/html/links/key_concepts.html+8d197fa0a477eedca4e2c2959946df8e usr/share/doc/git-annex/html/links/other_stuff.html+d62b7d8c800c083ce1e67b55733ef944 usr/share/doc/git-annex/html/links/the_details.html+550ca9383584fe78d2bee0c3e306da74 usr/share/doc/git-annex/html/location_tracking.html+d29fa683faf26b4eeaf7e2df5ccc9067 usr/share/doc/git-annex/html/logo-bw.svg+da7ef72c147208844c47996d3701b552 usr/share/doc/git-annex/html/logo.png+0e7352e76622961cbe82145534500c9d usr/share/doc/git-annex/html/logo.svg+bd3617363704ae91f84398a9d113b067 usr/share/doc/git-annex/html/logo_small.png+4c71f086f4fd267d36bfb2802b11e9be usr/share/doc/git-annex/html/meta.html+b9b8d4a69d0b10141a629bdc63352e8b usr/share/doc/git-annex/html/news.html+aed8d8d4b6111f4a60e74ac59a201110 usr/share/doc/git-annex/html/not.html+472549fa6632e1c63b0a9b146a5c124a usr/share/doc/git-annex/html/preferred_content.html+428a4718c11df247416a4f02e71ed307 usr/share/doc/git-annex/html/related_software.html+99c8387075783f9d4260a525ff0c3950 usr/share/doc/git-annex/html/repomap.png+d232de504d45596a374aa3286c83f1af usr/share/doc/git-annex/html/scalability.html+2f78fa6e4431f07f406f8fa7f397a5b4 usr/share/doc/git-annex/html/sidebar.html+a55a5e9f8550b500ec263f82c21a03d9 usr/share/doc/git-annex/html/sitemap.html+dbece38fc47a261412ceb5ab899afc9d usr/share/doc/git-annex/html/special_remotes.html+a3ef8aa085afcf28b6e59cf1ba887a6d usr/share/doc/git-annex/html/special_remotes/S3.html+4dbd0534b9280d11869774db1b261a1f usr/share/doc/git-annex/html/special_remotes/bup.html+f5cf43176a14b42adec350bea4c94736 usr/share/doc/git-annex/html/special_remotes/directory.html+f1db6158c40c0a9bd2df8549eee9d718 usr/share/doc/git-annex/html/special_remotes/glacier.html+f3789fd89422cc0b5536cbb5e31fed8d usr/share/doc/git-annex/html/special_remotes/hook.html+154c6dd0496b3aae312a950a38df2387 usr/share/doc/git-annex/html/special_remotes/rsync.html+91bcf22f8ae50108d821482e6f940f19 usr/share/doc/git-annex/html/special_remotes/web.html+c16b7671632f865f88881333a04eedb9 usr/share/doc/git-annex/html/special_remotes/webdav.html+aaf74425c1bfb387ea7010eba78b4884 usr/share/doc/git-annex/html/special_remotes/xmpp.html+99d44e90179957146b01a3784126c736 usr/share/doc/git-annex/html/summary.html+73cc0f4a53a1e215236008ca22cf9cfb usr/share/doc/git-annex/html/sync.html+40ff84996d93191b8b2477ba4684b68f usr/share/doc/git-annex/html/templates/bare.tmpl+2e248fae2f6e9638aaebd98c3e934f43 usr/share/doc/git-annex/html/templates/bugtemplate.html+977b742d9da88d36e4dd927c4c069658 usr/share/doc/git-annex/html/templates/walkthrough.tmpl+6ba1652d9ae7c1a09251c8d9638e62a0 usr/share/doc/git-annex/html/testimonials.html+6a0545d999e5a5e02a786a65586171c2 usr/share/doc/git-annex/html/tips.html+7f453730328429fc257d018945726863 usr/share/doc/git-annex/html/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__.html+93578ce16f70dd3df08b63f741e572b5 usr/share/doc/git-annex/html/tips/Decentralized_repository_behind_a_Firewall.html+95bbb0f392bb7a8d72362f3828fae4a9 usr/share/doc/git-annex/html/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.html+940365c761b3a91a1c655776da279b55 usr/share/doc/git-annex/html/tips/Internet_Archive_via_S3.html+94dbe7abc95e3b38d0ccefb0a4a31be3 usr/share/doc/git-annex/html/tips/Using_Git-annex_as_a_web_browsing_assistant.html+a63667505d48ef79a22124a9ffc38a52 usr/share/doc/git-annex/html/tips/assume-unstaged.html+c126a4d317f08fd8d43755ab2cf3d20f usr/share/doc/git-annex/html/tips/automatically_getting_files_on_checkout.html+696a6f3f5f2f52569e9ecec8ad0d94aa usr/share/doc/git-annex/html/tips/centralised_repository:_starting_from_nothing.html+de4578646bc3b7a8f3bd4d0af499ac9e usr/share/doc/git-annex/html/tips/centralized_git_repository_tutorial.html+69d3df2166070268b5e2d5ae1f59b424 usr/share/doc/git-annex/html/tips/emacs_integration.html+108b999387a7de2ff4d8ae53500ea8cd usr/share/doc/git-annex/html/tips/finding_duplicate_files.html+adee13342f4d60e364579d2a6cfcf2dc usr/share/doc/git-annex/html/tips/migrating_data_to_a_new_backend.html+b88debb958799599abed290b006a2375 usr/share/doc/git-annex/html/tips/powerful_file_matching.html+94259379fc668106dca8223e7d511270 usr/share/doc/git-annex/html/tips/recover_data_from_lost+found.html+184b713b5cb59f0b787825257535139e usr/share/doc/git-annex/html/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html+9b1a8f73f7c7e07215bad52a1f8d5af4 usr/share/doc/git-annex/html/tips/setup_a_public_repository_on_a_web_site.html+d1e6d33155d7ac68a8539351a5ad4326 usr/share/doc/git-annex/html/tips/untrusted_repositories.html+d92309b66e10c17a5c1b108547734d49 usr/share/doc/git-annex/html/tips/using_Amazon_Glacier.html+40e60da674a819e91c73966edbf1e255 usr/share/doc/git-annex/html/tips/using_Amazon_S3.html+32215ac3e2e3732421fc43882a0c8373 usr/share/doc/git-annex/html/tips/using_Google_Cloud_Storage.html+f298745974c07a77adbbbd1d2ceb68e2 usr/share/doc/git-annex/html/tips/using_box.com_as_a_special_remote.html+b0f0e743aaca0c7ba15168abc4a72036 usr/share/doc/git-annex/html/tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.html+9c493638b6b23baabeb6c2dd6e56a17f usr/share/doc/git-annex/html/tips/using_gitolite_with_git-annex.html+66b6d9fe6def3367c38eb07c31ae9802 usr/share/doc/git-annex/html/tips/using_the_SHA1_backend.html+9b04810762e4262f452f5c93a08e16da usr/share/doc/git-annex/html/tips/using_the_web_as_a_special_remote.html+cd580aa02a8204f51d4a5fdae5e43c32 usr/share/doc/git-annex/html/tips/visualizing_repositories_with_gource.html+919131bcd8658ae2c2670849953945a2 usr/share/doc/git-annex/html/tips/visualizing_repositories_with_gource/screenshot.jpg+313149a6f3cf0939263eef6da49b79df usr/share/doc/git-annex/html/tips/what_to_do_when_a_repository_is_corrupted.html+4ee4a855132811fd2de5b9235d8fee07 usr/share/doc/git-annex/html/tips/what_to_do_when_you_lose_a_repository.html+1e58adc871a07107cd56057197b1af0b usr/share/doc/git-annex/html/transferring_data.html+f7ad8a50509a8d0f8ef37ad97565111f usr/share/doc/git-annex/html/trust.html+f8558f4f8dae040481d60b0f2f5f9593 usr/share/doc/git-annex/html/upgrades.html+f6c97d0651c7a5acf8f59c0fc310cd20 usr/share/doc/git-annex/html/upgrades/SHA_size.html+8e217f7cc0d1973807481661dbd2bdc1 usr/share/doc/git-annex/html/use_case/Alice.html+2d7a5fdb1016a57ae9a00fb83173d035 usr/share/doc/git-annex/html/use_case/Bob.html+5e836dcedc1b25bfbf48d6dac7810ce3 usr/share/doc/git-annex/html/users.html+8e6ba607564550ca0467532a3027a135 usr/share/doc/git-annex/html/users/chrysn.html+d13e6b44af054c3f99df81343c337489 usr/share/doc/git-annex/html/users/fmarier.html+d3a79bd61b190e196a302780ab40a4ec usr/share/doc/git-annex/html/users/gebi.html+a345a4d2e27cb3a38b9f5ab4d89f774f usr/share/doc/git-annex/html/users/joey.html+0e4dd1ba79fd699ebe02ddcbcdf982ed usr/share/doc/git-annex/html/videos.html+51ae552acfac67d326bf53e17d6f0d8f usr/share/doc/git-annex/html/videos/FOSDEM2012.html+4fa794a2607474ffc915c12673662ab0 usr/share/doc/git-annex/html/videos/LCA2013.html+a14716c06d05e63023a2822247c05522 usr/share/doc/git-annex/html/videos/git-annex_assistant_archiving.html+e282d6c0a4abeaa7825ecd4bce280ed4 usr/share/doc/git-annex/html/videos/git-annex_assistant_introduction.html+6da72cd455f202bf3c8c7320eeb54805 usr/share/doc/git-annex/html/videos/git-annex_assistant_remote_sharing.html+72d8e141215974e4c56326041bb1777c usr/share/doc/git-annex/html/videos/git-annex_assistant_sync_demo.html+30269d2cbedca7e9d241787e4890c421 usr/share/doc/git-annex/html/videos/git-annex_watch_demo.html+c834e41394bd5b0194bb7f6a2f287fec usr/share/doc/git-annex/html/videos/git-annex_weppapp_demo.html+f29bc3c1e40ec82d8646d570af6e3893 usr/share/doc/git-annex/html/walkthrough.html+03d8415b3143efe76eacbb7e5c837403 usr/share/doc/git-annex/html/walkthrough/adding_a_remote.html+33f436aa1b44dfef282ca546764c1e34 usr/share/doc/git-annex/html/walkthrough/adding_files.html+960de3d1b409efbeaebac9ef8649f612 usr/share/doc/git-annex/html/walkthrough/automatically_managing_content.html+caeaeeaea85feee563943dad3a84da12 usr/share/doc/git-annex/html/walkthrough/backups.html+3d73e09e90d0f85dd15ded89625bfa2e usr/share/doc/git-annex/html/walkthrough/creating_a_repository.html+98b54e9bf4e04d7cee3bfb3985be482e usr/share/doc/git-annex/html/walkthrough/fsck:_verifying_your_data.html+6d1abc65429df9a7c1d87b65a30ec950 usr/share/doc/git-annex/html/walkthrough/fsck:_when_things_go_wrong.html+e4410117cff03b8a9f0ec87b4590b083 usr/share/doc/git-annex/html/walkthrough/getting_file_content.html+a1434a311bd7633cf53f4474acd3183e usr/share/doc/git-annex/html/walkthrough/modifying_annexed_files.html+c811dc97b861f08bdd2bc27acde4a356 usr/share/doc/git-annex/html/walkthrough/more.html+2f329b6821030c0287f868ff684c3817 usr/share/doc/git-annex/html/walkthrough/moving_file_content_between_repositories.html+6cbdae72514a4907cac8846c65099156 usr/share/doc/git-annex/html/walkthrough/removing_files.html+33aef95c4a4b15d1b57efda2e5b5b121 usr/share/doc/git-annex/html/walkthrough/removing_files:_When_things_go_wrong.html+5ca66a6912647361cac8da91506d2d45 usr/share/doc/git-annex/html/walkthrough/renaming_files.html+7ee72345527052122996f0cf3c2ca1b1 usr/share/doc/git-annex/html/walkthrough/syncing.html+3a99d4e12d425cbb45f28951c8eb7d1f usr/share/doc/git-annex/html/walkthrough/transferring_files:_When_things_go_wrong.html+ed1c0a08473bf439b5d1692d5e5ade85 usr/share/doc/git-annex/html/walkthrough/unused_data.html+411865f3015512c3f561271fc452ee59 usr/share/doc/git-annex/html/walkthrough/using_bup.html+751895de1877010e57d322d9eb425189 usr/share/doc/git-annex/html/walkthrough/using_ssh_remotes.html+c0d91beb3dfd17a071524d8fafcd27af usr/share/man/man1/git-annex-shell.1.gz+3c53119e137184f00bf865a07f7bac04 usr/share/man/man1/git-annex.1.gz
@@ -0,0 +1,9 @@+[Desktop Entry]+Type=Application+Version=1.0+Name=Git Annex Assistant+Comment=Autostart+Terminal=false+Exec=/usr/bin/git-annex assistant --autostart+Categories=+
file too large to diff
file too large to diff
@@ -0,0 +1,9 @@+[Desktop Entry]+Type=Application+Version=1.0+Name=Git Annex+Comment=Track and sync the files in your Git Annex+Terminal=false+Exec=/usr/bin/git-annex webapp+Categories=Network;FileTransfer;+
@@ -0,0 +1,9 @@+Document: git-annex+Title: git-annex documentation+Author: Joey Hess+Abstract: All the documentation from git-annex's website.+Section: File Management++Format: HTML+Index: /usr/share/doc/git-annex/html/index.html+Files: /usr/share/doc/git-annex/html/*.html
binary file changed (absent → 681 bytes)
binary file changed (absent → 29839 bytes)
@@ -0,0 +1,783 @@+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/+Source: native package++Files: *+Copyright: © 2010-2013 Joey Hess <joey@kitenet.net>+License: GPL-3+++Files: Assistant/WebApp.hs Assistant/WebApp/* templates/* static/*+Copyright: © 2012-2013 Joey Hess <joey@kitenet.net>+License: AGPL-3+++Files: Utility/ThreadScheduler.hs+Copyright: 2011 Bas van Dijk & Roel van Dijk+ 2012 Joey Hess <joey@kitenet.net>+License: GPL-3+++Files: Utility/Gpg/Types.hs+Copyright: 2013 guilhem <guilhem@fripost.org>+License: GPL-3+++Files: doc/logo* */favicon.ico standalone/osx/git-annex.app/Contents/Resources/git-annex.icns+Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>+ 2010 Joey Hess <joey@kitenet.net>+License: other+ Free to modify and redistribute with due credit, and obviously free to use.++Files: Utility/Mounts.hsc+Copyright: Volker Wysk <hsss@volker-wysk.de>+License: LGPL-2.1+++Files: Utility/libmounts.c+Copyright: 1980, 1989, 1993, 1994 The Regents of the University of California+ 2001 David Rufino <daverufino@btinternet.com>+ 2012 Joey Hess <joey@kitenet.net>+License: BSD-3-clause+ * Copyright (c) 1980, 1989, 1993, 1994+ * The Regents of the University of California. All rights reserved.+ * Copyright (c) 2001+ * David Rufino <daverufino@btinternet.com>+ * Copyright 2012+ * Joey Hess <joey@kitenet.net>+ *+ * Redistribution and use in source and binary forms, with or without+ * modification, are permitted provided that the following conditions+ * are met:+ * 1. Redistributions of source code must retain the above copyright+ * notice, this list of conditions and the following disclaimer.+ * 2. Redistributions in binary form must reproduce the above copyright+ * notice, this list of conditions and the following disclaimer in the+ * documentation and/or other materials provided with the distribution.+ * 3. Neither the name of the University nor the names of its contributors+ * may be used to endorse or promote products derived from this software+ * without specific prior written permission.+ *+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF+ * SUCH DAMAGE.++Files: static/jquery*+Copyright: © 2005-2011 by John Resig, Branden Aaron & Jörn Zaefferer+ © 2011 The Dojo Foundation+License: MIT or GPL-2+ The full text of version 2 of the GPL is distributed in+ /usr/share/common-licenses/GPL-2 on Debian systems. The text of the MIT+ license follows:+ .+ Permission is hereby granted, free of charge, to any person obtaining+ a copy of this software and associated documentation files (the+ "Software"), to deal in the Software without restriction, including+ without limitation the rights to use, copy, modify, merge, publish,+ distribute, sublicense, and/or sell copies of the Software, and to+ permit persons to whom the Software is furnished to do so, subject to+ the following conditions:+ .+ The above copyright notice and this permission notice shall be+ included in all copies or substantial portions of the Software.+ .+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.++Files: static/*/bootstrap* static/img/glyphicons-halflings*+Copyright: 2012 Twitter, Inc.+License: Apache-2.0+ Licensed under the Apache License, Version 2.0 (the "License");+ you may not use this file except in compliance with the License.+ You may obtain a copy of the License at+ .+ http://www.apache.org/licenses/LICENSE-2.0+ .+ Unless required by applicable law or agreed to in writing, software+ distributed under the License is distributed on an "AS IS" BASIS,+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+ See the License for the specific language governing permissions and+ limitations under the License.+ .+ The complete text of the Apache License is distributed in+ /usr/share/common-licenses/Apache-2.0 on Debian systems.++License: GPL-3++ The full text of version 3 of the GPL is distributed as doc/license/GPL in+ this package's source, or in /usr/share/common-licenses/GPL-3 on+ Debian systems.++License: LGPL-2.1++ The full text of version 2.1 of the LGPL is distributed as doc/license/LGPL+ in this package's source, or in /usr/share/common-licenses/LGPL-2.1+ on Debian systems.++License: AGPL-3++ GNU AFFERO GENERAL PUBLIC LICENSE+ Version 3, 19 November 2007+ .+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>+ Everyone is permitted to copy and distribute verbatim copies+ of this license document, but changing it is not allowed.+ .+ Preamble+ .+ The GNU Affero General Public License is a free, copyleft license for+ software and other kinds of works, specifically designed to ensure+ cooperation with the community in the case of network server software.+ .+ The licenses for most software and other practical works are designed+ to take away your freedom to share and change the works. By contrast,+ our General Public Licenses are intended to guarantee your freedom to+ share and change all versions of a program--to make sure it remains free+ software for all its users.+ .+ When we speak of free software, we are referring to freedom, not+ price. Our General Public Licenses are designed to make sure that you+ have the freedom to distribute copies of free software (and charge for+ them if you wish), that you receive source code or can get it if you+ want it, that you can change the software or use pieces of it in new+ free programs, and that you know you can do these things.+ .+ Developers that use our General Public Licenses protect your rights+ with two steps: (1) assert copyright on the software, and (2) offer+ you this License which gives you legal permission to copy, distribute+ and/or modify the software.+ .+ A secondary benefit of defending all users' freedom is that+ improvements made in alternate versions of the program, if they+ receive widespread use, become available for other developers to+ incorporate. Many developers of free software are heartened and+ encouraged by the resulting cooperation. However, in the case of+ software used on network servers, this result may fail to come about.+ The GNU General Public License permits making a modified version and+ letting the public access it on a server without ever releasing its+ source code to the public.+ .+ The GNU Affero General Public License is designed specifically to+ ensure that, in such cases, the modified source code becomes available+ to the community. It requires the operator of a network server to+ provide the source code of the modified version running there to the+ users of that server. Therefore, public use of a modified version, on+ a publicly accessible server, gives the public access to the source+ code of the modified version.+ .+ An older license, called the Affero General Public License and+ published by Affero, was designed to accomplish similar goals. This is+ a different license, not a version of the Affero GPL, but Affero has+ released a new version of the Affero GPL which permits relicensing under+ this license.+ .+ The precise terms and conditions for copying, distribution and+ modification follow.+ .+ TERMS AND CONDITIONS+ .+ 0. Definitions.+ .+ "This License" refers to version 3 of the GNU Affero General Public License.+ .+ "Copyright" also means copyright-like laws that apply to other kinds of+ works, such as semiconductor masks.+ .+ "The Program" refers to any copyrightable work licensed under this+ License. Each licensee is addressed as "you". "Licensees" and+ "recipients" may be individuals or organizations.+ .+ To "modify" a work means to copy from or adapt all or part of the work+ in a fashion requiring copyright permission, other than the making of an+ exact copy. The resulting work is called a "modified version" of the+ earlier work or a work "based on" the earlier work.+ .+ A "covered work" means either the unmodified Program or a work based+ on the Program.+ .+ To "propagate" a work means to do anything with it that, without+ permission, would make you directly or secondarily liable for+ infringement under applicable copyright law, except executing it on a+ computer or modifying a private copy. Propagation includes copying,+ distribution (with or without modification), making available to the+ public, and in some countries other activities as well.+ .+ To "convey" a work means any kind of propagation that enables other+ parties to make or receive copies. Mere interaction with a user through+ a computer network, with no transfer of a copy, is not conveying.+ .+ An interactive user interface displays "Appropriate Legal Notices"+ to the extent that it includes a convenient and prominently visible+ feature that (1) displays an appropriate copyright notice, and (2)+ tells the user that there is no warranty for the work (except to the+ extent that warranties are provided), that licensees may convey the+ work under this License, and how to view a copy of this License. If+ the interface presents a list of user commands or options, such as a+ menu, a prominent item in the list meets this criterion.+ .+ 1. Source Code.+ .+ The "source code" for a work means the preferred form of the work+ for making modifications to it. "Object code" means any non-source+ form of a work.+ .+ A "Standard Interface" means an interface that either is an official+ standard defined by a recognized standards body, or, in the case of+ interfaces specified for a particular programming language, one that+ is widely used among developers working in that language.+ .+ The "System Libraries" of an executable work include anything, other+ than the work as a whole, that (a) is included in the normal form of+ packaging a Major Component, but which is not part of that Major+ Component, and (b) serves only to enable use of the work with that+ Major Component, or to implement a Standard Interface for which an+ implementation is available to the public in source code form. A+ "Major Component", in this context, means a major essential component+ (kernel, window system, and so on) of the specific operating system+ (if any) on which the executable work runs, or a compiler used to+ produce the work, or an object code interpreter used to run it.+ .+ The "Corresponding Source" for a work in object code form means all+ the source code needed to generate, install, and (for an executable+ work) run the object code and to modify the work, including scripts to+ control those activities. However, it does not include the work's+ System Libraries, or general-purpose tools or generally available free+ programs which are used unmodified in performing those activities but+ which are not part of the work. For example, Corresponding Source+ includes interface definition files associated with source files for+ the work, and the source code for shared libraries and dynamically+ linked subprograms that the work is specifically designed to require,+ such as by intimate data communication or control flow between those+ subprograms and other parts of the work.+ .+ The Corresponding Source need not include anything that users+ can regenerate automatically from other parts of the Corresponding+ Source.+ .+ The Corresponding Source for a work in source code form is that+ same work.+ .+ 2. Basic Permissions.+ .+ All rights granted under this License are granted for the term of+ copyright on the Program, and are irrevocable provided the stated+ conditions are met. This License explicitly affirms your unlimited+ permission to run the unmodified Program. The output from running a+ covered work is covered by this License only if the output, given its+ content, constitutes a covered work. This License acknowledges your+ rights of fair use or other equivalent, as provided by copyright law.+ .+ You may make, run and propagate covered works that you do not+ convey, without conditions so long as your license otherwise remains+ in force. You may convey covered works to others for the sole purpose+ of having them make modifications exclusively for you, or provide you+ with facilities for running those works, provided that you comply with+ the terms of this License in conveying all material for which you do+ not control copyright. Those thus making or running the covered works+ for you must do so exclusively on your behalf, under your direction+ and control, on terms that prohibit them from making any copies of+ your copyrighted material outside their relationship with you.+ .+ Conveying under any other circumstances is permitted solely under+ the conditions stated below. Sublicensing is not allowed; section 10+ makes it unnecessary.+ .+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.+ .+ No covered work shall be deemed part of an effective technological+ measure under any applicable law fulfilling obligations under article+ 11 of the WIPO copyright treaty adopted on 20 December 1996, or+ similar laws prohibiting or restricting circumvention of such+ measures.+ .+ When you convey a covered work, you waive any legal power to forbid+ circumvention of technological measures to the extent such circumvention+ is effected by exercising rights under this License with respect to+ the covered work, and you disclaim any intention to limit operation or+ modification of the work as a means of enforcing, against the work's+ users, your or third parties' legal rights to forbid circumvention of+ technological measures.+ .+ 4. Conveying Verbatim Copies.+ .+ You may convey verbatim copies of the Program's source code as you+ receive it, in any medium, provided that you conspicuously and+ appropriately publish on each copy an appropriate copyright notice;+ keep intact all notices stating that this License and any+ non-permissive terms added in accord with section 7 apply to the code;+ keep intact all notices of the absence of any warranty; and give all+ recipients a copy of this License along with the Program.+ .+ You may charge any price or no price for each copy that you convey,+ and you may offer support or warranty protection for a fee.+ .+ 5. Conveying Modified Source Versions.+ .+ You may convey a work based on the Program, or the modifications to+ produce it from the Program, in the form of source code under the+ terms of section 4, provided that you also meet all of these conditions:+ .+ a) The work must carry prominent notices stating that you modified+ it, and giving a relevant date.+ .+ b) The work must carry prominent notices stating that it is+ released under this License and any conditions added under section+ 7. This requirement modifies the requirement in section 4 to+ "keep intact all notices".+ .+ c) You must license the entire work, as a whole, under this+ License to anyone who comes into possession of a copy. This+ License will therefore apply, along with any applicable section 7+ additional terms, to the whole of the work, and all its parts,+ regardless of how they are packaged. This License gives no+ permission to license the work in any other way, but it does not+ invalidate such permission if you have separately received it.+ .+ d) If the work has interactive user interfaces, each must display+ Appropriate Legal Notices; however, if the Program has interactive+ interfaces that do not display Appropriate Legal Notices, your+ work need not make them do so.+ .+ A compilation of a covered work with other separate and independent+ works, which are not by their nature extensions of the covered work,+ and which are not combined with it such as to form a larger program,+ in or on a volume of a storage or distribution medium, is called an+ "aggregate" if the compilation and its resulting copyright are not+ used to limit the access or legal rights of the compilation's users+ beyond what the individual works permit. Inclusion of a covered work+ in an aggregate does not cause this License to apply to the other+ parts of the aggregate.+ .+ 6. Conveying Non-Source Forms.+ .+ You may convey a covered work in object code form under the terms+ of sections 4 and 5, provided that you also convey the+ machine-readable Corresponding Source under the terms of this License,+ in one of these ways:+ .+ a) Convey the object code in, or embodied in, a physical product+ (including a physical distribution medium), accompanied by the+ Corresponding Source fixed on a durable physical medium+ customarily used for software interchange.+ .+ b) Convey the object code in, or embodied in, a physical product+ (including a physical distribution medium), accompanied by a+ written offer, valid for at least three years and valid for as+ long as you offer spare parts or customer support for that product+ model, to give anyone who possesses the object code either (1) a+ copy of the Corresponding Source for all the software in the+ product that is covered by this License, on a durable physical+ medium customarily used for software interchange, for a price no+ more than your reasonable cost of physically performing this+ conveying of source, or (2) access to copy the+ Corresponding Source from a network server at no charge.+ .+ c) Convey individual copies of the object code with a copy of the+ written offer to provide the Corresponding Source. This+ alternative is allowed only occasionally and noncommercially, and+ only if you received the object code with such an offer, in accord+ with subsection 6b.+ .+ d) Convey the object code by offering access from a designated+ place (gratis or for a charge), and offer equivalent access to the+ Corresponding Source in the same way through the same place at no+ further charge. You need not require recipients to copy the+ Corresponding Source along with the object code. If the place to+ copy the object code is a network server, the Corresponding Source+ may be on a different server (operated by you or a third party)+ that supports equivalent copying facilities, provided you maintain+ clear directions next to the object code saying where to find the+ Corresponding Source. Regardless of what server hosts the+ Corresponding Source, you remain obligated to ensure that it is+ available for as long as needed to satisfy these requirements.+ .+ e) Convey the object code using peer-to-peer transmission, provided+ you inform other peers where the object code and Corresponding+ Source of the work are being offered to the general public at no+ charge under subsection 6d.+ .+ A separable portion of the object code, whose source code is excluded+ from the Corresponding Source as a System Library, need not be+ included in conveying the object code work.+ .+ A "User Product" is either (1) a "consumer product", which means any+ tangible personal property which is normally used for personal, family,+ or household purposes, or (2) anything designed or sold for incorporation+ into a dwelling. In determining whether a product is a consumer product,+ doubtful cases shall be resolved in favor of coverage. For a particular+ product received by a particular user, "normally used" refers to a+ typical or common use of that class of product, regardless of the status+ of the particular user or of the way in which the particular user+ actually uses, or expects or is expected to use, the product. A product+ is a consumer product regardless of whether the product has substantial+ commercial, industrial or non-consumer uses, unless such uses represent+ the only significant mode of use of the product.+ .+ "Installation Information" for a User Product means any methods,+ procedures, authorization keys, or other information required to install+ and execute modified versions of a covered work in that User Product from+ a modified version of its Corresponding Source. The information must+ suffice to ensure that the continued functioning of the modified object+ code is in no case prevented or interfered with solely because+ modification has been made.+ .+ If you convey an object code work under this section in, or with, or+ specifically for use in, a User Product, and the conveying occurs as+ part of a transaction in which the right of possession and use of the+ User Product is transferred to the recipient in perpetuity or for a+ fixed term (regardless of how the transaction is characterized), the+ Corresponding Source conveyed under this section must be accompanied+ by the Installation Information. But this requirement does not apply+ if neither you nor any third party retains the ability to install+ modified object code on the User Product (for example, the work has+ been installed in ROM).+ .+ The requirement to provide Installation Information does not include a+ requirement to continue to provide support service, warranty, or updates+ for a work that has been modified or installed by the recipient, or for+ the User Product in which it has been modified or installed. Access to a+ network may be denied when the modification itself materially and+ adversely affects the operation of the network or violates the rules and+ protocols for communication across the network.+ .+ Corresponding Source conveyed, and Installation Information provided,+ in accord with this section must be in a format that is publicly+ documented (and with an implementation available to the public in+ source code form), and must require no special password or key for+ unpacking, reading or copying.+ .+ 7. Additional Terms.+ .+ "Additional permissions" are terms that supplement the terms of this+ License by making exceptions from one or more of its conditions.+ Additional permissions that are applicable to the entire Program shall+ be treated as though they were included in this License, to the extent+ that they are valid under applicable law. If additional permissions+ apply only to part of the Program, that part may be used separately+ under those permissions, but the entire Program remains governed by+ this License without regard to the additional permissions.+ .+ When you convey a copy of a covered work, you may at your option+ remove any additional permissions from that copy, or from any part of+ it. (Additional permissions may be written to require their own+ removal in certain cases when you modify the work.) You may place+ additional permissions on material, added by you to a covered work,+ for which you have or can give appropriate copyright permission.+ .+ Notwithstanding any other provision of this License, for material you+ add to a covered work, you may (if authorized by the copyright holders of+ that material) supplement the terms of this License with terms:+ .+ a) Disclaiming warranty or limiting liability differently from the+ terms of sections 15 and 16 of this License; or+ .+ b) Requiring preservation of specified reasonable legal notices or+ author attributions in that material or in the Appropriate Legal+ Notices displayed by works containing it; or+ .+ c) Prohibiting misrepresentation of the origin of that material, or+ requiring that modified versions of such material be marked in+ reasonable ways as different from the original version; or+ .+ d) Limiting the use for publicity purposes of names of licensors or+ authors of the material; or+ .+ e) Declining to grant rights under trademark law for use of some+ trade names, trademarks, or service marks; or+ .+ f) Requiring indemnification of licensors and authors of that+ material by anyone who conveys the material (or modified versions of+ it) with contractual assumptions of liability to the recipient, for+ any liability that these contractual assumptions directly impose on+ those licensors and authors.+ .+ All other non-permissive additional terms are considered "further+ restrictions" within the meaning of section 10. If the Program as you+ received it, or any part of it, contains a notice stating that it is+ governed by this License along with a term that is a further+ restriction, you may remove that term. If a license document contains+ a further restriction but permits relicensing or conveying under this+ License, you may add to a covered work material governed by the terms+ of that license document, provided that the further restriction does+ not survive such relicensing or conveying.+ .+ If you add terms to a covered work in accord with this section, you+ must place, in the relevant source files, a statement of the+ additional terms that apply to those files, or a notice indicating+ where to find the applicable terms.+ .+ Additional terms, permissive or non-permissive, may be stated in the+ form of a separately written license, or stated as exceptions;+ the above requirements apply either way.+ .+ 8. Termination.+ .+ You may not propagate or modify a covered work except as expressly+ provided under this License. Any attempt otherwise to propagate or+ modify it is void, and will automatically terminate your rights under+ this License (including any patent licenses granted under the third+ paragraph of section 11).+ .+ However, if you cease all violation of this License, then your+ license from a particular copyright holder is reinstated (a)+ provisionally, unless and until the copyright holder explicitly and+ finally terminates your license, and (b) permanently, if the copyright+ holder fails to notify you of the violation by some reasonable means+ prior to 60 days after the cessation.+ .+ Moreover, your license from a particular copyright holder is+ reinstated permanently if the copyright holder notifies you of the+ violation by some reasonable means, this is the first time you have+ received notice of violation of this License (for any work) from that+ copyright holder, and you cure the violation prior to 30 days after+ your receipt of the notice.+ .+ Termination of your rights under this section does not terminate the+ licenses of parties who have received copies or rights from you under+ this License. If your rights have been terminated and not permanently+ reinstated, you do not qualify to receive new licenses for the same+ material under section 10.+ .+ 9. Acceptance Not Required for Having Copies.+ .+ You are not required to accept this License in order to receive or+ run a copy of the Program. Ancillary propagation of a covered work+ occurring solely as a consequence of using peer-to-peer transmission+ to receive a copy likewise does not require acceptance. However,+ nothing other than this License grants you permission to propagate or+ modify any covered work. These actions infringe copyright if you do+ not accept this License. Therefore, by modifying or propagating a+ covered work, you indicate your acceptance of this License to do so.+ .+ 10. Automatic Licensing of Downstream Recipients.+ .+ Each time you convey a covered work, the recipient automatically+ receives a license from the original licensors, to run, modify and+ propagate that work, subject to this License. You are not responsible+ for enforcing compliance by third parties with this License.+ .+ An "entity transaction" is a transaction transferring control of an+ organization, or substantially all assets of one, or subdividing an+ organization, or merging organizations. If propagation of a covered+ work results from an entity transaction, each party to that+ transaction who receives a copy of the work also receives whatever+ licenses to the work the party's predecessor in interest had or could+ give under the previous paragraph, plus a right to possession of the+ Corresponding Source of the work from the predecessor in interest, if+ the predecessor has it or can get it with reasonable efforts.+ .+ You may not impose any further restrictions on the exercise of the+ rights granted or affirmed under this License. For example, you may+ not impose a license fee, royalty, or other charge for exercise of+ rights granted under this License, and you may not initiate litigation+ (including a cross-claim or counterclaim in a lawsuit) alleging that+ any patent claim is infringed by making, using, selling, offering for+ sale, or importing the Program or any portion of it.+ .+ 11. Patents.+ .+ A "contributor" is a copyright holder who authorizes use under this+ License of the Program or a work on which the Program is based. The+ work thus licensed is called the contributor's "contributor version".+ .+ A contributor's "essential patent claims" are all patent claims+ owned or controlled by the contributor, whether already acquired or+ hereafter acquired, that would be infringed by some manner, permitted+ by this License, of making, using, or selling its contributor version,+ but do not include claims that would be infringed only as a+ consequence of further modification of the contributor version. For+ purposes of this definition, "control" includes the right to grant+ patent sublicenses in a manner consistent with the requirements of+ this License.+ .+ Each contributor grants you a non-exclusive, worldwide, royalty-free+ patent license under the contributor's essential patent claims, to+ make, use, sell, offer for sale, import and otherwise run, modify and+ propagate the contents of its contributor version.+ .+ In the following three paragraphs, a "patent license" is any express+ agreement or commitment, however denominated, not to enforce a patent+ (such as an express permission to practice a patent or covenant not to+ sue for patent infringement). To "grant" such a patent license to a+ party means to make such an agreement or commitment not to enforce a+ patent against the party.+ .+ If you convey a covered work, knowingly relying on a patent license,+ and the Corresponding Source of the work is not available for anyone+ to copy, free of charge and under the terms of this License, through a+ publicly available network server or other readily accessible means,+ then you must either (1) cause the Corresponding Source to be so+ available, or (2) arrange to deprive yourself of the benefit of the+ patent license for this particular work, or (3) arrange, in a manner+ consistent with the requirements of this License, to extend the patent+ license to downstream recipients. "Knowingly relying" means you have+ actual knowledge that, but for the patent license, your conveying the+ covered work in a country, or your recipient's use of the covered work+ in a country, would infringe one or more identifiable patents in that+ country that you have reason to believe are valid.+ .+ If, pursuant to or in connection with a single transaction or+ arrangement, you convey, or propagate by procuring conveyance of, a+ covered work, and grant a patent license to some of the parties+ receiving the covered work authorizing them to use, propagate, modify+ or convey a specific copy of the covered work, then the patent license+ you grant is automatically extended to all recipients of the covered+ work and works based on it.+ .+ A patent license is "discriminatory" if it does not include within+ the scope of its coverage, prohibits the exercise of, or is+ conditioned on the non-exercise of one or more of the rights that are+ specifically granted under this License. You may not convey a covered+ work if you are a party to an arrangement with a third party that is+ in the business of distributing software, under which you make payment+ to the third party based on the extent of your activity of conveying+ the work, and under which the third party grants, to any of the+ parties who would receive the covered work from you, a discriminatory+ patent license (a) in connection with copies of the covered work+ conveyed by you (or copies made from those copies), or (b) primarily+ for and in connection with specific products or compilations that+ contain the covered work, unless you entered into that arrangement,+ or that patent license was granted, prior to 28 March 2007.+ .+ Nothing in this License shall be construed as excluding or limiting+ any implied license or other defenses to infringement that may+ otherwise be available to you under applicable patent law.+ .+ 12. No Surrender of Others' Freedom.+ .+ If conditions are imposed on you (whether by court order, agreement or+ otherwise) that contradict the conditions of this License, they do not+ excuse you from the conditions of this License. If you cannot convey a+ covered work so as to satisfy simultaneously your obligations under this+ License and any other pertinent obligations, then as a consequence you may+ not convey it at all. For example, if you agree to terms that obligate you+ to collect a royalty for further conveying from those to whom you convey+ the Program, the only way you could satisfy both those terms and this+ License would be to refrain entirely from conveying the Program.+ .+ 13. Remote Network Interaction; Use with the GNU General Public License.+ .+ Notwithstanding any other provision of this License, if you modify the+ Program, your modified version must prominently offer all users+ interacting with it remotely through a computer network (if your version+ supports such interaction) an opportunity to receive the Corresponding+ Source of your version by providing access to the Corresponding Source+ from a network server at no charge, through some standard or customary+ means of facilitating copying of software. This Corresponding Source+ shall include the Corresponding Source for any work covered by version 3+ of the GNU General Public License that is incorporated pursuant to the+ following paragraph.+ .+ Notwithstanding any other provision of this License, you have+ permission to link or combine any covered work with a work licensed+ under version 3 of the GNU General Public License into a single+ combined work, and to convey the resulting work. The terms of this+ License will continue to apply to the part which is the covered work,+ but the work with which it is combined will remain governed by version+ 3 of the GNU General Public License.+ .+ 14. Revised Versions of this License.+ .+ The Free Software Foundation may publish revised and/or new versions of+ the GNU Affero General Public License from time to time. Such new versions+ will be similar in spirit to the present version, but may differ in detail to+ address new problems or concerns.+ .+ Each version is given a distinguishing version number. If the+ Program specifies that a certain numbered version of the GNU Affero General+ Public License "or any later version" applies to it, you have the+ option of following the terms and conditions either of that numbered+ version or of any later version published by the Free Software+ Foundation. If the Program does not specify a version number of the+ GNU Affero General Public License, you may choose any version ever published+ by the Free Software Foundation.+ .+ If the Program specifies that a proxy can decide which future+ versions of the GNU Affero General Public License can be used, that proxy's+ public statement of acceptance of a version permanently authorizes you+ to choose that version for the Program.+ .+ Later license versions may give you additional or different+ permissions. However, no additional obligations are imposed on any+ author or copyright holder as a result of your choosing to follow a+ later version.+ .+ 15. Disclaimer of Warranty.+ .+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY+ OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR+ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM+ IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF+ ALL NECESSARY SERVICING, REPAIR OR CORRECTION.+ .+ 16. Limitation of Liability.+ .+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING+ WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF+ SUCH DAMAGES.+ .+ 17. Interpretation of Sections 15 and 16.+ .+ If the disclaimer of warranty and limitation of liability provided+ above cannot be given local legal effect according to their terms,+ reviewing courts shall apply local law that most closely approximates+ an absolute waiver of all civil liability in connection with the+ Program, unless a warranty or assumption of liability accompanies a+ copy of the Program in return for a fee.+ .+ END OF TERMS AND CONDITIONS+ .+ How to Apply These Terms to Your New Programs+ .+ If you develop a new program, and you want it to be of the greatest+ possible use to the public, the best way to achieve this is to make it+ free software which everyone can redistribute and change under these terms.+ .+ To do so, attach the following notices to the program. It is safest+ to attach them to the start of each source file to most effectively+ state the exclusion of warranty; and each file should have at least+ the "copyright" line and a pointer to where the full notice is found.+ .+ <one line to give the program's name and a brief idea of what it does.>+ Copyright (C) <year> <name of author>+ .+ This program is free software: you can redistribute it and/or modify+ it under the terms of the GNU Affero General Public License as published by+ the Free Software Foundation, either version 3 of the License, or+ (at your option) any later version.+ .+ This program is distributed in the hope that it will be useful,+ but WITHOUT ANY WARRANTY; without even the implied warranty of+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ GNU Affero General Public License for more details.+ .+ You should have received a copy of the GNU Affero General Public License+ along with this program. If not, see <http://www.gnu.org/licenses/>.+ .+ Also add information on how to contact you by electronic and paper mail.+ .+ If your software can interact with users remotely through a computer+ network, you should also make sure that it provides a way for users to+ get its source. For example, if your program is a web application, its+ interface could display a "Source" link that leads users to an archive+ of the code. There are many ways you could offer source, and different+ solutions will be better for different programs; see section 13 for the+ specific requirements.+ .+ You should also get your employer (if you work as a programmer) or school,+ if any, to sign a "copyright disclaimer" for the program, if necessary.+ For more information on this, and how to apply and follow the GNU AGPL, see+ <http://www.gnu.org/licenses/>.
@@ -0,0 +1,215 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>assistant</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+assistant++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><span class="selflink">assistant</span></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The git-annex assistant creates a folder on each of your computers,+removable drives, and cloud services, which+it keeps synchronised, so its contents are the same everywhere.+It's very easy to use, and has all the power of git and git-annex.</p>++<h2>installation</h2>++<p>The git-annex assistant comes as part of git-annex, starting with version+3.20120924. See <a href="./install.html">install</a> to get it installed.</p>++<p>Note that the git-annex assistant is still beta quality code. See+the <a href="./assistant/release_notes.html">release notes</a> for known infelicities and upgrade instructions.</p>++<h2>intro screencast</h2>++<p><video controls width="400">+<source src="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-intro.ogv">+</video><br>+A <a href="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-intro.ogv">8 minute screencast</a>+introducing the <span class="selflink">git-annex assistant</span></a>.</p>+++++<h2>documentation</h2>++<ul>+<li><a href="./assistant/quickstart.html">Basic usage</a></li>+<li>Want to make two nearby computers share the same synchronised folder?<br/>+Follow the <a href="./assistant/local_pairing_walkthrough.html">local pairing walkthrough</a>.</li>+<li>Or perhaps you want to share files between computers in different+locations, like home and work?<br/>+Follow the <a href="./assistant/remote_sharing_walkthrough.html">remote sharing walkthrough</a>.</li>+<li>Want to share a synchronised folder with a friend?<br/>+Follow the <a href="./assistant/share_with_a_friend_walkthrough.html">share with a friend walkthrough</a>.</li>+<li>Want to archive data to a drive or the cloud?<br/>+Follow the <a href="./assistant/archival_walkthrough.html">archival walkthrough</a>.</li>+</ul>+++<h2>colophon</h2>++<p>The git-annex assistant is being+<a href="http://www.kickstarter.com/projects/joeyh/git-annex-assistant-like-dropbox-but-with-your-own/">crowd funded on+Kickstarter</a>.+<a href="./assistant/thanks.html">Thanks</a> to all my backers.</p>++<p>I blog about my work on the git-annex assistant on a daily basis+in <span class="createlink">this blog</span>. Follow along!</p>++<p>See also: The <a href="./design/assistant.html">design</a> pages.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./design.html">design</a>++<a href="./design/assistant.html">design/assistant</a>++<a href="./direct_mode.html">direct mode</a>++<a href="./install/Debian.html">install/Debian</a>++<a href="./install/OSX.html">install/OSX</a>++<a href="./install/Ubuntu.html">install/Ubuntu</a>++<a href="./install/fromscratch.html">install/fromscratch</a>++<a href="./not.html">not</a>++<a href="./preferred_content.html">preferred content</a>++<a href="./related_software.html">related software</a>+++<span class="popup">...+<span class="balloon">++<a href="./sidebar.html">sidebar</a>++<a href="./special_remotes/xmpp.html">special remotes/xmpp</a>++<a href="./summary.html">summary</a>++<a href="./sync/comment_4_cf29326408e62575085d1f980087c923.html">sync/comment 4 cf29326408e62575085d1f980087c923</a>++<a href="./tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html">tips/replacing Sparkleshare or dvcs-autosync with the assistant</a>++<a href="./videos/git-annex_assistant_archiving.html">videos/git-annex assistant archiving</a>++<a href="./videos/git-annex_assistant_introduction.html">videos/git-annex assistant introduction</a>++</span>+</span>++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:34 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:34 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 31740 bytes)
binary file changed (absent → 4347 bytes)
binary file changed (absent → 7332 bytes)
binary file changed (absent → 10677 bytes)
binary file changed (absent → 8863 bytes)
binary file changed (absent → 6594 bytes)
binary file changed (absent → 41061 bytes)
binary file changed (absent → 110994 bytes)
binary file changed (absent → 34868 bytes)
binary file changed (absent → 33631 bytes)
binary file changed (absent → 32061 bytes)
binary file changed (absent → 22921 bytes)
binary file changed (absent → 2604 bytes)
binary file changed (absent → 22815 bytes)
@@ -0,0 +1,158 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>quickstart</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+quickstart++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h2>first run</h2>++<p>To get started with the git-annex assistant, just pick it from+your system's list of applications.</p>++<p><a href="./menu.png"><img src="./menu.png" width="385" height="307" class="img" /></a>+<a href="./osx-app.png"><img src="./osx-app.png" width="87" height="98" class="img" /></a></p>++<p>It'll prompt you to set up a folder:</p>++<p><a href="./makerepo.png"><img src="./makerepo.png" width="588" height="476" class="img" /></a></p>++<p>Then any changes you make to its folder will automatically be committed to+git, and synced to repositories on other computers. You can use the+interface to add repositories and control the git-annex assistant.</p>++<p><a href="./running.png"><img src="./running.png" width="614" height="366" class="img" /></a></p>++<h2>starting on boot</h2>++<p>The git-annex assistant will automatically be started when you log in to+desktop environments like Mac OS X, Gnome, XFCE, and KDE, and the menu item+shown above can be used to open the webapp. On other systems, you may need+to start it by hand.</p>++<p>To start the webapp, run <code>git annex webapp</code> at the command line.</p>++<p>To start the assistant without opening the webapp,+you can run the command "git annex assistant --autostart". This is a+good thing to configure your system to run automatically when you log in.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:34 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:34 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,573 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>release notes</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+release notes++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h2>version 4.20130501</h2>++<p>This version contains numerous bug fixes, and improvements.</p>++<h2>version 4.20130417</h2>++<p>This version contains numerous bug fixes, and improvements.</p>++<p>One bug that was fixed can affect users of gnome-keyring who+have set up remote repositories on ssh servers using the webapp.+The gnome-keyring may load the restricted key that is set up+for that, and make it be used for regular logins to the server;+with the result that you'll get an error message about "git-annex-shell"+when sshing to the server.</p>++<p>If you experience this problem you can fix it by+moving <code>.ssh/key.git-annex*</code> to <code>.ssh/git-annex/</code> (creating+that directory first), and edit <code>.ssh/config</code> to reflect the new+location of the key. You will also need to restart gnome-keyring.</p>++<h2>version 4.20130323, 4.20130405</h2>++<p>These versions continue fixing bugs and adding features.</p>++<h2>version 4.20130314</h2>++<p>This version makes a great many improvements and bugfixes, and is+a recommended upgrade.</p>++<p>If you have already used the webapp to locally pair two computers,+a bug caused the paired repository to not be given an appropriate cost.+To fix this, go into the Repositories page in the webapp, and drag the+repository for the locally paired computer to come before any repositories+that it's more expensive to transfer data to.</p>++<h2>version 4.20130227</h2>++<p>This release fixes a bug with globbing that broke preferred content expressions.+So, it is a recommended upgrade from the previous release, which introduced+that bug.</p>++<p>In this release, the assistant is fully working on Android, although+it must be set up using the command line.</p>++<p>Repositories can now be placed on filesystems that lack support for symbolic+links; FAT support is complete.</p>++<h2>version 3.20130216</h2>++<p>This adds a port to Android. Only usable at the command line so far;+beta qualitty.</p>++<p>Also a bugfix release, and improves support for FAT.</p>++<p>The following are known limitations of this release of the git-annex+assistant:</p>++<ul>+<li>No Android app yet.</li>+<li>On BSD operating systems (but not on OS X), the assistant uses kqueue to+watch files. Kqueue has to open every directory it watches, so too many+directories will run it out of the max number of open files (typically+1024), and fail. See <span class="createlink">this bug</span>+for a workaround.</li>+<li>Also on systems with kqueue, modifications to existing files in direct+mode will not be noticed.</li>+</ul>+++<h2>version 3.20130107, 3.20130114, 3.20130124, 3.20130207</h2>++<p>These are bugfix releases.</p>++<h2>version 3.20130102</h2>++<p>This release makes several significant improvements to the git-annex+assistant, which is still in beta.</p>++<p>The main improvement is direct mode. This allows you to directly edit files+in the repository, and the assistant will automatically commit and sync+your changes. Direct mode is the default for new repositories created+by the assistant. To convert your existing repository to use direct mode,+manually run <code>git annex direct</code> inside the repository.</p>++<h2>version 3.20121211</h2>++<p>This release of the git-annex assistant (which is still in beta)+consists of mostly bugfixes, user interface improvements, and improvements+to existing features.</p>++<p>In general, anything you can configure with the assistant's web app+will work. Some examples of use cases supported by this release include:</p>++<ul>+<li>Using Box.com's 5 gigabytes of free storage space as a cloud transfer+point between between repositories that cannot directly contact+one-another. (Many other cloud providers are also supported, from Rsync.net+to Amazon S3, to your own ssh server.)</li>+<li>Archiving or backing up files to Amazon Glacier. See <a href="./archival_walkthrough.html">archival walkthrough</a>.</li>+<li><a href="./share_with_a_friend_walkthrough.html">Sharing repositories with friends</a>+contacted through a Jabber server (such as Google Talk).</li>+<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local+network (or VPN) and automatically keeping the files in the annex in+sync as changes are made to them.</li>+<li>Cloning your repository to removable drives, USB keys, etc. The assistant+will notice when the drive is mounted and keep it in sync.+Such a drive can be stored as an offline backup, or transported between+computers to keep them in sync.</li>+</ul>+++<p>The following are known limitations of this release of the git-annex+assistant:</p>++<ul>+<li>The Max OSX standalone app may not work on all versions of Max OSX.+Please test!</li>+<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch+files. Kqueue has to open every directory it watches, so too many+directories will run it out of the max number of open files (typically+1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>+for a workaround.</li>+</ul>+++<h2>version 3.20121126</h2>++<p>This adds several features to the git-annex assistant, which is still in beta.</p>++<p>In general, anything you can configure with the assistant's web app+will work. Some examples of use cases supported by this release include:</p>++<ul>+<li>Using Box.com's 5 gigabytes of free storage space as a cloud transfer+point between between repositories that cannot directly contact+one-another. (Many other cloud providers are also supported, from Rsync.net+to Amazon S3, to your own ssh server.)</li>+<li>Archiving or backing up files to Amazon Glacier.</li>+<li><a href="./share_with_a_friend_walkthrough.html">Sharing repositories with friends</a>+contacted through a Jabber server (such as Google Talk).</li>+<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local+network (or VPN) and automatically keeping the files in the annex in+sync as changes are made to them.</li>+<li>Cloning your repository to removable drives, USB keys, etc. The assistant+will notice when the drive is mounted and keep it in sync.+Such a drive can be stored as an offline backup, or transported between+computers to keep them in sync.</li>+</ul>+++<p>The following are known limitations of this release of the git-annex+assistant:</p>++<ul>+<li>The Max OSX standalone app does not work on all versions of Max OSX.</li>+<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch+files. Kqueue has to open every directory it watches, so too many+directories will run it out of the max number of open files (typically+1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>+for a workaround.</li>+<li>Retrieval of files from Amazon Glacier is not fully automated; the+assistant does not automatically retry in the 4 to 5 hours period+when Glacier makes the files available.</li>+</ul>+++<h2>version 3.20121112</h2>++<p>This is a major upgrade of the git-annex assistant, which is still in beta.</p>++<p>In general, anything you can configure with the assistant's web app+will work. Some examples of use cases supported by this release include:</p>++<ul>+<li><a href="./share_with_a_friend_walkthrough.html">Sharing repositories with friends</a>+contacted through a Jabber server (such as Google Talk).</li>+<li>Setting up cloud repositories, that are used as backups, archives,+or transfer points between repositories that cannot directly contact+one-another.</li>+<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local+network (or VPN) and automatically keeping the files in the annex in+sync as changes are made to them.</li>+<li>Cloning your repository to removable drives, USB keys, etc. The assistant+will notice when the drive is mounted and keep it in sync.+Such a drive can be stored as an offline backup, or transported between+computers to keep them in sync.</li>+</ul>+++<p>The following upgrade notes apply if you're upgrading from a previous version:</p>++<ul>+<li>For best results, edit the configuration of repositories you set+up with older versions, and place them in a repository group.+This lets the assistant know how you want to use the repository; for backup,+archival, as a transfer point for clients, etc. Go to Configuration ->+Manage Repositories, and click in the "configure" link to edit a repository's+configuration.</li>+<li>If you set up a cloud repository with an older version, and have multiple+clients using it, you are recommended to configure an Jabber account,+so that clients can use it to communicate when sending data to the+cloud repository. Configure Jabber by opening the webapp, and going to+Configuration -> Configure jabber account</li>+<li>When setting up local pairing, the assistant did not limit the paired+computer to accessing a single git repository. This new version does,+by setting GIT_ANNEX_SHELL_DIRECTORY in <code>~/.ssh/authorized_keys</code>.</li>+</ul>+++<p>The following are known limitations of this release of the git-annex+assistant:</p>++<ul>+<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch+files. Kqueue has to open every directory it watches, so too many+directories will run it out of the max number of open files (typically+1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>+for a workaround.</li>+</ul>+++<h2>version 3.20121009</h2>++<p>This is a maintenance release of the git-annex assistant, which is still in+beta.</p>++<p>In general, anything you can configure with the assistant's web app+will work. Some examples of use cases supported by this release include:</p>++<ul>+<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local+network (or VPN) and automatically keeping the files in the annex in+sync as changes are made to them.</li>+<li>Cloning your repository to removable drives, USB keys, etc. The assistant+will notice when the drive is mounted and keep it in sync.+Such a drive can be stored as an offline backup, or transported between+computers to keep them in sync.</li>+<li>Cloning your repository to a remote server, running ssh, and uploading+changes made to your files to the server. There is special support+for using the rsync.net cloud provider this way, or any shell account+on a typical unix server, such as a Linode VPS can be used.</li>+</ul>+++<p>The following are known limitations of this release of the git-annex+assistant:</p>++<ul>+<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch+files. Kqueue has to open every directory it watches, so too many+directories will run it out of the max number of open files (typically+1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>+for a workaround.</li>+<li>In order to ensure that all multiple repositories are kept in sync,+each computer with a repository must be running the git-annex assistant.</li>+<li>The assistant does not yet always manage to keep repositories in sync+when some are hidden from others behind firewalls.</li>+</ul>+++<h2>version 3.20120924</h2>++<p>This is the first beta release of the git-annex assistant.</p>++<p>In general, anything you can configure with the assistant's web app+will work. Some examples of use cases supported by this release include:</p>++<ul>+<li><a href="./local_pairing_walkthrough.html">Pairing</a> two computers that are on the same local+network (or VPN) and automatically keeping the files in the annex in+sync as changes are made to them.</li>+<li>Cloning your repository to removable drives, USB keys, etc. The assistant+will notice when the drive is mounted and keep it in sync.+Such a drive can be stored as an offline backup, or transported between+computers to keep them in sync.</li>+<li>Cloning your repository to a remote server, running ssh, and uploading+changes made to your files to the server. There is special support+for using the rsync.net cloud provider this way, or any shell account+on a typical unix server, such as a Linode VPS can be used.</li>+</ul>+++<p>The following are known limitations of this release of the git-annex+assistant:</p>++<ul>+<li>On Mac OSX and BSD operating systems, the assistant uses kqueue to watch+files. Kqueue has to open every directory it watches, so too many+directories will run it out of the max number of open files (typically+1024), and fail. See <span class="createlink">Issue on OSX with some system limits</span>+for a workaround.</li>+<li>In order to ensure that all multiple repositories are kept in sync,+each computer with a repository must be running the git-annex assistant.</li>+<li>The assistant does not yet always manage to keep repositories in sync+when some are hidden from others behind firewalls.</li>+<li>If a file is checked into git as a normal file and gets modified+(or merged, etc), it will be converted into an annexed file. So you+should not mix use of the assistant with normal git files in the same+repository yet.</li>+<li>If you <code>git annex unlock</code> a file, it will immediately be re-locked.+See <span class="createlink">watcher commits unlocked files</span>.</li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-750d9d9679548f9c107b86463ffc6c63">++++<div class="comment-subject">++<a href="/assistant/release_notes.html#comment-750d9d9679548f9c107b86463ffc6c63">OSX 10.8's gatekeeper does not like git-annex</a>++</div>++<div class="inlinecontent">+<p>Trying to run this release on OSX results in an error message from Gatekeeper:</p>++<blockquote><p>"git-annex" can't be opened because it is from an unidentified developer.</p>++<p>Your security preferences allow installation of only apps from the Mac App Store and identified developers.</p></blockquote>++<p>It would be nice if the binary could be signed to make Gatekeeper happy. Until then a note in the installation instructions might be useful.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://wiggy.net/">Wichert</a>+</span>+++— <span class="date">Tue Nov 13 10:47:52 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-4ec347a82669fabb94e58d4b5c462884">++++<div class="comment-subject">++<a href="/assistant/release_notes.html#comment-4ec347a82669fabb94e58d4b5c462884">git-annex not runnable on OSX 10.8</a>++</div>++<div class="inlinecontent">+<p>After telling Gatekeeper that I really want to run git-annex it still fails:</p>++<p>[fog;~]-131> open Applications/git-annex.app+LSOpenURLsWithRole() failed with error -10810 for the file /Users/wichert/Applications/git-annex.app.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://wiggy.net/">Wichert</a>+</span>+++— <span class="date">Tue Nov 13 10:49:35 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-bf41641d0dfc2a217615673f62d1e10e">++++<div class="comment-subject">++<a href="/assistant/release_notes.html#comment-bf41641d0dfc2a217615673f62d1e10e">comment 3</a>++</div>++<div class="inlinecontent">+<p>This has been previously reported: <span class="createlink">OSX git-annex.app error: LSOpenURLsWithRole()</span></p>++<p>No clue what that error is supposed to mean.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue Nov 13 13:11:51 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-6cc0fc47b477d4906add9ddf5f983733">++++<div class="comment-subject">++<a href="/assistant/release_notes.html#comment-6cc0fc47b477d4906add9ddf5f983733">comment 4</a>++</div>++<div class="inlinecontent">+sadly i only have a 10.7 machine to create the builds, so I have no experience with 10.8. I haven't had a 10.6 machine in a while to create the builds. Anyone else want to work together in setting up another 10.6 or 10.8 builder for others?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>+</span>+++— <span class="date">Fri Nov 16 09:02:40 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:34 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:34 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 10986 bytes)
binary file changed (absent → 18490 bytes)
binary file changed (absent → 63405 bytes)
binary file changed (absent → 61465 bytes)
binary file changed (absent → 24664 bytes)
@@ -0,0 +1,379 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>thanks</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+thanks++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The development of the git-annex assistant was made possible by the+generous donations of many people. I want to say "Thank You!" to each of+you individually, but until I meet all 951 of you, this page will have to+do. You have my most sincere thanks. --<span class="createlink">Joey</span></p>++<p>(If I got your name wrong, or you don't want it publically posted here,+email <a href="mailto:joey@kitenet.net">joey@kitenet.net</a>.)</p>++<h2>Major Backers</h2>++<p>These people are just inspiring in their enthusiasm and generosity to this+project.</p>++<ul>+<li>Jason Scott</li>+<li>strager</li>+</ul>+++<h2>Beta Testers</h2>++<p>Whole weeks of my time were made possible thanks to each of these+people, and their testing is invaluable to the development of+the git-annex assistant.</p>++<ul>+<li>Jimmy Tang</li>+<li>David Pollak</li>+<li>Pater</li>+<li>Francois Marier</li>+<li>Paul Sherwood</li>+<li>Fred Epma</li>+<li>Robert Ristroph</li>+<li>Josh Triplett</li>+<li>David Haslem</li>+<li>AJ Ashton</li>+<li>Svenne Krap</li>+<li>Drew Hess</li>+<li>Peter van Westen</li>+</ul>+++<h2>Prioritizers</h2>++<p>These forward-thinking people contributed generously just to help+set my priorities in which parts of the git-annex assistant were most+important to develop.</p>++<p>Paul C. Bryan, Paul Tötterman, Don Marti, Dean Thompson, Djoume, David Johnston+Asokan Pichai, Anders Østhus, Dominik Wagenknecht, Charlie Fox, Yazz D. Atlas,+fenchel, Erik Penninga, Richard Hartmann, Graham, Stan Yamane, Ben Skelton,+Ian McEwen, asc, Paul Tagliamonte, Sherif Abouseda, Igor Támara, Anne Wind,+Mesar Hameed, Brandur K. Holm Petersen, Takahiro Inoue, Kai Hendry,+Stephen Youndt, Lee Roberson, Ben Strawbridge, Andrew Greenberg, Alfred Adams+Andrew, Aaron De Vries, Monti Knazze, Jorge Canseco, Hamish, Mark Eichin,+Sherif Abouseda, Ben Strawbridge, chee rabbits, Pedro Côrte-Real</p>++<p>And special thanks to Kevin McKenzie, who also gave me a login to a Mac OSX+machine, which has proven invaluable, and Jimmy Tang who has helped+with Mac OSX autobuilding and packaging.</p>++<h2>Other Backers</h2>++<p>Most of the success of the Kickstarter is thanks to these folks. Some of+them spent significant amounts of money in the guise of getting some+swag. For others, being listed here, and being crucial to making the+git-annex assistant happen was reward enough. Large or small, these+contributions are, literally, my bread and butter this year.</p>++<p>Amitai Schlair, mvime, Romain Lenglet, James Petts, Jouni Uuksulainen,+Wichert Akkerman, Robert Bellus, Kasper Souren, rob, Michiel Buddingh',+Kevin, Rob Avina, Alon Levy, Vikash, Michael Alan Dorman, Harley Pig,+Andreas Olsson, Pietpiet, Christine Spang, Liz Young, Oleg Kosorukov,+Allard Hoeve, Valentin Haenel, Joost Baaij, Nathan Yergler, Nathan Howell,+Frédéric Schütz, Matti Eskelinen, Neil McGovern, Lane Lillquist, db48x,+Stuart Prescott, Mark Matienzo, KarlTheGood, leonm, Drew Slininger,+Andreas Fuchs, Conrad Parker, Johannes Engelke, Battlegarden, Justin Kelly,+Robin Wagner, Thad Ward, crenquis, Trudy Goold, Mike Cochrane, Adam Venturella,+Russell Foo, furankupan, Giorgio Occhioni, andy, mind, Mike Linksvayer,+Stefan Strahl, Jelmer Vernooij, Markus Fix, David Hicks, Justin Azoff,+Iain Nicol, Bob Ippolito, Thomas Lundstrøm, Jason Mandel, federico2,+Edd Cochran, Jose Ortega, Emmett Agnew, Rudy Garcia, Kodi, Nick Rusnov,+Michael Rubin, Tom de Grunt, Richard Murray, Peter, Suzanne Pierce, Jared+Marcotte, folk, Eamon, Jeff Richards, Leo Sutedja, dann frazier, Mikkel+kristiansen, Matt Thomas, Kilian Evang, Gergely Risko, Kristian Rumberg,+Peter Kropf, Mark Hepburn, greymont, D. Joe Anderson, Jeremy Zunker, ctebo,+Manuel Roumain, Jason Walsh, np, Shawn, Johan Tibell, Branden Tyree, Dinyar+Rabady, Andrew Mason, damond armstead, Ethan Aubin, TomTom Tommie, Jimmy+Kaplowitz, Steven Zakulec, mike smith, Jacob Kirkwood, Mark Hymers, Nathan+Collins, Asbjørn Sloth Tønnesen, Misty De Meo, James Shubin,+Jim Paris, Adam Sjøgren, miniBill, Taneli, Kumar Appaiah, Greg Grossmeier,+Sten Turpin, Otavio Salvador, Teemu Hukkanen, Brian Stengaard, bob walker,+bibeneus, andrelo, Yaroslav Halchenko, hesfalling, Tommy L, jlargentaye,+Serafeim Zanikolas, Don Armstrong, Chris Cormack, shayne.oneill, Radu+Raduta, Josh S, Robin Sheat, Henrik Mygind, kodx, Christian, Geoff+Crompton, Brian May, Olivier Berger, Filippo Gadotti, Daniel Curto-Millet,+Eskild Hustvedt, Douglas Soares de Andrade, Tom L, Michael Nacos, Michaël+P., William Roe, Joshua Honeycutt, Brian Kelly, Nathan Rasch, jorge, Martin+Galese, alex cox, Avery Brooks, David Whittington, Dan Martinez, Forrest+Sutton, Jouni K. Seppänen, Arnold Cano, Robert Beaty, Daniel, Kevin Savetz,+Randy, Ernie Braganza, Aaron Haviland, Brian Brunswick, asmw, sean, Michael+Williams, Alexander, Dougal Campbell, Robert Bacchas, Michael Lewis, Collin+Price, Wes Frazier, Matt Wall, Brandon Barclay, Derek van Vliet, Martin+DeMello, kitt hodsden, Stephen Kitt, Leif Bergman, Simon Lilburn, Michael+Prokop, Christiaan Conover, Nick Coombe, Tim Dysinger, Brandon Robinson,+Philip Newborough, keith, Mike Fullerton, Kyle, Phil Windley, Tyler Head,+George V. Reilly, Matthew, Ali Gündüz, Vasyl Diakonov, Paolo Capriotti,+allanfranta, Martin Haeberli, msingle, Vincent Sanders, Steven King, Dmitry+Gribanov, Brandon High, Ben Hughes, Mike Dank, JohnE, Diggory Hardy,+Michael Hanke, valhalla, Samuli Tuomola, Jeff Rau, Benjamin Lebsanft, John+Drago, James, Aidan Cooper, rondie, Paul Kohler, Matthew Knights, Aaron+Junod, Patrick R McDonald, Christopher Browne, Daniel Engel, John SJ+Anderson, Peter Sarossy, Mike Prasad, Christoph Ender, Jan Dittberner,+Zohar, Alexander Jelinek, stefan, Danny O'Brien, Matthew Thode, Nicole+Aptekar, maurice gaston, Chris Adams, Mike Klemencic, Reedy, Subito, Tobias+Gruetzmacher, Ole-Morten Duesund, André Koot, mp, gdop, Cole Scott, Blaker,+Matt Sottile, W. Craig Trader, Louis-Philippe Dubrule, Brian Boucheron,+Duncan Smith, Brenton Buchbach, Kyle Stevenson, Eliot Lash, Egon Elbre,+Praveen, williamji, Thomas Schreiber, Neil Ford, Ryan Pratt, Joshua Brand,+Peter Cox, Markus Engstrom, John Sutherland, Dean Bailey, Ed Summers,+Hillel Arnold, David Fiander, Kurt Yoder, Trevor Muñoz, keri, Ivan+Sergeyenko, Shad Bolling, Tal Kelrich, Steve Presley, gerald ocker, Essex+Taylor, Josh Thomson, Trevor Bramble, Lance Higgins, Frank Motta, Dirk+Kraft, soundray, Joe Haskins, nmjk, Apurva Desai, Colin Dean, docwhat,+Joseph Costello, Jst, flamsmark, Alex Lang, Bill Traynor, Anthony David,+Marc-André Lureau, AlNapp, Giovanni Moretti, John Lawrence, João Paulo+Pizani Flor, Jim Ray, Gregory Thrush, Alistair McGann, Andrew Wied,+Koutarou Furukawa, Xiscu Ignacio, Aaron Sachs, Matt, Quirijn, Chet+Williams, Chris Gray, Bruce Segal, Tom Conder, Louis Tovar, Alex Duryee,+booltox, d8uv, Decklin Foster, Rafael Cervantes, Micah R Ledbetter, Kevin+Sjöberg, Johan Strombom, Zachary Cohen, Jason Lewis, Yves Bilgeri, Ville+Aine, Mark Hurley, Marco Bonetti, Maximilian Haack, Hynek Schlawack,+Michael Leinartas, Andreas Liebschner, Duotrig, Nat Fairbanks, David+Deutsch, Colin Hayhurst, calca, Kyle Goodrick, Marc Bobillier, Robert+Snook, James Kim, Olivier Serres, Jon Redfern, Itai Tavor, Michael+Fladischer, Rob, Jan Schmid, Thomas H., Anders Söderbäck, Abhishek+Dasgupta, Jeff Goeke-Smith, Tommy Thorn, bonuswavepilot, Philipp Edelmann,+Nick, Alejandro Navarro Fulleda, Yann Lallemant, andrew brennan,+Dave Allen Barker Jr, Fabian, Lukas Anzinger, Carl Witty, Andy Taylor,+Andre Klärner, Andrew Chilton, Adam Gibbins, Alexander Wauck, Shane O'Dea,+Paul Waite, Iain McLaren, Maggie Ellen Robin Hess, Willard Korfhage,+Nicolas, Eric Nikolaisen, Magnus Enger, Philipp Kern, Andrew Alderwick,+Raphael Wimmer, Benjamin Schötz, Ana Guerrero, Pete, Pieter van der Eems,+Aaron Suggs, Fred Benenson, Cedric Howe, Lance Ivy, Tieg Zaharia, Kevin+Cooney, Jon Williams, Anton Kudris, Roman Komarov, Brad Hilton, Rick Dakan,+Adam Whitcomb, Paul Casagrande, Evgueni Baldin, Robert Sanders, Kagan+Kayal, Dean Gardiner, micah altman, Cameron Banga, Ross Mcnairn, Oscar+Vilaplana, Robin Graham, Dan Gervais, Jon Åslund, Ragan Webber, Noble Hays,+stephen brown, Sean True, Maciek Swiech, faser, eikenberry, Kai Laborenz,+Sergey Fedoseev, Chris Fournier, Svend Sorensen, Greg K, wojtek, Johan+Ribenfors, Anton, Benjamin, Oleg Tsarev, PsychoHazard, John Cochrane,+Kasper Lauritzen, Patrick Naish, Rob, Keith Nasman, zenmaster, David Royer,+Max Woolf, Dan Gabber, martin rhoads, Martin Schmidinger, Paul+Scott-Wilson, Tom Gromak, Andy Webster, Dale Webb, Jim Watson, Stephen+Hansen, Mircea, Dan Goodenberger, Matthias Fink, Andy Gott, Daniel, Jai+Nelson, Shrayas Rajagopal, Vladimir Rutsky, Alexander, Thorben Westerhuys,+hiruki, Tao Neuendorffer Flaherty, Elline, Marco Hegenberg, robert, Balda,+Brennen Bearnes, Richard Parkins, David Gwilliam, Mark Johnson, Jeff Eaton,+Reddawn90, Heather Pusey, Chris Heinz, Colin, Phatsaphong Thadabusapa,+valunthar, Michael Martinez, redlukas, Yury V. Zaytsev, Blake, Tobias+"betabrain" A., Leon, sopyer, Steve Burnett, bessarabov, sarble, krsch.com,+Jack Self, Jeff Welch, Sam Pettiford, Jimmy Stridh, Diego Barberá, David+Steele, Oscar Ciudad, John Braman, Jacob, Nick Jenkins, Ben Sullivan, Brian+Cleary, James Brosnahan, Darryn Ten, Alex Brem, Jonathan Hitchcock, Jan+Schmidle, Wolfrzx99, Steve Pomeroy, Matthew Sitton, Finkregh, Derek Reeve,+GDR!, Cory Chapman, Marc Olivier Chouinard, Andreas Ryland, Justin, Andreas+Persenius, Games That Teach, Walter Somerville, Bill Haecker, Brandon+Phenix, Justin Shultz, Colin Scroggins, Tim Goddard, Ben Margolin, Michael+Martinez, David Hobbs, Andre Le, Jason Roberts, Bob Lopez, Gert Van Gool,+Robert Carnel, Anders Lundqvist, Aniruddha Sathaye, Marco Gillies, Basti+von Bejga, Esko Arajärvi, Dominik Deobald, Pavel Yudaev, Fionn Behrens,+Davide Favargiotti, Perttu Luukko, Silvan Jegen, Marcelo Bittencourt,+Leonard Peris, smercer, Alexandre Dupas, Solomon Matthews, Peter Hogg,+Richard E. Varian, Ian Oswald, James W. Sarvey, Ed Grether, Frederic+Savard, Sebastian Nerz, Hans-Chr. Jehg, Matija Nalis, Josh DiMauro, Jason+Harris, Adam Byrtek, Tellef, Magnus, Bart Schuurmans, Giel van Schijndel,+Ryan, kiodos, Richard 'maddog' Collins, PawZubr, Jason Gassel, Alex+Boisvert, Richard Thompson, maddi bolton, csights, Aaron Bryson, Jason Chu,+Maxime Côté, Kineteka Systems, Joe Cabezas, Mike Czepiel, Rami Nasra,+Christian Simonsen, Wouter Beugelsdijk, Adam Gibson, Gal Buki, James+Marble, Alan Chambers, Bernd Wiehle, Simon Korzun, Daniel Glassey, Eero af+Heurlin, Mikael, Timo Engelhardt, Wesley Faulkner, Jay Wo, Mike Belle,+David Fowlkes Jr., Karl-Heinz Strass, Ed Mullins, Sam Flint,+Hendrica, Mark Emer Anderson, Joshua Cole, Jan Gondol, Henrik Lindhe,+Albert Delgado, Patrick, Alexa Avellar, Chris, sebsn1349, Maxim Kachur,+Andrew Marshall, Navjot Narula, Alwin Mathew, Christian Mangelsdorf, Avi+Shevin, Kevin S., Guillermo Sanchez Estrada, Alex Krieger, Luca Meier, Will+Jessop, Nick Ruest, Lani Aung, Ulf Benjaminsson, Rudi Engelbrecht, Miles+Matton, Cpt_Threepwood, Adam Kuyper, reacocard, David Kilsheimer, Peter+Olson, Bill Fischofer, Prashant Shah, Simon Bonnick, Alexander Grudtsov,+Antoine Boegli, Richard Warren, Sebastian Rust, AlmostHuman, Timmy+Crawford, PC, Marek Belski, pontus, Douglas S Butts, Eric Wallmander, Joe+Pelar, VIjay, Trahloc, Vernon Vantucci, Matthew baya, Viktor Štujber,+Stephen Akiki, Daniil Zamoldinov, Atley, Chris Thomson, Jacob Briggs, Falko+Richter, Andy Schmitz, Sergi Sagas, Peder Refsnes, Jonatan, Ben, Bill+Niblock, Agustin Acuna, Jeff Curl, Tim Humphrey, bib, James Zarbock,+Lachlan Devantier, Michal Berg, Jeff Lucas, Sid Irish, Franklyn, Jared+Dickson, Olli Jarva, Adam Gibson, Lukas Loesche, Jukka Määttä, Alexander+Lin, Dao Tran, Kirk, briankb, Ryan Villasenor, Daniel Wong, barista, Tomas+Jungwirth, Jesper Hansen, Nivin Singh, Alessandro Tieghi, Billy Roessler,+Peter Fetterer, Pallav Laskar, jcherney, Tyler Wang, Steve, Gigahost, Beat+Wolf, Hannibal Skorepa, aktiveradio, Mark Nunnikhoven, Bret Comnes, Alan+Ruttenberg, Anthony DiSanti, Adam Warkiewicz, Brian Bowman, Jonathan, Mark+Filley, Tobias Mohr, Christian St. Cyr, j. faceless user, Karl Miller,+Thomas Taimre, Vikram, Jason Mountcastle, Jason, Paul Elliott, Alexander,+Stephen Farmer, rayslava, Peter Leurs, Sky Kruse, JP Reeves, John J Schatz,+Martin Sandmair, Will Thompson, John Hergenroeder, Thomas, Christophe+Ponsart, Wolfdog, Eagertolearn, LukasM, Federico Hernandez, Vincent Bernat,+Christian Schmidt, Cameron Colby Thomson, Josh Duff, James Brown, Theron+Trowbridge, Falke, Don Meares, tauu, Greg Cornford, Max Fenton, Kenneth+Reitz, Bruce Bensetler, Mark Booth, Herb Mann, Sindre Sorhus, Chris+Knadler, Daniel Digerås, Derek, Sin Valentine, Ben Gamari, david+lampenscherf, fardles, Richard Burdeniuk, Tobias Kienzler, Dawid Humbla,+Bruno Barbaroxa, D Malt, krivar, James Valleroy, Peter, Tim Geddings,+Matthias Holzinger, Hanen, Petr Vacek, Raymond, Griff Maloney, Andreas+Helveg Rudolph, Nelson Blaha, Colonel Fubar, Skyjacker Captain Gavin+Phoenix, shaun, Michael, Kari Salminen, Rodrigo Miranda, Alan Chan, Justin+Eugene Evans, Isaac, Ben Staffin, Matthew Loar, Magos, Roderik, Eugenio+Piasini, Nico B, Scott Walter, Lior Amsalem, Thongrop Rodsavas, Alberto de+Paola, Shawn Poulen, John Swiderski, lluks, Waelen, Mark Slosarek, Jim+Cristol, mikesol, Bilal Quadri, LuP, Allan Nicolson, Kevin Washington,+Isaac Wedin, Paul Anguiano, ldacruz, Jason Manheim, Sawyer, Jason+Woofenden, Joe Danziger, Declan Morahan, KaptainUfolog, Vladron, bart, Jeff+McNeill, Christian Schlotter, Ben McQuillan, Anthony, Julian, Martin O,+altruism, Eric Solheim, MarkS, ndrwc, Matthew, David Lehn, Matthew+Cisneros, Mike Skoglund, Kristy Carey, fmotta, Tom Lowenthal, Branden+Tyree, Aaron Whitehouse</p>++<h2>Also thanks to</h2>++<ul>+<li>The Kickstarter team, who have unleashed much good on the world.</li>+<li>The Haskell developers, who toiled for 20 years in obscurity+before most of us noticed them, and on whose giant shoulders I now stand,+in awe of the view.</li>+<li>The Git developers, for obvious reasons.</li>+<li>All of git-annex's early adopters, who turned it from a personal+toy project into something much more, and showed me the interest was there.</li>+<li>Rsync.net, for providing me a free account so I can make sure git-annex+works well with it.</li>+<li>LeastAuthority.com, for providing me a free Tahoe-LAFS grid account,+so I can test git-annex with that, and back up the git-annex assistant+screencasts.</li>+<li>Anna and Mark, for the loan of the video camera; as well as the rest of+my family, for your support. Even when I couldn't explain what I was+working on.</li>+<li>The Hodges, for providing such a congenial place for me to live and work+on these first world problems, while you're off helping people in the+third world.</li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:34 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:34 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 3491 bytes)
binary file changed (absent → 27753 bytes)
binary file changed (absent → 6156 bytes)
binary file changed (absent → 34379 bytes)
@@ -0,0 +1,285 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>backends</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+backends++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>When a file is annexed, a key is generated from its content and/or metadata.+The file checked into git symlinks to the key. This key can later be used+to retrieve the file's content (its value).</p>++<p>Multiple pluggable key-value backends are supported, and a single repository+can use different ones for different files.</p>++<ul>+<li><code>SHA256E</code> -- The default backend for new files. This allows+verifying that the file content is right, and can avoid duplicates of+files with the same content. Its need to generate checksums+can make it slower for large files.</li>+<li><code>SHA256</code> -- Does not include the file extension in the key, which can+lead to better deduplication.</li>+<li><code>WORM</code> ("Write Once, Read Many") This assumes that any file with+the same basename, size, and modification time has the same content.+This is the the least expensive backend, recommended for really large+files or slow systems.</li>+<li><code>SHA512</code>, <code>SHA512E</code> -- Best currently available hash, for the very paranoid.</li>+<li><code>SHA1</code>, <code>SHA1E</code> -- Smaller hash than <code>SHA256</code> for those who want a checksum+ but are not concerned about security.</li>+<li><code>SHA384</code>, <code>SHA384E</code>, <code>SHA224</code>, <code>SHA224E</code> -- Hashes for people who like+unusual sizes.</li>+</ul>+++<p>The <code>annex.backends</code> git-config setting can be used to list the backends+git-annex should use. The first one listed will be used by default when+new files are added.</p>++<p>For finer control of what backend is used when adding different types of+files, the <code>.gitattributes</code> file can be used. The <code>annex.backend</code>+attribute can be set to the name of the backend to use for matching files.</p>++<p>For example, to use the SHA256E backend for sound files, which tend to be+smallish and might be modified or copied over time,+while using the WORM backend for everything else, you could set+in <code>.gitattributes</code>:</p>++<pre><code>* annex.backend=WORM+*.mp3 annex.backend=SHA256E+*.ogg annex.backend=SHA256E+</code></pre>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-3c1cd45d2a015b4fc412dd813293ad7d">++++<div class="comment-subject">++<a href="/backends.html#comment-3c1cd45d2a015b4fc412dd813293ad7d">SHA performance</a>++</div>++<div class="inlinecontent">+<p>It turns out that (at least on x86-64 machines) <code>SHA512</code> <a href="https://community.emc.com/community/edn/rsashare/blog/2010/11/01/sha-2-algorithms-when-sha-512-is-more-secure-and-faster">is faster than</a> <code>SHA256</code>. In some benchmarks I performed<sup>1</sup> <code>SHA256</code> was 1.8–2.2x slower than <code>SHA1</code> while <code>SHA512</code> was only 1.5–1.6x slower.</p>++<p><code>SHA224</code> and <code>SHA384</code> are effectively just truncated versions of <code>SHA256</code> and <code>SHA512</code> so their performance characteristics are identical.</p>++<p><sup>1</sup> <code>time head -c 100000000 /dev/zero | shasum -a 512</code></p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://nanotech.nanotechcorp.net/">NanoTech</a>+</span>+++— <span class="date">Fri Aug 10 00:37:32 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f1af10fa62cec23b61a688a3f8191f53">++++<div class="comment-subject">++<a href="/backends.html#comment-f1af10fa62cec23b61a688a3f8191f53">Tracking remote copies not even stored locally / URL backend turned into a "special remote".</a>++</div>++<div class="inlinecontent">+<p>In case you came here looking for the URL backend.</p>++<h2>The URL backend</h2>++<p>Several documents on the web refer to a special "URL backend", e.g. <a href="http://lwn.net/Articles/419241/">Large file management with git-annex [LWN.net]</a>. Historical content will never be updated yet it drives people to living places.</p>++<h2>Why a URL backend ?</h2>++<p>It is interesting because you can:</p>++<ul>+<li>let <code>git-annex</code> rest on the fact that some documents are available as extra copies available at any time (but from something that is not a git repository).</li>+<li>track these documents like your own with all git features, which opens up some truly marvelous combinations, which this margin is too narrow to contain (Pierre d.F. wouldn't disapprove ;-).</li>+</ul>+++<h2>How/Where now ?</h2>++<p><code>git-annex</code> used to have a URL backend. It seems that the design changed into a "special remote" feature, not limited to the web. You can now track files available through plain directories, rsync, webdav, some cloud storage, etc, even clay tablets. For details see <a href="./special_remotes.html">special remotes</a>.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawm7eqCMh_B7mxE0tnchbr0JoYu11FUAFRY">Stéphane</a>+</span>+++— <span class="date">Thu Jan 3 06:59:35 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./how_it_works.html">how it works</a>++<a href="./internals.html">internals</a>++<a href="./internals/key_format.html">internals/key format</a>++<a href="./links/the_details.html">links/the details</a>++<a href="./scalability.html">scalability</a>++<a href="./tips/Internet_Archive_via_S3.html">tips/Internet Archive via S3</a>++<a href="./tips/using_the_SHA1_backend.html">tips/using the SHA1 backend</a>++<a href="./upgrades.html">upgrades</a>++<a href="./upgrades/SHA_size.html">upgrades/SHA size</a>++<a href="./walkthrough/fsck:_verifying_your_data.html">walkthrough/fsck: verifying your data</a>+++<span class="popup">...+<span class="balloon">++<a href="./walkthrough/unused_data.html">walkthrough/unused data</a>++</span>+</span>++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:34 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:34 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,223 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>bare repositories</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+bare repositories++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Due to popular demand, git-annex can now be used with bare repositories.</p>++<p>So, for example, you can stash a file away in the origin:+<code>git annex move mybigfile --to origin</code></p>++<p>Of course, for that to work, the bare repository has to be on a system with+<a href="./git-annex-shell.html">git-annex-shell</a> installed. If "origin" is on GitWeb, you still can't+use git-annex to store stuff there.</p>++<p>It took a while, but bare repositories are now supported exactly as well+as non-bare repositories. Except for these caveats:</p>++<ul>+<li><code>git annex fsck</code> works in a bare repository, but does not display+warnings about insufficient+<a href="./copies.html">copies</a>. To get those warnings, just run it in one of the non-bare+checkouts.</li>+<li><code>git annex unused</code> in a bare repository only knows about keys used in+branches that have been pushed to the bare repository. So use it with care..</li>+<li>Commands that need a work tree, like <code>git annex add</code> won't work in a bare+repository, of course.</li>+</ul>+++<hr />++<p>Here is a quick example of how to set this up, using <code>origin</code> as the remote name, and assuming <code>~/annex</code> contains an annex:</p>++<p>On the server:</p>++<pre><code>git init --bare bare-annex.git+git annex init origin+</code></pre>++<p>Now configure the remote and do the initial push:</p>++<pre><code>cd ~/annex+git remote add origin example.com:bare-annex.git+git push origin master git-annex+</code></pre>++<p>Now <code>git annex status</code> should show the configured bare remote. If it does not, you may have to pull from the remote first (older versions of <code>git-annex</code>)</p>++<p>If you wish to configure git such that you can push/pull without arguments, set the upstream branch:</p>++<pre><code>git branch master --set-upstream origin/master+</code></pre>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-6e007e9304d6f09aaf40ff942f429025">++++<div class="comment-subject">++<a href="/bare_repositories.html#comment-6e007e9304d6f09aaf40ff942f429025">How to convert bare repositories to non-bare</a>++</div>++<div class="inlinecontent">+<p>I made a repository bare and later wanted to convert it, this would have worked with just plain git:</p>++<pre><code>cd bare-repo.git+mkdir .git+mv .??* * .git/+git config --unset core.bare+git reset --hard+</code></pre>++<p>But because git-annex uses different hashing directories under bare repositories all the files in the repo will point to files you don't have. Here's how you can fix that up assuming you're using a backend that assigns unique hashes based on file content (e.g. the SHA256 backend):</p>++<pre><code>mv .git/annex/objects from-bare-repo+git annex add from-bare-repo+git rm -f from-bare-repo+</code></pre>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmraN_ldJplGunVGmnjjLN6jL9s9TrVMGE">Ævar Arnfjörð</a>+</span>+++— <span class="date">Sun Nov 11 16:14:44 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/the_details.html">links/the details</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:34 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:34 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,225 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>coding style</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+coding style++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>If you do nothing else, avoid use of partial functions from the Prelude!+<code>import Utility.PartialPrelude</code> helps avoid this by defining conflicting+functions for all the common ones. Also avoid <code>!!</code>, it's partial too.</p>++<p>Use tabs for indentation. The one exception to this rule are+the Hamlet format files in <code>templates/*</code>. Hamlet, infuriatingly, refuses+to allow tabs to be used for indentation.</p>++<p>Code should make sense with any tab stop setting, but 8 space tabs are+the default. With 8 space tabs, code should not exceed 80 characters+per line. (With larger tabs, it may of course.)</p>++<p>Use spaces for layout. For example, here spaces (indicated with <code>.</code>)+are used after the initial tab to make the third test line up with+the others.</p>++<pre><code> when (foo_test || bar_test ||+ ......some_other_long_test)+ print "hi"+</code></pre>++<p>As a special Haskell-specific rule, "where" clauses are indented with two+spaces, rather than a tab. This makes them stand out from the main body+of the function, and avoids excessive indentation of the where cause content.+The definitions within the where clause should be put on separate lines,+each indented with a tab.</p>++<pre><code>main = do+ foo+ bar+ foo+ where+ foo = ...+ bar = ...+</code></pre>++<p>Where clauses for instance definitions and modules tend to appear at the end+of a line, rather than on a separate line.</p>++<pre><code>module Foo (Foo, mkFoo, unFoo) where+instance MonadBaseControl IO Annex where+</code></pre>++<p>When a function's type signature needs to be wrapped to another line,+it's typical to switch to displaying one parameter per line.</p>++<pre><code>foo :: Bar -> Baz -> (Bar -> Baz) -> IO Baz++foo'+ :: Bar+ -> Baz+ -> (Bar -> Baz)+ -> IO Baz+</code></pre>++<p>Note that the "::" then starts its own line. It is not put on the same+line as the function name because then it would not be guaranteed to line+up with the "->" at all tab width settings. Similarly, guards are put+on their own lines:</p>++<pre><code>splat i+ | odd i = error "splat!"+ | otherwise = i+</code></pre>++<p>Multiline lists and record syntax are written with leading commas,+that line up with the open and close punctuation.</p>++<pre><code>list =+ [ item1+ , item2+ , item3+ ]++foo = DataStructure+ { name = "bar"+ , address = "baz"+ }+</code></pre>++<p>Module imports are separated into two blocks, one for third-party modules,+and one for modules that are part of git-annex. (Additional blocks can be used+if it makes sense.)</p>++<p>Using tabs for indentation makes use of <code>let .. in</code> particularly tricky.+There's no really good way to bind multiple names in a let clause with+tab indentation. Instead, a where clause is typically used. To bind a single+name in a let clause, this is sometimes used:</p>++<pre><code>foo = let x = 42+ in x + (x-1) + x+</code></pre>++<hr />++<p>If you feel that this coding style leads to excessive amounts of horizontal+or vertical whitespace around your code, making it hard to fit enough of it+on the screen, consider finding a better abstraction, so the code that+does fit on the screen is easily understandable. ;)</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./download.html">download</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,480 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>comments</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+comments++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<div class="feedlink">+++</div>++++<p>Comments in the moderation queue:+0</p>++</div>+++<div id="pagebody">++<div id="content">+<p>Recent comments posted to this site:</p>++<div class="feedlink">+++</div>+<div class="comment" id="comment-fae19fdb9bb3650e47f45dcd9a08dec8">++++<div class="comment-subject">++<a href="/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__.html#comment-fae19fdb9bb3650e47f45dcd9a08dec8">comment 2</a>++</div>++<div class="inlinecontent">+@Alexander that DAV-0.4 problem is a bug in DAV, not git-annex. I've informed its author and it should be fixed soon, in a new version of DAV.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Tue Apr 30 17:51:50 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-7cc94df1bf9a75a6d03369f3897d6816">++++<div class="comment-subject">++<a href="/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__.html#comment-7cc94df1bf9a75a6d03369f3897d6816">can't install git-annex on OS X Mountain Lion without disabling WebDAV support</a>++</div>++<div class="inlinecontent">+<p>possibly related to this Debian issue:</p>++<p>trying to install git-annex with cabal on OS X 10.8.3, the build fails with</p>++<pre><code>Loading package DAV-0.4 ... linking ... ghc: +lookupSymbol failed in relocateSection (relocate external)+~/.cabal/lib/DAV-0.4/ghc-7.4.2/HSDAV-0.4.o: unknown symbol `_DAVzm0zi4_PathszuDAV_version1_closure'+ghc: unable to load package `DAV-0.4'+Failed to install git-annex-4.20130417+cabal: Error: some packages failed to install:+git-annex-4.20130417 failed during the building phase. The exception was:+ExitFailure 1+</code></pre>++<p>This was after following all of the instructions for the Homebrew install at <a href="http://git-annex.branchable.com/install/OSX/">http://git-annex.branchable.com/install/OSX/</a>+I was able to work around this issue by installing with the WebDAV flag disabled (ie, added the option --flags="-WebDAV" to last command in the OS X install instructions):</p>++<pre><code>cabal install git-annex --bindir=$HOME/bin --flags="-WebDAV"+</code></pre>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkCw26IdxXXPBoLcZsQFslM67OJSJynb1w">Alexander</a>+</span>+++— <span class="date">Mon Apr 29 13:57:03 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-656c072026f03c48b45d192bc1c4d9b1">++++<div class="comment-subject">++<a href="/design/assistant/xmpp.html#comment-656c072026f03c48b45d192bc1c4d9b1">file transfer?</a>++</div>++<div class="inlinecontent">+Would it be possible to add optional support for transferring files over XMPP (possibly being disabled out-of-the-box so as not to suck up third-party bandwidth)?++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=hhm&do=goto">hhm</a>++</span>+++— <span class="date">Tue Apr 23 06:22:51 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-8a9be1ba31f0bbc707bb0d24cd418589">++++<div class="comment-subject">++<a href="/tips/using_the_web_as_a_special_remote.html#comment-8a9be1ba31f0bbc707bb0d24cd418589">comment 4</a>++</div>++<div class="inlinecontent">+<p>You can use <code>git annex rmurl $file $url</code>, which I just added to git-annex.</p>++<p>(Also, <code>git annex drop $file --from web</code> will remove all the urls..)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Mon Apr 22 17:28:03 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-259ea36b60d38f5af5ab613bc4075b8b">++++<div class="comment-subject">++<a href="/design/assistant/polls/Android_default_directory.html#comment-259ea36b60d38f5af5ab613bc4075b8b">comment 3</a>++</div>++<div class="inlinecontent">+<p>@Richard, including all of /sdcard seems a reasonable thing to do if you want to back it all up. I don't know how likely anyone would be to want to sync the whole contents though.</p>++<p>@Leonardo direct mode is the default for all respositories created by the webapp, as well as all repositories on crippled filesystems that cannot support indirect mode. Android webapp thus defaults to direct mode twice over!</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Sat Apr 20 19:38:47 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e398437e26fcf7a8a134ff544c1e2a5b">++++<div class="comment-subject">++<a href="/design/assistant/polls/Android_default_directory.html#comment-e398437e26fcf7a8a134ff544c1e2a5b">Direct mode</a>++</div>++<div class="inlinecontent">+I think direct mode should be the default on Android++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnE6kFAbud1LWrQuyX76yMYnUjHt9tR-A8">Leonardo</a>+</span>+++— <span class="date">Sat Apr 20 16:55:09 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-d333f0a68724aa6febee23ed038f3179">++++<div class="comment-subject">++<a href="/design/assistant/polls/what_is_preventing_me_from_using_git-annex_assistant.html#comment-d333f0a68724aa6febee23ed038f3179">comment 20</a>++</div>++<div class="inlinecontent">+You can turn off automatic commits in the webapp by pausing syncing for the local repository.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Fri Apr 19 14:01:44 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-b0655bad47adbd62653b734ca4364c0f">++++<div class="comment-subject">++<a href="/design/assistant/polls/what_is_preventing_me_from_using_git-annex_assistant.html#comment-b0655bad47adbd62653b734ca4364c0f">Windows + git ignore like syntax for files to sync</a>++</div>++<div class="inlinecontent">+<p>Hi,</p>++<p>my company would need this for some project.</p>++<p>But to adopt it I would need:+* windows support (I don't care if now symlink support for now)+* being able to define which files are automatically synced using a syntax similar to the gitignore one+* being able to disable auto-commit (just synching, user should be able to commit on their own)</p>++<p>thanks</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnmvVKc1ECzZx7EhtLHBP6RWPZewq4x_9I">Daniele</a>+</span>+++— <span class="date">Fri Apr 19 06:47:36 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-bdc97055fac2d28cb1baa9bd5f89eeb4">++++<div class="comment-subject">++<a href="/design/assistant/polls/Android_default_directory.html#comment-bdc97055fac2d28cb1baa9bd5f89eeb4">comment 1</a>++</div>++<div class="inlinecontent">+<p>While my main use case is a photo repo, I don't think it's wise to default to there.</p>++<p>Similarly, spamming what amounts to the root dir of "external" storage with repos seems like a bad idea.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>+</span>+++— <span class="date">Fri Apr 19 02:29:14 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-d020a3312a07e4edee8b03081922a8b8">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-d020a3312a07e4edee8b03081922a8b8">comment 19</a>++</div>++<div class="inlinecontent">+sounds like a prime candidate for a nice lightweight linux distro ;)++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>+</span>+++— <span class="date">Wed Apr 17 22:05:34 2013</span>+</div>++++<div style="clear: both"></div>+</div>++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./sidebar.html">sidebar</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,137 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>contact</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+contact++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><span class="selflink">contact</span></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Joey Hess <a href="mailto:joey@kitenet.net">joey@kitenet.net</a> is the author of git-annex. If you need to+talk about something privately, email me.</p>++<p>The <span class="createlink">forum</span> is the best place to discuss git-annex.</p>++<p>For realtime chat, use the <code>#git-annex</code> channel on irc.oftc.net.+You can also watch incoming commits there.</p>++<p>The <a href="http://lists.madduck.net/listinfo/vcs-home">VCS-home mailing list</a>+is a good mailing list for users who want to use git-annex in the context+of managing their large personal files.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./sidebar.html">sidebar</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,178 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>copies</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+copies++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Annexed data is stored inside your git repository's <code>.git/annex</code> directory.+Some <a href="./special_remotes.html">special remotes</a> can store annexed data elsewhere.</p>++<p>It's important that data not get lost by an ill-considered <code>git annex drop</code>+command. So, git-annex can be configured to try+to keep N copies of a file's content available across all repositories.+(Although <a href="./trust.html">untrusted repositories</a> don't count toward this total.)</p>++<p>By default, N is 1; it is configured by annex.numcopies. This default+can be overridden on a per-file-type basis by the annex.numcopies+setting in <code>.gitattributes</code> files. The --numcopies switch allows+temporarily using a different value.</p>++<p><code>git annex drop</code> attempts to check with other git remotes, to check that N+copies of the file exist. If enough repositories cannot be verified to have+it, it will retain the file content to avoid data loss. Note that+<a href="./trust.html">trusted repositories</a> are not explicitly checked.</p>++<p>For example, consider three repositories: Server, Laptop, and USB. Both Server+and USB have a copy of a file, and N=1. If on Laptop, you <code>git annex get+$file</code>, this will transfer it from either Server or USB (depending on which+is available), and there are now 3 copies of the file.</p>++<p>Suppose you want to free up space on Laptop again, and you <code>git annex drop</code> the file+there. If USB is connected, or Server can be contacted, git-annex can check+that it still has a copy of the file, and the content is removed from+Laptop. But if USB is currently disconnected, and Server also cannot be+contacted, it can't verify that it is safe to drop the file, and will+refuse to do so.</p>++<p>With N=2, in order to drop the file content from Laptop, it would need access+to both USB and Server.</p>++<p>Note that different repositories can be configured with different values of+N. So just because Laptop has N=2, this does not prevent the number of+copies falling to 1, when USB and Server have N=1. To avoid this,+configure it in <code>.gitattributes</code>, which is shared between repositories+using git.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./bare_repositories.html">bare repositories</a>++<a href="./future_proofing.html">future proofing</a>++<a href="./preferred_content.html">preferred content</a>++<a href="./special_remotes/S3.html">special remotes/S3</a>++<a href="./tips/using_the_web_as_a_special_remote.html">tips/using the web as a special remote</a>++<a href="./trust.html">trust</a>++<a href="./use_case/Bob.html">use case/Bob</a>++<a href="./walkthrough/backups.html">walkthrough/backups</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,132 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>design</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+design++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex's high-level design is mostly inherent in the data that it+stores in git, and alongside git. See <a href="./internals.html">internals</a> for details.</p>++<p>See <a href="./design/encryption.html">encryption</a> for design of encryption elements.</p>++<p>See <a href="./design/assistant.html">assistant</a> for the design site for the git-annex <a href="./assistant.html">assistant</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/the_details.html">links/the details</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,757 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>assistant</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../design.html">design</a>/ ++</span>+<span class="title">+assistant++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This is the design site for the git-annex <a href="../assistant.html">assistant</a>.</p>++<p>Parts of the design is still being fleshed out, still many ideas+and use cases to add. Feel free to chip in with comments! --<span class="createlink">Joey</span></p>++<h2>roadmap</h2>++<ul>+<li>Month 1 "like dropbox": [[!traillink inotify]] [[!traillink syncing]]</li>+<li>Month 2 "shiny webapp": [[!traillink webapp]] [[!traillink progressbars]]</li>+<li>Month 3 "easy setup": [[!traillink configurators]] [[!traillink pairing]]</li>+<li>Month 4 "cloud": [[!traillink cloud]] [[!traillink transfer_control]]</li>+<li>Month 5 "cloud continued": [[!traillink xmpp]] [[!traillink more_cloud_providers]]</li>+<li>Month 6 "9k bonus round": [[!traillink desymlink]]</li>+<li>Month 7: user-driven features and polishing;+<a href="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">presentation at LCA2013</a></li>+<li>Month 8: [[!traillink Android]]</li>+<li>Month 9: <a href="../videos.html">screencasts</a> and polishing</li>+</ul>+++<p>We are, approximately, here:</p>++<ul>+<li>Month 10: bugfixing, Android webapp</li>+<li>Month 11: more user-driven features and polishing</li>+<li>Month 12: "Windows purgatory" <a href="./assistant/windows.html">Windows</a></li>+</ul>+++<h2>porting</h2>++<ul>+<li><a href="./assistant/OSX.html">OSX</a> port is in fairly good shape, but still has some room for improvement</li>+<li><a href="./assistant/android.html">android</a> port is just getting started</li>+<li>Windows port does not exist yet</li>+</ul>+++<h2>not yet on the map:</h2>++<ul>+<li><a href="./assistant/rate_limiting.html">rate limiting</a></li>+<li><a href="./assistant/partial_content.html">partial content</a></li>+<li><a href="./assistant/encrypted_git_remotes.html">encrypted git remotes</a></li>+<li><a href="./assistant/deltas.html">deltas</a></li>+<li><a href="./assistant/leftovers.html">leftovers</a></li>+<li><span class="createlink">other todo items</span></li>+</ul>+++<h2>polls</h2>++<p>I post <a href="./assistant/polls.html">polls</a> occasionally to make decisions. You can vote!</p>++<h2>blog</h2>++<p>I'm blogging about my progress in the <span class="createlink">blog</span> on a semi-daily basis.+Follow along!</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-2dc9d65b6aca226e578eb7af2a8c8f3c">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-2dc9d65b6aca226e578eb7af2a8c8f3c">comment 1</a>++</div>++<div class="inlinecontent">+Will statically linked binaries be provided for say Linux, OSX and *BSD? I think having some statically linked binaries will certainly help and appeal to a lot of users.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>+</span>+++— <span class="date">Sat Jun 2 08:06:37 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-071a8a4e7402d22af45051da70f9ccae">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-071a8a4e7402d22af45051da70f9ccae">comment 2</a>++</div>++<div class="inlinecontent">+Jimmy, I hope to make it as easy as possible to install. I've been focusing on getting it directly into popular Linux distributions, rather than shipping my own binary. The OSX binary is static, and while I lack a OSX machine, I would like to get it easier to distribute to OSX users.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Mon Jun 4 15:45:00 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-5a552c09975efea1fa4d81e2722bec4d">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-5a552c09975efea1fa4d81e2722bec4d">comment 3</a>++</div>++<div class="inlinecontent">+I'd agree getting it into the main distros is the way to go, if you need OSX binaries, I could volunteer to setup an autobuilder to generate binaries for OSX users, however it would rely on users to have macports with the correct ports installed to use it (things like coreutils etc...)++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>+</span>+++— <span class="date">Thu Jun 7 16:22:55 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e56bb71b2f6a200d167ee6b1bee6587e">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-e56bb71b2f6a200d167ee6b1bee6587e">comment 4</a>++</div>++<div class="inlinecontent">+<p>I always appreciate your OSX work Jimmy...</p>++<p>Could it be put into macports?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Jun 7 21:56:52 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c8c6ecfeff30f972792690a5bef58908">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-c8c6ecfeff30f972792690a5bef58908">comment 5</a>++</div>++<div class="inlinecontent">+<p>In relation to macports, I often found that haskell in macports are often behind other distros, and I'm not willing to put much effort into maintaining or updating those ports. I found that to build git-annex, installing macports manually and then installing haskell-platform from the upstream to be the best way to get the most up to date dependancies for git-annex.</p>++<p>fyi in macports ghc is at version 6.10.4 and haskell platform is at version 2009.2, so there are a significant number of ports to update.</p>++<p>I was thinking about this a bit more and I reckon it might be easier to try and build a self contained .pkg package and have all the needed binaries in a .app styled package, that would work well when the webapp comes along. I will take a look at it in a week or two (currently moving house so I dont have much time)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>+</span>+++— <span class="date">Fri Jun 8 03:22:34 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-77e54e7ebfbd944c370173014b535c91">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-77e54e7ebfbd944c370173014b535c91">comment 6</a>++</div>++<div class="inlinecontent">+<p>It's not much for now... but see <a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0/">http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0/</a> I'm ignoring the debian-stable and pristine-tar branches for now, as I am just building and testing on osx 10.7.</p>++<p>Hope the autobuilder will help you develop the OSX side of things without having direct access to an osx machine! I will try and get gitbuilder to spit out appropriately named tarballs of the compiled binaries in a few days when I have more time.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>+</span>+++— <span class="date">Fri Jun 8 11:21:18 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-135a31b1e86ecc315f121fe53da32276">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-135a31b1e86ecc315f121fe53da32276">comment 7</a>++</div>++<div class="inlinecontent">+Thanks, that's already been useful to me. You might as well skip the debian-specific "bpo" tags too.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sat Jun 9 14:07:51 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f65cad7d6e0a76a18b1801d27cd8de01">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-f65cad7d6e0a76a18b1801d27cd8de01">macports</a>++</div>++<div class="inlinecontent">+<p>The average OSX user has a) no idea what macports is, and b) will not be able to install it. Anything that requires a user to do anything with a commandline (or really anything other than using a GUI installer) is effectively a dealbreaker. For our use cases OSX is definitely a requirement, but it must only use standard OSX installation methods in order to be usable. Being in the appstore would be ideal, but standard dmg/pkg installers are still common enough that they are also acceptable.</p>++<p>FWIW this is the same reason many git GUIs were not usable for our OSX users: they required separate installation of the git commandline tools.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://wiggy.net/">Wichert</a>+</span>+++— <span class="date">Tue Jun 12 09:00:34 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-52daf652d7b7629489f942063cec87b7">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-52daf652d7b7629489f942063cec87b7">Watch also possible with git?</a>++</div>++<div class="inlinecontent">+<p>Hi,</p>++<p>it seems that you put a lot of efforts in handling race conditions. Thats great. I wonder if the watch can also be used with git (i.e. changes are commited into git and not as annex)? I know that other projects follow this idea but why using different tools if the git-annex assistant could handle both...</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://www.klomp.eu/">klomp.eu</a>+</span>+++— <span class="date">Fri Jun 15 13:25:30 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-bcf6c709883506c83aa3111cc23bc7ff">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-bcf6c709883506c83aa3111cc23bc7ff">Homebrew instead of MacPorts</a>++</div>++<div class="inlinecontent">+<p><a href="http://mxcl.github.com/homebrew/">Homebrew</a> is a much better package manager than MacPorts IMO.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawldKnauegZulM7X6JoHJs7Gd5PnDjcgx-E">Matt</a>+</span>+++— <span class="date">Fri Jun 22 00:26:02 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-bbcaeb83ceffab6ec34d34db157a489e">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-bbcaeb83ceffab6ec34d34db157a489e">comment 11</a>++</div>++<div class="inlinecontent">+<p>Yeah definately go with homebrew rather than macports if possible. macports and fink, whilst great systems, have a tendency to sort of create their own alternative-dimension of files within the system that just dont always feel particularly well integrated. As a result "brew" has become increasingly more popular to the point its almost ubuquitous now.</p>++<p>Plus its brew-doctor thing is awesome.</p>++<p>The best approach though thats agnostic to distro systems is to simply go for a generic installer.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawneJXwhacIb0YvvdYFxhlNVpz6Wpg6V7AA">Shayne</a>+</span>+++— <span class="date">Sun Aug 12 20:37:35 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f953069e70bcd5f6a3f05d1eb306325b">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-f953069e70bcd5f6a3f05d1eb306325b">Multiple annexes?</a>++</div>++<div class="inlinecontent">+<p>Thank you for this great piece of software which is now becoming even better with the assistant.</p>++<p>Just one question: will one instance of the assistant be able to track multiple git annex repositories each building up their own network of annexes OR would I need to run multiple instances of the assistant?</p>++<p>Thanks,+Jörn</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4">Jörn</a>+</span>+++— <span class="date">Thu Sep 20 12:10:29 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-6ddc18af9685a7ddbbe6e639e7b15feb">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-6ddc18af9685a7ddbbe6e639e7b15feb">comment 13</a>++</div>++<div class="inlinecontent">+@Jörn, two days ago I added support in the webapp for multiple independent repositories. So you can create independent repos using it, and switch between them from a menu. Under the hood there are multiple git-annex assistant daemons running, but this is an implementation detail; it's not like these use any more memory or other resources than would a single daemon that managed multiple repositories.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Sep 20 12:21:11 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a38695b8a047c997862345ffe881d952">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-a38695b8a047c997862345ffe881d952">you rock! & roadmap update?</a>++</div>++<div class="inlinecontent">+<p>joey, you rock. I just want to push on that point - it doesn't seem like there's that many tools that do what git-annex is trying to do out there, and you seem to be doing an incredible job at doing it, so this is great, keep going!</p>++<p>i was wondering - i am glad to see the progress, but it is unclear to me where you actually are in the roadmap. are things going according to plan? are we at month 3? 4? or 1-4? :) just little updates on that roadmap section above would be quite useful!</p>++<p>thanks again!</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://id.koumbit.net/anarcat">anarcat [id.koumbit.net]</a>+</span>+++— <span class="date">Fri Sep 21 00:25:58 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-269c4c315e1dac0d6c18069a9616c767">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-269c4c315e1dac0d6c18069a9616c767">comment 15</a>++</div>++<div class="inlinecontent">+<p>We're on month 4 of work, and most of months 1-3 is done well enough for a first pass. Very little of what's listed in month 4 has happened yet, due to my being maybe 2 weeks behind schedule, but bits of <a href="./assistant/cloud.html">cloud</a> are being planned.</p>++<p>I've made a small adjustment, I think it'll make sense to spend a month on user-driven features before getting into Android.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Fri Sep 21 01:25:53 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f5af9f1fe608daa7eb6f45a4539311d0">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-f5af9f1fe608daa7eb6f45a4539311d0">Maybe a DEB?2</a>++</div>++<div class="inlinecontent">+Month 3 was all about easy setup, so I kind of expected to download a deb package and just install it, not to download a whole bunch of haskell libraries. Is there a chance that you will release some packages?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://launchpad.net/~gdr-go2">gdr-go2</a>+</span>+++— <span class="date">Thu Sep 27 05:44:14 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-3f7c7b52d5fadcf2e8a38e741d44ed61">++++<div class="comment-subject">++<a href="/design/assistant.html#comment-3f7c7b52d5fadcf2e8a38e741d44ed61">comment 17</a>++</div>++<div class="inlinecontent">+@gdr A package with the assistant is available in Debian unstable.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Sep 27 14:44:11 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>++<a href="../design.html">design</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,196 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>OSX</title>++<link rel="stylesheet" href="../../style.css" type="text/css" />++<link rel="stylesheet" href="../../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../../index.html">git-annex</a>/ ++<a href="../../design.html">design</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+OSX++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../../install.html">install</a></li>+<li><a href="../../assistant.html">assistant</a></li>+<li><a href="../../walkthrough.html">walkthrough</a></li>+<li><a href="../../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../../comments.html">comments</a></li>+<li><a href="../../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Misc OSX porting things:</p>++<ul>+<li>autostart the assistant on OSX, using launchd <strong>done</strong></li>+<li>icon to start webapp <strong>done</strong></li>+<li>use FSEvents to detect file changes (better than kqueue) <strong>done</strong></li>+<li>Use OSX's "network reachability functionality" to detect when on a network+<a href="http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Intro/SC_Intro.html#//apple_ref/doc/uid/TP40001065">http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Intro/SC_Intro.html#//apple_ref/doc/uid/TP40001065</a></li>+</ul>+++<p>Bugs:</p>++<div class="feedlink">+++</div>++++++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-7295a75b6b4af9abb6a6437381580f2f">++++<div class="comment-subject">++<a href="/design/assistant/OSX.html#comment-7295a75b6b4af9abb6a6437381580f2f">Mount detection</a>++</div>++<div class="inlinecontent">+<p>regarding the current mount polling on OSX: why not use the NSNotificationCenter for being notified on mount events on OSX?</p>++<p>Details see:</p>++<ol>+<li><a href="http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x">http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x</a></li>+<li><a href="http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c">http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c</a></li>+<li><a href="https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438">https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438</a></li>+</ol>++++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4">Jörn</a>+</span>+++— <span class="date">Fri Sep 21 05:23:34 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,324 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>cloud</title>++<link rel="stylesheet" href="../../style.css" type="text/css" />++<link rel="stylesheet" href="../../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../../index.html">git-annex</a>/ ++<a href="../../design.html">design</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+cloud++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../../install.html">install</a></li>+<li><a href="../../assistant.html">assistant</a></li>+<li><a href="../../walkthrough.html">walkthrough</a></li>+<li><a href="../../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../../comments.html">comments</a></li>+<li><a href="../../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The <a href="./syncing.html">syncing</a> design assumes the network is connected. But it's often+not in these pre-IPV6 days, so the cloud needs to be used to bridge between+LANS.</p>++<h2>The cloud notification problem (<strong>done</strong>)</h2>++<p>Alice and Bob have repos, and there is a cloud remote they both share.+Alice adds a file; the assistant transfers it to the cloud remote.+How does Bob find out about it?</p>++<p>There are two parts to this problem. Bob needs to find out that there's+been a change to Alice's git repo. Then he needs to pull from Alice's git repo,+or some other repo in the cloud she pushed to. Once both steps are done,+the assistant will transfer the file from the cloud to Bob.</p>++<ul>+<li>dvcs-autosync uses xmppp; all repos need to have the same xmpp account+configured, and send self-messages. An alternative would be to have+different accounts that join a channel or message each other. Still needs+account configuration.</li>+<li>irc could be used. With a default irc network, and an agreed-upon channel,+no configuration should be needed. IRC might be harder to get through+some firewalls, and is prone to netsplits, etc. IRC networks have reasons+to be wary of bots using them. Only basic notifications could be done over+irc, as it has little security.</li>+<li>When there's a ssh server involved, code could be run on it to notify+logged-in clients. But this is not a general solution to this problem.</li>+<li>pubsubhubbub does not seem like an option; its hubs want to pull down+a feed over http.</li>+</ul>+++<p>See <a href="./xmpp.html">xmpp</a> for design of git-annex's use of xmpp for push notifications.</p>++<h2>storing git repos in the cloud <strong>done for XMPP</strong></h2>++<p>Of course, one option is to just use github etc to store the git repo.</p>++<p>Two things can store git repos in Amazon S3:+* <a href="http://gabrito.com/post/storing-git-repositories-in-amazon-s3-for-high-availability">http://gabrito.com/post/storing-git-repositories-in-amazon-s3-for-high-availability</a>+* <a href="http://wiki.cs.pdx.edu/oss2009/index/projects/gits3.html">http://wiki.cs.pdx.edu/oss2009/index/projects/gits3.html</a></p>++<p>Another option is to not store the git repo in the cloud, but push/pull+peer-to-peer. When peers cannot directly talk to one-another, this could be+bounced through something like XMPP. This is <strong>done</strong> for <a href="./xmpp.html">xmpp</a>!</p>++<p>Another option: Use <a href="https://github.com/blake2-ppc/git-remote-gcrypt">https://github.com/blake2-ppc/git-remote-gcrypt</a> to store+git repo encrypted on cloud storage.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-bff38388465cb7c83fd1440853a45410">++++<div class="comment-subject">++<a href="/design/assistant/cloud.html#comment-bff38388465cb7c83fd1440853a45410">is ftp an option?</a>++</div>++<div class="inlinecontent">+for people only having ftp-access to there storage.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawn7Oyqusvn0oONFtVhCx5gRAcvPjyRMcBI">Michaël</a>+</span>+++— <span class="date">Wed May 30 06:44:12 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-5aea3eb7e8aec1e2110b6a4f1a843433">++++<div class="comment-subject">++<a href="/design/assistant/cloud.html#comment-5aea3eb7e8aec1e2110b6a4f1a843433">Cloud Service Limitations</a>++</div>++<div class="inlinecontent">+<p>Hey Joey!</p>++<p>I'm not very tech savvy, but here is my question.+I think for all cloud service providers, there is an upload limitation on how big one file may be.+For example, I can't upload a file bigger than 100 MB on box.net.+Does this affect git-annex at all? Will git-annex automatically split the file depending on the cloud provider or will I have to create small RAR archives of one large file to upload them?</p>++<p>Thanks!+James</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkq0-zRhubO6kR9f85-5kALszIzxIokTUw">James</a>+</span>+++— <span class="date">Sun Jun 10 22:15:04 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c0b4e1ebdb4ac122b1b1e8723336544e">++++<div class="comment-subject">++<a href="/design/assistant/cloud.html#comment-c0b4e1ebdb4ac122b1b1e8723336544e">re: cloud</a>++</div>++<div class="inlinecontent">+Yes, git-annex has to split files for certian providers. I already added support for this as part of my first pass at supporting box.com, see <a href="../../tips/using_box.com_as_a_special_remote.html">using box.com as a special remote</a>.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Mon Jun 11 00:48:08 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-5e27fcb1377b57315d90fc31268e4abb">++++<div class="comment-subject">++<a href="/design/assistant/cloud.html#comment-5e27fcb1377b57315d90fc31268e4abb">OwnCloud</a>++</div>++<div class="inlinecontent">+<p>“Google drive (attractive because it's free, only 5 gb tho)”</p>++<p>Just in case somebody also wants their 5GB of disk space in the cloud, consider using some of the <a href="http://owncloud.org/providers/">owncloud providers</a>. They also offer that amount, but they use free software for everything, using standard protocols (WebDav mostly, because is well supported in all OS).</p>++<p>Git Annex works with them through davfs2, but it would be great if it could support this other program/protocol (OwnCloud/WebDAV) in a more integrated way.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawk9XEh8pxrJxZxIkyK7lWaA7QG1UWt9lgU">Gugelplus</a>+</span>+++— <span class="date">Mon Aug 27 16:43:19 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./comment_15_68c98a27083567f20c2e6bc2a760991b.html">comment 15 68c98a27083567f20c2e6bc2a760991b</a>++<a href="./polls/prioritizing_special_remotes.html">polls/prioritizing special remotes</a>++<a href="./xmpp.html">xmpp</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,176 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>deltas</title>++<link rel="stylesheet" href="../../style.css" type="text/css" />++<link rel="stylesheet" href="../../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../../index.html">git-annex</a>/ ++<a href="../../design.html">design</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+deltas++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../../install.html">install</a></li>+<li><a href="../../assistant.html">assistant</a></li>+<li><a href="../../walkthrough.html">walkthrough</a></li>+<li><a href="../../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../../comments.html">comments</a></li>+<li><a href="../../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Speed up syncing of modified versions of existing files.</p>++<p>One simple way is to find the key of the old version of a file that's+being transferred, so it can be used as the basis for rsync, or any+other similar transfer protocol.</p>++<p>For remotes that don't use rsync, a poor man's version could be had by+chunking each object into multiple parts. Only modified parts need be+transferred. Sort of sub-keys to the main key being stored.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-16106e3d96459d2de00f385071acaff5">++++<div class="comment-subject">++<a href="/design/assistant/deltas.html#comment-16106e3d96459d2de00f385071acaff5">zsync?</a>++</div>++<div class="inlinecontent">+zsync.moria.org.uk may have broken some of the ground here.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkfHTPsiAcHEEN7Xl7WxiZmYq-vX7azxFY">Vincent</a>+</span>+++— <span class="date">Mon Sep 10 08:35:45 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>++<a href="./polls/goals_for_April.html">polls/goals for April</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,375 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>polls</title>++<link rel="stylesheet" href="../../style.css" type="text/css" />++<link rel="stylesheet" href="../../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../../index.html">git-annex</a>/ ++<a href="../../design.html">design</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+polls++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../../install.html">install</a></li>+<li><a href="../../assistant.html">assistant</a></li>+<li><a href="../../walkthrough.html">walkthrough</a></li>+<li><a href="../../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../../comments.html">comments</a></li>+<li><a href="../../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<div class="feedlink">+++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./polls/what_is_preventing_me_from_using_git-annex_assistant.html">what is preventing me from using git-annex assistant</a>++</span>+</div>++<div class="inlinecontent">+<p>My goal for this month is to get more people using the git-annex assistant,+and fix issues that might be blocking you from using it. To do this,+I'd like to get an idea about whether you're already using it,+or what's keeping you from using it.</p>++<p>If you use <code>git-annex</code> at the command line and have no reason to use the+assistant, please instead fill in this poll on behalf of less technically+adept friends or family -- what's preventing you from introducing them to+the assistant?</p>++<p>[[!poll open=no expandable=yes 8 "I'm using the assistant!" 28 "I need a Windows port" 30 "I need an Android port" 3 "I need an IPhone port (not holding my breath)" 2 "Well, it's still in beta..." 11 "I want to, but have not had the time to try it" 5 "Just inertia. I've got this dropbox/whatever that already works.." 3 "It's too hard to install (please say why in comments)" 2 "Perceived recent increase of bug reports and thus sitting it out." 25 "Initially the lack of direct-mode. Now concerns about the safety of direct mode. Perhaps after the next release." 10 "I haven't always well understood the differences between commandline operation & the assistant, so the differences would confuse me, and I found the command line more understandable & less scary. Now trying to learn to like & trust the assistant. :)" 21 "An Ubuntu PPA would be supercool! Thanks for your great work!!" 18 "Not yet in Debian sid amd64" 6 "Waiting for Fedora/CentOS rpm repository." 2 "throttling transfers, it upsets people when I saturate the connection" 2 "partial content" 1 "Not yet available in macports" 4 "No build yet for Nokia N9" 3 "Using only git-annex webapp to config does not seem to work: Create walkthough?" 5 "No build for OSX 10.6" 5 "Needs more focus on the UI." 1 "Just inertia. I don't have a Dropbox/whatever." 4 "Replaces files with a symlink mess." 2 "configurable option to only annex files meeting certian size or filename criteria" 4 "I'm really confused about how to make it sync with a remote NON-bare repository. I'm even afraid to try <code>git remote add</code>, since there is no clear method to completely forget a git-annex remote..." 5 "A build for te raspberry pi would be supercol!" 1 "Would be nice to exclude subfolders from the gui or through a config file" 1 "I wish I had transparently encrypted git repos in the cloud available, like jgit." 1 "too many inodes used in direct mode. maybe it's possible to keep more info as git objects instead?" 2 "I need to be able to restrict in which repo dirs changes get auto-committed" 1 "Provide .deb package" 1 "Better documentation/walkthroughs on using git-annex within an existing git repo. AKA mixed use" 1 "Union mounts to have a single view of file collection on the network" 1 "Ubuntu PPA does not build with webapp" 1 "I set it up, but am confused about what I set up! It would be great to be able to start from scratch." 1 "I need to be able to restrict in which repo dirs changes get auto-committed using a syntax similar to gitignore"]]</p>++<p>Feel free to write in your own reasons, or add a comment to give me more info.</p>++<p>Note: Poll is now closed. Nearly all these issues have been dealt with.+Please file bug reports if any of these issues still affect you.</p>++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:41 2013</span>+</span>++++++++++</div>++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./polls/Android.html">Android</a>++</span>+</div>++<div class="inlinecontent">+<p>Help me choose a goal for the month of December. The last poll showed+a lot of interest in using the git-annex assistant with phones, etc.</p>++<p>Background: git-annex uses symbolic links in its repositories. This makes it+hard to use with filesystems, such as FAT, that do not support symbolic links.+FAT filesystems are the main storage available on some Android devices that+have a micro-SD card. Other, newer Android devices don't have a SD card and so+avoid this problem.</p>++<p>I can either work on the idea described in+<a href="./desymlink.html">desymlink</a>, which could solve the symlink problem and+also could lead to a nicer workflow to editing files that are stored in+git-annex.</p>++<p>Or, I can work on <a href="./android.html">Android porting</a>, and try to+get the assistant working on Android's built-in storage.</p>++<p>[[!poll open=no 81 "solve the symlink problem first" 17 "port to Android first" 1 "other"]]</p>++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:41 2013</span>+</span>++++++++++</div>++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./polls/Android_default_directory.html">Android default directory</a>++</span>+</div>++<div class="inlinecontent">+<p>What directory should the Android webapp default to creating an annex in?</p>++<p>Same as the desktop webapp, users will be able to enter a directory they+want the first time they run it, but to save typing on android, anything+that gets enough votes will be included in a list of choices as well.</p>++<p>[[!poll open=yes expandable=yes 42 "/sdcard/annex" 3 "Whole /sdcard" 4 "DCIM directory (photos and videos only)" 1 "Same as for regular git-annex. ~/annex/"]]</p>++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:41 2013</span>+</span>++++++++++</div>++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./polls/goals_for_April.html">goals for April</a>++</span>+</div>++<div class="inlinecontent">+<p>What should I work on in April? I expect I could get perhaps two of these+features done in a month if I'm lucky. I have only 3 more funded months,+and parts of one will be spent working on porting to Windows, so choose wisely!+--<span class="createlink">Joey</span></p>++<p>[[!poll open=yes expandable=yes 4 "upload and download rate limiting" 15 "get webapp working on Android" 5 "deltas: speed up syncing modified versions of existing files" 8 "encrypted git remotes using git-remote-gcrypt" 0 "add support for more cloud storage remotes" 19 "don't work on features, work on making it easier to install and use" 2 "Handle duplicate files" 6 "direct mode (aka real files instead of symlinks) [already done --joey]" 3 "start windows port now"]]</p>++<p>References:</p>++<ul>+<li><a href="./rate_limiting.html">rate limiting</a></li>+<li><a href="./polls/Android.html">Android</a></li>+<li><a href="./deltas.html">deltas</a> to speed up syncing modified files (at least for remotes using rsync)</li>+<li><a href="./encrypted_git_remotes.html">encrypted git remotes</a></li>+<li><a href="./more_cloud_providers.html">more cloud providers</a> (OpenStack Swift, Owncloud, Google drive,+Dropbox, Mediafire, nimbus.io, Mega, etc.)</li>+<li><a href="./polls/what_is_preventing_me_from_using_git-annex_assistant.html">old poll on "what is preventing me from using git-annex assistant"</a>+(many of the items on it should be fixed now, but I have plenty of bug reports to chew on still)</li>+</ul>+++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:41 2013</span>+</span>++++++++++</div>++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./polls/prioritizing_special_remotes.html">prioritizing special remotes</a>++</span>+</div>++<div class="inlinecontent">+<p>Background: git-annex supports storing data in various <a href="../../special_remotes.html">special remotes</a>.+The git-annex assistant will make it easy to configure these, and easy+configurators have already been built for a few: removable drives, rsync.net,+locally paired systems, and remote servers with rsync.</p>++<p>Help me prioritize my work: What special remote would you most like+to use with the git-annex assistant?</p>++<p>[[!poll open=yes 15 "Amazon S3 (done)" 12 "Amazon Glacier (done)" 9 "Box.com (done)" 70 "My phone (or MP3 player)" 18 "Tahoe-LAFS" 7 "OpenStack SWIFT" 28 "Google Drive"]]</p>++<p>This poll is ordered with the options I consider easiest to build+listed first. Mostly because git-annex already supports them and they+only need an easy configurator. The ones at the bottom are likely to need+significant work. See <a href="./cloud.html">cloud</a> for detailed discussion.</p>++<p>Have another idea? Absolutely need two or more? Post comments..</p>++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:41 2013</span>+</span>++++++++++</div>++</div>++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../assistant.html">assistant</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:40 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:40 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,344 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>webapp</title>++<link rel="stylesheet" href="../../style.css" type="text/css" />++<link rel="stylesheet" href="../../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../../index.html">git-annex</a>/ ++<a href="../../design.html">design</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+webapp++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../../install.html">install</a></li>+<li><a href="../../assistant.html">assistant</a></li>+<li><a href="../../walkthrough.html">walkthrough</a></li>+<li><a href="../../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../../comments.html">comments</a></li>+<li><a href="../../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The webapp is a web server that displays a shiny interface.</p>++<h2>performance</h2>++<p>Having the webapp open while transfers are+running uses significant CPU just for the browser to update the progress+bar. Unsurprising, since the webapp is sending the browser a new <code><div></code>+each time. Updating the DOM instead from javascript would avoid that;+the webapp just needs to send the javascript either a full <code><div></code> or a+changed percentage and quantity complete to update a single progress bar.</p>++<p>(Another reason to do this is it'll cut down on the refreshes, which+sometimes make browsers ignore clicks on UI elements like the pause button,+if the transfer display refreshes just as the click is made.)</p>++<h2>other features</h2>++<ul>+<li>there could be a UI to export a file, which would make it be served up+over http by the web app</li>+<li>there could be a UI (some javascript thing) in the web browser to+submit urls to the web app to be added to the annex and downloaded.+See: <span class="createlink">wishlist: an "assistant" for web-browsing -- tracking the sources of the downloads</span></li>+<li>Display the <code>inotify max_user_watches</code> exceeded message. <strong>done</strong></li>+<li>Display something sane when kqueue runs out of file descriptors.</li>+<li>allow removing git remotes <strong>done</strong></li>+<li>allow disabling syncing to here, which should temporarily disable all+local syncing. <strong>done</strong></li>+</ul>+++<h2>better headless support</h2>++<p><code>--listen</code> is insecure, and using HTTPS would still not make it 100% secure+as there would be no way for the browser to verify its certificate.</p>++<p>I do have a better idea, but it'd be hard to implement.+<code>git annex webapp --remote user@host:dir</code> could ssh to the remote host,+run the webapp there, listening only on localhost, and then send the+port the webapp chose back over the ssh connection. Then the same+ssh connection could be reused (using ssh connection caching) to set up+port forwarding from a port on the local host to the remote webapp.</p>++<p>This would need to handle the first run case too, which would require+forwarding a second port once the webapp made the repository and+the second webapp started up.</p>++<h2>first start <strong>done</strong></h2>++<ul>+<li>make git repo <strong>done</strong></li>+<li>generate a nice description like "joey@hostname Desktop/annex" <strong>done</strong></li>+<li>record repository that was made, and use it next time run <strong>done</strong></li>+<li>write a pid file, to prevent more than one first-start process running+at once <strong>done</strong></li>+</ul>+++<h2>security <strong>acceptable/done</strong></h2>++<ul>+<li>Listen only to localhost. <strong>done</strong></li>+<li>Instruct the user's web browser to open an url that contains a secret+token. This guards against other users on the same system. <strong>done</strong>+(I would like to avoid passwords or other authentication methods,+it's your local system.)</li>+<li>Don't pass the url with secret token directly to the web browser,+as that exposes it to <code>ps</code>. Instead, write a html file only the user can read,+that redirects to the webapp. <strong>done</strong></li>+<li>Alternative for Linux at least would be to write a small program using+GTK+ Webkit, that runs the webapp, and can know what user ran it, avoiding+needing authentication.</li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-66f9834d5ad31c3d31c2078845cc6a0f">++++<div class="comment-subject">++<a href="/design/assistant/webapp.html#comment-66f9834d5ad31c3d31c2078845cc6a0f">Secret URL token</a>++</div>++<div class="inlinecontent">+<blockquote><p>Instruct the user's web browser to open an url that contains a secret token. This guards against other users on the same system.</p></blockquote>++<p>How will you implement that? Running "sensible-browser URL" would be the obvious way, but the secret URL would show up in a well timed ps listing. (And depending on the browser, ps may show the URL the entire time it's running.)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=yatesa&do=goto">yatesa</a>++</span>+++— <span class="date">Mon Jun 18 23:41:16 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-ded5c5608cbc936a6e5575e52e4744dd">++++<div class="comment-subject">++<a href="/design/assistant/webapp.html#comment-ded5c5608cbc936a6e5575e52e4744dd">ARM support</a>++</div>++<div class="inlinecontent">+The closure of <a href="http://hackage.haskell.org/trac/ghc/ticket/5839">this</a> ticket hopefully marks the end of TH issues on ARM. As of 7.4.2, GHC's linker has enough ARM support to allow a selection of common packages compile on my PandaBoard. That being said, it hasn't had a whole lot of testing so it's possible I still need to implement a few relocation types.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlup4hyZo4eCjF8T85vfRXMKBxGj9bMdl0">Ben</a>+</span>+++— <span class="date">Fri Jul 13 12:51:15 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-4af69b775df8a89c570165f608b29672">++++<div class="comment-subject">++<a href="/design/assistant/webapp.html#comment-4af69b775df8a89c570165f608b29672">comment 3</a>++</div>++<div class="inlinecontent">+Using twitter-bootstrap for the webapp - this might be a wishlist item, but would it be possible to ensure that the webapp's css uses twitter-bootstrap classes. It would make theming much easier in the long run and it would give you a nice modern look with a low amount of effort.++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=jtang&do=goto">jtang</a>++</span>+++— <span class="date">Thu Jul 26 13:35:18 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-3a63f1e7dcdd65b98769280dc73a3d59">++++<div class="comment-subject">++<a href="/design/assistant/webapp.html#comment-3a63f1e7dcdd65b98769280dc73a3d59">comment 4</a>++</div>++<div class="inlinecontent">+<p>So, Yesod's scaffolded site actually does use bootstrap, but I didn't use the scaffolded site so don't have it. I am not quite to the point of doing any theming of the webapp, but I do have this nice example of how to put in bootstrap right here..</p>++<p>By the way, if anyone would like to play with the html templates for the webapp, the main html template is <code>templates/default-layout.hamlet</code>. Uses a slightly weird template markup, but plain html will also work. And there's also the <code>static/</code> directory; every file in there will be compiled directly into the git-annex binary, and is available at <code>http://localhost:port/static/$file</code> in the webapp. See the favicon link in <code>default-layout.hamlet</code> of how to construct a type-safe link to a static file: <code>href=@{StaticR favicon_ico}</code>. That's all you really need to theme the webapp, without doing any real programming!</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Jul 26 13:45:28 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./configurators.html">configurators</a>++<a href="./progressbars.html">progressbars</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,373 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>xmpp</title>++<link rel="stylesheet" href="../../style.css" type="text/css" />++<link rel="stylesheet" href="../../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../../index.html">git-annex</a>/ ++<a href="../../design.html">design</a>/ ++<a href="../assistant.html">assistant</a>/ ++</span>+<span class="title">+xmpp++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../../install.html">install</a></li>+<li><a href="../../assistant.html">assistant</a></li>+<li><a href="../../walkthrough.html">walkthrough</a></li>+<li><a href="../../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../../comments.html">comments</a></li>+<li><a href="../../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The git-annex assistant uses XMPP to communicate between peers that+cannot directly talk to one-another. A typical scenario is two users+who share a repository, that is stored in the <a href="./cloud.html">cloud</a>.</p>++<h3>TODO</h3>++<ul>+<li>Prevent idle disconnection. Probably means sending or receiving pings,+but would prefer to avoid eg pinging every 60 seconds as some clients do.</li>+<li>Do git-annex clients sharing an account with regular clients cause confusing+things to happen?+See <a href="http://git-annex.branchable.com/design/assistant/blog/day_114__xmpp/#comment-aaba579f92cb452caf26ac53071a6788">http://git-annex.branchable.com/design/assistant/blog/day_114__xmpp/#comment-aaba579f92cb452caf26ac53071a6788</a></li>+</ul>+++<h2>design goals</h2>++<ol>+<li><p>Avoid user-visible messages. dvcs-autosync uses XMPP similarly, but+sends user-visible messages. Avoiding user-visible messages lets+the user configure git-annex to use his existing XMPP account+(eg, Google Talk).</p></li>+<li><p>Send notifications to buddies. dvcs-autosync sends only self-messages,+but that requires every node have the same XMPP account configured.+git-annex should support that mode, but it should also send notifications+to a user's buddies. (This will also allow for using XMPP for pairing+in the future.)</p></li>+<li><p>Don't make account appear active. Just because git-annex is being an XMPP+client, it doesn't mean that it wants to get chat messages, or make the+user appear active when he's not using his chat program.</p></li>+</ol>+++<h2>protocol</h2>++<p>To avoid relying on XMPP extensions, git-annex communicates+using presence messages, and chat messages (with empty body tags,+so clients don't display them).</p>++<p>git-annex sets a negative presence priority, to avoid any regular messages+getting eaten by its clients. It also sets itself extended away.+Note that this means that chat messages always have to be directed at+specific git-annex clients.</p>++<p>To the presence and chat messages, it adds its own tag as+<a href="http://xmpp.org/rfcs/rfc6121.html#presence-extended">extended content</a>.+The xml namespace is "git-annex" (not an URL because I hate wasting bandwidth).</p>++<p>To indicate it's pushed changes to a git repo with a given UUID, a message+that is sent to all buddies and other clients using the account (no+explicit pairing needed), it uses a broadcast presence message containing:</p>++<pre><code><git-annex xmlns='git-annex' push="uuid[,uuid...]" />+</code></pre>++<p>Multiple UUIDs can be listed when multiple clients were pushed. If the+git repo does not have a git-annex UUID, an empty string is used.</p>++<p>To query if other git-annex clients are around, a presence message is used,+containing:</p>++<pre><code><git-annex xmlns='git-annex' query="" />+</code></pre>++<p>For pairing, a chat message is sent to every known git-annex client,+containing:</p>++<pre><code><git-annex xmlns='git-annex' pairing="PairReq|PairAck|PairDone myuuid" />+</code></pre>++<h3>git push over XMPP</h3>++<p>To indicate that we could push over XMPP, a chat message is sent,+to each known client of each XMPP remote.</p>++<pre><code><git-annex xmlns='git-annex' canpush="myuuid" />+</code></pre>++<p>To request that a remote push to us, a chat message can be sent.</p>++<pre><code><git-annex xmlns='git-annex' pushrequest="myuuid" />+</code></pre>++<p>When replying to an canpush message, this is directed at the specific+client that indicated it could push. To solicit pushes from all clients,+the message has to be sent directed individually to each client.</p>++<p>When a peer is ready to send a git push, it sends:</p>++<pre><code><git-annex xmlns='git-annex' startingpush="myuuid" />+</code></pre>++<p>The receiver runs <code>git receive-pack</code>, and sends back its output in+one or more chat messages, directed to the client that is pushing:</p>++<pre><code><git-annex xmlns='git-annex' rp="N">+007b27ca394d26a05d9b6beefa1b07da456caa2157d7 refs/heads/git-annex report-status delete-refs side-band-64k quiet ofs-delta+</git-annex>+</code></pre>++<p>The sender replies with the data from <code>git push</code>, in+one or more chat messages, directed to the receiver:</p>++<pre><code><git-annex xmlns='git-annex' sp="N">+data+</git-annex>+</code></pre>++<p>The value of rp and sp used to be empty, but now it's a sequence number.+This indicates the sequence of this packet, counting from 1. The receiver+and sender each have their own sequence numbers. These sequence numbers+are not really used yet, but are available for debugging.</p>++<p>When <code>git receive-pack</code> exits, the receiver indicates its exit+status with a chat message, directed at the sender:</p>++<pre><code><git-annex xmlns='git-annex' rpdone="0" />+</code></pre>++<h3>security</h3>++<p>Data git-annex sends over XMPP will be visible to the XMPP+account's buddies, to the XMPP server, and quite likely to other interested+parties. So it's important to consider the security exposure of using it.</p>++<p>Even if git-annex sends only a single bit notification, this lets attackers+know when the user is active and changing files. Although the assistant's other+syncing activities can somewhat mask this.</p>++<p>As soon as git-annex does anything unlike any other client, an attacker can+see how many clients are connected for a user, and fingerprint the ones+running git-annex, and determine how many clients are running git-annex.</p>++<p>If git-annex sent the UUID of the remote it pushed to, this would let+attackers determine how many different remotes are being used,+and map some of the connections between clients and remotes.</p>++<p>An attacker could replay push notification messages, reusing UUIDs it's+observed. This would make clients pull repeatedly, perhaps as a DOS.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-9f0899c3cbe02e70727bdf53dcf7d187">++++<div class="comment-subject">++<a href="/design/assistant/xmpp.html#comment-9f0899c3cbe02e70727bdf53dcf7d187">xmlns</a>++</div>++<div class="inlinecontent">+<p>A minor point, but is saving a couple of bytes per message worth using a <a href="http://www.w3.org/TR/REC-xml-names/#iri-use">deprecated feature</a> of the namespaces specification? This is not technically <em>breaking</em> the current specification, since "git-annex" is of course still a (relative) URI reference; and anyway chances of problems are, I guess, slim. But is it the lesser of two bugs?</p>++<p>The shortest moderately sane absolute URI containing "git-annex" would probably be "data:,git-annex".</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://meep.pl/">meep.pl</a>+</span>+++— <span class="date">Sun Nov 11 05:00:01 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-509b6646daee0dfe1c72f898b12532db">++++<div class="comment-subject">++<a href="/design/assistant/xmpp.html#comment-509b6646daee0dfe1c72f898b12532db">Plans for two factor authentication or oath?</a>++</div>++<div class="inlinecontent">+Are there plans to support google's two factor authentication? Right now I have to use an application specific password.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>+</span>+++— <span class="date">Sun Apr 14 20:58:04 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-656c072026f03c48b45d192bc1c4d9b1">++++<div class="comment-subject">++<a href="/design/assistant/xmpp.html#comment-656c072026f03c48b45d192bc1c4d9b1">file transfer?</a>++</div>++<div class="inlinecontent">+Would it be possible to add optional support for transferring files over XMPP (possibly being disabled out-of-the-box so as not to suck up third-party bandwidth)?++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=hhm&do=goto">hhm</a>++</span>+++— <span class="date">Tue Apr 23 06:22:51 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./cloud.html">cloud</a>++<a href="../../special_remotes/xmpp.html">special remotes/xmpp</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,524 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>encryption</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../design.html">design</a>/ ++</span>+<span class="title">+encryption++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This was the design doc for <a href="../encryption.html">encryption</a> and is preserved for+the curious. For an example of using git-annex with an encrypted S3 remote,+see <a href="../tips/using_Amazon_S3.html">using Amazon S3</a>.</p>++<div class="toc">+ <ol>+ <li class="L2"><a href="#index1h2">encryption backends</a>+ </li>+ <li class="L2"><a href="#index2h2">encryption key management</a>+ </li>+ <li class="L2"><a href="#index3h2">filename enumeration</a>+ </li>+ <li class="L2"><a href="#index4h2">other use of the symmetric cipher</a>+ </li>+ <li class="L2"><a href="#index5h2">risks</a>+ </li>+ </ol>+</div>+++<h2><a name="index1h2"></a>encryption backends</h2>++<p>It makes sense to support multiple encryption backends. So, there+should be a way to tell what backend is responsible for a given filename+in an encrypted remote. (And since special remotes can also store files+unencrypted, differentiate from those as well.)</p>++<p>The rest of this page will describe a single encryption backend using GPG.+Probably only one will be needed, but who knows? Maybe that backend will+turn out badly designed, or some other encryptor needed. Designing+with more than one encryption backend in mind helps future-proofing.</p>++<h2><a name="index2h2"></a>encryption key management</h2>++<p>[[!template <span class="error">Error: failed to process template <span class="createlink">note</span> </span>]]</p>++<p>Data is encrypted by GnuPG, using a symmetric cipher. The cipher is+generated by GnuPG when the special remote is created. By default the+best entropy pool is used, hence the generation may take a while; One+can use <code>initremote</code> with <code>highRandomQuality=false</code> or <code>--fast</code> options+to speed up things, but at the expense of using random numbers of a+lower quality. The generated cipher is then checked into your git+repository, encrypted using one or more OpenPGP public keys. This scheme+allows new OpenPGP private keys to be given access to content that has+already been stored in the remote.</p>++<p>Different encrypted remotes need to be able to each use different ciphers.+Allowing multiple ciphers to be used within a single remote would add a lot+of complexity, so is not planned to be supported.+Instead, if you want a new cipher, create a new S3 bucket, or whatever.+There does not seem to be much benefit to using the same cipher for+two different encrypted remotes.</p>++<p>So, the encrypted cipher could just be stored with the rest of a remote's+configuration in <code>remotes.log</code> (see <a href="../internals.html">internals</a>). When <code>git+annex intiremote</code> makes a remote, it can generate a random symmetric+cipher, and encrypt it with the specified gpg key. To allow another gpg+public key access, update the encrypted cipher to be encrypted to both gpg+keys.</p>++<h2><a name="index3h2"></a>filename enumeration</h2>++<p>If the names of files are encrypted or securely hashed, or whatever is+chosen, this makes it harder for git-annex (let alone untrusted third parties!)+to get a list of the files that are stored on a given enrypted remote.+But, does git-annex really ever need to do such an enumeration?</p>++<p>Apparently not. <code>git annex unused --from remote</code> can now check for+unused data that is stored on a remote, and it does so based only on+location log data for the remote. This assumes that the location log is+kept accurately.</p>++<p>What about <code>git annex fsck --from remote</code>? Such a command should be able to,+for each file in the repository, contact the encrypted remote to check+if it has the file. This can be done without enumeration, although it will+mean running gpg once per file fscked, to get the encrypted filename.</p>++<p>So, the files stored in the remote should be encrypted. But, it needs to+be a repeatable encryption, so they cannot just be gpg encrypted, that+would yeild a new name each time. Instead, HMAC is used. Any hash could+be used with HMAC. SHA-1 is the default, but <a href="../encryption.html">other hashes</a>+can be chosen for new remotes.</p>++<p>It was suggested that it might not be wise to use the same cipher for both+gpg and HMAC. Being paranoid, it's best not to tie the security of one+to the security of the other. So, the encrypted cipher described above is+actually split in two; half is used for HMAC, and half for gpg.</p>++<hr />++<p>Does the HMAC cipher need to be gpg encrypted? Imagine if it were+stored in plainext in the git repository. Anyone who can access+the git repository already knows the actual filenames, and typically also+the content hashes of annexed content. Having access to the HMAC cipher+could perhaps be said to only let them verify that data they already+know.</p>++<p>While this seems a pretty persuasive argument, I'm not 100% convinced, and+anyway, most times that the HMAC cipher is needed, the gpg cipher is also+needed. Keeping the HMAC cipher encrypted does slow down two things:+dropping content from encrypted remotes, and checking if encrypted remotes+really have content. If it's later determined to be safe to not encrypt the+HMAC cipher, the current design allows changing that, even for existing+remotes.</p>++<h2><a name="index4h2"></a>other use of the symmetric cipher</h2>++<p>The symmetric cipher can be used to encrypt other content than the content+sent to the remote. In particular, it may make sense to encrypt whatever+access keys are used by the special remote with the cipher, and store that+in remotes.log. This way anyone whose gpg key has been given access to+the cipher can get access to whatever other credentials are needed to+use the special remote.</p>++<h2><a name="index5h2"></a>risks</h2>++<p>A risk of this scheme is that, once the symmetric cipher has been obtained, it+allows full access to all the encrypted content. This scheme does not allow+revoking a given gpg key access to the cipher, since anyone with such a key+could have already decrypted the cipher and stored a copy.</p>++<p>If git-annex stores the decrypted symmetric cipher in memory, then there+is a risk that it could be intercepted from there by an attacker. Gpg+amelorates these type of risks by using locked memory. For git-annex, note+that an attacker with local machine access can tell at least all the+filenames and metadata of files stored in the encrypted remote anyway,+and can access whatever content is stored locally.</p>++<p>This design does not support obfuscating the size of files by chunking+them, as that would have added a lot of complexity, for dubious benefits.+If the untrusted party running the encrypted remote wants to know file sizes,+they could correlate chunks that are accessed together. Encrypting data+changes the original file size enough to avoid it being used as a direct+fingerprint at least.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-4675041b2a74c1d27846f59c6d281880">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-4675041b2a74c1d27846f59c6d281880">comment 1</a>++</div>++<div class="inlinecontent">+<p>New encryption keys could be used for different directories/files/patterns/times/whatever. One could then encrypt this new key for the public keys of other people/machines and push them out along with the actual data. This would allow some level of access restriction or future revocation. git-annex would need to keep track of which files can be decrypted with which keys. I am undecided if that information needs to be encrypted or not.</p>++<p>Encrypted object files should be checksummed in encrypted form so that it's possible to verify integrity without knowing any keys. Same goes for encrypted keys, etc.</p>++<p>Chunking files in this context seems like needless overkill. This might make sense to store a DVD image on CDs or similar, at some point. But not for encryption, imo. Coming up with sane chunk sizes for all use cases is literally impossible and as you pointed out, correlation by the remote admin is trivial.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>+</span>+++— <span class="date">Sun Apr 3 16:03:14 2011</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-cc025ab2686094fb313a0f96e2ddd64f">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-cc025ab2686094fb313a0f96e2ddd64f">comment 2</a>++</div>++<div class="inlinecontent">+<p>I see no use case for verifying encrypted object files w/o access to the encryption key. And possible use cases for not allowing anyone to verify your data.</p>++<p>If there are to be multiple encryption keys usable within a single encrypted remote, than they would need to be given some kind of name (a since symmetric key is used, there is no pubkey to provide a name), and the name encoded in the files stored in the remote. While certainly doable I'm not sold that adding a layer of indirection is worthwhile. It only seems it would be worthwhile if setting up a new encrypted remote was expensive to do. Perhaps that could be the case for some type of remote other than S3 buckets.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joey.kitenet.net/">joey</a>+</span>+++— <span class="date">Tue Apr 5 14:41:49 2011</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-4f78277c4847fbb12575162da684d130">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-4f78277c4847fbb12575162da684d130">comment 3</a>++</div>++<div class="inlinecontent">+<p>Assuming you're storing your encrypted annex with me and I with you, our regular cron jobs to verify all data will catch corruption in each other's annexes.</p>++<p>Checksums of the encrypted objects could be optional, mitigating any potential attack scenarios.</p>++<p>It's not only about the cost of setting up new remotes. It would also be a way to keep data in one annex while making it accessible only in a subset of them. For example, I might need some private letters at work, but I don't want my work machine to be able to access them all.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U">Richard</a>+</span>+++— <span class="date">Tue Apr 5 19:24:17 2011</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f5f2ec243a7a1034cc52b894df78c290">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-f5f2ec243a7a1034cc52b894df78c290">comment 4</a>++</div>++<div class="inlinecontent">+<p>@Richard the easy way to deal with that scenario is to set up a remote that work can access, and only put in it files work should be able to see. Needing to specify which key a file should be encrypted to when putting it in a remote that supported multiple keys would add another level of complexity which that avoids.</p>++<p>Of course, the right approach is probably to have a separate repository for work. If you don't trust it with seeing file contents, you probably also don't trust it with the contents of your git repository.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joey.kitenet.net/">joey</a>+</span>+++— <span class="date">Thu Apr 7 15:59:30 2011</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f5cd94e227a4b70e41048e3b420e96dd">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-f5cd94e227a4b70e41048e3b420e96dd">using sshfs + cryptmount is more secure</a>++</div>++<div class="inlinecontent">+<p>"For git-annex, note that an attacker with local machine access can tell at least all the filenames and metadata of files stored in the encrypted remote anyway, and can access whatever content is stored locally."</p>++<p>Better security is given by sshfs + cryptmount, which I used when I recently setup a git-annex repository on a free shell account from a provider I do not trust.</p>++<p>See http://code.cjb.net/free-secure-online-backup.html for what I did to get a really secure solution.</p>++<p>Kind regards,</p>++<p>Hans Ekbrand</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkS6aFVrEwOrDuQBTMXxtGHtueA69NS_jo">Hans</a>+</span>+++— <span class="date">Tue Aug 14 09:41:47 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a035b1698e1253e7a5244721d73c71cf">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-a035b1698e1253e7a5244721d73c71cf">comment 6</a>++</div>++<div class="inlinecontent">+<p>Hans,</p>++<p>You are misunderstanding how git-annex encryption works. The "untrusted host" and the "local machine" are not the same machine. git-annex only transfers pre-encrypted files to the "untrusted host".</p>++<p>You should setup a git-annex encrypted remote and watch how it works so you can see for yourself that it is not insecure.</p>++<p>Your solution does not provide better security, it accomplishes the same thing as git-annex in a more complicated way. In addition, since you are mounting the image from the client your solution will not work with multiple clients.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo">Justin</a>+</span>+++— <span class="date">Tue Aug 14 10:10:40 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-802a6776b0b661fc53c68a3c489f09d6">++++<div class="comment-subject">++<a href="/design/encryption.html#comment-802a6776b0b661fc53c68a3c489f09d6">comment 7</a>++</div>++<div class="inlinecontent">+<p>Justin,</p>++<p>thanks for clearing that up. It's great that git-annex has implemented mechanisms to work securely on untrusted hosts. My solution is thus only interesting for files that are impractical to manage with git-annex (e.g. data for/from applications that need rw-access to a large number of files). And, possibly, for providers that do not provide rsync.</p>++<p>Your remark that my solution does not work with more than one client, is not entirely accurate. No more than one client can access the repository at any given time, but as long as access is not simultaneous, any number of clients can access the repository. Still, your point is taken, it's a limitation I should mention.</p>++<p>It would be interesting to compare the performance of individually encrypted files to encrypted image-file. My intuition says that encrypted image-file should be faster, but that's just a guess.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkS6aFVrEwOrDuQBTMXxtGHtueA69NS_jo">Hans</a>+</span>+++— <span class="date">Wed Aug 15 15:16:10 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../design.html">design</a>++<a href="../encryption.html">encryption</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,357 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>direct mode</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+direct mode++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Normally, git-annex repositories consist of symlinks that are checked into+git, and in turn point at the content of large files that is stored in+<code>.git/annex/objects/</code>. Direct mode gets rid of the symlinks.</p>++<p>The advantage of direct mode is that you can access files directly,+including modifying them. The disadvantage is that most regular git+commands cannot safely be used, and only a subset of git-annex commands+can be used.</p>++<p>Normally, git-annex repositories start off in indirect mode. With some+exceptions:</p>++<ul>+<li>Repositories created by the <a href="./assistant.html">assistant</a> use direct mode by default.</li>+<li>Repositories on FAT and other less than stellar filesystems+that don't support things like symlinks will be automatically put+into direct mode.</li>+</ul>+++<h2>enabling (and disabling) direct mode</h2>++<p>Any repository can be converted to use direct mode at any time, and if you+decide not to use it, you can convert back to indirect mode just as easily.+Also, you can have one clone of a repository using direct mode, and another+using indirect mode; direct mode interoperates.</p>++<p>To start using direct mode:</p>++<pre><code>git annex direct+</code></pre>++<p>To stop using direct mode:</p>++<pre><code>git annex indirect+</code></pre>++<h2>safety of using direct mode</h2>++<p>With direct mode, you're operating without large swathes of git-annex's+carefully constructed safety net, which ensures that past versions of+files are preserved and can be accessed (until you dropunused them).+With direct mode, any file can be edited directly, or deleted at any time,+and there's no guarantee that the old version is backed up somewhere else.</p>++<p>So if you care about preserving the history of files, you're strongly+encouraged to tell git-annex that your direct mode repository cannot be+trusted to retain the content of a file. To do so:</p>++<pre><code>git annex untrust .+</code></pre>++<p>On the other hand, if you only care about the current versions of files,+and are using git-annex with direct mode to keep files synchronised between+computers, and manage your files, this should not be a concern for you.</p>++<h2>use a direct mode repository</h2>++<p>You can use most git-annex commands as usual in a direct mode repository.+A very few commands don't work in direct mode, and will refuse to do anything.</p>++<p>Direct mode also works well with the git-annex assistant.</p>++<p>You can use <code>git commit --staged</code>, or plain <code>git commit</code>.+But not <code>git commit -a</code>, or <code>git commit <file></code> ..+that'd commit whole large files into git!</p>++<h2>what doesn't work in direct mode</h2>++<p><code>git annex status</code> shows incomplete information. A few other commands,+like <code>git annex unlock</code> don't make sense in direct mode and will refuse to+run.</p>++<p>As for git commands, you can probably use some git working tree+manipulation commands, like <code>git checkout</code> and <code>git revert</code> in useful+ways... But beware, these commands can replace files that are present in+your repository with broken symlinks. If that file was the only copy you+had of something, it'll be lost.</p>++<p>This is one more reason it's wise to make git-annex untrust your direct mode+repositories. Still, you can lose data using these sort of git commands, so+use extreme caution.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-e2f32651b81efbf28c21647fbe2ec5f9">++++<div class="comment-subject">++<a href="/direct_mode.html#comment-e2f32651b81efbf28c21647fbe2ec5f9">comment 1</a>++</div>++<div class="inlinecontent">+So, just which git commands <em>are</em> safe? It seems like I'm going to have to use direct mode, so it'd be nice to know just what I'm allowed to do, and what the workflow should be.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawl2Jj8q2upJL4ZQAc2lp7ugTxJiGtcICv8">Michael</a>+</span>+++— <span class="date">Mon Feb 18 19:24:11 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-57bb6513674551d20b8d382c1cf991c7">++++<div class="comment-subject">++<a href="/direct_mode.html#comment-57bb6513674551d20b8d382c1cf991c7">safe and unsafe commands</a>++</div>++<div class="inlinecontent">+<p>All git commands that do not change files in the work tee (and do not stage files from the work tree), are safe. I don't have a complete list; it includes <code>git log</code>, <code>git show</code>, <code>git diff</code>, <code>git commit</code> (but not -a or with a file as a parameter), <code>git branch</code>, <code>git fetch</code>, <code>git push</code>, <code>git grep</code>, <code>git status</code>, <code>git tag</code>, <code>git mv</code> (this one is somewhat surprising, but I've tested it and it's ok)</p>++<p>git commands that change files in the work tree will replace your data with dangling symlinks. This includes things like <code>git revert</code>, <code>git checkout</code>, <code>git merge</code>, <code>git pull</code>, <code>git reset</code></p>++<p>git commands that stage files from the work tree will commit your data to git directly. This includes <code>git add</code>, <code>git commit -a</code>, and <code>git commit file</code></p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Mon Feb 18 22:55:13 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-6f97f966cdafd65509aa68ab6096dd69">++++<div class="comment-subject">++<a href="/direct_mode.html#comment-6f97f966cdafd65509aa68ab6096dd69">comment 3</a>++</div>++<div class="inlinecontent">+<p>So, if I edit a "content file" (change a music file's metadata, say), what's the workflow to record that fact and then synchronise it to other repositories?</p>++<p>I can't do a <code>git add</code>, so I don't understand what has to happen as a first step. (Thanks for your quick reply above, BTW.)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawl2Jj8q2upJL4ZQAc2lp7ugTxJiGtcICv8">Michael</a>+</span>+++— <span class="date">Mon Feb 18 23:03:14 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-7f6b16c9fca70ac26b57542a956fd968">++++<div class="comment-subject">++<a href="/direct_mode.html#comment-7f6b16c9fca70ac26b57542a956fd968">comment 4</a>++</div>++<div class="inlinecontent">+<pre>+git annex add $file+git commit -m changed+git annex sync+git annex copy $file --to otherrepo+</pre>++++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Mon Feb 18 23:05:35 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./internals.html">internals</a>++<a href="./links/key_concepts.html">links/key concepts</a>++<a href="./upgrades.html">upgrades</a>++<a href="./walkthrough/modifying_annexed_files.html">walkthrough/modifying annexed files</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,246 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>download</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+download++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The main git repository for git-annex is <code>git://git-annex.branchable.com/</code></p>++<p>(You can push changes to this wiki from that anonymous git checkout.)</p>++<p>Other mirrors of the git repository:</p>++<ul>+<li><code>git://git.kitenet.net/git-annex</code> [<a href="http://git.kitenet.net/?p=git-annex.git;a=summary">gitweb</a>]</li>+<li><a href="https://github.com/joeyh/git-annex">at github</a></li>+</ul>+++<p>Releases of git-annex are uploaded+<a href="http://hackage.haskell.org/package/git-annex">to hackage</a>. Get your+tarballs there, if you need them.</p>++<p>Some operating systems include git-annex in easily prepackaged form and+others need some manual work. See <a href="./install.html">install</a> for details.</p>++<h2>git branches</h2>++<p>The git repository has some branches:</p>++<ul>+<li><code>ghc7.0</code> supports versions of ghc older than 7.4, which+had a major change to filename encoding.</li>+<li><code>old-monad-control</code> is for systems that don't have a newer monad-control+library.</li>+<li><code>no-ifelse</code> avoids using the IFelse library+(merge it into master if you need it)</li>+<li><code>no-bloom</code> avoids using bloom filters. (merge it into master if you need it)</li>+<li><code>no-s3</code> avoids using the S3 library (merge it into master if you need it)</li>+<li><code>debian-stable</code> contains the latest backport of git-annex to Debian+stable.</li>+<li><code>tweak-fetch</code> adds support for the git tweak-fetch hook, which has+been proposed and implemented but not yet accepted into git.</li>+<li><code>setup</code> contains configuration for this website</li>+<li><code>pristine-tar</code> contains <a href="http://kitenet.net/~joey/code/pristine-tar">pristine-tar</a>+data to create tarballs of any past git-annex release.</li>+</ul>+++<hr />++<p>Developing git-annex? Patches are very welcome.+You should read <a href="./coding_style.html">coding style</a>.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-48efe492343c27a89c035c03da473d38">++++<div class="comment-subject">++<a href="/download.html#comment-48efe492343c27a89c035c03da473d38">git clone git://git-annex.branchable.com/ gives an error</a>++</div>++<div class="inlinecontent">+<p>Thought you would want to know</p>++<p>error: unable to create file doc/forum/<strong>91</strong>Installation<strong>93</strong><em>base-3.0.3.2_requires_syb</em><strong>61</strong><strong>61</strong>0.1.0.2_however_syb-0.1.0.2_was_excluded_because_json-0.5_requires_syb<em><strong>62</strong><strong>61</strong>0.3.3.mdwn (File name too long)+fatal: cannot create directory at 'doc/forum/<strong>91</strong>Installation<strong>93</strong></em>base-3.0.3.2_requires_syb<em><strong>61</strong><strong>61</strong>0.1.0.2_however_syb-0.1.0.2_was_excluded_because_json-0.5_requires_syb</em><strong>62</strong><strong>61</strong>0.3.3': File name too long</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawm3uJkdiJJejvqix9dULvw_Ma7DCtB-6zA">Ian</a>+</span>+++— <span class="date">Mon Aug 13 16:57:34 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-2e374c18fcc0aae22c79b090509965c7">++++<div class="comment-subject">++<a href="/download.html#comment-2e374c18fcc0aae22c79b090509965c7">comment 2</a>++</div>++<div class="inlinecontent">+Ok, I've renamed that long-ish filename.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Aug 16 19:28:30 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./install.html">install</a>++<a href="./install/cabal.html">install/cabal</a>++<a href="./install/fromscratch.html">install/fromscratch</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,240 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>encryption</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+encryption++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex mostly does not use encryption. Anyone with access to a git+repository can see all the filenames in it, its history, and can access+any annexed file contents.</p>++<p>Encryption is needed when using <a href="./special_remotes.html">special remotes</a> like Amazon S3, where+file content is sent to an untrusted party who does not have access to the+git repository.</p>++<p>Such an encrypted remote uses strong GPG encryption on the contents of files,+as well as HMAC hashing of the filenames. The size of the encrypted files,+and access patterns of the data, should be the only clues to what is+stored in such a remote.</p>++<p>You should decide whether to use encryption with a special remote before+any data is stored in it. So, <code>git annex initremote</code> requires you+to specify "encryption=none" when first setting up a remote in order+to disable encryption.</p>++<p>If you want to use encryption, run <code>git annex initremote</code> with+"encryption=USERID". The value will be passed to <code>gpg</code> to find encryption keys.+Typically, you will say "encryption=2512E3C7" to use a specific gpg key.+Or, you might say "encryption=joey@kitenet.net" to search for matching keys.</p>++<p>The default MAC algorithm to be applied on the filenames is HMACSHA1. A+stronger one, for instance HMACSHA512, one can be chosen upon creation+of the special remote with the option <code>mac=HMACSHA512</code>. The available+MAC algorithms are HMACSHA1, HMACSHA224, HMACSHA256, HMACSHA384, and+HMACSHA512. Note that it is not possible to change algorithm for a+non-empty remote.</p>++<p>The <a href="./design/encryption.html">encryption design</a> allows additional encryption keys+to be added on to a special remote later. Once a key is added, it is able+to access content that has already been stored in the special remote.+To add a new key, just run <code>git annex enableremote</code> specifying the+new encryption key:</p>++<pre><code>git annex enableremote myremote encryption=788A3F4C+</code></pre>++<p>Note that once a key has been given access to a remote, it's not+possible to revoke that access, short of deleting the remote. See+<a href="./design/encryption.html">encryption design</a> for other security risks+associated with encryption.</p>++<h2>shared cipher mode</h2>++<p>Alternatively, you can configure git-annex to use a shared cipher to+encrypt data stored in a remote. This shared cipher is stored,+<strong>unencrypted</strong> in the git repository. So it's shared amoung every+clone of the git repository. The advantage is you don't need to set up gpg+keys. The disadvantage is that this is <strong>insecure</strong> unless you+trust every clone of the git repository with access to the encrypted data+stored in the special remote.</p>++<p>To use shared encryption, specify "encryption=shared" when first setting+up a special remote.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-e676b9d3a2afeac2140a508745729db3">++++<div class="comment-subject">++<a href="/encryption.html#comment-e676b9d3a2afeac2140a508745729db3">Tahoe-LAFS comes with encryption</a>++</div>++<div class="inlinecontent">+<p>The Tahoe-LAFS special remote automatically encrypts and adds cryptography integrity checks/digital signatures. For that special remote you should not use the git-annex encryption scheme.</p>++<p>Tahoe-LAFS encryption generates a new independent key for each file. This means that you can share access to one of the files without thereby sharing access to all of them, and it means that individual files can be deduplicated among multiple users.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=zooko&do=goto">zooko</a>++</span>+++— <span class="date">Wed May 18 00:32:14 2011</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./design/encryption.html">design/encryption</a>++<a href="./internals.html">internals</a>++<a href="./links/the_details.html">links/the details</a>++<a href="./special_remotes/S3.html">special remotes/S3</a>++<a href="./special_remotes/bup.html">special remotes/bup</a>++<a href="./special_remotes/directory.html">special remotes/directory</a>++<a href="./special_remotes/glacier.html">special remotes/glacier</a>++<a href="./special_remotes/hook.html">special remotes/hook</a>++<a href="./special_remotes/rsync.html">special remotes/rsync</a>++<a href="./special_remotes/webdav.html">special remotes/webdav</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 405 bytes)
@@ -0,0 +1,133 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>feeds</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+feeds++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Aggregating git-annex mentions from elsewhere on the net..</p>++<ul>+<li>[[!aggregate expirecount=25 name="identica" feedurl="http://identi.ca/api/statusnet/tags/timeline/gitannex.rss" url="http://identi.ca/tag/gitannex"]]</li>+<li>[[!aggregate expirecount=25 name="twitter" feedurl="http://search.twitter.com/search.atom?q=git-annex" url="http://twitter.com/"]]</li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./index.html">index</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,131 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>column a</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">footer</a>/ ++</span>+<span class="title">+column a++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>Recent <a href="../news.html">news</a></h3>+++++<h3><span class="createlink">Dev blog</span></h3>+++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,149 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>column b</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">footer</a>/ ++</span>+<span class="title">+column b++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>Recent <a href="../videos.html">videos</a></h3>++<p>++<a href="../videos/git-annex_assistant_archiving.html">git-annex assistant archiving</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="../videos/git-annex_assistant_remote_sharing.html">git-annex assistant remote sharing</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>++++<h3>Recent <span class="createlink">forum posts</span></h3>+++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:41 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:41 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,165 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>future proofing</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+future proofing++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Imagine putting a git-annex drive in a time capsule. In 20, or 50, or 100+years, you'd like its contents to be as accessible as possible to whoever+digs it up.</p>++<p>This is a hard problem. git-annex cannot completly solve it, but it does+its best to not contribute to the problem. Here are some aspects of the+problem:</p>++<ul>+<li><p>How are files accessed? Git-annex carefully adds minimal complexity+to access files in a repository. Nothing needs to be done to extract+files from the repository; they are there on disk in the usual way,+with just some symlinks pointing at the annexed file contents.+Neither git-annex nor git is needed to get at the file contents.</p>++<p>(Also, git-annex provides an "uninit" command that moves everything out+of the annex, if you should ever want to stop using it.)</p></li>+<li><p>What file formats are used? Will they still be readable? To deal with+this, it's best to stick to plain text files, and the most common+image, sound, etc formats. Consider storing the same content in multiple+formats.</p></li>+<li><p>What filesystem is used on the drive? Will that filesystem still be+available? Whatever you choose to use, git-annex can put files on it.+Even if you choose (ugh) FAT.</p></li>+<li><p>What is the hardware interface of the drive? Will hardware still exist+to talk to it?</p></li>+<li><p>What if some of the data is damaged? git-annex facilitates storing a+configurable number of <a href="./copies.html">copies</a> of the file contents. The metadata+about your files is stored in git, and so every clone of the repository+means another copy of that is stored. Also, git-annex uses filenames+for the data that encode everything needed to match it back to the+metadata. So if a filesystem is badly corrupted and all your annexed+files end up in <code>lost+found</code>, they can easily be lifted back out into+another clone of the repository. Even if the filenames are lost,+it's possible to <a href="./tips/recover_data_from_lost+found.html">recover data from lost+found</a>.</p></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./special_remotes/S3/comment_8_0fa68d584ee7f6b5c9058fba7e911a11.html">special remotes/S3/comment 8 0fa68d584ee7f6b5c9058fba7e911a11</a>++<a href="./use_case/Bob.html">use case/Bob</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,248 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>git-annex-shell</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+git-annex-shell++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h1>NAME</h1>++<p>git-annex-shell - Restricted login shell for git-annex only SSH access</p>++<h1>SYNOPSIS</h1>++<p>git-annex-shell [-c] command [params ...]</p>++<h1>DESCRIPTION</h1>++<p>git-annex-shell is a restricted shell, similar to git-shell, which+can be used as a login shell for SSH accounts.</p>++<p>Since its syntax is identical to git-shell's, it can be used as a drop-in+replacement anywhere git-shell is used. For example it can be used as a+user's restricted login shell.</p>++<h1>COMMANDS</h1>++<p>Any command not listed below is passed through to git-shell.</p>++<p>Note that the directory parameter should be an absolute path, otherwise+it is assumed to be relative to the user's home directory. Also the+first "/~/" or "/~user/" is expanded to the specified home directory.</p>++<ul>+<li><p>configlist directory</p>++<p>This outputs a subset of the git configuration, in the same form as+<code>git config --list</code></p></li>+<li><p>inannex directory [key ...]</p>++<p>This checks if all specified keys are present in the annex,+and exits zero if so.</p></li>+<li><p>dropkey directory [key ...]</p>++<p>This drops the annexed data for the specified keys.</p></li>+<li><p>recvkey directory key</p>++<p>This runs rsync in server mode to receive the content of a key,+and stores the content in the annex.</p></li>+<li><p>sendkey directory key</p>++<p>This runs rsync in server mode to transfer out the content of a key.</p></li>+<li><p>transferinfo directory key</p>++<p>This is typically run at the same time as sendkey is sending a key+to the remote. Using it is optional, but is used to update+progress information for the transfer of the key.</p>++<p>It reads lines from standard input, each giving the number of bytes+that have been received so far.</p></li>+<li><p>commit directory</p>++<p>This commits any staged changes to the git-annex branch.+It also runs the annex-content hook.</p></li>+</ul>+++<h1>OPTIONS</h1>++<p>Most options are the same as in git-annex. The ones specific+to git-annex-shell are:</p>++<ul>+<li><p>--uuid=UUID</p>++<p>git-annex uses this to specify the UUID of the repository it was expecting+git-annex-shell to access, as a sanity check.</p></li>+<li><p>-- fields=val fields=val.. --</p>++<p>Additional fields may be specified this way, to retain compatability with+past versions of git-annex-shell (that ignore these, but would choke+on new dashed options).</p>++<p>Currently used fields include remoteuuid=, associatedfile=,+and direct=</p></li>+</ul>+++<h1>HOOK</h1>++<p>After content is received or dropped from the repository by git-annex-shell,+it runs a hook, <code>.git/hooks/annex-content</code> (or <code>hooks/annex-content</code> on a bare+repository). The hook is not currently passed any information about what+changed.</p>++<h1>ENVIRONMENT</h1>++<ul>+<li><p>GIT_ANNEX_SHELL_READONLY</p>++<p>If set, disallows any command that could modify the repository.</p></li>+<li><p>GIT_ANNEX_SHELL_LIMITED</p>++<p>If set, disallows running git-shell to handle unknown commands.</p></li>+<li><p>GIT_ANNEX_SHELL_DIRECTORY</p>++<p>If set, git-annex-shell will refuse to run commands that do not operate+on the specified directory.</p></li>+</ul>+++<h1>SEE ALSO</h1>++<p><a href="./git-annex.html">git-annex</a>(1)</p>++<p>git-shell(1)</p>++<h1>AUTHOR</h1>++<p>Joey Hess <a href="mailto:joey@kitenet.net">joey@kitenet.net</a></p>++<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>++<p>Warning: Automatically converted into a man page by mdwn2man. Edit with care</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./bare_repositories.html">bare repositories</a>++<a href="./design/assistant/pairing.html">design/assistant/pairing</a>++<a href="./special_remotes/bup.html">special remotes/bup</a>++<a href="./walkthrough/using_ssh_remotes.html">walkthrough/using ssh remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,1174 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>git-annex</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+git-annex++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h1>NAME</h1>++<p>git-annex - manage files with git, without checking their contents in</p>++<h1>SYNOPSIS</h1>++<p>git annex command [params ...]</p>++<h1>DESCRIPTION</h1>++<p>git-annex allows managing files with git, without checking the file+contents into git. While that may seem paradoxical, it is useful when+dealing with files larger than git can currently easily handle, whether due+to limitations in memory, checksumming time, or disk space.</p>++<p>Even without file content tracking, being able to manage files with git,+move files around and delete files with versioned directory trees, and use+branches and distributed clones, are all very handy reasons to use git. And+annexed files can co-exist in the same git repository with regularly+versioned files, which is convenient for maintaining documents, Makefiles,+etc that are associated with annexed files but that benefit from full+revision control.</p>++<p>When a file is annexed, its content is moved into a key-value store, and+a symlink is made that points to the content. These symlinks are checked into+git and versioned like regular files. You can move them around, delete+them, and so on. Pushing to another git repository will make git-annex+there aware of the annexed file, and it can be used to retrieve its+content from the key-value store.</p>++<h1>EXAMPLES</h1>++<pre><code># git annex get video/hackity_hack_and_kaxxt.mov+get video/_why_hackity_hack_and_kaxxt.mov (not available)+ I was unable to access these remotes: server+ Try making some of these repositories available:+ 5863d8c0-d9a9-11df-adb2-af51e6559a49 -- my home file server+ 58d84e8a-d9ae-11df-a1aa-ab9aa8c00826 -- portable USB drive+ ca20064c-dbb5-11df-b2fe-002170d25c55 -- backup SATA drive+failed+# sudo mount /media/usb+# git remote add usbdrive /media/usb+# git annex get video/hackity_hack_and_kaxxt.mov+get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok++# git annex add iso+add iso/Debian_5.0.iso ok++# git annex drop iso/Debian_4.0.iso+drop iso/Debian_4.0.iso ok++# git annex move iso --to=usbdrive+move iso/Debian_5.0.iso (moving to usbdrive...) ok+</code></pre>++<h1>COMMONLY USED COMMANDS</h1>++<p>Like many git commands, git-annex can be passed a path that+is either a file or a directory. In the latter case it acts on all relevant+files in the directory. When no path is specified, most git-annex commands+default to acting on all relevant files in the current directory (and+subdirectories).</p>++<ul>+<li><p>add [path ...]</p>++<p>Adds files in the path to the annex. Files that are already checked into+git, or that git has been configured to ignore will be silently skipped.+(Use --force to add ignored files.) Dotfiles are skipped unless explicitly+listed.</p></li>+<li><p>get [path ...]</p>++<p>Makes the content of annexed files available in this repository. This+will involve copying them from another repository, or downloading them,+or transferring them from some kind of key-value store.</p>++<p>Normally git-annex will choose which repository to copy the content from,+but you can override this using the --from option.</p></li>+<li><p>drop [path ...]</p>++<p>Drops the content of annexed files from this repository.</p>++<p>git-annex will refuse to drop content if it cannot verify it is+safe to do so. This can be overridden with the --force switch.</p>++<p>To drop content from a remote, specify --from.</p></li>+<li><p>move [path ...]</p>++<p>When used with the --from option, moves the content of annexed files+from the specified repository to the current one.</p>++<p>When used with the --to option, moves the content of annexed files from+the current repository to the specified one.</p></li>+<li><p>copy [path ...]</p>++<p>When used with the --from option, copies the content of annexed files+from the specified repository to the current one.</p>++<p>When used with the --to option, copies the content of annexed files from+the current repository to the specified one.</p>++<p>To avoid contacting the remote to check if it has every file, specify --fast</p></li>+<li><p>unlock [path ...]</p>++<p>Normally, the content of annexed files is protected from being changed.+Unlocking a annexed file allows it to be modified. This replaces the+symlink for each specified file with a copy of the file's content.+You can then modify it and <code>git annex add</code> (or <code>git commit</code>) to inject+it back into the annex.</p></li>+<li><p>edit [path ...]</p>++<p>This is an alias for the unlock command. May be easier to remember,+if you think of this as allowing you to edit an annexed file.</p></li>+<li><p>lock [path ...]</p>++<p>Use this to undo an unlock command if you don't want to modify+the files, or have made modifications you want to discard.</p></li>+<li><p>sync [remote ...]</p>++<p>Use this command when you want to synchronize the local repository with+one or more of its remotes. You can specifiy the remotes to sync with;+the default is to sync with all remotes. Or specify --fast to sync with+the remotes with the lowest annex-cost value.</p>++<p>The sync process involves first committing all local changes (git commit -a),+then fetching and merging the <code>synced/master</code> and the <code>git-annex</code> branch+from the remote repositories and finally pushing the changes back to+those branches on the remote repositories. You can use standard git+commands to do each of those steps by hand, or if you don't want to+worry about the details, you can use sync.</p>++<p>Merge conflicts are automatically resolved by sync. When two conflicting+versions of a file have been committed, both will be added to the tree,+under different filenames. For example, file "foo" would be replaced+with "foo.somekey" and "foo.otherkey".</p>++<p>Note that syncing with a remote will not update the remote's working+tree with changes made to the local repository. However, those changes+are pushed to the remote, so can be merged into its working tree+by running "git annex sync" on the remote.</p>++<p>Note that sync does not transfer any file contents from or to the remote+repositories.</p></li>+<li><p>addurl [url ...]</p>++<p>Downloads each url to its own file, which is added to the annex.</p>++<p>To avoid immediately downloading the url, specify --fast.</p>++<p>To avoid storing the size of the url's content, and accept whatever+is there at a future point, specify --relaxed. (Implies --fast.)</p>++<p>Normally the filename is based on the full url, so will look like+"www.example.com_dir_subdir_bigfile". For a shorter filename, specify+--pathdepth=N. For example, --pathdepth=1 will use "dir/subdir/bigfile",+while --pathdepth=3 will use "bigfile". It can also be negative;+--pathdepth=-2 will use the last two parts of the url.</p>++<p>Or, to directly specify what file the url is added to, specify --file.+This changes the behavior; now all the specified urls are recorded as+alternate locations from which the file can be downloaded. In this mode,+addurl can be used both to add new files, or to add urls to existing files.</p></li>+<li><p>rmurl file url</p>++<p>Record that the file is no longer available at the url.</p></li>+<li><p>import [path ...]</p>++<p>Moves files from somewhere outside the git working copy, and adds them to+the annex. Individual files to import can be specified.+If a directory is specified, all files in it are imported, and any+subdirectory structure inside it is preserved.</p>++<p> git annex import /media/camera/DCIM/</p></li>+<li><p>watch</p>++<p>Watches for changes to files in the current directory and its subdirectories,+and takes care of automatically adding new files, as well as dealing with+deleted, copied, and moved files. With this running as a daemon in the+background, you no longer need to manually run git commands when+manipulating your files.</p>++<p>To not daemonize, run with --foreground ; to stop a running daemon,+run with --stop</p></li>+<li><p>assistant</p>++<p>Like watch, but also automatically syncs changes to other remotes.+Typically started at boot, or when you log in.</p>++<p>With the --autostart option, the assistant is started in any repositories+it has created. These are listed in <code>~/.config/git-annex/autostart</code></p></li>+<li><p>webapp</p>++<p>Opens a web app, that allows easy setup of a git-annex repository,+and control of the git-annex assistant.</p>++<p>By default, the webapp can only be accessed from localhost, and running+it opens a browser window.</p>++<p>With the --listen=address[:port] option, the webapp can be made to listen+for connections on the specified address. This disables running a+local web browser, and outputs the url you can use to open the webapp+from a remote computer.+Note that this does not yet use HTTPS for security, so use with caution!</p></li>+</ul>+++<h1>REPOSITORY SETUP COMMANDS</h1>++<ul>+<li><p>init [description]</p>++<p>Until a repository (or one of its remotes) has been initialized,+git-annex will refuse to operate on it, to avoid accidentially+using it in a repository that was not intended to have an annex.</p>++<p>It's useful, but not mandatory, to initialize each new clone+of a repository with its own description. If you don't provide one,+one will be generated.</p></li>+<li><p>describe repository description</p>++<p>Changes the description of a repository.</p>++<p>The repository to describe can be specified by git remote name or+by uuid. To change the description of the current repository, use+"here".</p></li>+<li><p>initremote name [param=value ...]</p>++<p>Creates a new special remote, and adds it to <code>.git/config</code>.</p>++<p>The remote's configuration is specified by the parameters. Different+types of special remotes need different configuration values. The+command will prompt for parameters as needed.</p>++<p>All special remotes support encryption. You must either specify+encryption=none to disable encryption, or use encryption=keyid+(or encryption=emailaddress) to specify a gpg key that can access+the encrypted special remote.</p>++<p>Example Amazon S3 remote:</p>++<p> git annex initremote mys3 type=S3 encryption=me@example.com datacenter=EU</p></li>+<li><p>enableremote name [param=value ...]</p>++<p>Enables use of an existing special remote in the current repository,+which may be a different repository than the one in which it was+originally created with the initremote command.</p>++<p>The name of the remote is the same name used when origianlly+creating that remote with "initremote". Run "git annex enableremote"+with no parameters to get a list of special remote names.</p>++<p>Some special remotes may need parameters to be specified every time.+For example, the directory special remote requires a directory= parameter.</p>++<p>This command can also be used to modify the configuration of an existing+special remote, by specifying new values for parameters that were originally+set when using initremote. For example, to add a new gpg key to the keys+that can access an encrypted remote:</p>++<p> git annex initremote mys3 encryption=friend@example.com</p></li>+<li><p>trust [repository ...]</p>++<p>Records that a repository is trusted to not unexpectedly lose+content. Use with care.</p>++<p>To trust the current repository, use "here".</p></li>+<li><p>untrust [repository ...]</p>++<p>Records that a repository is not trusted and could lose content+at any time.</p></li>+<li><p>semitrust [repository ...]</p>++<p>Returns a repository to the default semi trusted state.</p></li>+<li><p>dead [repository ...]</p>++<p>Indicates that the repository has been irretrevably lost.+(To undo, use semitrust.)</p></li>+<li><p>group repository groupname</p>++<p>Adds a repository to a group, such as "archival", "enduser", or "transfer".+The groupname must be a single word.</p></li>+<li><p>ungroup repository groupname</p>++<p>Removes a repository from a group.</p></li>+<li><p>vicfg</p>++<p>Opens EDITOR on a temp file containing most of the above configuration+settings, and when it exits, stores any changes made back to the git-annex+branch.</p></li>+<li><p>direct</p>++<p>Switches a repository to use direct mode, where rather than symlinks to+files, the files are directly present in the repository.</p>++<p>As part of the switch to direct mode, any changed files will be committed.</p>++<p>Note that git commands that operate on the work tree are often unsafe to+use in direct mode repositories, and can result in data loss or other+bad behavior.</p></li>+<li><p>indirect</p>++<p>Switches a repository back from direct mode to the default, indirect mode.</p>++<p>As part of the switch from direct mode, any changed files will be committed.</p></li>+</ul>+++<h1>REPOSITORY MAINTENANCE COMMANDS</h1>++<ul>+<li><p>fsck [path ...]</p>++<p>With no parameters, this command checks the whole annex for consistency,+and warns about or fixes any problems found.</p>++<p>With parameters, only the specified files are checked.</p>++<p>To check a remote to fsck, specify --from.</p>++<p>To avoid expensive checksum calculations (and expensive transfers when+fscking a remote), specify --fast.</p>++<p>To start a new incremental fsck, specify --incremental. Then+the next time you fsck, you can specify --more to skip over+files that have already been checked, and continue where it left off.</p>++<p>The --incremental-schedule option makes a new incremental fsck be+started a configurable time after the last incremental fsck was started.+Once the current incremental fsck has completely finished, it causes+a new one to start.</p>++<p>Maybe you'd like to run a fsck for 5 hours at night, picking up each+night where it left off. You'd like this to continue until all files+have been fscked. And once it's done, you'd like a new fsck pass to start,+but no more often than once a month. Then put this in a nightly cron job:</p>++<p> git annex fsck --incremental-schedule 30d --time-limit 5h</p></li>+<li><p>unused</p>++<p>Checks the annex for data that does not correspond to any files present+in any tag or branch, and prints a numbered list of the data.</p>++<p>To only show unused temp and bad files, specify --fast.</p>++<p>To check for annexed data on a remote, specify --from.</p></li>+<li><p>dropunused [number|range ...]</p>++<p>Drops the data corresponding to the numbers, as listed by the last+<code>git annex unused</code></p>++<p>You can also specify ranges of numbers, such as "1-1000".</p>++<p>To drop the data from a remote, specify --from.</p></li>+<li><p>addunused [number|range ...]</p>++<p>Adds back files for the content corresponding to the numbers or ranges,+as listed by the last <code>git annex unused</code>. The files will have names+starting with "unused."</p></li>+<li><p>merge</p>++<p>Automatically merges remote tracking branches */git-annex into+the git-annex branch. While git-annex mostly handles keeping the+git-annex branch merged automatically, if you find you are unable+to push the git-annex branch due non-fast-forward, this will fix it.</p></li>+<li><p>fix [path ...]</p>++<p>Fixes up symlinks that have become broken to again point to annexed content.+This is useful to run if you have been moving the symlinks around,+but is done automatically when committing a change with git too.</p></li>+<li><p>upgrade</p>++<p>Upgrades the repository to current layout.</p></li>+</ul>+++<h1>QUERY COMMANDS</h1>++<ul>+<li><p>version</p>++<p>Shows the version of git-annex, as well as repository version information.</p></li>+<li><p>find [path ...]</p>++<p>Outputs a list of annexed files in the specified path. With no path,+finds files in the current directory and its subdirectories.</p>++<p>By default, only lists annexed files whose content is currently present.+This can be changed by specifying file matching options. To list all+annexed files, present or not, specify --include "*". To list all+annexed files whose content is not present, specify --not --in=here</p>++<p>To output filenames terminated with nulls, for use with xargs -0,+specify --print0. Or, a custom output formatting can be specified using+--format. The default output format is the same as --format='${file}\n'</p>++<p>These variables are available for use in formats: file, key, backend,+bytesize, humansize</p></li>+<li><p>whereis [path ...]</p>++<p>Displays a list of repositories known to contain the content of the+specified file or files.</p></li>+<li><p>log [path ...]</p>++<p>Displays the location log for the specified file or files,+showing each repository they were added to ("+") and removed from ("-").</p>++<p>To limit how far back to seach for location log changes, the options+--since, --after, --until, --before, and --max-count can be specified.+They are passed through to git log. For example, --since "1 month ago"</p>++<p>To generate output suitable for the gource visualisation program,+specify --gource.</p></li>+<li><p>status [directory ...]</p>++<p>Displays some statistics and other information, including how much data+is in the annex and a list of all known repositories.</p>++<p>To only show the data that can be gathered quickly, use --fast.</p>++<p>When a directory is specified, shows only an abbreviated status+display for that directory. In this mode, all of the file matching+options can be used to filter the files that will be included in+the status.</p>++<p>For example, suppose you want to run "git annex get .", but+would first like to see how much disk space that will use.+Then run:</p>++<p> git annex status . --not --in here</p></li>+<li><p>map</p>++<p>Helps you keep track of your repositories, and the connections between them,+by going out and looking at all the ones it can get to, and generating a+Graphviz file displaying it all. If the <code>dot</code> command is available, it is+used to display the file to your screen (using x11 backend). (To disable+this display, specify --fast)</p>++<p>This command only connects to hosts that the host it's run on can+directly connect to. It does not try to tunnel through intermediate hosts.+So it might not show all connections between the repositories in the network.</p>++<p>Also, if connecting to a host requires a password, you might have to enter+it several times as the map is being built.</p>++<p>Note that this subcommand can be used to graph any git repository; it+is not limited to git-annex repositories.</p></li>+</ul>+++<h1>UTILITY COMMANDS</h1>++<ul>+<li><p>migrate [path ...]</p>++<p>Changes the specified annexed files to use the default key-value backend+(or the one specified with --backend). Only files whose content+is currently available are migrated.</p>++<p>Note that the content is also still available using the old key after+migration. Use <code>git annex unused</code> to find and remove the old key.</p>++<p>Normally, nothing will be done to files already using the new backend.+However, if a backend changes the information it uses to construct a key,+this can also be used to migrate files to use the new key format.</p></li>+<li><p>reinject src dest</p>++<p>Moves the src file into the annex as the content of the dest file.+This can be useful if you have obtained the content of a file from+elsewhere and want to put it in the local annex.</p>++<p>Automatically runs fsck on dest to check that the expected content was+provided.</p>++<p>Example:</p>++<p> git annex reinject /tmp/foo.iso foo.iso</p></li>+<li><p>unannex [path ...]</p>++<p>Use this to undo an accidental <code>git annex add</code> command. You can use+<code>git annex unannex</code> to move content out of the annex at any point,+even if you've already committed it.</p>++<p>This is not the command you should use if you intentionally annexed a+file and don't want its contents any more. In that case you should use+<code>git annex drop</code> instead, and you can also <code>git rm</code> the file.</p>++<p>In --fast mode, this command leaves content in the annex, simply making+a hard link to it.</p></li>+<li><p>uninit</p>++<p>Use this to stop using git annex. It will unannex every file in the+repository, and remove all of git-annex's other data, leaving you with a+git repository plus the previously annexed files.</p></li>+</ul>+++<h1>PLUMBING COMMANDS</h1>++<ul>+<li><p>pre-commit [path ...]</p>++<p>Fixes up symlinks that are staged as part of a commit, to ensure they+point to annexed content. Also handles injecting changes to unlocked+files into the annex.</p>++<p>This is meant to be called from git's pre-commit hook. <code>git annex init</code>+automatically creates a pre-commit hook using this.</p></li>+<li><p>fromkey key file</p>++<p>This plumbing-level command can be used to manually set up a file+in the git repository to link to a specified key.</p></li>+<li><p>dropkey [key ...]</p>++<p>This plumbing-level command drops the annexed data for the specified+keys from this repository.</p>++<p>This can be used to drop content for arbitrary keys, which do not need+to have a file in the git repository pointing at them.</p>++<p>Example:</p>++<p> git annex dropkey SHA1-s10-7da006579dd64330eb2456001fd01948430572f2</p></li>+<li><p>transferkeys</p>++<p>This plumbing-level command is used by the assistant to transfer data.</p></li>+<li><p>rekey [file key ...]</p>++<p>This plumbing-level command is similar to migrate, but you specify+both the file, and the new key to use for it.</p>++<p>With --force, even files whose content is not currently available will+be rekeyed. Use with caution.</p></li>+<li><p>test</p>++<p>This runs git-annex's built-in test suite.</p></li>+<li><p>xmppgit</p>++<p>This command is used internally to perform git pulls over XMPP.</p></li>+</ul>+++<h1>OPTIONS</h1>++<ul>+<li><p>--force</p>++<p>Force unsafe actions, such as dropping a file's content when no other+source of it can be verified to still exist, or adding ignored files.+Use with care.</p></li>+<li><p>--fast</p>++<p>Enables less expensive, but also less thorough versions of some commands.+What is avoided depends on the command.</p></li>+<li><p>--auto</p>++<p>Enables automatic mode. Commands that get, drop, or move file contents+will only do so when needed to help satisfy the setting of annex.numcopies,+and preferred content configuration.</p></li>+<li><p>--quiet</p>++<p>Avoid the default verbose display of what is done; only show errors+and progress displays.</p></li>+<li><p>--verbose</p>++<p>Enable verbose display.</p></li>+<li><p>--json</p>++<p>Rather than the normal output, generate JSON. This is intended to be+parsed by programs that use git-annex. Each line of output is a JSON+object. Note that json output is only usable with some git-annex commands,+like status and find.</p></li>+<li><p>--debug</p>++<p>Show debug messages.</p></li>+<li><p>--from=repository</p>++<p>Specifies a repository that content will be retrieved from, or that+should otherwise be acted on.</p>++<p>It should be specified using the name of a configured remote.</p></li>+<li><p>--to=repository</p>++<p>Specifies a repository that content will be sent to.</p>++<p>It should be specified using the name of a configured remote.</p></li>+<li><p>--numcopies=n</p>++<p>Overrides the <code>annex.numcopies</code> setting, forcing git-annex to ensure the+specified number of copies exist.</p>++<p>Note that setting numcopies to 0 is very unsafe.</p></li>+<li><p>--time-limit=time</p>++<p>Limits how long a git-annex command runs. The time can be something+like "5h", or "30m" or even "45s" or "10d".</p>++<p>Note that git-annex may continue running a little past the specified+time limit, in order to finish processing a file.</p>++<p>Also, note that if the time limit prevents git-annex from doing all it+was asked to, it will exit with a special code, 101.</p></li>+<li><p>--trust=repository</p></li>+<li>--semitrust=repository</li>+<li><p>--untrust=repository</p>++<p>Overrides trust settings for a repository. May be specified more than once.</p>++<p>The repository should be specified using the name of a configured remote,+or the UUID or description of a repository.</p></li>+<li><p>--trust-glacier-inventory</p>++<p>Amazon Glacier inventories take hours to retrieve, and may not represent+the current state of a repository. So git-annex does not trust that+files that the inventory claims are in Glacier are really there.+This switch can be used to allow it to trust the inventory.</p>++<p>Be careful using this, especially if you or someone else might have recently+removed a file from Glacier. If you try to drop the only other copy of the+file, and this switch is enabled, you could lose data!</p></li>+<li><p>--backend=name</p>++<p>Specifies which key-value backend to use. This can be used when+adding a file to the annex, or migrating a file. Once files+are in the annex, their backend is known and this option is not+necessary.</p></li>+<li><p>--format=value</p>++<p>Specifies a custom output format. The value is a format string,+in which '${var}' is expanded to the value of a variable. To right-justify+a variable with whitespace, use '${var;width}' ; to left-justify+a variable, use '${var;-width}'; to escape unusual characters in a variable,+use '${escaped_var}'</p>++<p>Also, '\n' is a newline, '\000' is a NULL, etc.</p></li>+<li><p>-c name=value</p>++<p>Used to override git configuration settings. May be specified multiple times.</p></li>+</ul>+++<h1>FILE MATCHING OPTIONS</h1>++<p>These options can all be specified multiple times, and can be combined to+limit which files git-annex acts on.</p>++<p>Arbitrarily complicated expressions can be built using these options.+For example:</p>++<pre><code>--exclude '*.mp3' --and --not -( --in=usbdrive --or --in=archive -)+</code></pre>++<p>The above example prevents git-annex from working on mp3 files whose+file contents are present at either of two repositories.</p>++<ul>+<li><p>--exclude=glob</p>++<p>Skips files matching the glob pattern. The glob is matched relative to+the current directory. For example:</p>++<p> --exclude='<em>.mp3' --exclude='subdir/</em>'</p></li>+<li><p>--include=glob</p>++<p>Skips files not matching the glob pattern. (Same as --not --exclude.)+For example, to include only mp3 and ogg files:</p>++<p> --include='<em>.mp3' --or --include='</em>.ogg'</p></li>+<li><p>--in=repository</p>++<p>Matches only files that git-annex believes have their contents present+in a repository. Note that it does not check the repository to verify+that it still has the content.</p>++<p>The repository should be specified using the name of a configured remote,+or the UUID or description of a repository. For the current repository,+use --in=here</p></li>+<li><p>--copies=number</p>++<p>Matches only files that git-annex believes to have the specified number+of copies, or more. Note that it does not check remotes to verify that+the copies still exist.</p></li>+<li><p>--copies=trustlevel:number</p>++<p>Matches only files that git-annex believes have the specified number of+copies, on remotes with the specified trust level. For example,+"--copies=trusted:2"</p>++<p>To match any trust level at or higher than a given level, use+'trustlevel+'. For example, "--copies=semitrusted+:2"</p></li>+<li><p>--copies=groupname:number</p>++<p>Matches only files that git-annex believes have the specified number of+copies, on remotes in the specified group. For example,+"--copies=archive:2"</p></li>+<li><p>--inbackend=name</p>++<p>Matches only files whose content is stored using the specified key-value+backend.</p></li>+<li><p>--inallgroup=groupname</p>++<p>Matches only files that git-annex believes are present in all repositories+in the specified group.</p></li>+<li><p>--smallerthan=size</p></li>+<li><p>--largerthan=size</p>++<p>Matches only files whose content is smaller than, or larger than the+specified size.</p>++<p>The size can be specified with any commonly used units, for example,+"0.5 gb" or "100 KiloBytes"</p></li>+<li><p>--not</p>++<p>Inverts the next file matching option. For example, to only act on+files with less than 3 copies, use --not --copies=3</p></li>+<li><p>--and</p>++<p>Requires that both the previous and the next file matching option matches.+The default.</p></li>+<li><p>--or</p>++<p>Requires that either the previous, or the next file matching option matches.</p></li>+<li><p>-(</p>++<p>Opens a group of file matching options.</p></li>+<li><p>-)</p>++<p>Closes a group of file matching options.</p></li>+</ul>+++<h1>PREFERRED CONTENT</h1>++<p>Each repository has a preferred content setting, which specifies content+that the repository wants to have present. These settings can be configured+using <code>git annex vicfg</code>. They are used by the <code>--auto</code> option, and+by the git-annex assistant.</p>++<p>The preferred content settings are similar, but not identical to+the file matching options specified above, just without the dashes.+For example:</p>++<pre><code>exclude=archive/* and (include=*.mp3 or smallerthan=1mb)+</code></pre>++<p>The main differences are that <code>exclude=</code> and <code>include=</code> always+match relative to the top of the git repository, and that there is+no equivilant to --in.</p>++<h1>CONFIGURATION</h1>++<p>Like other git commands, git-annex is configured via <code>.git/config</code>.+Here are all the supported configuration settings.</p>++<ul>+<li><p><code>annex.uuid</code></p>++<p>A unique UUID for this repository (automatically set).</p></li>+<li><p><code>annex.numcopies</code></p>++<p>Number of copies of files to keep across all repositories. (default: 1)</p>++<p>Note that setting numcopies to 0 is very unsafe.</p></li>+<li><p><code>annex.backends</code></p>++<p>Space-separated list of names of the key-value backends to use.+The first listed is used to store new files by default.</p></li>+<li><p><code>annex.diskreserve</code></p>++<p>Amount of disk space to reserve. Disk space is checked when transferring+content to avoid running out, and additional free space can be reserved+via this option, to make space for more important content (such as git+commit logs). Can be specified with any commonly used units, for example,+"0.5 gb" or "100 KiloBytes"</p>++<p>The default reserve is 1 megabyte.</p></li>+<li><p><code>annex.largefiles</code></p>++<p>Allows configuring which files <code>git annex add</code> and the assistant consider+to be large enough to need to be added to the annex. By default,+all files are added to the annex.</p>++<p>The value is a preferred content expression. See PREFERRED CONTENT+for details.</p>++<p>Example:</p>++<p> annex.largefiles = largerthan=100kb and not (include=<em>.c or include=</em>.h)</p></li>+<li><p><code>annex.queuesize</code></p>++<p>git-annex builds a queue of git commands, in order to combine similar+commands for speed. By default the size of the queue is limited to+10240 commands; this can be used to change the size. If you have plenty+of memory and are working with very large numbers of files, increasing+the queue size can speed it up.</p></li>+<li><p><code>annex.bloomcapacity</code></p>++<p>The <code>git annex unused</code> command uses a bloom filter to determine+what data is no longer used. The default bloom filter is sized to handle+up to 500000 keys. If your repository is larger than that,+you can adjust this to avoid <code>git annex unused</code> not noticing some unused+data files. Increasing this will make <code>git-annex unused</code> consume more memory;+run <code>git annex status</code> for memory usage numbers.</p></li>+<li><p><code>annex.bloomaccuracy</code></p>++<p>Adjusts the accuracy of the bloom filter used by+<code>git annex unused</code>. The default accuracy is 1000 --+1 unused file out of 1000 will be missed by <code>git annex unused</code>. Increasing+the accuracy will make <code>git annex unused</code> consume more memory;+run <code>git annex status</code> for memory usage numbers.</p></li>+<li><p><code>annex.sshcaching</code></p>++<p>By default, git-annex caches ssh connections+(if built using a new enough ssh). To disable this, set to <code>false</code>.</p></li>+<li><p><code>annex.alwayscommit</code></p>++<p>By default, git-annex automatically commits data to the git-annex branch+after each command is run. To disable these commits,+set to <code>false</code>. Then data will only be committed when+running <code>git annex merge</code> (or by automatic merges) or <code>git annex sync</code>.</p></li>+<li><p><code>annex.delayadd</code></p>++<p>Makes the watch and assistant commands delay for the specified number of+seconds before adding a newly created file to the annex. Normally this+is not needed, because they already wait for all writers of the file+to close it. On Mac OSX, when not using direct mode this defaults to+1 second, to work around a bad interaction with software there.</p></li>+<li><p><code>annex.autocommit</code></p>++<p>Set to false to prevent the git-annex assistant from automatically+committing changes to files in the repository.</p></li>+<li><p><code>annex.version</code></p>++<p>Automatically maintained, and used to automate upgrades between versions.</p></li>+<li><p><code>annex.direct</code></p>++<p>Set to true when the repository is in direct mode. Should not be set+manually; use the "git annex direct" and "git annex indirect" commands+instead.</p></li>+<li><p><code>annex.crippledfilesystem</code></p>++<p>Set to true if the repository is on a crippled filesystem, such as FAT,+which does not support symbolic links, or hard links, or unix permissions.+This is automatically probed by "git annex init".</p></li>+<li><p><code>remote.<name>.annex-cost</code></p>++<p>When determining which repository to+transfer annexed files from or to, ones with lower costs are preferred.+The default cost is 100 for local repositories, and 200 for remote+repositories.</p></li>+<li><p><code>remote.<name>.annex-cost-command</code></p>++<p>If set, the command is run, and the number it outputs is used as the cost.+This allows varying the cost based on eg, the current network. The+cost-command can be any shell command line.</p></li>+<li><p><code>remote.<name>.annex-start-command</code></p>++<p>A command to run when git-annex begins to use the remote. This can+be used to, for example, mount the directory containing the remote.</p>++<p>The command may be run repeatedly when multiple git-annex processes+are running concurrently.</p></li>+<li><p><code>remote.<name>.annex-stop-command</code></p>++<p>A command to run when git-annex is done using the remote.</p>++<p>The command will only be run once <em>all</em> running git-annex processes+are finished using the remote.</p></li>+<li><p><code>remote.<name>.annex-ignore</code></p>++<p>If set to <code>true</code>, prevents git-annex+from storing file contents on this remote by default.+(You can still request it be used by the --from and --to options.)</p>++<p>This is, for example, useful if the remote is located somewhere+without git-annex-shell. (For example, if it's on GitHub).+Or, it could be used if the network connection between two+repositories is too slow to be used normally.</p>++<p>This does not prevent git-annex sync (or the git-annex assistant) from+syncing the git repository to the remote.</p></li>+<li><p><code>remote.<name>.annex-sync</code></p>++<p>If set to <code>false</code>, prevents git-annex sync (and the git-annex assistant)+from syncing with this remote.</p></li>+<li><p><code>remote.<name>.annexUrl</code></p>++<p>Can be used to specify a different url than the regular <code>remote.<name>.url</code>+for git-annex to use when talking with the remote. Similar to the <code>pushUrl</code>+used by git-push.</p></li>+<li><p><code>remote.<name>.annex-uuid</code></p>++<p>git-annex caches UUIDs of remote repositories here.</p></li>+<li><p><code>remote.<name>.annex-trustlevel</code></p>++<p>Configures a local trust level for the remote. This overrides the value+configured by the trust and untrust commands. The value can be any of+"trusted", "semitrusted" or "untrusted".</p></li>+<li><p><code>remote.<name>.annex-ssh-options</code></p>++<p>Options to use when using ssh to talk to this remote.</p></li>+<li><p><code>remote.<name>.annex-rsync-options</code></p>++<p>Options to use when using rsync+to or from this remote. For example, to force ipv6, and limit+the bandwidth to 100Kbyte/s, set it to "-6 --bwlimit 100"</p></li>+<li><p><code>remote.<name>.annex-rsync-transport</code></p>++<p>The remote shell to use to connect to the rsync remote. Possible+values are <code>ssh</code> (the default) and <code>rsh</code>, together with their+arguments, for instance <code>ssh -p 2222 -c blowfish</code>; Note that the+remote hostname should not appear there, see rsync(1) for details.+When the transport used is <code>ssh</code>, connections are automatically cached+unless <code>annex.sshcaching</code> is unset.</p></li>+<li><p><code>remote.<name>.annex-bup-split-options</code></p>++<p>Options to pass to bup split when storing content in this remote.+For example, to limit the bandwidth to 100Kbyte/s, set it to "--bwlimit 100k"+(There is no corresponding option for bup join.)</p></li>+<li><p><code>remote.<name>.annex-gnupg-options</code></p>++<p>Options to pass to GnuPG for symmetric encryption. For instance, to+use the AES cipher with a 256 bits key and disable compression, set it+to "--cipher-algo AES256 --compress-algo none". (These options take+precedence over the default GnuPG configuration, which is otherwise+used.)</p></li>+<li><p><code>annex.ssh-options</code>, <code>annex.rsync-options</code>, <code>annex.bup-split-options</code>,+<code>annex.gnupg-options</code></p>++<p>Default ssh, rsync, wget/curl, bup, and GnuPG options to use if a+remote does not have specific options.</p></li>+<li><p><code>annex.web-options</code></p>++<p>Options to use when using wget or curl to download a file from the web.+(wget is always used in preference to curl if available.)+For example, to force ipv4 only, set it to "-4"</p></li>+<li><p><code>annex.http-headers</code></p>++<p>HTTP headers to send when downloading from the web. Multiple lines of+this option can be set, one per header.</p></li>+<li><p><code>annex.http-headers-command</code></p>++<p>If set, the command is run and each line of its output is used as a HTTP+header. This overrides annex.http-headers.</p></li>+<li><p><code>annex.web-download-command</code></p>++<p>Use to specify a command to run to download a file from the web.+(The default is to use wget or curl.)</p>++<p>In the command line, %url is replaced with the url to download,+and %file is replaced with the file that it should be saved to.+Note that both these values will automatically be quoted, since+the command is run in a shell.</p></li>+<li><p><code>remote.<name>.rsyncurl</code></p>++<p>Used by rsync special remotes, this configures+the location of the rsync repository to use. Normally this is automatically+set up by <code>git annex initremote</code>, but you can change it if needed.</p></li>+<li><p><code>remote.<name>.buprepo</code></p>++<p>Used by bup special remotes, this configures+the location of the bup repository to use. Normally this is automatically+set up by <code>git annex initremote</code>, but you can change it if needed.</p></li>+<li><p><code>remote.<name>.directory</code></p>++<p>Used by directory special remotes, this configures+the location of the directory where annexed files are stored for this+remote. Normally this is automatically set up by <code>git annex initremote</code>,+but you can change it if needed.</p></li>+<li><p><code>remote.<name>.s3</code></p>++<p>Used to identify Amazon S3 special remotes.+Normally this is automatically set up by <code>git annex initremote</code>.</p></li>+<li><p><code>remote.<name>.glacier</code></p>++<p>Used to identify Amazon Glacier special remotes.+Normally this is automatically set up by <code>git annex initremote</code>.</p></li>+<li><p><code>remote.<name>.webdav</code></p>++<p>Used to identify webdav special remotes.+Normally this is automatically set up by <code>git annex initremote</code>.</p></li>+<li><p><code>remote.<name>.annex-xmppaddress</code></p>++<p>Used to identify the XMPP address of a Jabber buddy.+Normally this is set up by the git-annex assistant when pairing over XMPP.</p></li>+</ul>+++<h1>CONFIGURATION VIA .gitattributes</h1>++<p>The key-value backend used when adding a new file to the annex can be+configured on a per-file-type basis via <code>.gitattributes</code> files. In the file,+the <code>annex.backend</code> attribute can be set to the name of the backend to+use. For example, this here's how to use the WORM backend by default,+but the SHA256E backend for ogg files:</p>++<pre><code>* annex.backend=WORM+*.ogg annex.backend=SHA256E+</code></pre>++<p>The numcopies setting can also be configured on a per-file-type basis via+the <code>annex.numcopies</code> attribute in <code>.gitattributes</code> files. This overrides+any value set using <code>annex.numcopies</code> in <code>.git/config</code>.+For example, this makes two copies be needed for wav files:</p>++<pre><code>*.wav annex.numcopies=2+</code></pre>++<p>Note that setting numcopies to 0 is very unsafe.</p>++<h1>FILES</h1>++<p>These files are used by git-annex:</p>++<p><code>.git/annex/objects/</code> in your git repository contains the annexed file+contents that are currently available. Annexed files in your git+repository symlink to that content.</p>++<p><code>.git/annex/</code> in your git repository contains other run-time information+used by git-annex.</p>++<p><code>~/.config/git-annex/autostart</code> is a list of git repositories+to start the git-annex assistant in.</p>++<h1>SEE ALSO</h1>++<p>Most of git-annex's documentation is available on its web site,+<a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>++<p>If git-annex is installed from a package, a copy of its documentation+should be included, in, for example, <code>/usr/share/doc/git-annex/</code></p>++<h1>AUTHOR</h1>++<p>Joey Hess <a href="mailto:joey@kitenet.net">joey@kitenet.net</a></p>++<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>++<p>Warning: Automatically converted into a man page by mdwn2man. Edit with care</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./git-annex-shell.html">git-annex-shell</a>++<a href="./how_it_works.html">how it works</a>++<a href="./links/key_concepts.html">links/key concepts</a>++<a href="./preferred_content.html">preferred content</a>++<a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">tips/Using Git-annex as a web browsing assistant</a>++<a href="./walkthrough/using_ssh_remotes.html">walkthrough/using ssh remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,165 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>git-union-merge</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+git-union-merge++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h1>NAME</h1>++<p>git-union-merge - Join branches together using a union merge</p>++<h1>SYNOPSIS</h1>++<p>git union-merge ref ref newref</p>++<h1>DESCRIPTION</h1>++<p>Does a union merge between two refs, storing the result in the+specified newref.</p>++<p>The union merge will always succeed, but assumes that files can be merged+simply by concacenating together lines from all the oldrefs, in any order.+So, this is useful only for branches containing log-type data.</p>++<p>Note that this does not touch the checked out working copy. It operates+entirely on git refs and branches.</p>++<h1>EXAMPLE</h1>++<pre><code>git union-merge git-annex origin/git-annex refs/heads/git-annex +</code></pre>++<p>Merges the current git-annex branch, and a version from origin,+storing the result in the git-annex branch.</p>++<h1>BUGS</h1>++<p>File modes are not currently merged.</p>++<h1>AUTHOR</h1>++<p>Joey Hess <a href="mailto:joey@kitenet.net">joey@kitenet.net</a></p>++<p><a href="http://git-annex.branchable.com/">http://git-annex.branchable.com/</a></p>++<p>Warning: Automatically converted into a man page by mdwn2man. Edit with care</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./internals.html">internals</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,167 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>how it works</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+how it works++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This page gives a high-level view of git-annex. For a detailed+low-level view, see <a href="./git-annex.html">the man page</a> and <a href="./internals.html">internals</a>.</p>++<p>You do not need to read this page to get started with using git-annex. The+<a href="./walkthrough.html">walkthrough</a> provides step-by-step instructions.</p>++<p>Still reading? Ok. Git's man page calls it "a stupid content+tracker". With git-annex, git is instead "a stupid filename and metadata"+tracker. The contents of large files are not stored in git, only the+names of the files and some other metadata remain there.</p>++<p>The contents of the files are kept by git-annex in a distributed key/value+store consisting of every clone of a given git repository. That's a fancy+way to say that git-annex stores the actual file content somewhere under+<code>.git/annex/</code>. (See <a href="./internals.html">internals</a> for details.)</p>++<p>That was the values; what about the keys? Well, a key is calculated for a+given file when it's first added into git-annex. Normally this uses a hash+of its contents, but various <a href="./backends.html">backends</a> can produce different sorts of+keys. The file that gets checked into git is just a symlink to the key+under <code>.git/annex/</code>. If the content of a file is modified, that produces+a different key (and the symlink is changed).</p>++<p>A file's content can be <a href="./transferring_data.html">transferred</a> from one+repository to another by git-annex. Which repositories contain a given+value is tracked by git-annex (see <a href="./location_tracking.html">location tracking</a>). It stores this+tracking information in a separate branch, named "git-annex". All you ever+do with the "git-annex" branch is push/pull it around between repositories,+to <a href="./sync.html">sync</a> up git-annex's view of the world.</p>++<p>That's really all there is to it. Oh, there are <a href="./special_remotes.html">special remotes</a> that+let values be stored other places than git repositories (anything from+Amazon S3 to a USB key), and there's a pile of commands listed in+<a href="./git-annex.html">the man page</a> to handle moving the values around and managing+them. But if you grok the description above, you can see through all that.+It's really just symlinks, keys, values, and a git-annex branch to store+additional metadata.</p>++<hr />++<p>Next: <a href="./install.html">install</a> or <a href="./walkthrough.html">walkthrough</a></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/key_concepts.html">links/key concepts</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,54 @@+// ikiwiki's javascript utility function library++var hooks;++// Run onload as soon as the DOM is ready, if possible.+// gecko, opera 9+if (document.addEventListener) {+ document.addEventListener("DOMContentLoaded", run_hooks_onload, false);+}+// other browsers+window.onload = run_hooks_onload;++var onload_done = 0;++function run_hooks_onload() {+ // avoid firing twice+ if (onload_done)+ return;+ onload_done = true;++ run_hooks("onload");+}++function run_hooks(name) {+ if (typeof(hooks) != "undefined") {+ for (var i = 0; i < hooks.length; i++) {+ if (hooks[i].name == name) {+ hooks[i].call();+ }+ }+ }+}++function hook(name, call) {+ if (typeof(hooks) == "undefined")+ hooks = new Array;+ hooks.push({name: name, call: call});+}++function getElementsByClass(cls, node, tag) {+ if (document.getElementsByClass)+ return document.getElementsByClass(cls, node, tag);+ if (! node) node = document;+ if (! tag) tag = '*';+ var ret = new Array();+ var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)");+ var els = node.getElementsByTagName(tag);+ for (i = 0; i < els.length; i++) {+ if ( pattern.test(els[i].className) ) {+ ret.push(els[i]);+ }+ }+ return ret;+}
@@ -0,0 +1,75 @@+// Causes html elements in the 'relativedate' class to be displayed+// as relative dates. The date is parsed from the title attribute, or from+// the element content.++var dateElements;++hook("onload", getDates);++function getDates() {+ dateElements = getElementsByClass('relativedate');+ for (var i = 0; i < dateElements.length; i++) {+ var elt = dateElements[i];+ var title = elt.attributes.title;+ var d = new Date(title ? title.value : elt.innerHTML);+ if (! isNaN(d)) {+ dateElements[i].date=d;+ elt.title=elt.innerHTML;+ }+ }++ showDates();+}++function showDates() {+ for (var i = 0; i < dateElements.length; i++) {+ var elt = dateElements[i];+ var d = elt.date;+ if (! isNaN(d)) {+ elt.innerHTML=relativeDate(d);+ }+ }+ setTimeout(showDates,30000); // keep updating every 30s+}++var timeUnits = [+ { unit: 'year', seconds: 60 * 60 * 24 * 364 },+ { unit: 'month', seconds: 60 * 60 * 24 * 30 },+ { unit: 'day', seconds: 60 * 60 * 24 },+ { unit: 'hour', seconds: 60 * 60 },+ { unit: 'minute', seconds: 60 },+];++function relativeDate(date) {+ var now = new Date();+ var offset = date.getTime() - now.getTime();+ var seconds = Math.round(Math.abs(offset) / 1000);++ // hack to avoid reading just in the future if there is a minor+ // amount of clock slip+ if (offset >= 0 && seconds < 30 * 60 * 60) {+ return "just now";+ }++ var ret = "";+ var shown = 0;+ for (i = 0; i < timeUnits.length; i++) {+ if (seconds >= timeUnits[i].seconds) {+ var num = Math.floor(seconds / timeUnits[i].seconds);+ seconds -= num * timeUnits[i].seconds;+ if (ret)+ ret += "and ";+ ret += num + " " + timeUnits[i].unit + (num > 1 ? "s" : "") + " ";++ if (++shown == 2)+ break;+ }+ else if (shown)+ break;+ }++ if (! ret)+ ret = "less than a minute "++ return ret + (offset < 0 ? "ago" : "from now");+}
@@ -0,0 +1,29 @@+// Uses CSS to hide toggleables, to avoid any flashing on page load. The+// CSS is only emitted after it tests that it's going to be able+// to show the toggleables.+if (document.getElementById && document.getElementsByTagName && document.createTextNode) {+ document.write('<style type="text/css">div.toggleable { display: none; }</style>');+ hook("onload", inittoggle);+}++function inittoggle() {+ var as = getElementsByClass('toggle');+ for (var i = 0; i < as.length; i++) {+ var id = as[i].href.match(/#(\w.+)/)[1];+ if (document.getElementById(id).className == "toggleable")+ document.getElementById(id).style.display="none";+ as[i].onclick = function() {+ toggle(this);+ return false;+ }+ }+}++function toggle(s) {+ var id = s.href.match(/#(\w.+)/)[1];+ style = document.getElementById(id).style;+ if (style.display == "none")+ style.display = "block";+ else+ style.display = "none";+}
@@ -0,0 +1,306 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>git-annex</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++</span>+<span class="title">+git-annex++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>++++++<p><a href="./feeds.html">Feeds</a>:</p>++<p><small></p>+++++<p></small></p>++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex allows managing files with git, without checking the file+contents into git. While that may seem paradoxical, it is useful when+dealing with files larger than git can currently easily handle, whether due+to limitations in memory, time, or disk space.</p>++<p><a href="./assistant.html"><img src="./assistant/thumbnail.png" width="216" height="28" class="img" align="right" /></a>+git-annex is designed for git users who love the command line.+For everyone else, the <a href="./assistant.html">git-annex assistant</a> turns+git-annex into an easy to use folder synchroniser.</p>++<p>To get a feel for git-annex, see the <a href="./walkthrough.html">walkthrough</a>.</p>++<table>+<tr>+<td width="33%" valign="top"><h3>key concepts</h3>++<ul>+<li><a href="./git-annex.html">git-annex man page</a></li>+<li><a href="./how_it_works.html">how it works</a></li>+<li><a href="./special_remotes.html">special remotes</a></li>+<li><a href="./sync.html">sync</a></li>+<li><a href="./direct_mode.html">direct mode</a></li>+</ul>+++++</td>+<td width="33%" valign="top"><h3>the details</h3>++<ul>+<li><a href="./encryption.html">encryption</a></li>+<li><a href="./backends.html">key-value backends</a></li>+<li><a href="./bare_repositories.html">bare repositories</a></li>+<li><a href="./internals.html">internals</a></li>+<li><a href="./scalability.html">scalability</a></li>+<li><a href="./design.html">design</a></li>+</ul>+++++</td>+<td width="33%" valign="top"><h3>other stuff</h3>++<ul>+<li><a href="./testimonials.html">testimonials</a></li>+<li><a href="./not.html">what git annex is not</a></li>+<li><a href="./related_software.html">related software</a></li>+<li><a href="./sitemap.html">sitemap</a></li>+</ul>+++++</td>+</tr>+</table>+++++<table>+<tr>+<td width="50%" valign="top"><h3>use case: The Archivist</h3>++<p>Bob has many drives to archive his data, most of them kept offline, in a+safe place.</p>++<p>With git-annex, Bob has a single directory tree that includes all+his files, even if their content is being stored offline. He can+reorganize his files using that tree, committing new versions to git,+without worry about accidentally deleting anything.</p>++<p>When Bob needs access to some files, git-annex can tell him which drive(s)+they're on, and easily make them available. Indeed, every drive knows what+is on every other drive.<br/>+<small><a href="./location_tracking.html">more about location tracking</a></small></p>++<p>Bob thinks long-term, and so he appreciates that git-annex uses a simple+repository format. He knows his files will be accessible in the future+even if the world has forgotten about git-annex and git.<br/>+<small><a href="./future_proofing.html">more about future-proofing</a></small></p>++<p>Run in a cron job, git-annex adds new files to archival drives at night. It+also helps Bob keep track of intentional, and unintentional copies of+files, and logs information he can use to decide when it's time to duplicate+the content of old drives.<br/>+<small><a href="./copies.html">more about backup copies</a></small></p>++++</td>+<td width="50%" valign="top"><h3>use case: The Nomad</h3>++<p>Alice is always on the move, often with her trusty netbook and a small+handheld terabyte USB drive, or a smaller USB keydrive. She has a server+out there on the net. She stores data, encrypted in the Cloud.</p>++<p>All these things can have different files on them, but Alice no longer+has to deal with the tedious process of keeping them manually in sync,+or remembering where she put a file. git-annex manages all these data+sources as if they were git remotes.<br/>+<small><a href="./special_remotes.html">more about special remotes</a></small></p>++<p>When she has 1 bar on her cell, Alice queues up interesting files on her+server for later. At a coffee shop, she has git-annex download them to her+USB drive. High in the sky or in a remote cabin, she catches up on+podcasts, videos, and games, first letting git-annex copy them from+her USB drive to the netbook (this saves battery power).<br/>+<small><a href="./transferring_data.html">more about transferring data</a></small></p>++<p>When she's done, she tells git-annex which to keep and which to remove.+They're all removed from her netbook to save space, and Alice knows+that next time she syncs up to the net, her changes will be synced back+to her server.<br/>+<small><a href="./distributed_version_control.html">more about distributed version control</a></small></p>++++</td>+</tr>+</table>+++<p>If that describes you, or if you're some from column A and some from column+B, then git-annex may be the tool you've been looking for to expand from+keeping all your small important files in git, to managing your large+files with git.</p>++<table>+<tr>+<td width="50%" valign="top"><h3>Recent <a href="./news.html">news</a></h3>++<h3><span class="createlink">Dev blog</span></h3>++++</td>+<td valign="top"><h3>Recent <a href="./videos.html">videos</a></h3>++<p>++<a href="./videos/git-annex_assistant_archiving.html">git-annex assistant archiving</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+++<p>++<a href="./videos/git-annex_assistant_remote_sharing.html">git-annex assistant remote sharing</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+++<h3>Recent <span class="createlink">forum posts</span></h3>++++</td>+</tr>+</table>+++<hr />++<p>git-annex is <a href="./license.html">Free Software</a></p>++<p>git-annex's wiki is powered by <a href="http://ikiwiki.info/">Ikiwiki</a> and+hosted by <a href="http://branchable.com/">Branchable</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,219 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>install</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+install++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><span class="selflink">install</span></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h2>Pick your OS</h2>++<table>+ <thead>+ <tr>+ <th>detailed instructions</th>+ <th> quick install</th>+ </tr>+ </thead>+ <tbody>+ <tr>+ <td><a href="./install/OSX.html">OSX</a></td>+ <td> <a href="http://downloads.kitenet.net/git-annex/OSX/current/">download git-annex.app</a></td>+ </tr>+ <tr>+ <td><a href="./install/Android.html">Android</a></td>+ <td> <a href="http://downloads.kitenet.net/git-annex/android/current/">download git-annex.apk</a> <strong>beta</strong></td>+ </tr>+ <tr>+ <td><a href="./install/Linux_standalone.html">Linux</a></td>+ <td> <a href="http://downloads.kitenet.net/git-annex/linux/current/">download prebuilt linux tarball</a></td>+ </tr>+ <tr>+ <td><a href="./install/Debian.html">Debian</a></td>+ <td> <code>apt-get install git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/Ubuntu.html">Ubuntu</a></td>+ <td> <code>apt-get install git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/Fedora.html">Fedora</a></td>+ <td> <code>yum install git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/FreeBSD.html">FreeBSD</a></td>+ <td> <code>pkg_add -r hs-git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/ArchLinux.html">ArchLinux</a></td>+ <td> <code>yaourt -Sy git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/NixOS.html">NixOS</a></td>+ <td> <code>nix-env -i git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/Gentoo.html">Gentoo</a></td>+ <td> <code>emerge git-annex</code></td>+ </tr>+ <tr>+ <td><a href="./install/ScientificLinux5.html">ScientificLinux5</a></td>+ <td> (and other RHEL5 clones like CentOS5)</td>+ </tr>+ <tr>+ <td><a href="./install/openSUSE.html">openSUSE</a></td>+ <td></td>+ </tr>+ <tr>+ <td>Windows</td>+ <td> <span class="createlink">sorry, Windows not supported yet</span></td>+ </tr>+ </tbody>+</table>+++<h2>Using cabal</h2>++<p>As a haskell package, git-annex can be installed using cabal.+Start by installing the <a href="http://hackage.haskell.org/platform/">Haskell Platform</a>,+and then:</p>++<pre><code>cabal install git-annex --bindir=$HOME/bin+</code></pre>++<p>That installs the latest release. Alternatively, you can <a href="./download.html">download</a>+git-annex yourself and <a href="./install/cabal.html">manually build with cabal</a>.</p>++<h2>Installation from scratch</h2>++<p>This is not recommended, but if you really want to, see <a href="./install/fromscratch.html">fromscratch</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./assistant.html">assistant</a>++<a href="./download.html">download</a>++<a href="./how_it_works.html">how it works</a>++<a href="./install/Linux_standalone.html">install/Linux standalone</a>++<a href="./install/openSUSE.html">install/openSUSE</a>++<a href="./sidebar.html">sidebar</a>++<a href="./tips/centralized_git_repository_tutorial.html">tips/centralized git repository tutorial</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,172 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Android</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+Android++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex can be used on Android, however you need to know your way around+the command line to install and use it. (Hope to get the webapp working+eventually.)</p>++<h2>Android app</h2>++<p>First, ensure your Android device is configured to allow installation of+non-Market apps. Go to Setup -> Security, and enable "Unknown Sources".</p>++<p>Download the <a href="http://downloads.kitenet.net/git-annex/android/current/">git-annex.apk</a>+onto your Android device, and open it to install.</p>++<p>When you start the Git Annex app, it will dump you into terminal. From+here, you can run git-annex, as well as many standard git and unix commands+provided with the app. You can do everything in the <a href="../walkthrough.html">walkthrough</a> and+more.</p>++<h2>autobuilds</h2>++<p>A daily build is also available.</p>++<ul>+<li><a href="http://downloads.kitenet.net/git-annex/autobuild/android/git-annex.apk">download apk</a> (<a href="http://downloads.kitenet.net/git-annex/autobuild/android/">build logs</a>)</li>+</ul>+++<h2>building it yourself</h2>++<p>git-annex can be built for Android, with <code>make android</code>. It's not an easy+process:</p>++<ul>+<li>First, install <a href="https://github.com/neurocyte/ghc-android">https://github.com/neurocyte/ghc-android</a>.</li>+<li>You also need to install git and all the utilities listed on <a href="./fromscratch.html">fromscratch</a>,+on the system doing the building.</li>+<li>Use ghc-android's cabal to install all necessary dependencies.+Some packages will fail to install on Android; patches to fix them+are in <code>standalone/android/haskell-patches/</code></li>+<li>You will need to have the Android SDK and NDK installed; see+<code>standalone/android/Makefile</code> to configure the paths to them. You'll also+need ant, and the JDK.</li>+<li>Then to build the full Android app bundle, use <code>make androidapp</code></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,184 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>ArchLinux</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+ArchLinux++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>There is a non-official source package for git-annex in+<a href="https://aur.archlinux.org/packages.php?ID=44272">AUR</a>.</p>++<p>You can then build it yourself or use a wrapper for AUR+such as yaourt:</p>++<pre>+$ yaourt -Sy git-annex+</pre>+++<hr />++<p>I'm told the AUR has some dependency problems currently.+If it doesn't work, you can just use cabal:</p>++<pre>+pacman -S git rsync curl wget gpg openssh cabal-install+cabal install git-annex --bindir=$HOME/bin+</pre>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-9fd360edd0a46658ae4d51e47586fd64">++++<div class="comment-subject">++<a href="/install/ArchLinux.html#comment-9fd360edd0a46658ae4d51e47586fd64">Arch Linux</a>++</div>++<div class="inlinecontent">+For Arch Linux there should be the AUR package <a href="https://aur.archlinux.org/packages.php?ID=63503">git-annex-bin</a> mentioned, because it's easier to install (no haskell dependencies to be installed) and is based on the prebuild linux binary tarball.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlwYMdU0H7P7MMlD0v_BcczO-ZkYHY4zuY">Morris</a>+</span>+++— <span class="date">Wed Oct 17 09:21:24 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,354 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Debian</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+Debian++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h2>Debian testing or unstable</h2>++<pre><code>sudo apt-get install git-annex+</code></pre>++<h2>Debian 7.0 "wheezy":</h2>++<pre><code>sudo apt-get install git-annex+</code></pre>++<p>Note: This version does not include support for the <a href="../assistant.html">assistant</a>.+The version of git-annex in unstable can be easily installed in wheezy.</p>++<h2>Debian 6.0 "squeeze"</h2>++<p>Follow the instructions to <a href="http://backports.debian.org/Instructions/">enable backports</a>.</p>++<pre><code>sudo apt-get -t squeeze-backports install git-annex+</code></pre>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-5c71f1d9ac9246b3376325d574d9eefc">++++<div class="comment-subject">++<a href="/install/Debian.html#comment-5c71f1d9ac9246b3376325d574d9eefc">squeeze-backports update?</a>++</div>++<div class="inlinecontent">+<p>Is there going to be an update of git-annex in debian squeeze-backports to a version that supports repository version 3?+Thx</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawla7u6eLKNYZ09Z7xwBffqLaXquMQC07fU">Matthias</a>+</span>+++— <span class="date">Wed Aug 17 08:34:46 2011</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a7f0a516edda1f6e61c13aaa72ff5bae">++++<div class="comment-subject">++<a href="/install/Debian.html#comment-a7f0a516edda1f6e61c13aaa72ff5bae">Re: squeeze-backports update?</a>++</div>++<div class="inlinecontent">+Yes, I uploaded it last night.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joey.kitenet.net/">joey</a>+</span>+++— <span class="date">Wed Aug 17 11:34:29 2011</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-63e478d409ce03723b81754f2a28fae9">++++<div class="comment-subject">++<a href="/install/Debian.html#comment-63e478d409ce03723b81754f2a28fae9">ARM</a>++</div>++<div class="inlinecontent">+is there any package for Debian armhf? I'd love to install git-annex on my raspberry pi++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkstq9oH1vHXY_VP0nYO9Gg3eKnKerDGRI">Hadi</a>+</span>+++— <span class="date">Tue Jul 31 11:13:06 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-92b79e57e84627f9a7e016eaab2549ce">++++<div class="comment-subject">++<a href="/install/Debian.html#comment-92b79e57e84627f9a7e016eaab2549ce">comment 4</a>++</div>++<div class="inlinecontent">+<p>Yes, git-annex is available for every Debian architecture which supports Haskell, including all arm ports:</p>++<pre>git-annex | 3.20120629 | wheezy | source, amd64, armel, armhf, i386, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc</pre>++++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue Jul 31 11:41:43 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-eeaed986d5abc6fdedc9824557466c7d">++++<div class="comment-subject">++<a href="/install/Debian.html#comment-eeaed986d5abc6fdedc9824557466c7d">wheezy support</a>++</div>++<div class="inlinecontent">+<p>Hey Joey,</p>++<p>As a backer, I'd like to see a backport of git annex assistant to wheezy.</p>++<p>It is currently impossible to get this assistant in wheezy without compiling it with cabal.</p>++<p>It would be nice to see it in backports or something :)</p>++<p>Best,</p>++<p>Allard</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawk3eiQwrpDGJ3MJb9NWB84m4tzQ6XjVZnY">Allard</a>+</span>+++— <span class="date">Fri Nov 23 16:47:58 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-7ed3a900cbf8a9a57afc4d871f354ee4">++++<div class="comment-subject">++<a href="/install/Debian.html#comment-7ed3a900cbf8a9a57afc4d871f354ee4">comment 6</a>++</div>++<div class="inlinecontent">+The git-annex packages in unstable install on testing (wheezy).++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://svend.ciffer.net/">svend [ciffer.net]</a>+</span>+++— <span class="date">Fri Nov 23 17:38:29 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,169 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Fedora</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+Fedora++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex is available in recent versions of Fedora. Although it is+not currently a very recent version, it should work ok.+<a href="http://koji.fedoraproject.org/koji/packageinfo?packageID=14145">status</a></p>++<p>Should be as simple as: <code>yum install git-annex</code></p>++<hr />++<p>To install the latest version of git-annex on Fedora 18 and later, you can use <code>cabal</code>:</p>++<pre>+# Install dependencies+sudo yum install libxml2-devel gnutls-devel libgsasl-devel ghc cabal-install happy alex libidn-devel+# Update the cabal list+cabal update+# Install c2hs, required by dependencies of git-annex, but not automatically installed+cabal install --bindir=$HOME/bin c2hs+# Install git-annex+cabal install --bindir=$HOME/bin git-annex+</pre>+++<hr />++<p>Older version? Here's an installation recipe for Fedora 14 through 15.</p>++<pre>+sudo yum install ghc cabal-install+git clone git://git-annex.branchable.com/ git-annex+cd git-annex+git checkout ghc7.0+cabal update+cabal install --only-dependencies+cabal configure+cabal build+cabal install --bindir=$HOME/bin+</pre>+++<p>Note: You can't just use <code>cabal install git-annex</code>, because Fedora does+not yet ship ghc 7.4.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,130 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>FreeBSD</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+FreeBSD++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex is in FreeBSD ports in+<a href="http://www.freshports.org/devel/hs-git-annex/">devel/git-annex</a></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,131 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Gentoo</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+Gentoo++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Gentoo users can: <code>emerge git-annex</code></p>++<p>A possibly more up-to-date version is in the haskell portage overlay.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,135 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>NixOS</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+NixOS++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Users of the <a href="http://nixos.org/">Nix package manager</a> can install it by running:</p>++<pre><code>nix-env -i git-annex+</code></pre>++<p>The build status of the package within Nix can be seen on the <a href="http://hydra.nixos.org/job/nixpkgs/trunk/gitAndTools.gitAnnex">Hydra Build+Farm</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,913 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>OSX</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+OSX++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h2>git-annex.app</h2>++<p><a href="../assistant.html"><img src="../assistant/osx-app.png" width="87" height="98" class="img" align="right" /></a>+For easy installation, use the+<a href="http://downloads.kitenet.net/git-annex/OSX/current/">beta release of git-annex.app</a>.</p>++<p>Be sure to select the build matching your version of OSX.</p>++<p>If you want to run the <a href="../assistant.html">git-annex assistant</a>, just+install the app, look for the icon, and start it up.</p>++<p>To use git-annex at the command line, you can add+<code>git-annex.app/Contents/MacOS</code> to your <code>PATH</code></p>++<p>Alternatively, from the command line you can run+<code>git-annex.app/Contents/MacOS/runshell</code>, which makes your shell use all the+programs bundled inside the app, including not just git-annex, but git, and+several more. Handy if you don't otherwise have git installed.</p>++<p>This is still a work in progress. See <span class="createlink">OSX app issues</span> for problem+reports.</p>++<h2>autobuilds</h2>++<p><a href="http://www.sgenomics.org/~jtang/">Jimmy Tang</a> autobuilds+the app for OSX Lion.</p>++<ul>+<li><a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0-binary/ref/master/git-annex.dmg.bz2">autobuild of git-annex.app</a> (<a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0-binary/">build logs</a>)++<ul>+<li><a href="http://www.sgenomics.org/~jtang/gitbuilder-git-annex-x00-x86_64-apple-darwin10.8.0-binary/sha1/">past builds</a> -- directories are named from the commitid's</li>+</ul>+</li>+</ul>+++<p><span class="createlink">Joey</span> autobuilds the app for Mountain Lion.</p>++<ul>+<li><a href="http://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-mountain-lion/git-annex.dmg.bz2">autobuild of git-annex.app</a> (<a href="http://downloads.kitenet.net/git-annex/autobuild/x86_64-apple-mountain-lion/">build logs</a>)</li>+</ul>+++<h2>using Brew</h2>++<pre>+brew update+brew install haskell-platform git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2+brew link libxml2+cabal update+PATH=$HOME/bin:$PATH+cabal install c2hs git-annex --bindir=$HOME/bin+</pre>+++<h2>using MacPorts</h2>++<p>Install the Haskell Platform from <a href="http://hackage.haskell.org/platform/mac.html">http://hackage.haskell.org/platform/mac.html</a>.+The version provided by Macports is too old to work with current versions of git-annex.+Then execute</p>++<pre>+sudo port install git-core ossp-uuid md5sha1sum coreutils gnutls libxml2 libgsasl pkgconfig+sudo cabal update+PATH=$HOME/bin:$PATH+cabal install c2hs git-annex --bindir=$HOME/bin+</pre>+++<h2>PATH setup</h2>++<p>Do not forget to add to your PATH variable your ~/bin folder. In your .bashrc, for example:</p>++<pre>+PATH=$HOME/bin:$PATH+</pre>+++<p>See also:</p>++<ul>+<li><span class="createlink">OSX's haskell-platform statically links things</span></li>+<li><span class="createlink">OSX's default sshd behaviour has limited paths set</span></li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-22b74f9607c3d417cbe4424802a6d9a3">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-22b74f9607c3d417cbe4424802a6d9a3">comment 2</a>++</div>++<div class="inlinecontent">+<p>I've moved some outdated comments about installing on OSX to <a href="./OSX/old_comments.html">old comments</a>.+And also moved away some comments that helped build the instructions above.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue Jul 24 11:09:29 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c1481fba3e4b2bd17c35fd1782102c34">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-c1481fba3e4b2bd17c35fd1782102c34">comment 4</a>++</div>++<div class="inlinecontent">+For those that care, I've updated my autobuilder to the latest version of haskell-platform 2012.4.0.0 and it appears to be building correctly.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus">Jimmy</a>+</span>+++— <span class="date">Mon Dec 10 13:00:43 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-15ba2e00a11b4ca978ad4f0c880be80a">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-15ba2e00a11b4ca978ad4f0c880be80a">comment 3</a>++</div>++<div class="inlinecontent">+<p>Installing via the MacPorts method. I ran into this error.</p>++<pre><code>"_locale_charset", referenced from: _localeEncoding in libHSbase-4.5.1.0.a(PrelIOUtils.o) +ld: symbol(s) not found for architecture x86_64+</code></pre>++<p>I was able to solve and get git-annex to build buy providing the --extra-lib-dirs parameter</p>++<pre><code>cabal install c2hs git-annex --bindir=$HOME/bin --extra-lib-dirs=/usr/lib+</code></pre>++<p>Cheers, <a href="http://woz.io">Daniel Wozniak</a></p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU">Daniel</a>+</span>+++— <span class="date">Tue Jan 15 11:22:43 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-aff6acab68610899c9ec3c4cfebe2061">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-aff6acab68610899c9ec3c4cfebe2061">Snow Leopard</a>++</div>++<div class="inlinecontent">+<p>Hi,</p>++<p>Are there plans to provide a git-annex.app that works on Snow Leopard?</p>++<p>Currently there are only installers for the Lions.</p>++<p>http://downloads.kitenet.net/git-annex/OSX/current/</p>++<p>Thanks :-)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>+</span>+++— <span class="date">Fri Jan 18 11:51:48 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e2ab0dd1f11fd464b24aac36ab59637c">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-e2ab0dd1f11fd464b24aac36ab59637c">comment 5</a>++</div>++<div class="inlinecontent">+What we need to provide a Snow Leopard or other version build, is access to a box running that version of OSX, or someone with a box that doesn't mind compiling stuff and setting up the autobuilder (not very hard).++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Fri Jan 18 13:25:36 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f385a3c668e76ddd01fbf2382bd97cad">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-f385a3c668e76ddd01fbf2382bd97cad">Snow Leopard</a>++</div>++<div class="inlinecontent">+If the process is very automatic I might contribute. I mean, if you tell me, install this and that package and run this script once a week, I might be able to help. I have a MacBook from 2007 with Snow Leopard. I also have macports installed, but I'm not a programmer.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>+</span>+++— <span class="date">Fri Jan 18 13:57:40 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-5e980d5268356ef30a234e9063576d53">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-5e980d5268356ef30a234e9063576d53">comment 7</a>++</div>++<div class="inlinecontent">+If you can get it to build using the instructions for Brew (or MacPorts) on this page, it's easy to get from there to a distributable app.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Fri Jan 18 16:16:52 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-0c2872d1503ee0e726737393e477a3ed">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-0c2872d1503ee0e726737393e477a3ed">I couldn't install it on Snow Leopard</a>++</div>++<div class="inlinecontent">+<p>Bad news, it looks like I'm not able to install git-annex to my machine: When I run</p>++<pre><code>sudo cabal install c2hs git-annex --bindir=$HOME/bin+</code></pre>++<p>I get the following error:</p>++<pre><code>cabal: Error: some packages failed to install:+DAV-0.3 failed during the building phase. The exception was:+ExitFailure 11+git-annex-3.20130114 depends on yesod-core-1.1.7.1 which failed to install.+yesod-1.1.7.2 depends on yesod-core-1.1.7.1 which failed to install.+yesod-auth-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.+yesod-core-1.1.7.1 failed during the building phase. The exception was:+ExitFailure 11+yesod-default-1.1.3 depends on yesod-core-1.1.7.1 which failed to install.+yesod-form-1.2.0.2 depends on yesod-core-1.1.7.1 which failed to install.+yesod-json-1.1.2 depends on yesod-core-1.1.7.1 which failed to install.+yesod-persistent-1.1.0.1 depends on yesod-core-1.1.7.1 which failed to+install.+yesod-static-1.1.1.2 depends on yesod-core-1.1.7.1 which failed to install.+</code></pre>++<p>What does <em>ExitFailure 11</em> mean?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>+</span>+++— <span class="date">Sat Jan 19 11:04:27 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-090c9f721facfe6f46f7bb5c601553b3">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-090c9f721facfe6f46f7bb5c601553b3">comment 9</a>++</div>++<div class="inlinecontent">+sig11 is a Segmentation Fault, probably from a C library used by DAV for HTTP in this case.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sat Jan 19 12:02:35 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-ec90aa06a5a6eb622440f361b8c95cdc">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-ec90aa06a5a6eb622440f361b8c95cdc">Segmentation Fault</a>++</div>++<div class="inlinecontent">+I guess my adventure ends here. :'(++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>+</span>+++— <span class="date">Sat Jan 19 12:10:08 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-50a7ff1fe462964bc375f4b09f401511">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-50a7ff1fe462964bc375f4b09f401511">Updating to latest build</a>++</div>++<div class="inlinecontent">+What is the appropriate way to update to the latest build of git-annex using cabal?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc">Eric</a>+</span>+++— <span class="date">Fri Jan 25 02:05:35 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-27ad4e1dfa06c1514a3295ca7ec05b63">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-27ad4e1dfa06c1514a3295ca7ec05b63">git annex on Snow Leopard</a>++</div>++<div class="inlinecontent">+Is there any way I can try to solve or by-pass the Segmentation Fault I commeted before?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0">Pere</a>+</span>+++— <span class="date">Fri Jan 25 10:36:52 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-cc56a89269e31510a10a74cf477944ce">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-cc56a89269e31510a10a74cf477944ce">comment 13</a>++</div>++<div class="inlinecontent">+@eric <code>cabal update && cabal upgrade git-annex</code>++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue Feb 5 15:46:29 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c22a0f6e35ed02be187e692435df9945">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-c22a0f6e35ed02be187e692435df9945">more homebrew</a>++</div>++<div class="inlinecontent">+<p>i had macports installed. then i installed brew, instaled haskell via brew. i needed to set+ PATH=$HOME/bin:/usr/local/bin:$PATH</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmCmNS-oUgYfNg85-LPuxzTZJUp0sIgprM">Jonas</a>+</span>+++— <span class="date">Sat Feb 16 15:46:47 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-caac3130b31d5e88de2d51e57d40eb66">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-caac3130b31d5e88de2d51e57d40eb66">git annex on Snow Leopard</a>++</div>++<div class="inlinecontent">+<p>I'm having the same issue as @Pere, with a newer version of DAV :(</p>++<p>cabal: Error: some packages failed to install:+DAV-0.3.1 failed during the building phase. The exception was:+ExitFailure 11+git-annex-4.20130323 depends on shakespeare-css-1.0.3 which failed to install.+persistent-1.1.5.1 failed during the building phase. The exception was:+ExitFailure 11+persistent-template-1.1.3.1 depends on persistent-1.1.5.1 which failed to+install.+shakespeare-css-1.0.3 failed during the building phase. The exception was:+ExitFailure 11+yesod-1.1.9.2 depends on shakespeare-css-1.0.3 which failed to install.+yesod-auth-1.1.5.3 depends on shakespeare-css-1.0.3 which failed to install.+yesod-core-1.1.8.2 depends on shakespeare-css-1.0.3 which failed to install.+yesod-default-1.1.3.2 depends on shakespeare-css-1.0.3 which failed to+install.+yesod-form-1.2.1.3 depends on shakespeare-css-1.0.3 which failed to install.+yesod-json-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.+yesod-persistent-1.1.0.1 depends on shakespeare-css-1.0.3 which failed to+install.+yesod-static-1.1.2.2 depends on shakespeare-css-1.0.3 which failed to install.</p>++<p><em>Any ideas?</em></p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://launchpad.net/~wincus">Juan Moyano</a>+</span>+++— <span class="date">Tue Mar 26 12:02:54 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-1cf81a381a3b69c1e0b371b38f562e1c">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-1cf81a381a3b69c1e0b371b38f562e1c">Snow Leopard Issues</a>++</div>++<div class="inlinecontent">+<p>I was able to build snow leopard completely for the first time over last night (it took a very long time to build all the tools and dependancies). Woohoo!</p>++<p>The way I was able to fully build on a 32-bit 10.6 machine was this</p>++<ol>+<li>Delete ~/.ghc and ~/.cabal. They were full of random things and were causing problems.</li>+<li><code>brew uninstall ghc and haskell-platform</code></li>+<li><code>brew update</code></li>+<li><code>brew install git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2</code></li>+<li><code>brew upgrade git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2</code> (Some of these were already installed/up to date.</li>+<li><code>brew link libxml2</code></li>+<li><code>brew install haskell-platform</code> (This takes a long, long time).</li>+<li><code>cabal update</code> (assuming you have added <code>~/.cabal/bin</code> to your path</li>+<li><code>cabal install cablal-install</code></li>+<li><code>cabal install c2hs</code></li>+<li><code>cabal install git-annex</code></li>+</ol>+++<p>It also appears to be running fairly smoothly than it had in the past on a 32-bit SL system. Thats also neat.</p>++<p>The problem is that it seems to not really work as git annex though, probably due to the error relating you get when you start up the webapp:+Running+<code>git annex webapp</code>+The browser starts up, and I get 3 of these errors:+<code>Watcher crashed: Need at least OSX 10.7.0 for file-level FSEvents</code></p>++<p>Pairing with a local computer appears to work to systems running 10.7, but when you complete the process, they never show up in the repository list.</p>++<p>Also on a side note, when running <code>git annex webapp</code> it triggers the opening of an html file in whatever the default html file handler is. I edit a lot of html, so for me that is usually a text editor. I had to change the file handler to open html files with my web browser for the <code>git annex webapp</code> to actually work. Is there a way to change that so that <code>git annex webapp</code> uses the default web browser for the system rather than the default html file handler?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>+</span>+++— <span class="date">Sun Apr 14 16:17:17 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-b45fd847f89e1ef6d0eefc86d0007f12">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-b45fd847f89e1ef6d0eefc86d0007f12">comment 17</a>++</div>++<div class="inlinecontent">+<p>@Bret, the assistant relies on FSEvents pretty heavily. It seems to me your best bet is to upgrade OSX to a version that supports FSEvents.</p>++<p>You can certainly use the rest of git-annex on Snow Leopard without FSEvents.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Tue Apr 16 16:31:10 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c37647fa381af6c84ec64688533c242b">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-c37647fa381af6c84ec64688533c242b">Can't update</a>++</div>++<div class="inlinecontent">+The laptop is one of the first macbook pro's with a 32 bit chip, which apple dropped support for in 10.7, so the furthest it can update to is 10.6.x. :(++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>+</span>+++— <span class="date">Wed Apr 17 20:58:19 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-d020a3312a07e4edee8b03081922a8b8">++++<div class="comment-subject">++<a href="/install/OSX.html#comment-d020a3312a07e4edee8b03081922a8b8">comment 19</a>++</div>++<div class="inlinecontent">+sounds like a prime candidate for a nice lightweight linux distro ;)++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>+</span>+++— <span class="date">Wed Apr 17 22:05:34 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,161 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Ubuntu</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+Ubuntu++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h2>Raring</h2>++<pre><code>sudo apt-get install git-annex+</code></pre>++<h2>Precise</h2>++<pre><code>sudo apt-get install git-annex+</code></pre>++<p>Note: This version is too old to include the <a href="../assistant.html">assistant</a>, but is otherwise+usable.</p>++<h2>Precise PPA</h2>++<p><a href="https://launchpad.net/~fmarier/+archive/ppa">https://launchpad.net/~fmarier/+archive/ppa</a></p>++<p>A newer version of git-annex, including the <a href="../assistant.html">assistant</a>.+(Maintained by François Marier)</p>++<pre><code>sudo add-apt-repository ppa:fmarier/ppa+sudo apt-get update+sudo apt-get install git-annex+</code></pre>++<h2>Oneiric</h2>++<pre><code>sudo apt-get install git-annex+</code></pre>++<p>Warning: The version of git-annex shipped in Ubuntu Oneiric+had <a href="https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/875958">a bug that prevents upgrades from v1 git-annex repositories</a>.+If you need to upgrade such a repository, get a newer version of git-annex.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,149 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>cabal</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+cabal++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>As a haskell package, git-annex can be installed using cabal. For example:</p>++<pre><code>cabal update+PATH=$HOME/bin:$PATH+cabal install c2hs git-annex --bindir=$HOME/bin+</code></pre>++<p>The above downloads the latest release and installs it into a ~/bin/+directory, which you can put in your PATH.</p>++<p>But maybe you want something newer (or older). Then <a href="../download.html">download</a> the version+you want, and use cabal as follows inside its source tree:</p>++<pre><code>cabal update+PATH=$HOME/bin:$PATH+cabal install c2hs --bindir=$HOME/bin+cabal install --only-dependencies+cabal configure+cabal build+cabal install --bindir=$HOME/bin+</code></pre>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,213 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>fromscratch</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+fromscratch++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>To install git-annex from scratch, you need a lot of stuff. Really+quite a lot.</p>++<ul>+<li>Haskell stuff++<ul>+<li><a href="http://haskell.org/platform/">The Haskell Platform</a> (GHC 7.4 or newer)</li>+<li><a href="http://hackage.haskell.org.package/mtl">mtl</a> (2.1.1 or newer)</li>+<li><a href="http://github.com/jgoerzen/missingh/wiki">MissingH</a></li>+<li><a href="http://hackage.haskell.org/package/utf8-string">utf8-string</a></li>+<li><a href="http://hackage.haskell.org/package/SHA">SHA</a></li>+<li><a href="http://hackage.haskell.org/package/dataenc">dataenc</a></li>+<li><a href="http://hackage.haskell.org/package/monad-control">monad-control</a></li>+<li><a href="http://hackage.haskell.org/package/lifted-base">lifted-base</a></li>+<li><a href="http://hackage.haskell.org/package/QuickCheck">QuickCheck 2</a></li>+<li><a href="http://hackage.haskell.org/package/json">json</a></li>+<li><a href="http://hackage.haskell.org/package/IfElse">IfElse</a></li>+<li><a href="http://hackage.haskell.org/package/dlist">dlist</a></li>+<li><a href="http://hackage.haskell.org/package/bloomfilter">bloomfilter</a></li>+<li><a href="http://hackage.haskell.org/package/edit-distance">edit-distance</a></li>+<li><a href="http://hackage.haskell.org/package/hS3">hS3</a> (optional)</li>+<li><a href="http://hackage.haskell.org/package/DAV">DAV</a> (optional)</li>+<li><a href="http://hackage.haskell.org/package/SafeSemaphore">SafeSemaphore</a></li>+<li><a href="http://hackage.haskell.org/package/uuid">UUID</a></li>+<li><a href="http://hackage.haskell.org/package/regex-tdfa">regex-tdfa</a></li>+</ul>+</li>+<li>Optional haskell stuff, used by the <a href="../assistant.html">assistant</a> and its webapp (edit Makefile to disable)++<ul>+<li><a href="http://hackage.haskell.org/package/stm">stm</a>+(version 2.3 or newer)</li>+<li><a href="http://hackage.haskell.org/package/hinotify">hinotify</a>+(Linux only)</li>+<li><a href="http://hackage.haskell.org/package/dbus">dbus</a></li>+<li><a href="http://hackage.haskell.org/package/yesod">yesod</a></li>+<li><a href="http://hackage.haskell.org/package/yesod-static">yesod-static</a></li>+<li><a href="http://hackage.haskell.org/package/yesod-default">yesod-default</a></li>+<li><a href="http://hackage.haskell.org/package/data-default">data-default</a></li>+<li><a href="http://hackage.haskell.org/package/case-insensitive">case-insensitive</a></li>+<li><a href="http://hackage.haskell.org/package/http-types">http-types</a></li>+<li><a href="http://hackage.haskell.org/package/transformers">transformers</a></li>+<li><a href="http://hackage.haskell.org/package/wai">wai</a></li>+<li><a href="http://hackage.haskell.org/package/wai-logger">wai-logger</a></li>+<li><a href="http://hackage.haskell.org/package/warp">warp</a></li>+<li><a href="http://hackage.haskell.org/package/blaze-builder">blaze-builder</a></li>+<li><a href="http://hackage.haskell.org/package/crypto-api">crypto-api</a></li>+<li><a href="http://hackage.haskell.org/package/hamlet">hamlet</a></li>+<li><a href="http://hackage.haskell.org/package/clientsession">clientsession</a></li>+<li><a href="http://hackage.haskell.org/package/network-multicast">network-multicast</a></li>+<li><a href="http://hackage.haskell.org/package/network-info">network-info</a></li>+<li><a href="http://hackage.haskell.org/package/network-protocol-xmpp">network-protocol-xmpp</a></li>+<li><a href="http://hackage.haskell.org/package/dns">dns</a></li>+<li><a href="http://hackage.haskell.org/package/xml-types">xml-types</a></li>+<li><a href="http://hackage.haskell.org/package/async">async</a></li>+<li><a href="http://hackage.haskell.org/package/HTTP">HTTP</a></li>+</ul>+</li>+<li>Shell commands++<ul>+<li><a href="http://git-scm.com/">git</a></li>+<li><a href="http://savannah.gnu.org/projects/findutils/">xargs</a></li>+<li><a href="http://rsync.samba.org/">rsync</a></li>+<li><a href="http://http://curl.haxx.se/">curl</a> (optional, but recommended)</li>+<li><a href="http://www.gnu.org/software/wget/">wget</a> (optional)</li>+<li><a href="ftp://ftp.gnu.org/gnu/coreutils/">sha1sum</a> (optional, but recommended;+a sha1 command will also do)</li>+<li><a href="http://gnupg.org/">gpg</a> (optional; needed for encryption)</li>+<li><a href="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/">lsof</a>+(optional; recommended for watch mode)</li>+<li>multicast DNS support, provided on linux by <a href="http://www.0pointer.de/lennart/projects/nss-mdns/">nss-mdns</a>+(optional; recommended for the assistant to support pairing well)</li>+<li><a href="http://ikiwiki.info">ikiwiki</a> (optional; used to build the docs)</li>+</ul>+</li>+</ul>+++<p>Then just <a href="../download.html">download</a> git-annex and run: <code>make; make install</code></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./Android.html">Android</a>++<a href="./Linux_standalone.html">Linux standalone</a>++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,131 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>openSUSE</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../install.html">install</a>/ ++</span>+<span class="title">+openSUSE++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Haskell Platform 2012.4 is now <a href="http://software.opensuse.org/package/haskell-platform">officially available for openSUSE</a> via 1-Click Install.</p>++<p>At the time of writing, there are <a href="http://software.opensuse.org/package/git-annex">unofficial packages of git-annex</a> available for openSUSE 12.2. It should also be possible to build it via cabal or from source as described on the <a href="../install.html">install</a> page.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../install.html">install</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,264 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>internals</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+internals++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>In the world of git, we're not scared about internal implementation+details, and sometimes we like to dive in and tweak things by hand. Here's+some documentation to that end.</p>++<h2><code>.git/annex/objects/aa/bb/*/*</code></h2>++<p>This is where locally available file contents are actually stored.+Files added to the annex get a symlink checked into git that points+to the file content.</p>++<p>First there are two levels of directories used for hashing, to prevent+too many things ending up in any one directory.+See <a href="./internals/hashing.html">hashing</a> for details.</p>++<p>Each subdirectory has the <a href="./internals/key_format.html">name of a key</a> in one of the+<a href="./backends.html">key-value backends</a>. The file inside also has the name of the key.+This two-level structure is used because it allows the write bit to be removed+from the subdirectories as well as from the files. That prevents accidentially+deleting or changing the file contents.</p>++<p>In <a href="./direct_mode.html">direct mode</a>, file contents are not stored in here, and instead+are stored directly in the file. However, the same symlinks are still+committed to git, internally.</p>++<p>Also in <a href="./direct_mode.html">direct mode</a>, some additional data is stored in these directories.+<code>.cache</code> files contain cached file stats used in detecting when a file has+changed, and <code>.map</code> files contain a list of file(s) in the work directory+that contain the key.</p>++<h2>The git-annex branch</h2>++<p>This branch is managed by git-annex, with the contents listed below.</p>++<p>The file <code>.git/annex/index</code> is a separate git index file it uses+to accumulate changes for the git-annex branch.+Also, <code>.git/annex/journal/</code> is used to record changes before they+are added to git.</p>++<h3><code>uuid.log</code></h3>++<p>Records the UUIDs of known repositories, and associates them with a+description of the repository. This allows git-annex to display something+more useful than a UUID when it refers to a repository that does not have+a configured git remote pointing at it.</p>++<p>The file format is simply one line per repository, with the uuid followed by a+space and then the description, followed by a timestamp. Example:</p>++<pre><code>e605dca6-446a-11e0-8b2a-002170d25c55 laptop timestamp=1317929189.157237s+26339d22-446b-11e0-9101-002170d25c55 usb disk timestamp=1317929330.769997s+</code></pre>++<p>If there are multiple lines for the same uuid, the one with the most recent+timestamp wins. git-annex union merges this and other files.</p>++<h2><code>remote.log</code></h2>++<p>Holds persistent configuration settings for <a href="./special_remotes.html">special remotes</a> such as+Amazon S3.</p>++<p>The file format is one line per remote, starting with the uuid of the+remote, followed by a space, and then a series of var=value pairs,+each separated by whitespace, and finally a timestamp.</p>++<p>Encrypted special remotes store their encryption key here,+in the "cipher" value. It is base64 encoded, and unless shared <a href="./encryption.html">encryption</a>+is used, is encrypted to one or more gpg keys. The first 256 bytes of+the cipher is used as the HMAC SHA1 encryption key, to encrypt filenames+stored on the special remote. The remainder of the cipher is used as a gpg+symmetric encryption key, to encrypt the content of files stored on the special+remote.</p>++<h2><code>trust.log</code></h2>++<p>Records the <a href="./trust.html">trust</a> information for repositories. Does not exist unless+<a href="./trust.html">trust</a> values are configured.</p>++<p>The file format is one line per repository, with the uuid followed by a+space, and then either <code>1</code> (trusted), <code>0</code> (untrusted), <code>?</code> (semi-trusted),+<code>X</code> (dead) and finally a timestamp.</p>++<p>Example:</p>++<pre><code>e605dca6-446a-11e0-8b2a-002170d25c55 1 timestamp=1317929189.157237s+26339d22-446b-11e0-9101-002170d25c55 ? timestamp=1317929330.769997s+</code></pre>++<p>Repositories not listed are semi-trusted.</p>++<h2><code>group.log</code></h2>++<p>Used to group repositories together.</p>++<p>The file format is one line per repository, with the uuid followed by a space,+and then a space-separated list of groups this repository is part of,+and finally a timestamp.</p>++<h2><code>preferred-content.log</code></h2>++<p>Used to indicate which repositories prefer to contain which file contents.</p>++<p>The file format is one line per repository, with the uuid followed by a space,+then a boolean expression, and finally a timestamp.</p>++<p>Files matching the expression are preferred to be retained in the+repository, while files not matching it are preferred to be stored+somewhere else.</p>++<h2><code>aaa/bbb/*.log</code></h2>++<p>These log files record <a href="./location_tracking.html">location tracking</a> information+for file contents. Again these are placed in two levels of subdirectories+for hashing. See <a href="./internals/hashing.html">hashing</a> for details.</p>++<p>The name of the key is the filename, and the content+consists of a timestamp, either 1 (present) or 0 (not present), and+the UUID of the repository that has or lacks the file content.</p>++<p>Example:</p>++<pre><code>1287290776.765152s 1 e605dca6-446a-11e0-8b2a-002170d25c55+1287290767.478634s 0 26339d22-446b-11e0-9101-002170d25c55+</code></pre>++<p>These files are designed to be auto-merged using git's <a href="./git-union-merge.html">union merge driver</a>.+The timestamps allow the most recent information to be identified.</p>++<h2><code>aaa/bbb/*.log.web</code></h2>++<p>These log files record urls used by the+<a href="./special_remotes/web.html">web special remote</a>. Their format is similar+to the location tracking files, but with urls rather than UUIDs.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./design.html">design</a>++<a href="./design/encryption.html">design/encryption</a>++<a href="./how_it_works.html">how it works</a>++<a href="./links/the_details.html">links/the details</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,159 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>hashing</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../internals.html">internals</a>/ ++</span>+<span class="title">+hashing++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>In both the .git/annex directory and the git-annex branch, two levels of+hash directories are used, to avoid issues with too many files in one+directory.</p>++<p>Two separate hash methods are used. One, the old hash format, is only used+for non-bare git repositories. The other, the new hash format, is used for+bare git repositories, the git-annex branch, and on special remotes as+well.</p>++<h2>new hash format</h2>++<p>This uses two directories, each with a three-letter name, such as "f87/4d5"</p>++<p>The directory names come from the md5sum of the <a href="./key_format.html">key</a>.</p>++<p>For example:</p>++<pre><code>echo -n "SHA256E-s0--e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" | md5sum+</code></pre>++<h2>old hash format</h2>++<p>This uses two directories, each with a two-letter name, such as "pX/1J"</p>++<p>It takes the md5sum of the key, but rather than a string, represents it as 4+32bit words. Only the first word is used. It is converted into a string by the+same mechanism that would be used to encode a normal md5sum value into a+string, but where that would normally encode the bits using the 16 characters+0-9a-f, this instead uses the 32 characters "0123456789zqjxkmvwgpfZQJXKMVWGPF".+The first 2 letters of the resulting string are the first directory, and the+second 2 are the second directory.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../internals.html">internals</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,155 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>key format</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../internals.html">internals</a>/ ++</span>+<span class="title">+key format++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>A git-annex key has this format:</p>++<pre><code>BACKEND-sNNNN-mNNNN--NAME+</code></pre>++<p>For example:</p>++<pre><code>SHA256E-s31390--f50d7ac4c6b9031379986bc362fcefb65f1e52621ce1708d537e740fefc59cc0.mp3+</code></pre>++<ul>+<li>The backend is one of the <a href="../backends.html">key-value backends</a>, which+are always upper-cased.</li>+<li>The name field at the end has a format dependent on the backend. It is+always the last field, and is prefixed with "--". Unlike other fields,+it may contain "-" in its content. It should not contain newline characters;+otherwise nearly anything goes.</li>+<li>The "-s" field is optional, and is the size of the content in bytes.</li>+<li>The "-m" field is optional, and is the mtime of the file when it was+added to git-annex, expressed as seconds from the epoch.+This is currently only used by the WORM backend.</li>+<li>Other fields could be added in the future, if needed.</li>+<li>Fields may appear, in any order (though always before the name field).</li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./hashing.html">hashing</a>++<a href="../internals.html">internals</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,140 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>license</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+license++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex is Free Software.</p>++<p>The majority of git-annex is licensed under the <a href="./license/GPL">GPL</a>, version 3 or+higher.</p>++<p>The git-annex webapp is licensed under the <a href="./license/AGPL">AGPL</a>, version 3 or higher.+Note that builds of git-annex that include the webapp may be licensed+under the AGPL as a whole. git-annex built without the webapp does+not include this code, so remains GPLed.</p>++<p>git-annex contains a variety of other code, artwork, etc copyright by+others, under a variety of licences, including the <a href="./license/LGPL">LGPL</a>, BSD,+MIT, and Apache 2.0 licenses. For details, see+<a href="http://source.git-annex.branchable.com/?p=source.git;a=blob_plain;f=debian/copyright;hb=HEAD">this file</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./index.html">index</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 11769 bytes)
binary file changed (absent → 12130 bytes)
binary file changed (absent → 9357 bytes)
@@ -0,0 +1,130 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>key concepts</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">links</a>/ ++</span>+<span class="title">+key concepts++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>key concepts</h3>++<ul>+<li><a href="../git-annex.html">git-annex man page</a></li>+<li><a href="../how_it_works.html">how it works</a></li>+<li><a href="../special_remotes.html">special remotes</a></li>+<li><a href="../sync.html">sync</a></li>+<li><a href="../direct_mode.html">direct mode</a></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,129 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>other stuff</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">links</a>/ ++</span>+<span class="title">+other stuff++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>other stuff</h3>++<ul>+<li><a href="../testimonials.html">testimonials</a></li>+<li><a href="../not.html">what git annex is not</a></li>+<li><a href="../related_software.html">related software</a></li>+<li><a href="../sitemap.html">sitemap</a></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,131 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>the details</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">links</a>/ ++</span>+<span class="title">+the details++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>the details</h3>++<ul>+<li><a href="../encryption.html">encryption</a></li>+<li><a href="../backends.html">key-value backends</a></li>+<li><a href="../bare_repositories.html">bare repositories</a></li>+<li><a href="../internals.html">internals</a></li>+<li><a href="../scalability.html">scalability</a></li>+<li><a href="../design.html">design</a></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,174 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>location tracking</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+location tracking++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex keeps track of in which repositories it last saw a file's content.+This location tracking information is stored in the git-annex branch.+Repositories record their UUID and the date when they get or drop+a file's content.</p>++<p>This location tracking information is useful if you have multiple+repositories, and not all are always accessible. For example, perhaps one+is on a home file server, and you are away from home. Then git-annex can+tell you what git remote it needs access to in order to get a file:</p>++<pre><code># git annex get myfile +get myfile (not available)+ I was unable to access these remotes: home+</code></pre>++<p>Another way the location tracking comes in handy is if you put repositories+on removable USB drives, that might be archived away offline in a safe+place. In this sort of case, you probably don't have a git remotes+configured for every USB drive. So git-annex may have to resort to talking+about repository UUIDs. If you have previously used "git annex init"+to attach descriptions to those repositories, it will include their+descriptions to help you with finding them:</p>++<pre><code># git annex get myfile+get myfile (not available)+ Try making some of these repositories available:+ c0a28e06-d7ef-11df-885c-775af44f8882 -- USB archive drive 1+ e1938fee-d95b-11df-96cc-002170d25c55+</code></pre>++<p>In certain cases you may want to configure git-annex to <a href="./trust.html">trust</a>+that location tracking information is always correct for a repository.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./distributed_version_control.html">distributed version control</a>++<a href="./how_it_works.html">how it works</a>++<a href="./internals.html">internals</a>++<a href="./not.html">not</a>++<a href="./tips/powerful_file_matching.html">tips/powerful file matching</a>++<a href="./tips/what_to_do_when_you_lose_a_repository.html">tips/what to do when you lose a repository</a>++<a href="./trust.html">trust</a>++<a href="./use_case/Bob.html">use case/Bob</a>++<a href="./walkthrough/transferring_files:_When_things_go_wrong.html">walkthrough/transferring files: When things go wrong</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,60 @@+<?xml version="1.0" encoding="UTF-8" standalone="no"?>+<!-- Created with Inkscape (http://www.inkscape.org/) -->++<svg+ xmlns:dc="http://purl.org/dc/elements/1.1/"+ xmlns:cc="http://creativecommons.org/ns#"+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"+ xmlns:svg="http://www.w3.org/2000/svg"+ xmlns="http://www.w3.org/2000/svg"+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+ width="640px"+ height="480px"+ id="svg3134"+ version="1.1"+ inkscape:version="0.48.3.1 r9886"+ sodipodi:docname="New document 11">+ <defs+ id="defs3136" />+ <sodipodi:namedview+ id="base"+ pagecolor="#ffffff"+ bordercolor="#666666"+ borderopacity="1.0"+ inkscape:pageopacity="0.0"+ inkscape:pageshadow="2"+ inkscape:zoom="0.77472527"+ inkscape:cx="317.41844"+ inkscape:cy="245.16312"+ inkscape:current-layer="layer1"+ inkscape:document-units="px"+ showgrid="false"+ inkscape:window-width="800"+ inkscape:window-height="564"+ inkscape:window-x="0"+ inkscape:window-y="12"+ inkscape:window-maximized="0" />+ <metadata+ id="metadata3139">+ <rdf:RDF>+ <cc:Work+ rdf:about="">+ <dc:format>image/svg+xml</dc:format>+ <dc:type+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />+ <dc:title></dc:title>+ </cc:Work>+ </rdf:RDF>+ </metadata>+ <g+ id="layer1"+ inkscape:label="Layer 1"+ inkscape:groupmode="layer">+ <path+ style="fill:#000000"+ d="m 302.43431,440.4468 c -14.88228,-4.33874 -18.89443,-6.47398 -28.38217,-15.10481 -13.08558,-11.90371 -17.72561,-23.29726 -17.72561,-43.52501 0,-18.30772 4.14768,-29.96528 14.34194,-40.30981 7.27131,-7.37848 18.36439,-13.25052 25.03206,-13.25052 4.73347,0 4.8315,0.27458 4.8315,13.5325 l 0,13.5325 -6.57204,3.04787 c -9.16684,4.25125 -13.05127,12.36242 -12.09267,25.25093 1.53891,20.69072 13.75689,28.81207 43.34566,28.81207 14.25099,0 19.3577,-0.72886 23.91428,-3.41316 12.51899,-7.37499 18.80704,-23.65294 14.28477,-36.97908 -2.56222,-7.55028 -13.65238,-17.88336 -19.19364,-17.88336 -3.36269,0 -3.73837,1.31029 -3.73837,13.03841 l 0,13.0384 -11.88928,-0.55077 -11.88929,-0.55079 0,-25.90026 0,-25.90027 35.19228,0 35.19228,0 0.57499,9.7126 c 0.49269,8.32267 0.0845,9.71665 -2.85343,9.74093 -8.20311,0.0677 -8.706,2.84359 -2.15276,11.88256 6.12053,8.44215 6.33349,9.33743 6.33349,26.62529 0,15.38301 -0.65924,19.1446 -4.70538,26.84845 -9.93611,18.91837 -28.93477,29.1492 -56.00199,30.15722 -10.88743,0.40545 -20.4551,-0.28006 -25.84662,-1.85189 z m -45.65485,-139.01542 0,-13.87514 65.62885,0 65.62884,0 0,13.87514 0,13.87514 -65.62884,0 -65.62885,0 0,-13.87514 z m 49.45942,-38.8504 0,-15.72516 -24.72971,0 -24.72971,0 0,-12.95013 0,-12.95014 24.72971,0 24.72971,0 0,-16.65017 0,-16.65017 15.21829,0 15.21828,0 0,16.65017 0,16.65017 25.68085,0 25.68085,0 0,12.89643 0,12.89645 -25.20528,0.51619 -25.20528,0.51621 -0.5525,15.26265 -0.5525,15.26266 -15.14135,0 -15.14136,0 0,-15.72516 z m 90.58314,-28.97078 c -1.413,-6.87082 -1.79669,-6.34506 5.78198,-7.92291 5.58749,-1.16331 6.09939,-0.83956 7.33692,4.64003 1.45579,6.44604 -0.79787,9.0505 -7.87441,9.1001 -3.02463,0.0211 -4.34501,-1.44337 -5.24449,-5.81722 z m -160.69546,0.49827 c -1.79783,-1.10787 -2.17745,-3.37832 -1.25087,-7.48118 1.23754,-5.47959 1.74944,-5.80335 7.33693,-4.64004 7.57866,1.57785 7.19497,1.05209 5.78198,7.92291 -1.24077,6.03343 -6.10031,7.75249 -11.86804,4.19831 z m 190.42463,-6.76941 c -1.85277,-5.87101 -1.66966,-6.25919 3.83255,-8.12458 3.17805,-1.07743 5.9948,-1.95896 6.25947,-1.95896 0.91633,0 4.67209,11.70301 3.97372,12.38219 -0.38574,0.37517 -3.27056,1.39869 -6.41068,2.27453 -5.34046,1.48954 -5.83503,1.19409 -7.65506,-4.57318 z m -216.85329,0.64986 c -3.40034,-0.87401 -6.18243,-1.85733 -6.18243,-2.18515 0,-0.32782 0.94953,-3.24505 2.11007,-6.48271 1.73496,-4.84015 2.83405,-5.67166 6.18243,-4.67733 7.88037,2.34017 8.42794,3.15845 6.18018,9.23554 -1.96709,5.31825 -2.52062,5.59264 -8.29025,4.10965 z m 245.52541,-10.67191 c -2.12815,-5.48318 -2.11652,-5.49574 11.85359,-12.82409 22.7641,-11.94143 40.5838,-25.97488 57.05249,-44.93026 l 7.53031,-8.66734 5.41145,4.25151 5.41145,4.25151 -17.60152,17.90565 c -16.73035,17.01941 -37.6183,32.42395 -56.39658,41.59159 -10.27596,5.01677 -10.722,4.96367 -13.26119,-1.57857 z m -286.33038,-6.27889 c -21.55151,-11.9442 -31.63729,-19.70355 -49.98909,-38.45829 l -16.54083,-16.90401 5.39695,-4.24028 5.39696,-4.24026 7.53031,8.66734 c 16.46869,18.95538 34.28839,32.98883 57.05248,44.93026 13.97012,7.32835 13.98175,7.34091 11.8536,12.82409 -1.17162,3.01872 -3.03333,5.48856 -4.13709,5.48856 -1.10378,0 -8.55726,-3.63034 -16.56329,-8.06741 z m 375.66016,-70.84688 c -3.97648,-2.69927 -4.05764,-3.18834 -1.36824,-8.24615 2.7937,-5.254 2.98784,-5.31188 8.50732,-2.53606 6.47782,3.25777 6.35114,2.92151 3.44074,9.13364 -2.52039,5.37967 -4.60478,5.70447 -10.57982,1.64857 z M 89.683687,134.84263 c -2.910382,-6.21213 -3.037055,-5.87587 3.440759,-9.13364 5.520337,-2.77624 5.713305,-2.71854 8.512274,2.54533 2.72546,5.12566 2.63957,5.52893 -1.77689,8.3432 -6.255304,3.98601 -7.594703,3.75504 -10.176143,-1.75489 z M 558.86885,114.49806 c -4.66412,-2.46246 -4.94939,-3.21135 -3.14292,-8.25101 1.09275,-3.04849 2.20334,-5.54273 2.46799,-5.54273 1.15984,0 12.46263,4.10838 12.46263,4.52996 0,2.20567 -4.45138,12.10382 -5.41738,12.04614 -0.68234,-0.0407 -3.54898,-1.29279 -6.37032,-2.78236 z M 76.248436,107.82834 c -1.1486,-3.20438 -2.088367,-6.03672 -2.088367,-6.2941 0,-0.42158 11.30279,-4.529954 12.462632,-4.529954 0.264646,0 1.376722,2.498376 2.471297,5.551964 1.832586,5.11256 1.553673,5.77145 -3.524022,8.32508 -7.178882,3.61035 -6.90035,3.70158 -9.32154,-3.05299 z M 568.27869,86.478917 c -4.16144,-1.0576 -4.15124,-1.435966 0.47558,-17.673656 4.71707,-16.554414 4.76128,-15.866207 -0.95115,-14.804204 -3.51666,0.653779 -4.75571,0.08973 -4.75571,-2.164633 0,-1.67682 1.09334,-3.456779 2.42964,-3.95547 1.33629,-0.498709 4.53447,-4.218875 7.10707,-8.267031 3.85384,-6.064326 5.73436,-7.360301 10.68013,-7.360301 4.78765,0 6.24005,0.919681 7.17525,4.543462 0.64491,2.498894 2.13408,6.869564 3.30925,9.712599 4.714,11.40422 2.47433,18.328434 -4.06643,12.571786 -3.92535,-3.4548 -3.4906,-4.351652 -9.63904,19.885132 -2.24473,8.848659 -3.45803,9.62341 -11.76459,7.512316 z M 62.514449,66.506779 57.950276,48.599557 52.639,52.662624 c -2.921206,2.234675 -5.630041,3.75306 -6.019648,3.374157 -0.389608,-0.378884 0.859281,-4.428205 2.775301,-8.998492 1.916001,-4.570287 3.965028,-9.76649 4.553405,-11.547134 0.734891,-2.224093 3.046111,-3.237533 7.383397,-3.237533 5.021102,0 8.14882,1.812001 15.277977,8.851138 4.930401,4.868122 8.964349,10.279427 8.964349,12.025124 0,4.517598 -2.081195,3.939726 -6.8916,-1.913568 -2.299596,-2.798153 -4.818203,-4.473179 -5.596904,-3.722293 -0.778719,0.750904 0.522064,8.499468 2.890599,17.219014 2.368555,8.719565 3.936551,16.213492 3.484473,16.653149 -0.452097,0.439676 -3.422934,1.3053 -6.601862,1.923613 l -5.779866,1.12422 -4.564172,-17.90724 z"+ id="path3050"+ inkscape:connector-curvature="0" />+ </g>+</svg>
binary file changed (absent → 9092 bytes)
@@ -0,0 +1,77 @@+<?xml version="1.0" encoding="UTF-8" standalone="no"?>+<!-- Created with Inkscape (http://www.inkscape.org/) -->++<svg+ xmlns:dc="http://purl.org/dc/elements/1.1/"+ xmlns:cc="http://creativecommons.org/ns#"+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"+ xmlns:svg="http://www.w3.org/2000/svg"+ xmlns="http://www.w3.org/2000/svg"+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"+ width="640px"+ height="480px"+ id="svg3134"+ version="1.1"+ inkscape:version="0.48.3.1 r9886"+ sodipodi:docname="git-annex.svg">+ <defs+ id="defs3136" />+ <sodipodi:namedview+ id="base"+ pagecolor="#ffffff"+ bordercolor="#666666"+ borderopacity="1.0"+ inkscape:pageopacity="0.0"+ inkscape:pageshadow="2"+ inkscape:zoom="0.77472527"+ inkscape:cx="398.6665"+ inkscape:cy="232.05718"+ inkscape:current-layer="layer1"+ inkscape:document-units="px"+ showgrid="false"+ inkscape:window-width="1024"+ inkscape:window-height="566"+ inkscape:window-x="0"+ inkscape:window-y="12"+ inkscape:window-maximized="0" />+ <metadata+ id="metadata3139">+ <rdf:RDF>+ <cc:Work+ rdf:about="">+ <dc:format>image/svg+xml</dc:format>+ <dc:type+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />+ <dc:title></dc:title>+ </cc:Work>+ </rdf:RDF>+ </metadata>+ <g+ id="layer1"+ inkscape:label="Layer 1"+ inkscape:groupmode="layer">+ <g+ id="g4187"+ transform="matrix(2.0184211,0,0,1.9796558,-320.30102,-235.1316)">+ <path+ sodipodi:nodetypes="cccccccccccccccccccccccccssscssssssssscssssssssssscccssssscccssssssssssssssssssscssssssssssscsssssssccscsssssssssscc"+ inkscape:connector-curvature="0"+ id="path3050"+ d="m 306.53525,253.83733 0,-8.5 -13,0 -13,0 0,-7 0,-7 13,0 13,0 0,-9 0,-9 8,0 8,0 0,9 0,9 13.5,0 13.5,0 0,6.97097 0,6.97098 -13.25,0.27902 -13.25,0.27903 -0.29044,8.25 -0.29044,8.25 -7.95956,0 -7.95956,0 z m 47.61806,-15.65972 c -0.74279,-3.71392 -0.94449,-3.42973 3.03949,-4.28261 2.93725,-0.62881 3.20635,-0.45381 3.8569,2.5081 0.76528,3.48431 -0.41943,4.89211 -4.13945,4.91892 -1.59,0.0114 -2.2841,-0.78019 -2.75694,-3.14441 z m -84.47495,0.26933 c -0.94509,-0.59884 -1.14465,-1.8261 -0.65756,-4.04384 0.65055,-2.96191 0.91965,-3.13691 3.8569,-2.5081 3.98398,0.85288 3.78228,0.56869 3.03949,4.28261 -0.65225,3.26128 -3.20683,4.19049 -6.23883,2.26933 z m 100.10308,-3.6591 c -0.97397,-3.17349 -0.87771,-3.38331 2.01471,-4.39162 1.67065,-0.58239 3.15137,-1.05889 3.2905,-1.05889 0.4817,0 2.45604,6.32589 2.08892,6.69301 -0.20278,0.20279 -1.71928,0.75604 -3.36999,1.22946 -2.80739,0.80515 -3.06738,0.64545 -4.02414,-2.47196 z m -113.99619,0.35127 c -1.7875,-0.47243 -3.25,-1.00395 -3.25,-1.18115 0,-0.1772 0.49915,-1.75406 1.10923,-3.50413 0.91204,-2.61627 1.48981,-3.06573 3.25,-2.52826 4.14258,1.26494 4.43043,1.70725 3.24882,4.99213 -1.03407,2.8747 -1.32505,3.02302 -4.35805,2.22141 z m 129.06865,-5.76854 c -1.11873,-2.96385 -1.11262,-2.97064 6.23124,-6.93187 11.96671,-6.45476 21.33423,-14.04033 29.99155,-24.28638 l 3.95856,-4.685 2.84471,2.29809 2.84471,2.29809 -9.25283,9.67863 c -8.79487,9.19959 -19.77532,17.52628 -29.64675,22.48171 -5.4019,2.71174 -5.63638,2.68304 -6.97119,-0.85327 z m -150.51915,-3.39396 c -11.32927,-6.45626 -16.6312,-10.65046 -26.27844,-20.78805 l -8.69524,-9.13721 2.83709,-2.29202 2.83709,-2.29201 3.95856,4.685 c 8.65732,10.24605 18.02484,17.83162 29.99155,24.28638 7.34386,3.96123 7.34997,3.96802 6.23124,6.93187 -0.6159,1.63172 -1.59457,2.96676 -2.1748,2.96676 -0.58024,0 -4.49841,-1.96233 -8.70705,-4.36072 z m 197.47834,-38.29522 c -2.09037,-1.45905 -2.13303,-1.72341 -0.71926,-4.45733 1.4686,-2.83997 1.57066,-2.87126 4.47216,-1.37083 3.40528,1.76094 3.33869,1.57918 1.80874,4.93705 -1.32493,2.9079 -2.42066,3.08347 -5.56164,0.89111 z m -239.11733,-2.89111 c -1.52994,-3.35787 -1.59653,-3.17611 1.80875,-4.93705 2.90195,-1.50066 3.00339,-1.46947 4.47476,1.37584 1.43273,2.7706 1.38758,2.98858 -0.93408,4.50979 -3.28831,2.15458 -3.99241,2.02973 -5.34943,-0.94858 z m 246.64289,-10.99695 c -2.45185,-1.33105 -2.60181,-1.73585 -1.65218,-4.45996 0.57444,-1.64782 1.15826,-2.99604 1.29738,-2.99604 0.60971,0 6.5514,2.22072 6.5514,2.4486 0,1.19224 -2.34002,6.54254 -2.84783,6.51136 -0.35869,-0.022 -1.86564,-0.6988 -3.34877,-1.50396 z m -253.70558,-3.60522 c -0.6038,-1.73208 -1.09782,-3.26306 -1.09782,-3.40218 0,-0.22788 5.94169,-2.4486 6.5514,-2.4486 0.13912,0 0.72372,1.35046 1.29912,3.00103 0.96336,2.76352 0.81674,3.11967 -1.85252,4.5 -3.77382,1.95152 -3.6274,2.00083 -4.90018,-1.65025 z M 444.28525,158.648 c -2.1876,-0.57167 -2.18224,-0.77619 0.25,-9.55323 2.47969,-8.94824 2.50293,-8.57624 -0.5,-8.00219 -1.84865,0.35339 -2.5,0.0485 -2.5,-1.17006 0,-0.90638 0.57475,-1.86851 1.27722,-2.13807 0.70247,-0.26957 2.3837,-2.28045 3.73607,-4.46862 2.0259,-3.27798 3.01446,-3.9785 5.61437,-3.9785 2.51679,0 3.28029,0.49712 3.77191,2.4559 0.33902,1.35074 1.12185,3.71324 1.73962,5.25 2.47807,6.16438 1.30071,9.90716 -2.13766,6.79549 -2.06349,-1.86744 -1.83495,-2.35222 -5.06708,10.74861 -1.18002,4.78301 -1.81783,5.20179 -6.18445,4.06067 z m -265.87191,-10.79564 -2.39931,-9.67948 -2.79205,2.19623 c -1.53563,1.20792 -2.95962,2.02866 -3.16443,1.82385 -0.20481,-0.2048 0.45171,-2.3936 1.45893,-4.864 1.00721,-2.4704 2.08435,-5.27913 2.39365,-6.24163 0.38632,-1.2022 1.60129,-1.75 3.88133,-1.75 2.63951,0 4.2837,0.97945 8.03138,4.78435 2.59183,2.63139 4.71241,5.55639 4.71241,6.5 0,2.44192 -1.09405,2.12956 -3.6228,-1.03435 -1.20886,-1.5125 -2.53285,-2.41791 -2.9422,-2.01203 -0.40936,0.40589 0.27444,4.59426 1.51954,9.30748 1.24511,4.71323 2.06938,8.76396 1.83173,9.00161 -0.23766,0.23766 -1.79938,0.70556 -3.47049,1.03978 l -3.03838,0.60768 z"+ style="fill:#40bf4c;fill-opacity:1" />+ <path+ sodipodi:nodetypes="ccccccccc"+ style="fill:#d8372c;fill-opacity:1"+ d="m 280.84173,275.15053 0,-7.5 34.5,0 34.5,0 0,7.5 0,7.5 -34.5,0 -34.5,0 z"+ id="path4113"+ inkscape:connector-curvature="0" />+ <path+ sodipodi:nodetypes="sssssscssssssscccccccsssssss"+ style="fill:#666666;fill-opacity:1;fill-rule:nonzero"+ d="m 305.37638,349.62884 c -7.82337,-2.34524 -9.93249,-3.49941 -14.92004,-8.16468 -6.87887,-6.43437 -9.31806,-12.59298 -9.31806,-23.52679 0,-9.89596 2.18037,-16.19728 7.53932,-21.78886 3.82241,-3.98833 9.65386,-7.16237 13.15894,-7.16237 2.48831,0 2.53984,0.14842 2.53984,7.31479 l 0,7.31479 -3.45481,1.64748 c -4.81886,2.29795 -6.86084,6.68232 -6.35692,13.64901 0.80898,11.18406 7.23177,15.57393 22.7861,15.57393 7.49151,0 10.17602,-0.39397 12.57134,-1.84493 6.58103,-3.98644 9.88655,-12.78524 7.50927,-19.98849 -1.34692,-4.08119 -7.17683,-9.66658 -10.08978,-9.66658 -1.76771,0 -1.9652,0.70826 -1.9652,7.04772 l 0,7.04771 -6.25,-0.29771 -6.25,-0.29772 0,-14 0,-14 18.5,0 18.5,0 0.30226,5.25 c 0.259,4.49869 0.0444,5.25219 -1.5,5.26531 -4.31224,0.0366 -4.5766,1.53706 -1.13167,6.42294 3.21746,4.56328 3.32941,5.04721 3.32941,14.3919 0,8.31506 -0.34655,10.34833 -2.47354,14.51253 -5.22325,10.22604 -15.21053,15.75616 -29.43932,16.30103 -5.72334,0.21916 -10.75291,-0.15138 -13.58714,-1.00101 z"+ id="path4115"+ inkscape:connector-curvature="0" />+ </g>+ </g>+</svg>
binary file changed (absent → 4713 bytes)
@@ -0,0 +1,151 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>meta</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+meta++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This wiki contains 519 pages.</p>++<p>Broken links:</p>++<ul>+<li><span class="createlink">Issue on OSX with some system limits</span> from <a href="./design/assistant/inotify.html">inotify</a>, <a href="./assistant/release_notes.html">release notes</a></li>+<li><span class="createlink">Joey</span> from <a href="./tips/finding_duplicate_files.html">finding duplicate files</a>, <a href="./tips/using_Google_Cloud_Storage.html">using Google Cloud Storage</a>, <a href="./testimonials.html">testimonials</a>, <a href="./assistant/thanks.html">thanks</a>, <a href="./tips/what_to_do_when_a_repository_is_corrupted.html">what to do when a repository is corrupted</a>, <a href="./tips/setup_a_public_repository_on_a_web_site.html">setup a public repository on a web site</a>, <a href="./design/assistant/polls/goals_for_April.html">goals for April</a>, <a href="./tips/assume-unstaged.html">assume-unstaged</a>, <a href="./install/OSX.html">OSX</a>, <a href="./design/assistant.html">assistant</a>, <a href="./special_remotes/hook.html">hook</a></li>+<li><span class="createlink">OSX alias permissions and versions problem</span> from <a href="./design/assistant/desymlink.html">desymlink</a></li>+<li><span class="createlink">OSX app issues</span> from <a href="./install/OSX.html">OSX</a></li>+<li><span class="createlink">OSX's default sshd behaviour has limited paths set</span> from <a href="./install/OSX.html">OSX</a></li>+<li><span class="createlink">OSX's haskell-platform statically links things</span> from <a href="./install/OSX.html">OSX</a></li>+<li><span class="createlink">Slow transfer for a lot of small files.</span> from <a href="./design/assistant/syncing.html">syncing</a></li>+<li><span class="createlink">Wishlist: options for syncing meta-data and data</span> from <a href="./design/assistant/syncing.html">syncing</a></li>+<li><span class="createlink">assistant threaded runtime</span> from <a href="./design/assistant/syncing.html">syncing</a></li>+<li><span class="createlink">blog</span> from <a href="./design/assistant.html">assistant</a></li>+<li><span class="createlink">blog</span> from <a href="./footer/column_a.html">column a</a>, <a href="./assistant.html">assistant</a></li>+<li><span class="createlink">bugs</span> from <a href="./sidebar.html">sidebar</a></li>+<li><span class="createlink">day 7 bugfixes</span> from <a href="./design/assistant/inotify.html">inotify</a></li>+<li><span class="createlink">forum</span> from <a href="./sidebar.html">sidebar</a>, <a href="./footer/column_b.html">column b</a>, <a href="./contact.html">contact</a></li>+<li><span class="createlink">gadu - git-annex disk usage</span> from <a href="./related_software.html">related software</a></li>+<li><span class="createlink">git-annex unused eats memory</span> from <a href="./scalability.html">scalability</a></li>+<li><span class="createlink">smudge</span> from <a href="./design/assistant/desymlink.html">desymlink</a></li>+<li><span class="createlink">special remote for IMAP</span> from <a href="./special_remotes.html">special remotes</a></li>+<li><span class="createlink">special remote for amazon glacier</span> from <a href="./design/assistant/more_cloud_providers.html">more cloud providers</a></li>+<li><span class="createlink">tips: special_remotes/hook with tahoe-lafs</span> from <a href="./special_remotes.html">special remotes</a></li>+<li><span class="createlink">todo</span> from <a href="./sidebar.html">sidebar</a>, <a href="./design/assistant.html">assistant</a></li>+<li><span class="createlink">watcher commits unlocked files</span> from <a href="./design/assistant/inotify.html">inotify</a>, <a href="./assistant/release_notes.html">release notes</a></li>+<li><span class="createlink">windows support</span> from <a href="./install.html">install</a>, <a href="./design/assistant/windows.html">windows</a></li>+<li><span class="createlink">wishlist: allow configuration of downloader for addurl</span> from <a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">Using Git-annex as a web browsing assistant</a></li>+<li><span class="createlink">wishlist: an "assistant" for web-browsing -- tracking the sources of the downloads</span> from <a href="./design/assistant/webapp.html">webapp</a>, <a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">Using Git-annex as a web browsing assistant</a></li></ul>+++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,127 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>news</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+news++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>(Please see the changelog.)</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./footer/column_a.html">footer/column a</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,507 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>what git-annex is not</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+what git-annex is not++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<ul>+<li><p>git-annex is not a backup system. It may be a useful component of an+<a href="./use_case/Bob.html">archival</a> system, or a way to deliver files to a backup+system. For a backup system that uses git and that git-annex supports+storing data in, see <a href="./special_remotes/bup.html">bup</a>.</p></li>+<li><p>git-annex is not a filesystem or DropBox clone. However, the git-annex+<a href="./assistant.html">assistant</a> is addressing some of the same needs in its own unique ways.+(There is also a FUSE filesystem built on top of git-annex, called+<a href="https://github.com/chmduquesne/sharebox-fs">ShareBox</a>.)</p></li>+<li><p>git-annex is not unison, but if you're finding unison's checksumming+too slow, or its strict mirroring of everything to both places too+limiting, then git-annex could be a useful alternative.</p></li>+<li><p>git-annex is more than just a workaround for git scalability+limitations that might eventually be fixed by efforts like+<a href="http://caca.zoy.org/wiki/git-bigfiles">git-bigfiles</a>. In particular,+git-annex's <a href="./location_tracking.html">location tracking</a> allows having many repositories+with a partial set of files, that are copied around as desired.</p></li>+<li><p>git-annex is not some flaky script that was quickly thrown together.+I wrote it in Haskell because I wanted it to be solid and to compile+down to a binary. And it has a fairly extensive test suite. (Don't be+fooled by "make test" only showing a few dozen test cases; each test+involves checking dozens to hundreds of assertions.)</p></li>+<li><p>git-annex is not <a href="https://github.com/schacon/git-media">git-media</a>,+although they both approach the same problem from a similar direction.+I only learned of git-media after writing git-annex, but I probably+would have still written git-annex instead of using it. Currently,+git-media has the advantage of using git smudge filters rather than+git-annex's pile of symlinks, and it may be a tighter fit for certain+situations. It lacks git-annex's support for widely distributed storage,+using only a single backend data store. It also does not support+partial checkouts of file contents, like git-annex does.</p></li>+<li><p>git-annex is similarly not <a href="https://github.com/jedbrown/git-fat">git-fat</a>,+which also uses git smudge filters, and also lacks git-annex' widely+distributed storage and partial checkouts.</p></li>+<li><p>git-annex is also not <a href="http://code.google.com/p/boar/">boar</a>,+although it shares many of its goals and characteristics. Boar implements+its own version control system, rather than simply embracing and+extending git. And while boar supports distributed clones of a repository,+it does not support keeping different files in different clones of the+same repository, which git-annex does, and is an important feature for+large-scale archiving.</p></li>+<li><p>git-annex is not the <a href="http://mercurial.selenic.com/wiki/LargefilesExtension">Mercurial largefiles extension</a>.+Although mercurial and git have some of the same problems around large+files, and both try to solve them in similar ways (standin files using+mostly hashes of the real content).</p></li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-21ca3dc4a279055e92a26ddc0740e63c">++++<div class="comment-subject">++<a href="/not.html#comment-21ca3dc4a279055e92a26ddc0740e63c">git-media</a>++</div>++<div class="inlinecontent">+I haven't used git-media, but from the README it looks as though they now support several backends. Might want to update the (very helpful!) comparison.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://bergey.dreamwidth.org/">bergey [dreamwidth.org]</a>+</span>+++— <span class="date">Sat Jul 14 11:42:05 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-4d4bfdd220bfc44bd5683f5da6638358">++++<div class="comment-subject">++<a href="/not.html#comment-4d4bfdd220bfc44bd5683f5da6638358">Sparkleshare</a>++</div>++<div class="inlinecontent">+How does <a href="http://sparkleshare.org/">sparkleshare</a> and git-annex (and git-annex assistant) compare?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc">Bret</a>+</span>+++— <span class="date">Thu Sep 6 04:09:17 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-10687d51e112a627d1272a69b92c2a9d">++++<div class="comment-subject">++<a href="/not.html#comment-10687d51e112a627d1272a69b92c2a9d">comment 3</a>++</div>++<div class="inlinecontent">+My understanding of sparkleshare (I've not used it) is that it uses a regular git repository, so has git's problems with large files and will not support partial checkouts. However, you might want to try it out and see if it works for you.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Sep 6 10:50:43 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c61d8243d45b78efc5ff90a3cc10318c">++++<div class="comment-subject">++<a href="/not.html#comment-c61d8243d45b78efc5ff90a3cc10318c">Sparkleshare</a>++</div>++<div class="inlinecontent">+<p>Hi,</p>++<p>I used sparkleshare lately in a project involving 3 computers and 2 people. and for ascii texts and even a few smaller binary things it works ok.</p>++<p>But it does "to much" for media. at least at the moment, it just uses git for saving the data. That has a possitive and a negative aspect.</p>++<p>possitive:</p>++<ol>+<li>you have a full history, if you delete a file its not gone for ever, so if you change it, the older version is still recoverable.</li>+<li>if you would as example use it from a laptop in a train without internet and you use a git server in the internet for the central server, and would change some files, then you or somebody else would write on the same txt file as example (html or something... latex...) you would be able to merge this files.</li>+<li>its not totaly bad for backup, because you can restore old files even if you delete it localy, because it will hold all history</li>+</ol>+++<p>negative:</p>++<ol>+<li>for bigger data its cracy. if you use it for movies as example, you would in git annex delete some stuff you want not to see anytime again, so you would delete it everywhere. and its really away, not beeing still there in the history</li>+<li>git as it is has issues with saving/transfairing very big files, and its slow on even mid-sized files lets say 100 5mb big files it would be slow. because at the moment sparkleshare uses git all this disatvantages are there.</li>+<li>as many clients you use lets say a projekt with 10 people, each of them have all files and all the history of this projekt/directory on their pc.</li>+<li>you need a central data-store git folder you can use a seperate pc for that or save it on a client, if you use a client for that you have to save the data double on this pc.</li>+</ol>+++<p>(so you see for big files even if git would handle them faster you would waste massivly hard disk space) but again for pdfs a few pictures text files even some office files and stuff <100mb its great and easy to do.</p>++<p>I try it in a few words, sparkleshare is like dropbox but with file history ( I think dropbox dont have that???) but because git is not designed (yet) for big files it works somewhat ok for < 100mb stuff if you go very much higher > 1GB it will not be optimal.</p>++<p>git annex dont saves the data itself in git but only the locations and the checksums. so its more like a adress book of your data. its a abstraction layer to your data, you can see on as many devises as you want even without no netzwerk internet connection active and only a very small hd see all your 5 Terrabyte of Data you might have, and move around directories sort around them... delete stuff you dont want if you can deside that by the name... and then when you come back to the connection you sync your actions and it does it to the files.</p>++<p>And one big feature like joey said is that you cannot partialy load files from the repos to your device if it has as example only enough space for 1/10 of it.</p>++<p>There is another thing, but because it is "only" a abstraction layer, it is theoreticaly easy to implement extentions to save your data on anything not only git repositories...</p>++<p>Sparkleshare will switch to something else than git, maybe but then it will switch to this single protocol and stick to that. because it does not abstract stuff so hard.</p>++<p>btw there is a alternative out there it forces you not to use git as vcs but you have to use a vcs (like git) and you dont have to use the client written in mono but only a smaller python script:</p>++<p>http://www.mayrhofer.eu.org/dvcs-autosync</p>++<p>but the idea behind it is the same except this 2 points ;)</p>++<p>but many free software developers dont like mono, so the change that it gets more love from more people is not totaly unlikely.</p>++<p>So way to long post but hope that helps somebody ;)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo">Stefan</a>+</span>+++— <span class="date">Fri Sep 14 21:28:05 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e302ee7a556894832ce98b554e0942ab">++++<div class="comment-subject">++<a href="/not.html#comment-e302ee7a556894832ce98b554e0942ab">comment 5</a>++</div>++<div class="inlinecontent">+<p>or to make it more simple ;)</p>++<p>sparkleshare is for proejects and maybe backup your documents folder</p>++<p>annex is for managing big binary files that not get modified most of the time and only added/synced or deleted.</p>++<p>hope thats on the point, try to start using it also now, but am a bit blowen away what it all can do and what not... and how to get a good use case, and mixing media-management with backup of home and thinking on solving that all with annex without having it used ever ;)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawn4bbuawnh-nSo9pAh8irYAcV4MQCcfdHo">Stefan</a>+</span>+++— <span class="date">Fri Sep 14 21:35:06 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-6f4c86ea2e3f3350df1f34a5c1caac49">++++<div class="comment-subject">++<a href="/not.html#comment-6f4c86ea2e3f3350df1f34a5c1caac49">comment 6</a>++</div>++<div class="inlinecontent">+<p>Stefan: "annex is for managing big binary files that not get modified most of the time and only added/synced or deleted."</p>++<p>While this is true, the kickstarter title for assistant was "Like dropbox", and dropbox makes it transparent to edit files and they work with the filesystem.+So with assistant, lock/unlock should be automated and transparent to the user. Otherwise it's confusing and not simple at all to use, and at least OSX keeps giving errors because of the way it handles aliases.+So something like sharebox is essential to be included in assistant in my opinion.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlatTbI0K-qydpeYHl37iseqPNvERcdIMk">Tiago</a>+</span>+++— <span class="date">Thu Sep 27 06:17:18 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-041929cac200dbd17397506fe7b961de">++++<div class="comment-subject">++<a href="/not.html#comment-041929cac200dbd17397506fe7b961de">comment 7</a>++</div>++<div class="inlinecontent">+<p>hi joey,</p>++<p>i'm excited by your project here but also confused by its direction. the kickstarter page has the header: "git-annex assistant: Like DropBox, but with your own cloud." this page says "git-annex is not a ... DropBox clone." these seem to be in direct opposition.</p>++<p>i'm looking for what is described by the header on your kickstarter page. i assume your backers are looking for the the same thing (a self hosted DropBox). for my use, dropbox is perfect, except for the fact that i have to pay a monthly fee to store my data on someone else's server when i would like to buy my own storage medium and run some open source dropbox clone on my own server.</p>++<p>can you explain more clearly what dropbox features your project lacks (/will lack)? and why where is a difference between your fundraising page and this one?</p>++<p>maybe i'm just confused by the difference between git-annex and git-annex assistant. does git-annex assistant truely aim to be a dropbox clone?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=l3iggs&do=goto">l3iggs</a>++</span>+++— <span class="date">Sat Feb 2 23:57:05 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-113deea37a98fdc1f1ad59333c9f2dd4">++++<div class="comment-subject">++<a href="/not.html#comment-113deea37a98fdc1f1ad59333c9f2dd4">comment 8</a>++</div>++<div class="inlinecontent">+<p>It's pretty much exactly what he said:</p>++<blockquote><p>git-annex is not a filesystem or DropBox clone. However, the git-annex assistant is addressing some of the same needs in its own unique ways.</p></blockquote>++<p>The git-annex assistant is not exactly like DropBox; it's not a drop-in replacement that works exactly the way dropbox works. But as it stands, right now, it can (like Dropbox) run in the background and make sure that all of your files in a special directory are mirrored to another place (a USB drive, or a server to which you have SSH access, or another computer on your home network, or another computer somewhere else which has access to the same USB drive from time to time, or has accesss to the same SSH server or S3 repository or....</p>++<p>It works as is but is still under heavy development and features are being added rapidly. For example, up until a month or two ago, the files in your annex were replaced with softlinks whose content resided in a hidden directory. This caused some problems esp. on OS X where native programs don't handle softlinked files very gracefully. So Joey added an entirely new way of operating called "direct mode" which uses ordinary files, much like Dropbox does.</p>++<p>So -- what you should expect from git-annex assistant is a program which solves many of the same problems Dropbox does (keeping a set of files magically in sync across computers) but does it in its own way, which won't be <em>exactly</em> like Dropbox; it will be more flexible but might require a little learning to figure out exactly how to use it the way you want. It's possible to get a very Dropbox-like system out of the box, especially now that you don't need to use softlinks, if you've got a place on the network you can use as a central remote repository for your files, or if you only want to synchronize two or more computers on the same local network.</p>++<p>"git-annex" itself is the plumbing used by git-annex assistant, or to put it another way, the engine that the assistant has under the hood. Git-annex itself is extremely simple and stable but should only be used by people already familiar with the command line, perhaps even people already familiar with git.</p>++<p>That's my point of view as an enthusiastic user. Joey may have his own perspective to share. :)</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>+</span>+++— <span class="date">Sun Feb 3 23:17:06 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/other_stuff.html">links/other stuff</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,631 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>preferred content</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+preferred content++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex tries to ensure that the configured number of <a href="./copies.html">copies</a> of your+data always exist, and leaves it up to you to use commands like <code>git annex+get</code> and <code>git annex drop</code> to move the content to the repositories you want+to contain it. But sometimes, it can be good to have more fine-grained+control over which repositories prefer to have which content. Configuring+this allows <code>git annex get --auto</code>, <code>git annex drop --auto</code>, etc to do+smarter things.</p>++<p>Currently, preferred content settings can only be edited using <code>git+annex vicfg</code>. Each repository can have its own settings, and other+repositories may also try to honor those settings. So there's no local+<code>.git/config</code> setting it.</p>++<p>The idea is that you write an expression that files are matched against.+If a file matches, it's preferred to have its content stored in the+repository. If it doesn't, it's preferred to drop its content from+the repository (if there are enough copies elsewhere).</p>++<p>The expressions are very similar to the file matching options documented+on the <a href="./git-annex.html">git-annex</a> man page. At the command line, you can use those+options in commands like this:</p>++<pre><code>git annex get --include='*.mp3' --and -'(' --not --largerthan=100mb -')'+</code></pre>++<p>The equivilant preferred content expression looks like this:</p>++<pre><code>include=*.mp3 and (not largerthan=100mb)+</code></pre>++<p>So, just remove the dashes, basically. However, there are some differences+from the command line options to keep in mind:</p>++<h3>difference: file matching</h3>++<p>While --include and --exclude match files relative to the current+directory, preferred content expressions always match files relative to the+top of the git repository. Perhaps you put files into <code>archive</code> directories+when you're done with them. Then you could configure your laptop to prefer+to not retain those files, like this:</p>++<pre><code>exclude=*/archive/*+</code></pre>++<h3>difference: no "in="</h3>++<p>Preferred content expressions have no direct equivilant to <code>--in</code>.</p>++<p>Often, it's best to add repositories to groups, and match against+the groups in a preferred content expression. So rather than+<code>--in=usbdrive</code>, put all the USB drives into a "transfer" group,+and use "copies=transfer:1"</p>++<h3>difference: dropping</h3>++<p>To decide if content should be dropped, git-annex evaluates the preferred+content expression under the assumption that the content has <em>already</em> been+dropped. If the content would not be preferred then, the drop can be done.+So, for example, <code>copies=2</code> in a preferred content expression lets+content be dropped only when there are currently 3 copies of it, including+the repo it's being dropped from. This is different than running <code>git annex+drop --copies=2</code>, which will drop files that currently have 2 copies.</p>++<h3>difference: "present"</h3>++<p>There's a special "present" keyword you can use in a preferred content+expression. This means that content is preferred if it's present,+and not otherwise. This leaves it up to you to use git-annex manually+to move content around. You can use this to avoid preferred content+settings from affecting a subdirectory. For example:</p>++<pre><code>auto/* or (include=ad-hoc/* and present)+</code></pre>++<p>Note that <code>not present</code> is a very bad thing to put in a preferred content+expression. It'll make it prefer to get content that's not present, and+drop content that is present! Don't go there..</p>++<h3>difference: "inpreferreddir"</h3>++<p>There's a special "inpreferreddir" keyword you can use in a+preferred content expression of a special remote. This means that the+content is preferred if it's in a directory (located anywhere in the tree)+with a special name.</p>++<p>The name of the directory can be configured using+<code>git annex initremote $remote preferreddir=$dirname</code></p>++<p>(If no directory name is configured, it uses "public" by default.)</p>++<h2>standard expressions</h2>++<p>git-annex comes with some standard preferred content expressions, that can+be used with repositories that are in some pre-defined groups. To make a+repository use one of these, just set its preferred content expression+to "standard", and put it in one of these groups.</p>++<p>(Note that most of these standard expressions also make the repository+prefer any content that is only currently available on untrusted and+dead repositories. So if an untrusted repository gets connected,+any repository that can will back it up.)</p>++<h3>client</h3>++<p>All content is preferred, unless it's for a file in a "archive" directory,+which has reached an archive repository.</p>++<p><code>((exclude=*/archive/* and exclude=archive/*) or (not (copies=archive:1 or copies=smallarchive:1))) or (not copies=semitrusted+:1)</code></p>++<h3>transfer</h3>++<p>Use for repositories that are used to transfer data between other+repositories, but do not need to retain data themselves. For+example, a repository on a server, or in the cloud, or a small+USB drive used in a sneakernet.</p>++<p>The preferred content expression for these causes them to get and retain+data until all clients have a copy.</p>++<p><code>(not (inallgroup=client and copies=client:2) and ($client)</code></p>++<p>The "copies=client:2" part of the above handles the case where+there is only one client repository. It makes a transfer repository+speculatively prefer content in this case, even though it as of yet+has nowhere to transfer it to. Presumably, another client repository+will be added later.</p>++<h3>backup</h3>++<p>All content is preferred.</p>++<p><code>include=*</code></p>++<h3>incremental backup</h3>++<p>Only prefers content that's not already backed up to another backup+or incremental backup repository.</p>++<p><code>(include=* and (not copies=backup:1) and (not copies=incrementalbackup:1)) or (not copies=semitrusted+:1)</code></p>++<h3>small archive</h3>++<p>Only prefers content that's located in an "archive" directory, and+only if it's not already been archived somewhere else.</p>++<p><code>((include=*/archive/* or include=archive/*) and not (copies=archive:1 or copies=smallarchive:1)) or (not copies=semitrusted+:1)</code></p>++<h3>full archive</h3>++<p>All content is preferred, unless it's already been archived somewhere else.</p>++<p><code>(not (copies=archive:1 or copies=smallarchive:1)) or (not copies=semitrusted+:1)</code></p>++<p>Note that if you want to archive multiple copies (not a bad idea!),+you should instead configure all your archive repositories with a+version of the above preferred content expression with a larger+number of copies.</p>++<h3>source</h3>++<p>Use for repositories where files are often added, but that do not need to+retain files for local use. For example, a repository on a camera, where+it's desirable to remove photos as soon as they're transferred elsewhere.</p>++<p>The preferred content expression for these causes them to only retain+data until a copy has been sent to some other repository.</p>++<p><code>not (copies=1)</code></p>++<h3>manual</h3>++<p>This gives you nearly full manual control over what content is stored in the+repository. This allows using the <a href="./assistant.html">assistant</a> without it trying to keep a+local copy of every file. Instead, you can manually run <code>git annex get</code>,+<code>git annex drop</code>, etc to manage content. Only content that is present+is preferred.</p>++<p>The exception to this manual control is that content that a client+repository would not want is not preferred. So, files in archive+directories are not preferred once their content has+reached an archive repository.</p>++<p><code>present and ($client)</code></p>++<h3>public</h3>++<p>This is used for publishing information to a repository that can be+publically accessed. Only files in a directory with a particular name+will be published. (The directory can be located anywhere in the+repository.)</p>++<p>The name of the directory can be configured using+<code>git annex initremote $remote preferreddir=$dirname</code></p>++<p><code>inpreferreddir</code></p>++<h3>unwanted</h3>++<p>Use for repositories that you don't want to exist. This will result+in any content on them being moved away to other repositories. (Works+best when the unwanted repository is also marked as untrusted or dead.)</p>++<p><code>exclude=*</code></p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-7aa7f7b86e46f2d985d49cc199f4df8c">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-7aa7f7b86e46f2d985d49cc199f4df8c">Interplay with numcopies</a>++</div>++<div class="inlinecontent">+<p>How does the preferred content settings interfere with the numcopies setting?</p>++<p>I could not get behind it. E.g. a case I do not unterstand:</p>++<p>I have a preferred setting evaluating to true and still</p>++<pre><code>git annex get --auto+</code></pre>++<p>does nothing, if the number of copies produced would surpass the numcopies setting.</p>++<p>Thx</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlgyVag95OnpvSzQofjyX0WjW__MOMKsl0">Sehr</a>+</span>+++— <span class="date">Wed Dec 5 16:41:26 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-8a48857f456119600a50324c80c2f638">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-8a48857f456119600a50324c80c2f638">comment 2</a>++</div>++<div class="inlinecontent">+Yeah, that didn't make sense. I've fixed it, so it gets files if needed for either numcopies or preferred content.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Dec 6 13:24:29 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e2601538e739674cc274918ebeb2e6c4">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-e2601538e739674cc274918ebeb2e6c4">comment 4</a>++</div>++<div class="inlinecontent">+<p>Built a new copy of git-annex yesterday. I have a "client" on my macbook, and two "backup"s, one on an external HD, one on an ssh git remote.</p>++<p>git annex get --auto works beautifully!</p>++<p>It doesn't seem to work for copying content <em>to</em> a place where it's needed, though.</p>++<p>If I drop a file from my "backup" USB drive, and then go back to my macbook and do a "git annex sync" and "git annex copy --to=usbdrive --auto" it does not send the file out to the USB drive, even though by preferred content settings, the USB drive should "want" the file because it's a backup drive and it wants all content.</p>++<p>Similarly, if I add a new file on my macbook and then do a "git annex copy --to=usbdrive auto" it does not get copied to the USB drive.</p>++<p>Is this missing functionality, or should the preferred content setting for remotes only affect the assistant?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>+</span>+++— <span class="date">Fri Dec 7 16:24:18 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a669d042fd6f184e78e9798a738e9327">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-a669d042fd6f184e78e9798a738e9327">comment 4</a>++</div>++<div class="inlinecontent">+It was a bug in the backup group's preferred content pagespec, introduced by the changes I made to fix the previous problem. Now fixed.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Mon Dec 10 15:46:01 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-5275886ac700e220459b5eccbfff274d">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-5275886ac700e220459b5eccbfff274d">comment 5</a>++</div>++<div class="inlinecontent">+thanks!++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://edheil.wordpress.com/">edheil [wordpress.com]</a>+</span>+++— <span class="date">Tue Dec 11 12:03:04 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-b7ec0a480dc84c0cea60c9c005df30d4">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-b7ec0a480dc84c0cea60c9c005df30d4">comment 6</a>++</div>++<div class="inlinecontent">+<p>Is there a way to change these definitions for a given annex?</p>++<p>ie: in this repo make "client" mean</p>++<pre><code>present and exclude=*/archive/* and exclude=archive/*+</code></pre>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>+</span>+++— <span class="date">Wed Jan 9 23:00:52 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c6afb7ede18e5b18a5135bf51962ce33">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-c6afb7ede18e5b18a5135bf51962ce33">comment 7</a>++</div>++<div class="inlinecontent">+Sorry, there's not. The expressions used for "standard" are built in.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Wed Jan 9 23:51:38 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-2f220f751e429dea031764b51d5e6133">++++<div class="comment-subject">++<a href="/preferred_content.html#comment-2f220f751e429dea031764b51d5e6133">comment 8</a>++</div>++<div class="inlinecontent">+<p>By way of a feature request: Maybe the way to do this is to have an additional keyword like "config" or "repo" that allows you to use vicfg and/or git config to set alternative rules and even additional group names.</p>++<p>In git config:</p>++<pre><code>annex.groups.<groupname> = present and exclude=*/archive/* and exclude=archive/*+</code></pre>++<p>in vicfg:</p>++<pre><code># (for passport)+#trust A0637025-ED47-4F95-A887-346121F1B4A0 = semitrusted++# (for passport)+group A0637025-ED47-4F95-A887-346121F1B4A0 = transfer++# (for passport)+preferred-content A0637025-ED47-4F95-A887-346121F1B4A0 = repo++# (for transfer)+group-content transfer = present and exclude=*/archive/* and exclude=archive/*+</code></pre>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>+</span>+++— <span class="date">Thu Jan 10 06:24:28 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./walkthrough/automatically_managing_content.html">walkthrough/automatically managing content</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,140 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>related software</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+related software++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Some folks have built other software on top of git-annex, or that is+designed to interoperate with it.</p>++<ul>+<li>The <a href="./assistant.html">git-annex assistant</a> is included in git-annex,+and extends its use cases into new territory.</li>+<li><a href="https://github.com/rubiojr/git-annex-watcher">git-annex-watcher</a>+is a status icon for your desktop.</li>+<li><span class="createlink">gadu - git-annex disk usage</span> is a du like utility that+is git-annex aware.</li>+<li><a href="http://hackage.haskell.org/package/sizes">sizes</a> is another du-like+utility, with a <code>-A</code> switch that enables git-annex support.</li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/other_stuff.html">links/other stuff</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 67316 bytes)
@@ -0,0 +1,171 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>scalability</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+scalability++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex is designed for scalability. The key points are:</p>++<ul>+<li><p>Arbitrarily large files can be managed. The only constraint+on file size are how large a file your filesystem can hold.</p>++<p>While git-annex does checksum files by default, there+is a <a href="./backends.html">WORM backend</a> available that avoids the checksumming+overhead, so you can add new, enormous files, very fast. This also+allows it to be used on systems with very slow disk IO.</p></li>+<li><p>Memory usage should be constant. This is a "should", because there+can sometimes be leaks (and this is one of haskell's weak spots),+but git-annex is designed so that it does not need to hold all+the details about your repository in memory.</p>++<p>The one exception is that <span class="createlink">git-annex unused eats memory</span>,+because it <em>does</em> need to hold the whole repo state in memory. But+that is still considered a bug, and hoped to be solved one day.+Luckily, that command is not often used.</p></li>+<li><p>Many files can be managed. The limiting factor is git's own+limitations in scaling to repositories with a lot of files, and as git+improves this will improve. Scaling to hundreds of thousands of files+is not a problem, scaling beyond that and git will start to get slow.</p>++<p>To some degree, git-annex works around inefficiencies in git; for+example it batches input sent to certain git commands that are slow+when run in an enormous repository.</p></li>+<li><p>It can use as much, or as little bandwidth as is available. In+particular, any interrupted file transfer can be resumed by git-annex.</p></li>+</ul>+++<h2>scalability tips</h2>++<ul>+<li><p>If the files are so big that checksumming becomes a bottleneck, consider+using the <a href="./backends.html">WORM backend</a>. You can always <code>git annex migrate</code>+files to a checksumming backend later on.</p></li>+<li><p>If you're adding a huge number of files at once (hundreds of thousands),+you'll soon notice that git-annex periodically stops and say+"Recording state in git" while it runs a <code>git add</code> command that+becomes increasingly expensive. Consider adjusting the <code>annex.queuesize</code>+to a higher value, at the expense of it using more memory.</p></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/the_details.html">links/the details</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,133 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>sidebar</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+sidebar++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,429 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>sitemap</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+sitemap++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<div class="map">+<ul>+<li><a href="./assistant.html" class="mapitem">assistant</a>+<ul>+<li><a href="./assistant/archival_walkthrough.html" class="mapitem">archival walkthrough</a>+</li>+<li><a href="./assistant/local_pairing_walkthrough.html" class="mapitem">local pairing walkthrough</a>+</li>+<li><a href="./assistant/quickstart.html" class="mapitem">quickstart</a>+</li>+<li><a href="./assistant/release_notes.html" class="mapitem">release notes</a>+</li>+<li><a href="./assistant/remote_sharing_walkthrough.html" class="mapitem">remote sharing walkthrough</a>+</li>+<li><a href="./assistant/share_with_a_friend_walkthrough.html" class="mapitem">share with a friend walkthrough</a>+</li>+<li><a href="./assistant/thanks.html" class="mapitem">thanks</a>+</li>+</ul>+</li>+<li><a href="./backends.html" class="mapitem">backends</a>+</li>+<li><a href="./bare_repositories.html" class="mapitem">bare repositories</a>+</li>+<li><a href="./coding_style.html" class="mapitem">coding style</a>+</li>+<li><a href="./comments.html" class="mapitem">comments</a>+</li>+<li><a href="./contact.html" class="mapitem">contact</a>+</li>+<li><a href="./copies.html" class="mapitem">copies</a>+</li>+<li><a href="./design.html" class="mapitem">design</a>+<ul>+<li><a href="./design/assistant.html" class="mapitem">assistant</a>+<ul>+<li><a href="./design/assistant/OSX.html" class="mapitem">OSX</a>+</li>+<li><a href="./design/assistant/android.html" class="mapitem">android</a>+</li>+<li><a href="./design/assistant/cloud.html" class="mapitem">cloud</a>+</li>+<li><a href="./design/assistant/configurators.html" class="mapitem">configurators</a>+</li>+<li><a href="./design/assistant/deltas.html" class="mapitem">deltas</a>+</li>+<li><a href="./design/assistant/desymlink.html" class="mapitem">desymlink</a>+</li>+<li><a href="./design/assistant/encrypted_git_remotes.html" class="mapitem">encrypted git remotes</a>+</li>+<li><a href="./design/assistant/inotify.html" class="mapitem">inotify</a>+</li>+<li><a href="./design/assistant/leftovers.html" class="mapitem">leftovers</a>+</li>+<li><a href="./design/assistant/more_cloud_providers.html" class="mapitem">more cloud providers</a>+</li>+<li><a href="./design/assistant/pairing.html" class="mapitem">pairing</a>+</li>+<li><a href="./design/assistant/partial_content.html" class="mapitem">partial content</a>+</li>+<li><a href="./design/assistant/polls.html" class="mapitem">polls</a>+<ul>+<li><a href="./design/assistant/polls/Android.html" class="mapitem">Android</a>+</li>+<li><a href="./design/assistant/polls/Android_default_directory.html" class="mapitem">Android default directory</a>+</li>+<li><a href="./design/assistant/polls/goals_for_April.html" class="mapitem">goals for April</a>+</li>+<li><a href="./design/assistant/polls/prioritizing_special_remotes.html" class="mapitem">prioritizing special remotes</a>+</li>+<li><a href="./design/assistant/polls/what_is_preventing_me_from_using_git-annex_assistant.html" class="mapitem">what is preventing me from using git-annex assistant</a>+</li>+</ul>+</li>+<li><a href="./design/assistant/progressbars.html" class="mapitem">progressbars</a>+</li>+<li><a href="./design/assistant/rate_limiting.html" class="mapitem">rate limiting</a>+</li>+<li><a href="./design/assistant/syncing.html" class="mapitem">syncing</a>+</li>+<li><a href="./design/assistant/transfer_control.html" class="mapitem">transfer control</a>+</li>+<li><a href="./design/assistant/webapp.html" class="mapitem">webapp</a>+</li>+<li><a href="./design/assistant/windows.html" class="mapitem">windows</a>+</li>+<li><a href="./design/assistant/xmpp.html" class="mapitem">xmpp</a>+</li>+</ul>+</li>+<li><a href="./design/encryption.html" class="mapitem">encryption</a>+</li>+</ul>+</li>+<li><a href="./direct_mode.html" class="mapitem">direct mode</a>+</li>+<li><a href="./distributed_version_control.html" class="mapitem">distributed version control</a>+</li>+<li><a href="./download.html" class="mapitem">download</a>+</li>+<li><a href="./encryption.html" class="mapitem">encryption</a>+</li>+<li><a href="./feeds.html" class="mapitem">feeds</a>+<li><span class="createlink">footer</span>+<ul>+</li>+<li><a href="./footer/column_a.html" class="mapitem">column a</a>+</li>+<li><a href="./footer/column_b.html" class="mapitem">column b</a>+</li>+</ul>+</li>+<li><a href="./future_proofing.html" class="mapitem">future proofing</a>+</li>+<li><a href="./git-annex.html" class="mapitem">git-annex</a>+</li>+<li><a href="./git-annex-shell.html" class="mapitem">git-annex-shell</a>+</li>+<li><a href="./git-union-merge.html" class="mapitem">git-union-merge</a>+</li>+<li><a href="./how_it_works.html" class="mapitem">how it works</a>+</li>+<li><a href="./index.html" class="mapitem">index</a>+</li>+<li><a href="./install.html" class="mapitem">install</a>+<ul>+<li><a href="./install/Android.html" class="mapitem">Android</a>+</li>+<li><a href="./install/ArchLinux.html" class="mapitem">ArchLinux</a>+</li>+<li><a href="./install/Debian.html" class="mapitem">Debian</a>+</li>+<li><a href="./install/Fedora.html" class="mapitem">Fedora</a>+</li>+<li><a href="./install/FreeBSD.html" class="mapitem">FreeBSD</a>+</li>+<li><a href="./install/Gentoo.html" class="mapitem">Gentoo</a>+</li>+<li><a href="./install/Linux_standalone.html" class="mapitem">Linux standalone</a>+</li>+<li><a href="./install/NixOS.html" class="mapitem">NixOS</a>+</li>+<li><a href="./install/OSX.html" class="mapitem">OSX</a>+<ul>+<li><a href="./install/OSX/old_comments.html" class="mapitem">old comments</a>+</li>+</ul>+</li>+<li><a href="./install/ScientificLinux5.html" class="mapitem">ScientificLinux5</a>+</li>+<li><a href="./install/Ubuntu.html" class="mapitem">Ubuntu</a>+</li>+<li><a href="./install/cabal.html" class="mapitem">cabal</a>+</li>+<li><a href="./install/fromscratch.html" class="mapitem">fromscratch</a>+</li>+<li><a href="./install/openSUSE.html" class="mapitem">openSUSE</a>+</li>+</ul>+</li>+<li><a href="./internals.html" class="mapitem">internals</a>+<ul>+<li><a href="./internals/hashing.html" class="mapitem">hashing</a>+</li>+<li><a href="./internals/key_format.html" class="mapitem">key format</a>+</li>+</ul>+</li>+<li><a href="./license.html" class="mapitem">license</a>+<li><span class="createlink">links</span>+<ul>+</li>+<li><a href="./links/key_concepts.html" class="mapitem">key concepts</a>+</li>+<li><a href="./links/other_stuff.html" class="mapitem">other stuff</a>+</li>+<li><a href="./links/the_details.html" class="mapitem">the details</a>+</li>+</ul>+</li>+<li><a href="./location_tracking.html" class="mapitem">location tracking</a>+</li>+<li><a href="./meta.html" class="mapitem">meta</a>+</li>+<li><a href="./news.html" class="mapitem">news</a>+</li>+<li><a href="./not.html" class="mapitem">not</a>+</li>+<li><a href="./preferred_content.html" class="mapitem">preferred content</a>+</li>+<li><a href="./related_software.html" class="mapitem">related software</a>+</li>+<li><a href="./scalability.html" class="mapitem">scalability</a>+</li>+<li><a href="./sidebar.html" class="mapitem">sidebar</a>+</li>+<li><span class="selflink">sitemap</span>+</li>+<li><a href="./special_remotes.html" class="mapitem">special remotes</a>+<ul>+<li><a href="./special_remotes/S3.html" class="mapitem">S3</a>+</li>+<li><a href="./special_remotes/bup.html" class="mapitem">bup</a>+</li>+<li><a href="./special_remotes/directory.html" class="mapitem">directory</a>+</li>+<li><a href="./special_remotes/glacier.html" class="mapitem">glacier</a>+</li>+<li><a href="./special_remotes/hook.html" class="mapitem">hook</a>+</li>+<li><a href="./special_remotes/rsync.html" class="mapitem">rsync</a>+</li>+<li><a href="./special_remotes/web.html" class="mapitem">web</a>+</li>+<li><a href="./special_remotes/webdav.html" class="mapitem">webdav</a>+</li>+<li><a href="./special_remotes/xmpp.html" class="mapitem">xmpp</a>+</li>+</ul>+</li>+<li><a href="./summary.html" class="mapitem">summary</a>+</li>+<li><a href="./sync.html" class="mapitem">sync</a>+<li><span class="createlink">templates</span>+<ul>+</li>+<li><a href="./templates/bugtemplate.html" class="mapitem">bugtemplate</a>+</li>+</ul>+</li>+<li><a href="./testimonials.html" class="mapitem">testimonials</a>+</li>+<li><a href="./tips.html" class="mapitem">tips</a>+</li>+<li><a href="./transferring_data.html" class="mapitem">transferring data</a>+</li>+<li><a href="./trust.html" class="mapitem">trust</a>+</li>+<li><a href="./upgrades.html" class="mapitem">upgrades</a>+<ul>+<li><a href="./upgrades/SHA_size.html" class="mapitem">SHA size</a>+</li>+</ul>+<li><span class="createlink">use case</span>+<ul>+</li>+<li><a href="./use_case/Alice.html" class="mapitem">Alice</a>+</li>+<li><a href="./use_case/Bob.html" class="mapitem">Bob</a>+</li>+</ul>+</li>+<li><a href="./users.html" class="mapitem">users</a>+</li>+<li><a href="./videos.html" class="mapitem">videos</a>+</li>+<li><a href="./walkthrough.html" class="mapitem">walkthrough</a>+<ul>+<li><a href="./walkthrough/adding_a_remote.html" class="mapitem">adding a remote</a>+</li>+<li><a href="./walkthrough/adding_files.html" class="mapitem">adding files</a>+</li>+<li><a href="./walkthrough/automatically_managing_content.html" class="mapitem">automatically managing content</a>+</li>+<li><a href="./walkthrough/backups.html" class="mapitem">backups</a>+</li>+<li><a href="./walkthrough/creating_a_repository.html" class="mapitem">creating a repository</a>+</li>+<li><a href="./walkthrough/fsck:_verifying_your_data.html" class="mapitem">fsck: verifying your data</a>+</li>+<li><a href="./walkthrough/fsck:_when_things_go_wrong.html" class="mapitem">fsck: when things go wrong</a>+</li>+<li><a href="./walkthrough/getting_file_content.html" class="mapitem">getting file content</a>+</li>+<li><a href="./walkthrough/modifying_annexed_files.html" class="mapitem">modifying annexed files</a>+</li>+<li><a href="./walkthrough/more.html" class="mapitem">more</a>+</li>+<li><a href="./walkthrough/moving_file_content_between_repositories.html" class="mapitem">moving file content between repositories</a>+</li>+<li><a href="./walkthrough/removing_files.html" class="mapitem">removing files</a>+</li>+<li><a href="./walkthrough/removing_files:_When_things_go_wrong.html" class="mapitem">removing files: When things go wrong</a>+</li>+<li><a href="./walkthrough/renaming_files.html" class="mapitem">renaming files</a>+</li>+<li><a href="./walkthrough/syncing.html" class="mapitem">syncing</a>+</li>+<li><a href="./walkthrough/transferring_files:_When_things_go_wrong.html" class="mapitem">transferring files: When things go wrong</a>+</li>+<li><a href="./walkthrough/unused_data.html" class="mapitem">unused data</a>+</li>+<li><a href="./walkthrough/using_bup.html" class="mapitem">using bup</a>+</li>+<li><a href="./walkthrough/using_ssh_remotes.html" class="mapitem">using ssh remotes</a>+</li>+</ul>+</li>+</ul>+</div>+++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/other_stuff.html">links/other stuff</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,573 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>special remotes</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+special remotes++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex can transfer data to and from configured git remotes.+Normally those remotes are normal git repositories (bare and non-bare;+local and remote), that store the file contents in their own git-annex+directory.</p>++<p>But, git-annex also extends git's concept of remotes, with these special+types of remotes. These can be used just like any normal remote by git-annex.+They cannot be used by other git commands though.</p>++<ul>+<li><a href="./special_remotes/S3.html">S3</a> (Amazon S3, and other compatible services)</li>+<li><a href="./special_remotes/glacier.html">Amazon Glacier</a></li>+<li><a href="./special_remotes/bup.html">bup</a></li>+<li><a href="./special_remotes/directory.html">directory</a></li>+<li><a href="./special_remotes/rsync.html">rsync</a></li>+<li><a href="./special_remotes/webdav.html">webdav</a></li>+<li><a href="./special_remotes/web.html">web</a></li>+<li><a href="./special_remotes/xmpp.html">xmpp</a></li>+<li><a href="./special_remotes/hook.html">hook</a></li>+</ul>+++<p>The above special remotes can be used to tie git-annex+into many cloud services. Here are specific instructions+for various cloud things:</p>++<ul>+<li><a href="./tips/using_Amazon_S3.html">using Amazon S3</a></li>+<li><a href="./tips/using_Amazon_Glacier.html">using Amazon Glacier</a></li>+<li><a href="./tips/Internet_Archive_via_S3.html">Internet Archive via S3</a></li>+<li><span class="createlink">tahoe-lafs</span></li>+<li><a href="./tips/using_box.com_as_a_special_remote.html">using box.com as a special remote</a></li>+<li><span class="createlink">special remote for IMAP</span></li>+</ul>+++<h2>Unused content on special remotes</h2>++<p>Over time, special remotes can accumulate file content that is no longer+referred to by files in git. Normally, unused content in the current+repository is found by running <code>git annex unused</code>. To detect unused content+on special remotes, instead use <code>git annex unused --from</code>. Example:</p>++<pre><code>$ git annex unused --from mys3+unused mys3 (checking for unused data...) + Some annexed data on mys3 is not used by any files in this repository.+ NUMBER KEY+ 1 WORM-s3-m1301674316--foo+ (To see where data was previously used, try: git log --stat -S'KEY')+ (To remove unwanted data: git-annex dropunused --from mys3 NUMBER)+$ git annex dropunused --from mys3 1+dropunused 12948 (from mys3...) ok+</code></pre>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-f1021e7fb1ba30235004bab75f81104a">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-f1021e7fb1ba30235004bab75f81104a">MediaFire</a>++</div>++<div class="inlinecontent">+MediaFire offers 50GB of free storage (max size 200MB). It would be great to support it as a new special remote.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8">Jon Ander</a>+</span>+++— <span class="date">Thu Jan 17 08:17:54 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f3effaa58c166dcc041a25405710e882">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-f3effaa58c166dcc041a25405710e882">comment 2</a>++</div>++<div class="inlinecontent">+Mediafire does not appear to offer any kind of API for its storage.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Jan 17 12:44:25 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-31e23b0e9a5c50eb6ef98c6617b29fa9">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-31e23b0e9a5c50eb6ef98c6617b29fa9">MediaFire REST API</a>++</div>++<div class="inlinecontent">+Wouldn't this be enough? http://developers.mediafire.com/index.php/REST_API++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8">Jon Ander</a>+</span>+++— <span class="date">Thu Jan 17 12:53:41 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-b8f280b34a06a44750b66072ac845b05">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-b8f280b34a06a44750b66072ac845b05">JABOF special remote</a>++</div>++<div class="inlinecontent">+<p>Similar to a JABOD, this would be Just A Bunch Of Files. I already have a NAS with a file structure conducive to serving media to my TV. However, it's not capable (currently) of running git-annex locally. It would be great to be able to tell annex the path to a file there as a remote much like a web remote from "git annex addurl". That way I can safely drop all the files I took with me on my trip, while annex still verifies and counts the file on the NAS as a location.</p>++<p>There are some interesting things to figure out for this to be efficient. For example, SHAs of the files. Maybe store that in a metadata file in the directory of the files? Or perhaps use the WORM backend by default?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>+</span>+++— <span class="date">Sat Jan 19 04:34:32 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-0b407b8fe22081799d0a62b6ff310897">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-0b407b8fe22081799d0a62b6ff310897">comment 5</a>++</div>++<div class="inlinecontent">+The web special remote is recently able to use file:// URL's, so you can just point to files on some arbitrary storage if you want to.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sat Jan 19 12:05:13 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-b7ca8f0707188bb455c1deb542b404be">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-b7ca8f0707188bb455c1deb542b404be">Rackspace US/UK</a>++</div>++<div class="inlinecontent">+It'd be awesome to be able to use Rackspace as remote storage as an alternative to S3, I would submit a patch, but know 0 Haskell :D++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlBia1J9-PoXgZYj2LASf7Bs__IqK3T8qQ">Greg</a>+</span>+++— <span class="date">Wed Jan 30 07:33:12 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-60556d1f805cf5682d0dfaeee07463d6">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-60556d1f805cf5682d0dfaeee07463d6">Rapidshare</a>++</div>++<div class="inlinecontent">+<p>Would it be possible to support Rapidshare as a new special remote?+They offer unlimited storage for 6-10€ per month. It would be great for larger backups.+Their API can be found here: http://images.rapidshare.com/apidoc.txt</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawn-UoTjMBsVh6q4HNViGwJi-5FNaCVQB7E">Nico</a>+</span>+++— <span class="date">Sat Feb 2 12:49:58 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-5d059e69f65ebdf284be57fe4fcda77b">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-5d059e69f65ebdf284be57fe4fcda77b">'webhook' special remote?</a>++</div>++<div class="inlinecontent">+<p>Is there any chance a special remote that functions like a hybrid of 'web' and 'hook'? At least in theory, it should be relatively simple, since it would only support 'get' and the only meaningful parameters to pass would be the URL and the output file name.</p>++<p>Maybe make it something like git config annex.myprogram-webhook 'myprogram $ANNEX_URL $ANNEX_FILE', and fetching could work by adding a --handler or --type parameter to addurl.</p>++<p>The use case here is anywhere that simple 'fetch the file over HTTP/FTP/etc' isn't workable - maybe it's on rapidshare and you need to use plowshare to download it; maybe it's a youtube video and you want to use youtube-dl, maybe it's a chapter of a manga and you want to turn it into a CBZ file when you fetch it.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlRThEwuPnr8_bcuuCTQ0rQd3w6AfeMiLY">Alex</a>+</span>+++— <span class="date">Sun Feb 24 11:05:27 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-59648c5eed99b8979c1c70ee90c09f0e">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-59648c5eed99b8979c1c70ee90c09f0e">comment 9</a>++</div>++<div class="inlinecontent">+A <em>ridiculously</em> cool possibility would be to allow them to match against URLs and then handle those (youtube-dl for youtube video URLs, for instance), but that would be additional work on your end and isn't really necessary.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlRThEwuPnr8_bcuuCTQ0rQd3w6AfeMiLY">Alex</a>+</span>+++— <span class="date">Sun Feb 24 11:13:16 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-6fb4c73a17f84bcf38cc9ebf164090a8">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-6fb4c73a17f84bcf38cc9ebf164090a8">Rackspace Cloud Files support</a>++</div>++<div class="inlinecontent">+It'd be really cool to have Rackspace cloud files support. Like the guy above me said, I would submit a patch but not if I have to learn Haskell first :)++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkQqKSVY98PVGDIaYZdK9CodJdbh7cFfhY">Ashwin</a>+</span>+++— <span class="date">Fri Mar 22 04:20:40 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-18ee66a322dee292bddd66916c68ddb5">++++<div class="comment-subject">++<a href="/special_remotes.html#comment-18ee66a322dee292bddd66916c68ddb5">Re: Webhook special remote</a>++</div>++<div class="inlinecontent">+@Alex: You might see if the newly-added <span class="createlink">wishlist: allow configuration of downloader for addurl</span> could be made to do what you need... I've not played around with it yet, but perhaps you could set the downloader to be something that can sort out the various URLs and send them to the correct downloading tool?++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=andy&do=goto">andy</a>++</span>+++— <span class="date">Fri Apr 12 04:54:47 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./backends/comment_2_1f2626eca9004b31a0b7fc1a0df8027b.html">backends/comment 2 1f2626eca9004b31a0b7fc1a0df8027b</a>++<a href="./copies.html">copies</a>++<a href="./design/assistant/more_cloud_providers.html">design/assistant/more cloud providers</a>++<a href="./design/assistant/polls/prioritizing_special_remotes.html">design/assistant/polls/prioritizing special remotes</a>++<a href="./encryption.html">encryption</a>++<a href="./how_it_works.html">how it works</a>++<a href="./internals.html">internals</a>++<a href="./links/key_concepts.html">links/key concepts</a>++<a href="./special_remotes/rsync/comment_2_25545dc0b53f09ae73b29899c8884b02.html">special remotes/rsync/comment 2 25545dc0b53f09ae73b29899c8884b02</a>++<a href="./tips/using_Amazon_S3.html">tips/using Amazon S3</a>+++<span class="popup">...+<span class="balloon">++<a href="./tips/using_box.com_as_a_special_remote.html">tips/using box.com as a special remote</a>++<a href="./tips/using_the_web_as_a_special_remote.html">tips/using the web as a special remote</a>++<a href="./transferring_data.html">transferring data</a>++<a href="./use_case/Alice.html">use case/Alice</a>++<a href="./walkthrough/modifying_annexed_files/comment_1_624b4a0b521b553d68ab6049f7dbaf8c.html">walkthrough/modifying annexed files/comment 1 624b4a0b521b553d68ab6049f7dbaf8c</a>++<a href="./walkthrough/using_bup.html">walkthrough/using bup</a>++</span>+</span>++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,451 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>S3</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+S3++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This special remote type stores file contents in a bucket in Amazon S3+or a similar service.</p>++<p>See <a href="../tips/using_Amazon_S3.html">using Amazon S3</a> and+<a href="../tips/Internet_Archive_via_S3.html">Internet Archive via S3</a> for usage examples.</p>++<h2>configuration</h2>++<p>The standard environment variables <code>AWS_ACCESS_KEY_ID</code> and+<code>AWS_SECRET_ACCESS_KEY</code> are used to supply login credentials+for Amazon. You need to set these only when running+<code>git annex initremote</code>, as they will be cached in a file only you+can read inside the local git repository.</p>++<p>A number of parameters can be passed to <code>git annex initremote</code> to configure+the S3 remote.</p>++<ul>+<li><p><code>encryption</code> - Required. Either "none" to disable encryption (not recommended),+or a value that can be looked up (using gpg -k) to find a gpg encryption+key that will be given access to the remote, or "shared" which allows+every clone of the repository to access the encrypted data (use with caution).</p>++<p>Note that additional gpg keys can be given access to a remote by+running enableremote with the new key id. See <a href="../encryption.html">encryption</a>.</p></li>+<li><p><code>embedcreds</code> - Optional. Set to "yes" embed the login credentials inside+the git repository, which allows other clones to also access them. This is+the default when gpg encryption is enabled; the credentials are stored+encrypted and only those with the repository's keys can access them.</p>++<p>It is not the default when using shared encryption, or no encryption.+Think carefully about who can access your repository before using+embedcreds without gpg encryption.</p></li>+<li><p><code>datacenter</code> - Defaults to "US". Other values include "EU",+"us-west-1", and "ap-southeast-1".</p></li>+<li><p><code>storageclass</code> - Default is "STANDARD". If you have configured git-annex+to preserve multiple <a href="../copies.html">copies</a>, consider setting this to "REDUCED_REDUNDANCY"+to save money.</p></li>+<li><p><code>host</code> and <code>port</code> - Specify in order to use a different, S3 compatable+service.</p></li>+<li><p><code>bucket</code> - S3 requires that buckets have a globally unique name,+so by default, a bucket name is chosen based on the remote name+and UUID. This can be specified to pick a bucket name.</p></li>+<li><p><code>fileprefix</code> - By default, git-annex places files in a tree rooted at the+top of the S3 bucket. When this is set, it's prefixed to the filenames+used. For example, you could set it to "foo/" in one special remote,+and to "bar/" in another special remote, and both special remotes could+then use the same bucket.</p></li>+<li><p><code>x-amz-*</code> are passed through as http headers when storing keys+in S3.</p></li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-e78d09fa4f81e60b0a5bbe36d8b16e5f">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-e78d09fa4f81e60b0a5bbe36d8b16e5f">environment variables</a>++</div>++<div class="inlinecontent">+Just noting that the environment variables <code>ANNEX_S3_ACCESS_KEY_ID</code> and <code>ANNEX_S3_SECRET_ACCESS_KEY</code> seem to have been changed to <code>AWS_ACCESS_KEY_ID</code> and <code>AWS_SECRET_ACCESS_KEY</code>++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY">Matt</a>+</span>+++— <span class="date">Tue May 29 08:40:25 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-bc9f8e8cc2d8fd72e5b6518798f0ebfc">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-bc9f8e8cc2d8fd72e5b6518798f0ebfc">comment 2</a>++</div>++<div class="inlinecontent">+Thanks, I've fixed that. (You could have too.. this is a wiki ;)++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue May 29 15:10:46 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-286cccd33f418b14269c9cb2701dbaf2">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-286cccd33f418b14269c9cb2701dbaf2">comment 3</a>++</div>++<div class="inlinecontent">+Thanks! Being new here, I didn't want to overstep my boundaries. I've gone ahead and made a small edit and will do so elsewhere as needed.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY">Matt</a>+</span>+++— <span class="date">Tue May 29 20:26:33 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-222c50147c35ecbc819e1834cb6f6860">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-222c50147c35ecbc819e1834cb6f6860">bucket/folder s3 remotes</a>++</div>++<div class="inlinecontent">+<p>it'd be really nice being able to configure a S3 remote of the form <code><bucket>/<folder></code> (not really a folder, of course, just the usual prefix trick used to simulate folders at S3). The remote = bucket architecture is not scalable at all, in terms of number of repositories.</p>++<p>how hard would it be to support this?</p>++<p>thanks, this is the only thing that's holding us back from using git-annex, nice tool!</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmX5gPNK35Dub-HzR0Yb3KXllbqc0rYRYs">Eduardo</a>+</span>+++— <span class="date">Thu Aug 9 06:52:07 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-1109d3fda1d755925bfac275335a7cb8">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-1109d3fda1d755925bfac275335a7cb8">comment 5</a>++</div>++<div class="inlinecontent">+I guess this could be useful if you have a <em>lot</em> of buckets already in use at S3, or if you want to be able to have a lot of distinct S3 special remotes. Implemented the <code>fileprefix</code> setting. Note that I have not tested it, beyond checking it builds, since I let my S3 account expire. Your testing would be appreciated.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Aug 9 14:01:06 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-75f6b47cb9420e144121e759946f410c">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-75f6b47cb9420e144121e759946f410c">Rackspace Cloud Files support?</a>++</div>++<div class="inlinecontent">+<p>Any chance I could bribe you to setup Rackspace Cloud Files support? We are using them and would hate to have a S3 bucket only for this.</p>++<p>https://github.com/rackspace/python-cloudfiles</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnY9ObrNrQuRp8Xs0XvdtJJssm5cp4NMZA">alan</a>+</span>+++— <span class="date">Thu Aug 23 17:00:11 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-d3268047d1eff90564547c661cdea8a5">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-d3268047d1eff90564547c661cdea8a5">S3 Remote Future Proof?</a>++</div>++<div class="inlinecontent">+Joey, I'm curious to understand how future proof an S3 remote is. Can I restore my files without git-annex?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmyFvkaewo432ELwtCoecUGou4v3jCP0Pc">Eric</a>+</span>+++— <span class="date">Sun Jan 20 05:21:50 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e9d48ba37aa5b01c236ab894057660b7">++++<div class="comment-subject">++<a href="/special_remotes/S3.html#comment-e9d48ba37aa5b01c236ab894057660b7">comment 8</a>++</div>++<div class="inlinecontent">+<p>If encryption is not used, the files are stored in S3 as-is, and can be accessed directly. They are stored in a hashed directory structure with the names of their key used, rather than the original filename. To get back to the original filename, a copy of the git repo would also be needed.</p>++<p>With encryption, you need the gpg key used in the encryption, or, for shared encryption, a symmetric key which is stored in the git repo.</p>++<p>See <a href="../future_proofing.html">future proofing</a> for non-S3 specific discussion of this topic.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sun Jan 20 16:37:09 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../special_remotes.html">special remotes</a>++<a href="../tips/Internet_Archive_via_S3.html">tips/Internet Archive via S3</a>++<a href="../tips/using_Amazon_S3.html">tips/using Amazon S3</a>++<a href="../tips/using_Google_Cloud_Storage.html">tips/using Google Cloud Storage</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,461 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>bup</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+bup++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This special remote type stores file contents in a+<a href="http://github.com/bup/bup">bup</a> repository. By using git-annex+in the front-end, and bup as a remote, you get an easy git-style+interface to large files, and easy backups of the file contents using git.</p>++<p>This is particularly well suited to collaboration on projects involving+large files, since both the git-annex and bup repositories can be+accessed like any other git repository.</p>++<p>See <a href="../walkthrough/using_bup.html">using bup</a> for usage examples.</p>++<p>Each individual key is stored in a bup remote using <code>bup split</code>, with+a git branch named the same as the key name. Content is retrieved from+bup using <code>bup join</code>. All other bup operations are up to you -- consider+running <code>bup fsck --generate</code> in a cron job to generate recovery blocks,+for example; or clone bup's git repository to further back it up.</p>++<h2>configuration</h2>++<p>These parameters can be passed to <code>git annex initremote</code> to configure bup:</p>++<ul>+<li><p><code>encryption</code> - Required. Either "none" to disable encryption of content+stored in bup (ssh will still be used to transport it securely),+or a value that can be looked up (using gpg -k) to find a gpg encryption+key that will be given access to the remote, or "shared" which allows+every clone of the repository to access the encrypted data (use with caution).</p>++<p>Note that additional gpg keys can be given access to a remote by+running enableremote with the new key id. See <a href="../encryption.html">encryption</a>.</p></li>+<li><p><code>buprepo</code> - Required. This is passed to <code>bup</code> as the <code>--remote</code>+to use to store data. To create the repository,<code>bup init</code> will be run.+Example: "buprepo=example.com:/big/mybup" or "buprepo=/big/mybup"+(To use the default <code>~/.bup</code> repository on the local host, specify "buprepo=")</p></li>+</ul>+++<p>Options to pass to <code>bup split</code> when sending content to bup can also+be specified, by using <code>git config annex.bup-split-options</code>. This+can be used to, for example, limit its bandwidth.</p>++<h2>notes</h2>++<p><a href="../git-annex-shell.html">git-annex-shell</a> does not support bup, due to the wacky way that bup+starts its server. So, to use bup, you need full shell access to the server.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-fcebb136f6078e006751a2bb398f72bd">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-fcebb136f6078e006751a2bb398f72bd">Error with bup and gnupg</a>++</div>++<div class="inlinecontent">+<p>Hello,</p>++<p>I get this error when trying to use git-annex with bup and gnupg:</p>++<pre>+move importable_pilot_surveys.tar (gpg) (checking localaseebup...) (to localaseebup...) +Traceback (most recent call last):+ File "/usr/lib/bup/cmd/bup-split", line 133, in + progress=prog)+ File "/usr/lib/bup/bup/hashsplit.py", line 167, in split_to_shalist+ for (sha,size,bits) in sl:+ File "/usr/lib/bup/bup/hashsplit.py", line 118, in _split_to_blobs+ for (blob, bits) in hashsplit_iter(files, keep_boundaries, progress):+ File "/usr/lib/bup/bup/hashsplit.py", line 86, in _hashsplit_iter+ bnew = next(fi)+ File "/usr/lib/bup/bup/helpers.py", line 86, in next+ return it.next()+ File "/usr/lib/bup/bup/hashsplit.py", line 49, in blobiter+ for filenum,f in enumerate(files):+ File "/usr/lib/bup/cmd/bup-split", line 128, in + files = extra and (open(fn) for fn in extra) or [sys.stdin]+IOError: [Errno 2] No such file or directory: '-'+</pre>+++<p>I was able to work-around this issue by altering /usr/lib/bup/cmd/bup-split (though I don't think its a bup bug) to just pull from stdin:</p>++<p>files = [sys.stdin]</p>++<p>on ~ line 128.</p>++<p>Any ideas? Also, do you think that bup's data-deduplication does anything when gnupg is enabled, i.e. is it just as well to use a directory remote with gnupg?</p>++<p>Thanks! Git annex rules!</p>++<p>Albert</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkgbXwQtPQSG8igdS7U8l031N8sqDmuyvk">Albert</a>+</span>+++— <span class="date">Mon Oct 22 16:56:56 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-65d022495714fd230318fc36328928ec">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-65d022495714fd230318fc36328928ec">comment 2</a>++</div>++<div class="inlinecontent">+<p>@Albert, thanks for reporting this bug (but put them in <span class="createlink">bugs</span> in future please).</p>++<p>This is specific to using the bup special remote with encryption. Without encryption it works. And no, it won't manage to deduplicate anything that's encrypted, as far as I know.</p>++<p>I think bup-split must have used - for stdin in the past, but now, it just reads from stdin when no file is specified, so I've updated git-annex.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue Oct 23 16:01:43 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e8e658180a98b2b4fa3ba75dab3f2d03">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-e8e658180a98b2b4fa3ba75dab3f2d03">Bup remotes in git-annex assistant</a>++</div>++<div class="inlinecontent">+<p>Hi,</p>++<p>Is the bup remote available via the Assistant user interface?</p>++<p>Unrelated question;</p>++<p>If you are syncing files between two bup repos on local usb drives, does it use git to sync the changes or does it use "bup split" to re-add the file? (Basically, is the syncing as efficient as possible using git-annex or would I have to go to a lower level)</p>++<p>Many Thanks,+Sek</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://sekenre.wordpress.com/">sekenre</a>+</span>+++— <span class="date">Wed Mar 13 08:54:56 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-ab4ff45deb1dbd6bdc4f358edf17f859">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-ab4ff45deb1dbd6bdc4f358edf17f859">comment 4</a>++</div>++<div class="inlinecontent">+<p>I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.</p>++<p>Your two bup repos would be synced using bup-split.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Wed Mar 13 12:05:50 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e83698f8503aa61fbb9e87d2d4cad27d">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-e83698f8503aa61fbb9e87d2d4cad27d">comment 5</a>++</div>++<div class="inlinecontent">+<p>I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.</p>++<p>Your two bup repos would be synced using bup-split.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Wed Mar 13 12:05:57 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-9eb04fc51f17b4ae6ea96bca6bb102eb">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-9eb04fc51f17b4ae6ea96bca6bb102eb">bup fail?</a>++</div>++<div class="inlinecontent">+<p>I've run into problems storing a huge number of files in the bup repo. It seems that thousands of branches are a problem. I don't know if it's a problem of git-annex, bup, or the filesystem.</p>++<p>How about adding an option to store tree/commit ids in git-annex instead of using branches in bup?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnZWCbRYPVnwscdkdEDwgQHZJLwW6H_AHo">Tobias</a>+</span>+++— <span class="date">Sun Mar 31 17:05:32 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-904c03f2de30340c297379a762529702">++++<div class="comment-subject">++<a href="/special_remotes/bup.html#comment-904c03f2de30340c297379a762529702">comment 7</a>++</div>++<div class="inlinecontent">+<p><code>bup-split</code> uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.</p>++<p>Yes, it would be possible to make git-annex store this in the git-annex branch instead.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Tue Apr 2 17:24:06 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../not.html">not</a>++<a href="../special_remotes.html">special remotes</a>++<a href="../walkthrough/using_bup.html">walkthrough/using bup</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,179 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>glacier</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+glacier++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This special remote type stores file contents in Amazon Glacier.</p>++<p>To use it, you need to have <a href="http://github.com/basak/glacier-cli">glacier-cli</a>+installed.</p>++<p>The unusual thing about Amazon Glacier is the multiple-hour delay it takes+to retrieve information out of Glacier. To deal with this, commands like+"git-annex get" request Glacier start the retrieval process, and will fail+due to the data not yet being available. You can then wait appriximately+four hours, re-run the same command, and this time, it will actually+download the data.</p>++<h2>configuration</h2>++<p>The standard environment variables <code>AWS_ACCESS_KEY_ID</code> and+<code>AWS_SECRET_ACCESS_KEY</code> are used to supply login credentials+for Amazon. You need to set these only when running+<code>git annex initremote</code>, as they will be cached in a file only you+can read inside the local git repository.</p>++<p>A number of parameters can be passed to <code>git annex initremote</code> to configure+the Glacier remote.</p>++<ul>+<li><p><code>encryption</code> - Required. Either "none" to disable encryption (not recommended),+or a value that can be looked up (using gpg -k) to find a gpg encryption+key that will be given access to the remote, or "shared" which allows+every clone of the repository to access the encrypted data (use with caution).</p>++<p>Note that additional gpg keys can be given access to a remote by+running enableremote with the new key id. See <a href="../encryption.html">encryption</a>.</p></li>+<li><p><code>embedcreds</code> - Optional. Set to "yes" embed the login credentials inside+the git repository, which allows other clones to also access them. This is+the default when gpg encryption is enabled; the credentials are stored+encrypted and only those with the repository's keys can access them.</p>++<p>It is not the default when using shared encryption, or no encryption.+Think carefully about who can access your repository before using+embedcreds without gpg encryption.</p></li>+<li><p><code>datacenter</code> - Defaults to "us-east-1".</p></li>+<li><p><code>vault</code> - By default, a vault name is chosen based on the remote name+and UUID. This can be specified to pick a vault name.</p></li>+<li><p><code>fileprefix</code> - By default, git-annex places files in a tree rooted at the+top of the Glacier vault. When this is set, it's prefixed to the filenames+used. For example, you could set it to "foo/" in one special remote,+and to "bar/" in another special remote, and both special remotes could+then use the same vault.</p></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../special_remotes.html">special remotes</a>++<a href="../tips/using_Amazon_Glacier.html">tips/using Amazon Glacier</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,266 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>hook</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+hook++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This special remote type lets you store content in a remote of your own+devising.</p>++<p>It's not recommended to use this remote type when another like <a href="./rsync.html">rsync</a>+or <a href="./directory.html">directory</a> will do. If your hooks are not carefully written, data+could be lost.</p>++<h2>example</h2>++<p>Here's a simple example that stores content on clay tablets. If you+implement this example in the real world, I'd appreciate a tour+next Apert! :) --<span class="createlink">Joey</span></p>++<pre><code># git config annex.cuneiform-store-hook 'tocuneiform < "$ANNEX_FILE" | tablet-writer --implement=stylus --title="$ANNEX_KEY" | tablet-proofreader | librarian --shelve --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2'+# git config annex.cuneiform-retrieve-hook 'librarian --get --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" | tablet-reader --implement=coffee --implement=glasses --force-monastic-dedication | fromcuneiform > "$ANNEX_FILE"'+# git config annex.cuneiform-remove-hook 'librarian --get --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" | goon --hit-with-hammer'+# git config annex.cuneiform-checkpresent-hook 'librarian --find --force-distrust-catalog --floor=$ANNEX_HASH_1 --shelf=$ANNEX_HASH_2 --title="$ANNEX_KEY" --shout-title'+# git annex initremote library type=hook hooktype=cuneiform encryption=none+# git annex describe library "the reborn Library of Alexandria (upgrade to bronze plates pending)"+</code></pre>++<p>Can you spot the potential data loss bugs in the above simple example?+(Hint: What happens when the <code>tablet-proofreader</code> exits nonzero?)</p>++<h2>configuration</h2>++<p>These parameters can be passed to <code>git annex initremote</code>:</p>++<ul>+<li><p><code>encryption</code> - Required. Either "none" to disable encryption,+or a value that can be looked up (using gpg -k) to find a gpg encryption+key that will be given access to the remote, or "shared" which allows+every clone of the repository to access the encrypted data.</p>++<p>Note that additional gpg keys can be given access to a remote by+running enableremote with the new key id. See <a href="../encryption.html">encryption</a>.</p></li>+<li><p><code>hooktype</code> - Required. This specifies a collection of hooks to use for+this remote.</p></li>+</ul>+++<h2>hooks</h2>++<p>Each type of hook remote is specified by a collection of hook commands.+Each hook command is run as a shell command line, and should return nonzero+on failure, and zero on success.</p>++<p>These environment variables are used to communicate with the hook commands:</p>++<ul>+<li><code>ANNEX_KEY</code> - name of a key to store, retrieve, remove, or check.</li>+<li><code>ANNEX_FILE</code> - a file containing the key's content</li>+<li><code>ANNEX_HASH_1</code> - short stable value, based on the key, can be used for hashing+into 1024 buckets.</li>+<li><code>ANNEX_HASH_2</code> - another hash value, can be used for a second level of hashing</li>+</ul>+++<p>The setting to use in git config for the hook commands are as follows:</p>++<ul>+<li><p><code>annex.$hooktype-store-hook</code> - Command run to store a key in the special remote.+<code>ANNEX_FILE</code> contains the content to be stored.</p></li>+<li><p><code>annex.$hooktype-retrieve-hook</code> - Command run to retrieve a key from the special remote.+<code>ANNEX_FILE</code> is a file that the retrieved content should be written to.+The file may already exist with a partial+copy of the content (or possibly just garbage), to allow for resuming+of partial transfers.</p></li>+<li><p><code>annex.$hooktype-remove-hook</code> - Command to remove a key from the special remote.</p></li>+<li><p><code>annex.$hooktype-checkpresent-hook</code> - Command to check if a key is present+in the special remote. Should output the key name to stdout, on its own line,+if and only if the key has been actively verified to be present in the+special remote (caching presence information is a very bad idea);+all other output to stdout will be ignored.</p></li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-70d5145af0290f63af3145c35487392f">++++<div class="comment-subject">++<a href="/special_remotes/hook.html#comment-70d5145af0290f63af3145c35487392f">Asynchronous hooks?</a>++</div>++<div class="inlinecontent">+<p>Is there a way to use asynchronous remotes? Interaction with git annex would have to+split the part of initiating some action from completing it.</p>++<p>I imagine I could <code>git annex copy</code> a file to an asynchronous remote and the command+would almost immediately complete. Later I would learn that the transfer is+completed, so the hook must be able to record that information in the <code>git-annex</code>+branch. An additional plumbing command seems required here as well as a way to+indicate that even though the store-hook completed, the file is not transferred.</p>++<p>Similarly <code>git annex get</code> would immediately return without actually fetching the+file. This should already be possible by returning non-zero from the retrieve-hook.+Later the hook could use plumbing level commands to actually stick the received file+into the repository.</p>++<p>The remove-hook should need no changes, but the checkpresent-hook would be more like+a trigger without any actual result. The extension of the plumbing required for the+extension to the receive-hook could update the location log. A downside here is that+you never know when a fsck has completed.</p>++<p>My proposal does not include a way to track the completion of actions, but relies on+the hook to always complete them reliably. It is not clear that this is the best road+for asynchronous hooks.</p>++<p>One use case for this would be a remote that is only accessible via uucp. Are there+other use cases? Is the drafted interface useful?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=helmut&do=goto">helmut</a>++</span>+++— <span class="date">Sat Oct 13 05:46:14 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../special_remotes.html">special remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,291 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>rsync</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+rsync++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This special remote type rsyncs file contents to somewhere else.</p>++<p>Setup example:</p>++<pre><code># git annex initremote myrsync type=rsync rsyncurl=rsync://rsync.example.com/myrsync encryption=joey@kitenet.net+# git annex describe myrsync "rsync server"+</code></pre>++<p>Or for using rsync over SSH</p>++<pre><code># git annex initremote myrsync type=rsync rsyncurl=ssh.example.com:/myrsync encryption=joey@kitenet.net+# git annex describe myrsync "rsync server"+</code></pre>++<h2>configuration</h2>++<p>These parameters can be passed to <code>git annex initremote</code> to configure rsync:</p>++<ul>+<li><p><code>encryption</code> - Required. Either "none" to disable encryption of content+stored on the remote rsync server,+or a value that can be looked up (using gpg -k) to find a gpg encryption+key that will be given access to the remote, or "shared" which allows+every clone of the repository to decrypt the encrypted data.</p>++<p>Note that additional gpg keys can be given access to a remote by+running enableremote with the new key id. See <a href="../encryption.html">encryption</a>.</p></li>+<li><p><code>rsyncurl</code> - Required. This is the url or <code>hostname:/directory</code> to+pass to rsync to tell it where to store content.</p></li>+<li><p><code>shellescape</code> - Optional. Set to "no" to avoid shell escaping normally+done when using rsync over ssh. That escaping is needed with typical+setups, but not with some hosting providers that do not expose rsynced+filenames to the shell. You'll know you need this option if <code>git annex get</code>+from the special remote fails with an error message containing a single+quote (<code>'</code>) character. If that happens, you can run enableremote+setting shellescape=no.</p></li>+</ul>+++<p>The <code>annex-rsync-options</code> git configuration setting can be used to pass+parameters to rsync.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-365df6b0ce20645343d07bea2e6cd84f">++++<div class="comment-subject">++<a href="/special_remotes/rsync.html#comment-365df6b0ce20645343d07bea2e6cd84f">rsync description and example</a>++</div>++<div class="inlinecontent">+<p>Hi, I would like to see a example of setting up / using e.g. rsync.net as a repo.</p>++<p>Please also provide a highlevel description of how the rsync repo fits in with git-annex.</p>++<p>Q1. can you adds files to the remote rsync repo, and will they be detected and synced back ?+Q2. is all the git history rsync'd to remote ? how do i recover if i loose all data except the remote rsync repo ?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=diepes&do=goto">diepes</a>++</span>+++— <span class="date">Fri Mar 29 11:57:20 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-525d3951ab1f09fdf471f450a798b50e">++++<div class="comment-subject">++<a href="/special_remotes/rsync.html#comment-525d3951ab1f09fdf471f450a798b50e">comment 2</a>++</div>++<div class="inlinecontent">+No, special remotes do not contain a copy of the git repository, and no, git-annex does not notice when files are added to remote rsync repositories. Suggest you read <a href="../special_remotes.html">special remotes</a>.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Fri Mar 29 13:12:47 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-c8fc6dad2ad0eef8accbe31bfd82542b">++++<div class="comment-subject">++<a href="/special_remotes/rsync.html#comment-c8fc6dad2ad0eef8accbe31bfd82542b">sshfs ? and no sync from special remote to 2nd git-annex ?</a>++</div>++<div class="inlinecontent">+<ul>+<li>It sound to me it would be 1st prize if the cloud provider supported the git-annex functionality over ssh.</li>+<li>Then it could be a full git-annex repo, and used for recovery if my laptop with the git info gets lost.</li>+<li>From special remotes "These can be used just like any normal remote by git-annex"</li>+<li><p>Your comment "No, special remotes do not contain a copy of the git repository"</p></li>+<li><p>so a special remote is</p></li>+<li><p>"A. just a remote filesystem, that contains the objects with sha1 names ? "</p></li>+<li>"B. there is no git info and thus no file name & directory details or am i missing something ?"</li>+<li>"C. you can't use the remote as a cloud drive to sync changes e.g. file moves, renames between two other git-annex repositories ? (no meta data)"</li>+<li><p>"D. the data on the cloud/rsync storage can not be used directly it has to moved into a git-annex capable storage location. "</p></li>+<li><p>Would it not be better to mount the remote storage over ssh(sshfs) and then use full git-annex on mounted directory ?</p></li>+</ul>++++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=diepes&do=goto">diepes</a>++</span>+++— <span class="date">Fri Mar 29 18:09:49 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./hook.html">hook</a>++<a href="../special_remotes.html">special remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,141 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>web</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+web++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex can use the WWW as a special remote, downloading urls to files.+See <a href="../tips/using_the_web_as_a_special_remote.html">using the web as a special remote</a> for usage examples.</p>++<h2>notes</h2>++<p>Currently git-annex only supports downloading content from the web;+it cannot upload to it or remove content.</p>++<p>This special remote uses arbitrary urls on the web as the source for content.+git-annex can also download content from a normal git remote, accessible by+http.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../internals.html">internals</a>++<a href="../special_remotes.html">special remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,465 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>webdav</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+webdav++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This special remote type stores file contents in a WebDAV server.</p>++<h2>configuration</h2>++<p>The environment variables <code>WEBDAV_USERNAME</code> and <code>WEBDAV_PASSWORD</code> are used+to supply login credentials. You need to set these only when running+<code>git annex initremote</code>, as they will be cached in a file only you+can read inside the local git repository.</p>++<p>A number of parameters can be passed to <code>git annex initremote</code> to configure+the webdav remote.</p>++<ul>+<li><p><code>encryption</code> - Required. Either "none" to disable encryption (not recommended),+or a value that can be looked up (using gpg -k) to find a gpg encryption+key that will be given access to the remote, or "shared" which allows+every clone of the repository to access the encrypted data (use with caution).</p>++<p>Note that additional gpg keys can be given access to a remote by+running enableremote with the new key id. See <a href="../encryption.html">encryption</a>.</p></li>+<li><p><code>embedcreds</code> - Optional. Set to "yes" embed the login credentials inside+the git repository, which allows other clones to also access them. This is+the default when gpg encryption is enabled; the credentials are stored+encrypted and only those with the repository's keys can access them.</p>++<p>It is not the default when using shared encryption, or no encryption.+Think carefully about who can access your repository before using+embedcreds without gpg encryption.</p></li>+<li><p><code>url</code> - Required. The URL to the WebDAV directory where files will be+stored. This can be a subdirectory of a larger WebDAV repository, and will+be created as needed. Use of a https URL is strongly+encouraged, since HTTP basic authentication is used.</p></li>+<li><p><code>chunksize</code> - Avoid storing files larger than the specified size in+WebDAV. For use when the WebDAV server has file size+limitations. The default is to never chunk files.<br/>+The value can use specified using any commonly used units.+Example: <code>chunksize=75 megabytes</code><br/>+Note that enabling chunking on an existing remote with non-chunked+files is not recommended.</p></li>+</ul>+++<p>Setup example:</p>++<pre><code># WEBDAV_USERNAME=joey@kitenet.net WEBDAV_PASSWORD=xxxxxxx git annex initremote box.com type=webdav url=https://www.box.com/dav/git-annex chunksize=75mb encryption=joey@kitenet.net+</code></pre>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-5baa5a7124413672286561cd0cf2d81e">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-5baa5a7124413672286561cd0cf2d81e">git-annex initremote failing for webdav servers</a>++</div>++<div class="inlinecontent">+<p>Unfortunately, trying to set up the following webdav servers fail. Some of the terminal output of git-annex --debug initremote ... is below, but it may not really helpful. Can I help any further, can a webdav remote be set up in a different way? (The box.com webdav initremote worked fine.) Cheers</p>++<p>With livedrive.com:</p>++<pre><code>[2012-12-01 10:15:12 GMT] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--encrypt","--no-encrypt-to","--no-default-recipient","--recipient","xxxxxxxxxxxxxx"]+(encryption setup with gpg key xxxxxxxxxxxxxx) (testing WebDAV server...)+git-annex: "Bad Request": user error+failed+git-annex: initremote: 1 failed+</code></pre>++<p>With sd2dav.1und1.de:</p>++<pre><code>[2012-12-01 10:13:10 GMT] chat: gpg ["--batch","--no-tty","--use-agent","--quiet","--trust-model","always","--encrypt","--no-encrypt-to","--no-default-recipient","--recipient","xxxxxxxxxxxxxx"]+(encryption setup with gpg key xxxxxxxxxxxxxx) (testing WebDAV server...)+git-annex: "Locked": user error+failed+git-annex: initremote: 1 failed+</code></pre>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://rfhbuk.myopenid.com/">rfhbuk [myopenid.com]</a>+</span>+++— <span class="date">Sat Dec 1 06:18:04 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a15cb41a5f551865af13d2b517d5f222">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-a15cb41a5f551865af13d2b517d5f222">comment 2</a>++</div>++<div class="inlinecontent">+<p>I tried signing up for livedrive, but I cannot log into it with WebDav at all. Do they require a Pro account to use WebDav?</p>++<p>When it's "testing webdav server", it tries to make a collection (a subdirectory), and uploads a file to it, and sets the file's properties, and deletes the file. One of these actions must be failing, perhaps because the webdav server implementation does not support it. Or perhaps because the webdav client library is doing something wrong. I've instrumented the test, so it'll say which one.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sat Dec 1 14:34:05 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a1fcb97f459ec0e242b5172fbfa5dd3a">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-a1fcb97f459ec0e242b5172fbfa5dd3a">comment 3</a>++</div>++<div class="inlinecontent">+<p>I've identified the problem keeping it working with livedrive. Once a patch I've written is applied to the Haskell DAV library, I'll be able to update git-annex to support it.</p>++<p>I don't know about sd2dav.1und1.de. The error looks like it doesn't support WebDAV file locking.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sat Dec 1 16:13:36 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-51b7aea2538c30d0064f6993ffaf7f14">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-51b7aea2538c30d0064f6993ffaf7f14">comment 4</a>++</div>++<div class="inlinecontent">+Good news, livedrive is supported now, by git-annex's master branch.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Sat Dec 1 17:14:34 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-471a2ec5c3bf715d7f6fb22d67a5fae8">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-471a2ec5c3bf715d7f6fb22d67a5fae8">WebDAV without locking</a>++</div>++<div class="inlinecontent">+<p>Hi Joey,</p>++<p>you are right, the 1-und-1.de implementation of WebDAV does not support locking.</p>++<p>Do you think there is a way to make that service work with git-annex anyhow -- say, by allowing the user to disable file-locking? I've worked around the problem with 1-und-1.de by using fuse+davfs2 to mount the storage in my file system and access it through the directory backend, but FUSE is dead slow, unfortunately, and this solution really sucks.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://peter-simons.myopenid.com/">peter-simons [myopenid.com]</a>+</span>+++— <span class="date">Wed Jan 16 08:44:16 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-d7b26368885fe7ae941ff2662165b22a">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-d7b26368885fe7ae941ff2662165b22a">comment 6</a>++</div>++<div class="inlinecontent">+<p>It seems it must advertise it supports the LOCK and UNLOCK http actions, but fails when they're used.</p>++<p>The DAV library I am using always locks if it seems the server supports it. So this will need changes to that library. I've filed a bug requesting the changes. <a href="http://bugs.debian.org/698379">http://bugs.debian.org/698379</a></p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Thu Jan 17 14:23:27 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-43a9332e13739104c0bfe968d598b892">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-43a9332e13739104c0bfe968d598b892">SSL certificates</a>++</div>++<div class="inlinecontent">+<p>Trying to use webdav leads in:</p>++<pre><code>git-annex: HandshakeFailed (Error_Protocol ("certificate rejected: not coping with anything else Start (Container Context 0)",True,CertificateUnknown))+</code></pre>++<p>How can I disable the SSL certificate check?</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawniayrgSdVLUc3c6bf93VbO-_HT4hzxmyo">Tobias</a>+</span>+++— <span class="date">Mon Mar 25 12:09:54 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-e85611766963b29b00490ff821328a5f">++++<div class="comment-subject">++<a href="/special_remotes/webdav.html#comment-e85611766963b29b00490ff821328a5f">comment 8</a>++</div>++<div class="inlinecontent">+I don't think the checking of SSL certificates can currently be disabled.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joey</a>+</span>+++— <span class="date">Wed Mar 27 12:38:47 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../special_remotes.html">special remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,225 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>xmpp</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../special_remotes.html">special remotes</a>/ ++</span>+<span class="title">+xmpp++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>XMPP (Jabber) is used by the <a href="../assistant.html">assistant</a> as a git remote. This is,+technically not a git-annex special remote (large files are not transferred+over XMPP; only git commits are sent).</p>++<p>Typically XMPP will be set up using the web app, but here's how a manual+set up could be accomplished:</p>++<ol>+<li><p>xmpp login credentials need to be stored in <code>.git/annex/creds/xmpp</code>.+Obviously this file should be mode 600. An example file:</p>++<p> XMPPCreds {xmppUsername = "joeyhess", xmppPassword = "xxxx", xmppHostname = "xmpp.l.google.com.", xmppPort = 5222, xmppJID = "joeyhess@gmail.com"}</p></li>+<li><p>A git remote is created using a special url, of the form <code>xmpp::user@host</code>+For the above example, it would be <code>url = xmpp::joeyhess@gmail.com</code></p></li>+<li><p>The uuid of one of the other clients using XMPP should be configured+using the <code>annex.uuid</code> setting, the same as is set up for other remotes.</p></li>+</ol>+++<p>With the above configuration, the <a href="../assistant.html">assistant</a> will use xmpp remotes much as+any other git remote. Since XMPP requires a client that is continually running+to see incoming pushes, the XMPP remote cannot be used with git at the+command line.</p>++<p>See also: <a href="../design/assistant/xmpp.html">xmpp protocol design notes</a></p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-a7e65f545755de544dc069536c1fff4a">++++<div class="comment-subject">++<a href="/special_remotes/xmpp.html#comment-a7e65f545755de544dc069536c1fff4a">User defined server</a>++</div>++<div class="inlinecontent">+<p>It would be nice if you could expand the XMPP setup in the assistant to support an "advanced" settings view where a custom server could be defined.</p>++<p>Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA">Tobias</a>+</span>+++— <span class="date">Wed Apr 17 05:45:59 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-f62f17a333e25b8451183e8ac011d05f">++++<div class="comment-subject">++<a href="/special_remotes/xmpp.html#comment-f62f17a333e25b8451183e8ac011d05f">comment 2</a>++</div>++<div class="inlinecontent">+<p>Yeah, I agree, this would be nice.</p>++<p>For your own domain, you can configure DNS like this: <a href="http://support.google.com/a/bin/answer.py?hl=en&answer=34143">http://support.google.com/a/bin/answer.py?hl=en&answer=34143</a> to make XMPP find the right server. But for some that's not an option and the "advanced" mode would be useful in that case.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q">Andrew</a>+</span>+++— <span class="date">Wed Apr 17 18:28:39 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../special_remotes.html">special remotes</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:45 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:45 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,129 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>summary</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+summary++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex allows managing files with git, without checking the file+contents into git. While that may seem paradoxical, it is useful when+dealing with files larger than git can currently easily handle, whether due+to limitations in memory, time, or disk space.</p>++<p><a href="./assistant.html"><img src="./assistant/thumbnail.png" width="216" height="28" class="img" align="right" /></a>+git-annex is designed for git users who love the command line.+For everyone else, the <a href="./assistant.html">git-annex assistant</a> turns+git-annex into an easy to use folder synchroniser.</p>++<p>To get a feel for git-annex, see the <a href="./walkthrough.html">walkthrough</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,302 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>sync</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+sync++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>The <code>git annex sync</code> command provides an easy way to keep several+repositories in sync.</p>++<p>Often git is used in a centralized fashion with a central bare repository+which changes are pulled and pushed to using normal git commands.+That works fine, if you don't mind having a central repository.</p>++<p>But it can be harder to use git in a fully decentralized fashion, with no+central repository and still keep repositories in sync with one another.+You have to remember to pull from each remote, and merge the appopriate+branch after pulling. It's difficult to <em>push</em> to a remote, since git does+not allow pushes into the currently checked out branch.</p>++<p><code>git annex sync</code> makes it easier using a scheme devised by Joachim+Breitner. The idea is to have a branch <code>synced/master</code> (actually,+<code>synced/$currentbranch</code>), that is never directly checked out, and serves+as a drop-point for other repositories to use to push changes.</p>++<p>When you run <code>git annex sync</code>, it merges the <code>synced/master</code> branch+into <code>master</code>, receiving anything that's been pushed to it. Then it+fetches from each remote, and merges in any changes that have been made+to the remotes too. Finally, it updates <code>synced/master</code> to reflect the new+state of <code>master</code>, and pushes it out to each of the remotes.</p>++<p>This way, changes propagate around between repositories as <code>git annex sync</code>+is run on each of them. Every repository does not need to be able to talk+to every other repository; as long as the graph of repositories is+connected, and <code>git annex sync</code> is run from time to time on each, a given+change, made anywhere, will eventually reach every other repository.</p>++<p>The workflow for using <code>git annex sync</code> is simple:</p>++<ul>+<li>Make some changes to files in the repository, using <code>git-annex</code>,+or anything else.</li>+<li>Run <code>git annex sync</code> to save the changes.</li>+<li>Next time you're working on a different clone of that repository,+run <code>git annex sync</code> to update it.</li>+</ul>+++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-4214020597adf16b7ef35b641357c34a">++++<div class="comment-subject">++<a href="/sync.html#comment-4214020597adf16b7ef35b641357c34a">very nice</a>++</div>++<div class="inlinecontent">+Here's a way to get from a starting point of two or more peer directory trees <em>not</em> tracked by git or git-annex, to the point where they can be synced in the manner described above: <span class="createlink">syncing non-git trees with git-annex</span>++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://adamspiers.myopenid.com/">Adam</a>+</span>+++— <span class="date">Sat Feb 25 11:02:18 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-37997a5f56f061ccba8573346b830484">++++<div class="comment-subject">++<a href="/sync.html#comment-37997a5f56f061ccba8573346b830484">Its just grand</a>++</div>++<div class="inlinecontent">+<p>I cam upon git-annex a few months ago. I saw immidiately how it could help with some frustrations I've been having. One in particlar is keeping my vimrc in sync accross multiple locations and platforms. I finally took the time to give it a try after I finally hit my boiling point this morning. I went through the <a href="http://git-annex.branchable.com/walkthrough/">walkthrough</a> and now I have an annax everywhere I need it. <code>git annex sync</code> and my vimrc is up-to-date, simply grand!</p>++<p>Thanks so much for making git-annex,+<a href="http://woz.io">Daniel Wozniak</a></p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawlDDW-g2WLLsLpcnCm4LykAquFY_nwbIrU">Daniel</a>+</span>+++— <span class="date">Fri Jan 4 10:45:35 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-a93800cc4523d79b0baba1b64210e6a8">++++<div class="comment-subject">++<a href="/sync.html#comment-a93800cc4523d79b0baba1b64210e6a8">synchronising stored files with a bare repository</a>++</div>++<div class="inlinecontent">+Good for syncing indexes, but if I want to synchronise all data files too (specifically pushing to a remote bare repository), how do I do that?++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnVX_teMpJeQkyheivad_1XSCFSjpiWgx8">Diggory</a>+</span>+++— <span class="date">Fri Jan 11 12:52:38 2013</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-460e386e29f24721d89fc9a6e21b52a0">++++<div class="comment-subject">++<a href="/sync.html#comment-460e386e29f24721d89fc9a6e21b52a0">comment 4</a>++</div>++<div class="inlinecontent">+Yes, sync only syncs the git branches, not git-annex data. To sync the date, you can run a command such as <code>git annex copy --to bareremote</code>. You could run that in cron. Or, the <a href="./assistant.html">assistant</a> can be run as a daemon, and automatically syncs git-annex data.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Fri Jan 11 14:18:07 2013</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./how_it_works.html">how it works</a>++<a href="./links/key_concepts.html">links/key concepts</a>++<a href="./walkthrough/syncing.html">walkthrough/syncing</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,1 @@+<TMPL_VAR CONTENT>
@@ -0,0 +1,137 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>bugtemplate</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">templates</a>/ ++</span>+<span class="title">+bugtemplate++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>Please describe the problem.</h3>++<h3>What steps will reproduce the problem?</h3>++<h3>What version of git-annex are you using? On what operating system?</h3>++<h3>Please provide any additional information below.</h3>++<p>[[!format sh """</p>++<h1>If you can, paste a complete transcript of the problem occurring here.</h1>++<h1>If the problem is with the git-annex assistant, paste in .git/annex/debug.log</h1>++<h1>End of transcript or log.</h1>++<p>"""]]</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,2 @@+<h2><a href="<TMPL_VAR PAGEURL>"><TMPL_VAR TITLE></a></h2>+<TMPL_VAR CONTENT>
@@ -0,0 +1,163 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>testimonials</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+testimonials++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<div>+<blockquote class="twitter-tweet"><p>Git annex. Brilliant. Powerful. <a href="http://t.co/AM9B6peM" title="http://git-annex.branchable.com/">git-annex.branchable.com</a></p>— Gert van Dijk (@gertvdijk) <a href="https://twitter.com/gertvdijk/status/186456474246053888">April 1, 2012</a></blockquote>++<blockquote class="twitter-tweet"><p>git-annex is like dropbox without the chrome. <a href="http://t.co/qcENNt3g" title="http://git-annex.branchable.com/">git-annex.branchable.com</a></p>— Wil Chung (@iamwil) <a href="https://twitter.com/iamwil/status/185997581229367296">March 31, 2012</a></blockquote>++<blockquote class="twitter-tweet"><p>blender 2.62 + ffmpeg + dnxhd + git-annex = who needs final cut?</p>— cdotwright (@cdotwright) <a href="https://twitter.com/cdotwright/status/187645142864375808">April 4, 2012</a></blockquote>++<blockquote class="twitter-tweet"><p>I want <a href="https://twitter.com/search/%2523git">#git</a>-annex whereis for all the stuff (not) in my room.</p>— topr (@derwelle) <a href="https://twitter.com/derwelle/status/172356564072673280">February 22, 2012</a></blockquote>++</div>+++++<blockquote>+What excites me about GIT ANNEX is how it fundamentally tracks the+backup and availability of any data you own, and allows you to share+data with a large or small audience, ensuring that the data survives.+</blockquote>+++<p>-- Jason Scott <a href="http://ascii.textfiles.com/archives/3625">http://ascii.textfiles.com/archives/3625</a></p>++<p>Seen on IRC:</p>++<pre>+oh my god, git-annex is amazing+this is the revolution in fucking with gigantic piles of files that I've been waiting for+</pre>+++<p>And then my own story: I have a ton of drives. I have a lot of servers. I+live in a cabin on <strong>dialup</strong> and often have 1 hour on broadband in a week+to get everything I need. Without git-annex, managing all this would not be+possible. It works perfectly for me, not a surprise since I wrote it, but+still, it's a different level of "perfect" than anything I could put+together before. --<span class="createlink">Joey</span></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./links/other_stuff.html">links/other stuff</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,390 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>tips</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+tips++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><span class="selflink">tips</span></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>This page is a place to document tips and techniques for using git-annex.</p>++<div class="feedlink">+++</div>+<p>++<a href="./tips/what_to_do_when_you_lose_a_repository.html">what to do when you lose a repository</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/setup_a_public_repository_on_a_web_site.html">setup a public repository on a web site</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/Decentralized_repository_behind_a_Firewall.html">Decentralized repository behind a Firewall</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/Internet_Archive_via_S3.html">Internet Archive via S3</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant.html">replacing Sparkleshare or dvcs-autosync with the assistant</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/Using_Git-annex_as_a_web_browsing_assistant.html">Using Git-annex as a web browsing assistant</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/using_gitolite_with_git-annex.html">using gitolite with git-annex</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/using_Google_Cloud_Storage.html">using Google Cloud Storage</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__.html">Building git-annex on Debian OR %¤#"¤%&"# Haskell!</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/using_Amazon_S3.html">using Amazon S3</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/assume-unstaged.html">using assume-unstages to speed up git with large trees of annexed files</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/How_to_retroactively_annex_a_file_already_in_a_git_repo.html">How to retroactively annex a file already in a git repo</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/using_Amazon_Glacier.html">using Amazon Glacier</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/emacs_integration.html">emacs integration</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/using_box.com_as_a_special_remote.html">using box.com as a special remote</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./tips/finding_duplicate_files.html">finding duplicate files</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.html">using git annex with no fixed hostname and optimising ssh</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/using_the_web_as_a_special_remote.html">using the web as a special remote</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/visualizing_repositories_with_gource.html">visualizing repositories with gource</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/centralised_repository:_starting_from_nothing.html">centralised repository: starting from nothing</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/migrating_data_to_a_new_backend.html">migrating data to a new backend</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/centralized_git_repository_tutorial.html">centralized git repository tutorial</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/powerful_file_matching.html">powerful file matching</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/automatically_getting_files_on_checkout.html">automatically getting files on checkout</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/what_to_do_when_a_repository_is_corrupted.html">what to do when a repository is corrupted</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/recover_data_from_lost+found.html">recover data from lost+found</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/untrusted_repositories.html">untrusted repositories</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>+<p>++<a href="./tips/using_the_SHA1_backend.html">using the SHA1 backend</a><br />++<i>+Posted <span class="date">Fri Sep 28 01:45:57 2012</span>++</i>+</p>++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./sidebar.html">sidebar</a>++<a href="./walkthrough/more.html">walkthrough/more</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,188 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>using assume-unstages to speed up git with large trees of annexed files</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../tips.html">tips</a>/ ++</span>+<span class="title">+using assume-unstages to speed up git with large trees of annexed files++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Git update-index's assume-unstaged feature can be used to speed+up <code>git status</code> and stuff by not statting the whole tree looking for changed+files.</p>++<p>This feature works quite well with git-annex. Especially because git+annex's files are immutable, so aren't going to change out from under it,+this is a nice fit. If you have a very large tree and <code>git status</code> is+annoyingly slow, you can turn it on:</p>++<pre><code>git config core.ignoreStat true+</code></pre>++<p>When git mv and git rm are used, those changes <em>do</em> get noticed, even+on assume-unchanged files. When new files are added, eg by <code>git annex add</code>,+they are also noticed.</p>++<p>There are two gotchas. Both occur because <code>git add</code> does not stage+assume-unchanged files.</p>++<ol>+<li>When an annexed file is moved to a different directory, it updates+the symlink, and runs <code>git add</code> on it. So the file will move,+but the changed symlink will not be noticed by git and it will commit a+dangling symlink.</li>+<li>When using <code>git annex migrate</code>, it changes the symlink and <code>git adds</code>+it. Again this won't be committed.</li>+</ol>+++<p>These can be worked around by running <code>git update-index --really-refresh</code>+after performing such operations. I hope that <code>git add</code> will be changed+to stage changes to assume-unchanged files, which would remove this+only complication. --<span class="createlink">Joey</span></p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-f2b947110dbafdb39f0cc32de1d0dc1d">++++<div class="comment-subject">++<a href="/tips/assume-unstaged.html#comment-f2b947110dbafdb39f0cc32de1d0dc1d">It doesn't work 100%</a>++</div>++<div class="inlinecontent">+When you remove tracked files... it doesn't show the new status. it's like if the file was ignored.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://me.yahoo.com/a/2djv2EYwk43rfJIAQXjYt_vfuOU-#a11a6">Olivier R</a>+</span>+++— <span class="date">Thu May 3 17:42:54 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,140 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>emacs integration</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../tips.html">tips</a>/ ++</span>+<span class="title">+emacs integration++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>bergey has developed an emacs mode for browsing git-annex repositories,+dired style.</p>++<p><a href="https://gitorious.org/emacs-contrib/annex-mode">https://gitorious.org/emacs-contrib/annex-mode</a></p>++<p>Locally available files are colored differently, and pressing g runs+<code>git annex get</code> on the file at point.</p>++<hr />++<p>John Wiegley has developed a brand new git-annex interaction mode for+Emacs, which aims to integrate with the standard facilities+(C-x C-q, M-x dired, etc) rather than invent its own interface.</p>++<p><a href="https://github.com/jwiegley/git-annex-el">https://github.com/jwiegley/git-annex-el</a></p>++<p>He has also added support to org-attach; if+<code>org-attach-git-annex-cutoff' is non-nil and smaller than the size+ of the file you're attaching then org-attach will</code>git annex add the+file`; otherwise it will "git add" it.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,239 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>using Amazon S3</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../tips.html">tips</a>/ ++</span>+<span class="title">+using Amazon S3++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex extends git's usual remotes with some <a href="../special_remotes.html">special remotes</a>, that+are not git repositories. This way you can set up a remote using say,+Amazon S3, and use git-annex to transfer files into the cloud.</p>++<p>First, export your Amazon AWS credentials:</p>++<pre><code># export AWS_ACCESS_KEY_ID="08TJMT99S3511WOZEP91"+# export AWS_SECRET_ACCESS_KEY="s3kr1t"+</code></pre>++<p>Now, create a gpg key, if you don't already have one. This will be used+to encrypt everything stored in S3, for your privacy. Once you have+a gpg key, run <code>gpg --list-secret-keys</code> to look up its key id, something+like "2512E3C7"</p>++<p>Next, create the S3 remote, and describe it.</p>++<pre><code># git annex initremote cloud type=S3 encryption=2512E3C7+initremote cloud (encryption setup with gpg key C910D9222512E3C7) (checking bucket) (creating bucket in US) (gpg) ok+# git annex describe cloud "at Amazon's US datacenter"+describe cloud ok+</code></pre>++<p>The configuration for the S3 remote is stored in git. So to make another+repository use the same S3 remote is easy:</p>++<pre><code># cd /media/usb/annex+# git pull laptop+# git annex initremote cloud+initremote cloud (gpg) (checking bucket) ok+</code></pre>++<p>Now the remote can be used like any other remote.</p>++<pre><code># git annex copy my_cool_big_file --to cloud+copy my_cool_big_file (gpg) (checking cloud...) (to cloud...) ok+# git annex move video/hackity_hack_and_kaxxt.mov --to cloud+move video/hackity_hack_and_kaxxt.mov (checking cloud...) (to cloud...) ok+</code></pre>++<p>See <a href="../special_remotes/S3.html">S3</a> for details.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-ffb374370bd464243362838201609e33">++++<div class="comment-subject">++<a href="/tips/using_Amazon_S3.html#comment-ffb374370bd464243362838201609e33">ANNEX_S3 vs AWS for keys</a>++</div>++<div class="inlinecontent">+The instructions state ANNEX_S3_ACCESS_KEY_ID and ANNEX_SECRET_ACCESS_KEY but git-annex cannot connect with those constants. git-annex tells me to set both "AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY" instead, which works. This is with Xubuntu 12.04.++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY">Matt</a>+</span>+++— <span class="date">Tue May 29 08:24:25 2012</span>+</div>++++<div style="clear: both"></div>+</div>+<div class="comment" id="comment-7f18ee038ed2bb0c5099f2bd015b6fdd">++++<div class="comment-subject">++<a href="/tips/using_Amazon_S3.html#comment-7f18ee038ed2bb0c5099f2bd015b6fdd">comment 2</a>++</div>++<div class="inlinecontent">+Thanks, I've fixed that. (You could have too.. this is a wiki ;)++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="http://joeyh.name/">joeyh.name</a>+</span>+++— <span class="date">Tue May 29 15:10:42 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../design/encryption.html">design/encryption</a>++<a href="../special_remotes.html">special remotes</a>++<a href="../special_remotes/S3.html">special remotes/S3</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,148 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>transferring data</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+transferring data++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex can transfer data to or from any of a repository's git remotes.+Depending on where the remote is, the data transfer is done using rsync+(over ssh or locally), or plain cp (with copy-on-write+optimisations on supported filesystems), or using curl (for repositories+on the web). Some <a href="./special_remotes.html">special remotes</a> are also supported that are not+traditional git remotes.</p>++<p>If a data transfer is interrupted, git-annex retains the partial transfer+to allow it to be automatically resumed later.</p>++<p>It's equally easy to transfer a single file to or from a repository,+or to launch a retrievel of a massive pile of files from whatever+repositories they are scattered amongst.</p>++<p>git-annex automatically uses whatever remotes are currently accessible,+preferring ones that are less expensive to talk to.</p>++<table class="img"><caption>A real-world repository interconnection map+(generated by git-annex map)</caption><tr><td><a href="./repomap.png"><img src="./repomap.png" width="640" height="533" class="img" /></a></td></tr></table>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./how_it_works.html">how it works</a>++<a href="./use_case/Alice.html">use case/Alice</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,198 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>trust</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+trust++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Git-annex supports several levels of trust of a repository:</p>++<ul>+<li>semitrusted (default)</li>+<li>untrusted</li>+<li>trusted</li>+<li>dead</li>+</ul>+++<h2>semitrusted</h2>++<p>Normally, git-annex does not fully trust its stored <a href="./location_tracking.html">location tracking</a>+information. When removing content, it will directly check+that other repositories have enough <a href="./copies.html">copies</a>.</p>++<p>Generally that explicit checking is a good idea. Consider that the current+<a href="./location_tracking.html">location tracking</a> information for a remote may not yet have propagated+out. Or, a remote may have suffered a catastrophic loss of data, or itself+been lost.</p>++<p>There is still some trust involved here. A semitrusted repository is+depended on to retain a copy of the file content; possibly the only+<a href="./copies.html">copy</a>.</p>++<p>(Being semitrusted is the default. The <code>git annex semitrust</code> command+restores a repository to this default, when it has been overridden.+The <code>--semitrust</code> option can temporarily restore a repository to this+default.)</p>++<h2>untrusted</h2>++<p>An untrusted repository is not trusted to retain data at all. Git-annex+will retain sufficient <a href="./copies.html">copies</a> of data elsewhere.</p>++<p>This is a good choice for eg, portable drives that could get lost. Or,+if a disk is known to be dying, you can set it to untrusted and let+<code>git annex fsck</code> warn about data that needs to be copied off it.</p>++<p>To configure a repository as untrusted, use the <code>git annex untrust</code>+command.</p>++<h2>trusted</h2>++<p>Sometimes, you may have reasons to fully trust the location tracking+information for a repository. For example, it may be an offline+archival drive, from which you rarely or never remove content. Deciding+when it makes sense to trust the tracking info is up to you.</p>++<p>One way to handle this is just to use <code>--force</code> when a command cannot+access a remote you trust. Or to use <code>--trust</code> to specify a repisitory to+trust temporarily.</p>++<p>To configure a repository as fully and permanently trusted,+use the <code>git annex trust</code> command.</p>++<h2>dead</h2>++<p>This is used to indicate that you have no trust that the repository+exists at all. It's appropriate to use when a drive has been lost,+or a directory irretrevably deleted. It will make git-annex avoid+even showing the repository as a place where data might still reside.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./copies.html">copies</a>++<a href="./internals.html">internals</a>++<a href="./location_tracking.html">location tracking</a>++<a href="./tips/untrusted_repositories.html">tips/untrusted repositories</a>++<a href="./tips/using_the_web_as_a_special_remote.html">tips/using the web as a special remote</a>++<a href="./walkthrough/removing_files:_When_things_go_wrong.html">walkthrough/removing files: When things go wrong</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,227 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>upgrades</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+upgrades++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Occasionally improvments are made to how git-annex stores its data,+that require an upgrade process to convert repositories made with an older+version to be used by a newer version. It's annoying, it should happen+rarely, but sometimes, it's worth it.</p>++<p>There's a committment that git-annex will always support upgrades from all+past versions. After all, you may have offline drives from an earlier+git-annex, and might want to use them with a newer git-annex.</p>++<p>git-annex will notice if it is run in a repository that+needs an upgrade, and refuse to do anything. To upgrade,+use the "git annex upgrade" command.</p>++<p>The upgrade process is guaranteed to be conflict-free. Unless you+already have git conflicts in your repository or between repositories.+Upgrading a repository with conflicts is not recommended; resolve the+conflicts first before upgrading git-annex.</p>++<h2>Upgrade events, so far</h2>++<h3>v3 -> v4 (git-annex version 4.x)</h3>++<p>v4 is only used for <a href="./direct_mode.html">direct mode</a>, and no upgrade needs to be done from+existing v3 repositories, they will continue to work.</p>++<h3>v2 -> v3 (git-annex version 3.x)</h3>++<p>Involved moving the .git-annex/ directory into a separate git-annex branch.</p>++<p>After this upgrade, you should make sure you include the git-annex branch+when git pushing and pulling.</p>++<h3>tips for this upgrade</h3>++<p>This upgrade is easier (and faster!) than the previous upgrades.+You don't need to upgrade every repository at once; it's sufficient+to upgrade each repository only when you next use it.</p>++<p>Example upgrade process:</p>++<pre><code>cd localrepo+git pull+git annex upgrade+git commit -m "upgrade v2 to v3"+git gc+</code></pre>++<h3>v1 -> v2 (git-annex version 0.20110316)</h3>++<p>Involved adding hashing to .git/annex/ and changing the names of all keys.+Symlinks changed.</p>++<p>Also, hashing was added to location log files in .git-annex/.+And .gitattributes needed to have another line added to it.</p>++<p>Previously, files added to the SHA <a href="./backends.html">backends</a> did not have their file+size tracked, while files added to the WORM backend did. Files added to+the SHA backends after the conversion will have their file size tracked,+and that information will be used by git-annex for disk free space checking.+To ensure that information is available for all your annexed files, see+<a href="./upgrades/SHA_size.html">SHA size</a>.</p>++<h3>tips for this upgrade</h3>++<p>This upgrade can tend to take a while, if you have a lot of files.</p>++<p>Each clone of a repository should be individually upgraded.+Until a repository's remotes have been upgraded, git-annex+will refuse to communicate with them.</p>++<p>Start by upgrading one repository, and then you can commit+the changes git-annex staged during upgrade, and push them out to other+repositories. And then upgrade those other repositories. Doing it this+way avoids git-annex doing some duplicate work during the upgrade.</p>++<p>Example upgrade process:</p>++<pre><code>cd localrepo+git pull+git annex upgrade+git commit -m "upgrade v1 to v2"+git push++ssh remote+cd remoterepo+git pull+git annex upgrade+...+</code></pre>++<h3>v0 -> v1 (git-annex version 0.04)</h3>++<p>Involved a reorganisation of the layout of .git/annex/. Symlinks changed.</p>++<p>Handled more or less transparently, although git-annex was just 2 weeks+old at the time, and had few users other than Joey.</p>++<p>Before doing this upgrade, set annex.version:</p>++<pre><code>git config annex.version 0+</code></pre>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./upgrades/SHA_size.html">upgrades/SHA size</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,189 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>SHA size</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../upgrades.html">upgrades</a>/ ++</span>+<span class="title">+SHA size++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Before version 2 of the git-annex repository, files added to the SHA+<a href="../backends.html">backends</a> did not have their file size tracked, while files added to the+WORM backend did. The file size information is used for disk free space+checking.</p>++<p>Files added to the SHA backends after the conversion will have their file+size tracked automatically. This disk free space checking is an optional+feature and since you're more likely to be using more recently added files,+you're unlikely to see any bad effect if you do nothing.</p>++<p>That said, if you have old files added to SHA backends that lack file size+tracking info, here's how you can add that info. After <a href="../upgrades.html">upgrading</a>+to repository version 2, in each repository run:</p>++<pre><code>git annex migrate+git commit -m 'migrated keys for v2'+</code></pre>++<p>The usual caveats about <a href="../tips/migrating_data_to_a_new_backend.html">migrating data to a new backend</a>+apply; you will end up with unused keys that you can later clean up with+<code>git annex unused</code>.</p>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-376cc462e818489fa3c78eccc99b6f7f">++++<div class="comment-subject">++<a href="/upgrades/SHA_size.html#comment-376cc462e818489fa3c78eccc99b6f7f">The fact that the keys changed causes merge conflicts</a>++</div>++<div class="inlinecontent">+<p>FYI, I have run into a problem where if you 'git annex sync' between various 'git annex v3' repositories, if the different repositories are using different encodings of the SHA1 information (one including size, one not), then the 'git merge' will declare that they conflict.</p>++<p>There's no indication that 'git annex migrate' is the right tool to run, except from perusing the 'git annex' man page. In my opinion this is a major user interface problem.</p>++<p>-- Asheesh.</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="OpenID">+<a href="https://www.google.com/accounts/o8/id?id=AItOawkjvjLHW9Omza7x1VEzIFQ8Z5honhRB90I">Asheesh</a>+</span>+++— <span class="date">Sun Jun 24 20:28:59 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../upgrades.html">upgrades</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,144 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Alice</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">use case</a>/ ++</span>+<span class="title">+Alice++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>use case: The Nomad</h3>++<p>Alice is always on the move, often with her trusty netbook and a small+handheld terabyte USB drive, or a smaller USB keydrive. She has a server+out there on the net. She stores data, encrypted in the Cloud.</p>++<p>All these things can have different files on them, but Alice no longer+has to deal with the tedious process of keeping them manually in sync,+or remembering where she put a file. git-annex manages all these data+sources as if they were git remotes.<br/>+<small><a href="../special_remotes.html">more about special remotes</a></small></p>++<p>When she has 1 bar on her cell, Alice queues up interesting files on her+server for later. At a coffee shop, she has git-annex download them to her+USB drive. High in the sky or in a remote cabin, she catches up on+podcasts, videos, and games, first letting git-annex copy them from+her USB drive to the netbook (this saves battery power).<br/>+<small><a href="../transferring_data.html">more about transferring data</a></small></p>++<p>When she's done, she tells git-annex which to keep and which to remove.+They're all removed from her netbook to save space, and Alice knows+that next time she syncs up to the net, her changes will be synced back+to her server.<br/>+<small><a href="../distributed_version_control.html">more about distributed version control</a></small></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,153 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>Bob</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../index.html">use case</a>/ ++</span>+<span class="title">+Bob++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h3>use case: The Archivist</h3>++<p>Bob has many drives to archive his data, most of them kept offline, in a+safe place.</p>++<p>With git-annex, Bob has a single directory tree that includes all+his files, even if their content is being stored offline. He can+reorganize his files using that tree, committing new versions to git,+without worry about accidentally deleting anything.</p>++<p>When Bob needs access to some files, git-annex can tell him which drive(s)+they're on, and easily make them available. Indeed, every drive knows what+is on every other drive.<br/>+<small><a href="../location_tracking.html">more about location tracking</a></small></p>++<p>Bob thinks long-term, and so he appreciates that git-annex uses a simple+repository format. He knows his files will be accessible in the future+even if the world has forgotten about git-annex and git.<br/>+<small><a href="../future_proofing.html">more about future-proofing</a></small></p>++<p>Run in a cron job, git-annex adds new files to archival drives at night. It+also helps Bob keep track of intentional, and unintentional copies of+files, and logs information he can use to decide when it's time to duplicate+the content of old drives.<br/>+<small><a href="../copies.html">more about backup copies</a></small></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../not.html">not</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,148 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>users</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+users++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Users of this wiki, feel free to create a subpage of this one and talk+about yourself on it, within reason. You can link to it to sign your+comments.</p>++<h1>List of users</h1>++<p>++<a href="./users/chrysn.html">chrysn</a>++</p>+<p>++<a href="./users/fmarier.html">fmarier</a>++</p>+<p>++<a href="./users/gebi.html">gebi</a>++</p>+<p>++<a href="./users/joey.html">joey</a>++</p>++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,128 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>chrysn</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../users.html">users</a>/ ++</span>+<span class="title">+chrysn++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<ul>+<li><strong>name</strong>: chrysn</li>+<li><strong>website</strong>: <a href="http://christian.amsuess.com/">http://christian.amsuess.com/</a></li>+<li><strong>uses git-annex for</strong>: managing the family's photos (and possibly videos and music in the future)</li>+<li><strong>likes git-annex because</strong>: it adds a layer of commit semantics over a regular file system without keeping everything in duplicate locally</li>+<li><strong>would like git-annex to</strong>: not be required any more as git itself learns to use cow filesystems to avoid abundant disk usage and gets better with sparser checkouts (git-annex might then still be a simpler tool that watches over what can be safely dropped for a sparser checkout)</li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,129 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>fmarier</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../users.html">users</a>/ ++</span>+<span class="title">+fmarier++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<h1>François Marier</h1>++<p>Free Software and Debian Developer. Lead developer of <a href="https://www.libravatar.org">Libravatar</a></p>++<ul>+<li><a href="http://feeding.cloud.geek.nz">Blog</a> and <a href="http://fmarier.org">homepage</a></li>+<li><a href="http://identi.ca/fmarier">Identica</a> / <a href="https://twitter.com/fmarier">Twitter</a></li>+</ul>+++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,121 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>gebi</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../users.html">users</a>/ ++</span>+<span class="title">+gebi++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Michael Gebetsroither <a href="mailto:michael@mgeb.org">michael@mgeb.org</a></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,122 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>joey</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../users.html">users</a>/ ++</span>+<span class="title">+joey++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Joey Hess <a href="mailto:joey@kitenet.net">joey@kitenet.net</a><br/>+<a href="http://kitenet.net/~joey/">http://kitenet.net/~joey/</a></p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,275 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>videos</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+videos++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><a href="./walkthrough.html">walkthrough</a></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Talks and screencasts about git-annex.</p>++<p>These videos are also available in a public git-annex repository+<code>git clone http://downloads.kitenet.net/.git/</code></p>++<div class="feedlink">+++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./videos/git-annex_assistant_archiving.html">git-annex assistant archiving</a>++</span>+</div>++<div class="inlinecontent">+<p><video controls width="400">+<source src="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-archiving.ogv">+</video><br>+A <a href="http://downloads.kitenet.net/videos/git-annex/git-annex-assistant-archiving.ogv">9 minute screencast</a>+covering archiving your files with the <a href="./assistant.html">git-annex assistant</a></a>.</p>++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:46 2013</span>+</span>++++++++++</div>++</div>+<div class="inlinepage">++<div class="inlineheader">++<span class="header">++<a href="./videos/git-annex_assistant_remote_sharing.html">git-annex assistant remote sharing</a>++</span>+</div>++<div class="inlinecontent">+<p><video controls width="400">+<source src="http://downloads.kitenet.net/videos/git-annex/git-annex-xmpp-pairing.ogv">+</video><br>+A <a href="http://downloads.kitenet.net/videos/git-annex/git-annex-xmpp-pairing.ogv">6 minute screencast</a>+showing how to share files between your computers in different locations,+such as home and work.</p>++</div>++<div class="inlinefooter">++<span class="pagedate">+Posted <span class="date">Sat May 4 11:06:46 2013</span>+</span>++++++++++</div>++</div>++++++<p>++<a href="./videos/git-annex_assistant_introduction.html">git-annex assistant introduction</a><br />++<i>+Posted <span class="date">Sat May 4 11:06:46 2013</span>++</i>+</p>+<p>++<a href="./videos/LCA2013.html">git-annex presentation by Joey Hess at Linux.Conf.Au 2013</a><br />++<i>+Posted <span class="date">Fri Feb 1 00:00:00 2013</span>++</i>+</p>+<p>++<a href="./videos/git-annex_weppapp_demo.html">git-annex weppapp demo</a><br />++<i>+Posted <span class="date">Sun Jul 29 14:41:41 2012</span>++</i>+</p>+<p>++<a href="./videos/git-annex_assistant_sync_demo.html">git-annex assistant sync demo</a><br />++<i>+Posted <span class="date">Thu Jul 5 18:36:06 2012</span>++</i>+</p>+<p>++<a href="./videos/git-annex_watch_demo.html">git-annex watch demo</a><br />++<i>+Posted <span class="date">Mon Jun 11 16:02:14 2012</span>++</i>+</p>+<p>++<a href="./videos/FOSDEM2012.html">git-annex presentation by Richard Hartmann at FOSDEM 2012</a><br />++<i>+Posted <span class="date">Sun Jan 1 00:00:00 2012</span>++</i>+</p>++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./design/assistant.html">design/assistant</a>++<a href="./footer/column_b.html">footer/column b</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sat May 4 11:06:46 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,123 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>git-annex presentation by Richard Hartmann at FOSDEM 2012</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../videos.html">videos</a>/ ++</span>+<span class="title">+git-annex presentation by Richard Hartmann at FOSDEM 2012++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p><video controls src="http://video.fosdem.org/2012/lightningtalks/git_annex___manage_files_with_git,_without_checking_their_contents_into_git.webm"></video><br>+A <a href="http://video.fosdem.org/2012/lightningtalks/git_annex___manage_files_with_git,_without_checking_their_contents_into_git.webm">15 minute introduction to git-annex</a>,+presented by Richard Hartmann at FOSDEM 2012.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Sun Jan 1 00:00:00 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,125 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>git-annex presentation by Joey Hess at Linux.Conf.Au 2013</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../videos.html">videos</a>/ ++</span>+<span class="title">+git-annex presentation by Joey Hess at Linux.Conf.Au 2013++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p><video controls>+<source type="video/mp4" src="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">+<source type="video/ogg" src="http://mirror.linux.org.au/linux.conf.au/2013/ogv/gitannex.ogv">+</video><br>+A <a href="http://mirror.linux.org.au/linux.conf.au/2013/mp4/gitannex.mp4">45 minute talk and demo of git-annex and the assistant</a>), presented by Joey Hess at LCA 2013.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Sat May 4 11:06:46 2013</span>+<!-- Created <span class="date">Fri Feb 1 00:00:00 2013</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,607 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>walkthrough</title>++<link rel="stylesheet" href="style.css" type="text/css" />++<link rel="stylesheet" href="local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="./index.html">git-annex</a>/ ++</span>+<span class="title">+walkthrough++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="./logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="./install.html">install</a></li>+<li><a href="./assistant.html">assistant</a></li>+<li><span class="selflink">walkthrough</span></li>+<li><a href="./tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="./comments.html">comments</a></li>+<li><a href="./contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>A walkthrough of the basic features of git-annex.</p>++<div class="toc">+ <ol>+ <li class="L2"><a href="#index1h2">creating a repository</a>+ </li>+ <li class="L2"><a href="#index2h2">adding a remote</a>+ </li>+ <li class="L2"><a href="#index3h2">adding files</a>+ </li>+ <li class="L2"><a href="#index4h2">renaming files</a>+ </li>+ <li class="L2"><a href="#index5h2">getting file content</a>+ </li>+ <li class="L2"><a href="#index6h2">syncing</a>+ </li>+ <li class="L2"><a href="#index7h2">transferring files: When things go wrong</a>+ </li>+ <li class="L2"><a href="#index8h2">removing files</a>+ </li>+ <li class="L2"><a href="#index9h2">removing files: When things go wrong</a>+ </li>+ <li class="L2"><a href="#index10h2">modifying annexed files</a>+ </li>+ <li class="L2"><a href="#index11h2">using ssh remotes</a>+ </li>+ <li class="L2"><a href="#index12h2">moving file content between repositories</a>+ </li>+ <li class="L2"><a href="#index13h2">unused data</a>+ </li>+ <li class="L2"><a href="#index14h2">fsck: verifying your data</a>+ </li>+ <li class="L2"><a href="#index15h2">fsck: when things go wrong</a>+ </li>+ <li class="L2"><a href="#index16h2">backups</a>+ </li>+ <li class="L2"><a href="#index17h2">automatically managing content</a>+ </li>+ <li class="L2"><a href="#index18h2">more</a>+ </li>+ </ol>+</div>+++++<h2><a name="index1h2"></a><a href="./walkthrough/creating_a_repository.html">creating a repository</a></h2>+<p>This is very straightforward. Just tell it a description of the repository.</p>++<pre><code># mkdir ~/annex+# cd ~/annex+# git init+# git annex init "my laptop"+</code></pre>++<h2><a name="index2h2"></a><a href="./walkthrough/adding_a_remote.html">adding a remote</a></h2>+<p>Like any other git repository, git-annex repositories have remotes.+Let's start by adding a USB drive as a remote.</p>++<pre><code># sudo mount /media/usb+# cd /media/usb+# git clone ~/annex+# cd annex+# git annex init "portable USB drive"+# git remote add laptop ~/annex+# cd ~/annex+# git remote add usbdrive /media/usb/annex+</code></pre>++<p>This is all standard ad-hoc distributed git repository setup.+The only git-annex specific part is telling it the name+of the new repository created on the USB drive.</p>++<p>Notice that both repos are set up as remotes of one another. This lets+either get annexed files from the other. You'll want to do that even+if you are using git in a more centralized fashion.</p>++<h2><a name="index3h2"></a><a href="./walkthrough/adding_files.html">adding files</a></h2>+<pre><code># cd ~/annex+# cp /tmp/big_file .+# cp /tmp/debian.iso .+# git annex add .+add big_file (checksum...) ok+add debian.iso (checksum...) ok+# git commit -a -m added+</code></pre>++<p>When you add a file to the annex and commit it, only a symlink to+the annexed content is committed. The content itself is stored in+git-annex's backend.</p>++<h2><a name="index4h2"></a><a href="./walkthrough/renaming_files.html">renaming files</a></h2>+<pre><code># cd ~/annex+# git mv big_file my_cool_big_file+# mkdir iso+# git mv debian.iso iso/+# git commit -m moved+</code></pre>++<p>You can use any normal git operations to move files around, or even+make copies or delete them.</p>++<p>Notice that, since annexed files are represented by symlinks,+the symlink will break when the file is moved into a subdirectory.+But, git-annex will fix this up for you when you commit --+it has a pre-commit hook that watches for and corrects broken symlinks.</p>++<h2><a name="index5h2"></a><a href="./walkthrough/getting_file_content.html">getting file content</a></h2>+<p>A repository does not always have all annexed file contents available.+When you need the content of a file, you can use "git annex get" to+make it available.</p>++<p>We can use this to copy everything in the laptop's annex to the+USB drive.</p>++<pre><code># cd /media/usb/annex+# git fetch laptop; git merge laptop/master+# git annex get .+get my_cool_big_file (from laptop...) ok+get iso/debian.iso (from laptop...) ok+</code></pre>++<h2><a name="index6h2"></a><a href="./walkthrough/syncing.html">syncing</a></h2>+<p>Notice that in the <a href="./walkthrough/getting_file_content.html">previous example</a>, you had to+git fetch and merge from laptop first. This lets git-annex know what has+changed in laptop, and so it knows about the files present there and can+get them.</p>++<p>If you have a lot of repositories to keep in sync, manually fetching and+merging from them can become tedious. To automate it there is a handy+sync command, which also even commits your changes for you.</p>++<pre><code># cd /media/usb/annex+# git annex sync+commit+nothing to commit (working directory clean)+ok+pull laptop+ok+push laptop+ok+</code></pre>++<p>After you run sync, the repository will be updated with all changes made to+its remotes, and any changes in the repository will be pushed out to its+remotes, where a sync will get them. This is especially useful when using+git in a distributed fashion, without a+<a href="./tips/centralized_git_repository_tutorial.html">central bare repository</a>. See+<a href="./sync.html">sync</a> for details.</p>++<h2><a name="index7h2"></a><a href="./walkthrough/transferring_files:_When_things_go_wrong.html">transferring files: When things go wrong</a></h2>+<p>After a while, you'll have several annexes, with different file contents.+You don't have to try to keep all that straight; git-annex does+<a href="./location_tracking.html">location tracking</a> for you. If you ask it to get a file and the drive+or file server is not accessible, it will let you know what it needs to get+it:</p>++<pre><code># git annex get video/hackity_hack_and_kaxxt.mov+get video/_why_hackity_hack_and_kaxxt.mov (not available)+ Unable to access these remotes: usbdrive, server+ Try making some of these repositories available:+ 5863d8c0-d9a9-11df-adb2-af51e6559a49 -- my home file server+ 58d84e8a-d9ae-11df-a1aa-ab9aa8c00826 -- portable USB drive+ ca20064c-dbb5-11df-b2fe-002170d25c55 -- backup SATA drive+failed+# sudo mount /media/usb+# git annex get video/hackity_hack_and_kaxxt.mov+get video/hackity_hack_and_kaxxt.mov (from usbdrive...) ok+</code></pre>++<h2><a name="index8h2"></a><a href="./walkthrough/removing_files.html">removing files</a></h2>+<p>You can always drop files safely. Git-annex checks that some other annex+has the file before removing it.</p>++<pre><code># git annex drop iso/debian.iso+drop iso/Debian_5.0.iso ok+</code></pre>++<h2><a name="index9h2"></a><a href="./walkthrough/removing_files:_When_things_go_wrong.html">removing files: When things go wrong</a></h2>+<p>Before dropping a file, git-annex wants to be able to look at other+remotes, and verify that they still have a file. After all, it could+have been dropped from them too. If the remotes are not mounted/available,+you'll see something like this.</p>++<pre><code># git annex drop important_file other.iso+drop important_file (unsafe)+ Could only verify the existence of 0 out of 1 necessary copies+ Unable to access these remotes: usbdrive+ Try making some of these repositories available:+ 58d84e8a-d9ae-11df-a1aa-ab9aa8c00826 -- portable USB drive+ ca20064c-dbb5-11df-b2fe-002170d25c55 -- backup SATA drive+ (Use --force to override this check, or adjust annex.numcopies.)+failed+drop other.iso (unsafe)+ Could only verify the existence of 0 out of 1 necessary copies+ No other repository is known to contain the file.+ (Use --force to override this check, or adjust annex.numcopies.)+failed+</code></pre>++<p>Here you might --force it to drop <code>important_file</code> if you <a href="./trust.html">trust</a> your backup.+But <code>other.iso</code> looks to have never been copied to anywhere else, so if+it's something you want to hold onto, you'd need to transfer it to+some other repository before dropping it.</p>++<h2><a name="index10h2"></a><a href="./walkthrough/modifying_annexed_files.html">modifying annexed files</a></h2>+<p>Normally, the content of files in the annex is prevented from being modified.+(Unless your repository is using <a href="./direct_mode.html">direct mode</a>.)</p>++<p>That's a good thing, because it might be the only copy, you wouldn't+want to lose it in a fumblefingered mistake.</p>++<pre><code># echo oops > my_cool_big_file+bash: my_cool_big_file: Permission denied+</code></pre>++<p>In order to modify a file, it should first be unlocked.</p>++<pre><code># git annex unlock my_cool_big_file+unlock my_cool_big_file (copying...) ok+</code></pre>++<p>That replaces the symlink that normally points at its content with a copy+of the content. You can then modify the file like any regular file. Because+it is a regular file.</p>++<p>(If you decide you don't need to modify the file after all, or want to discard+modifications, just use <code>git annex lock</code>.)</p>++<p>When you <code>git commit</code>, git-annex's pre-commit hook will automatically+notice that you are committing an unlocked file, and add its new content+to the annex. The file will be replaced with a symlink to the new content,+and this symlink is what gets committed to git in the end.</p>++<pre><code># echo "now smaller, but even cooler" > my_cool_big_file+# git commit my_cool_big_file -m "changed an annexed file"+add my_cool_big_file ok+[master 64cda67] changed an annexed file+ 1 files changed, 1 insertions(+), 1 deletions(-)+</code></pre>++<p>There is one problem with using <code>git commit</code> like this: Git wants to first+stage the entire contents of the file in its index. That can be slow for+big files (sorta why git-annex exists in the first place). So, the+automatic handling on commit is a nice safety feature, since it prevents+the file content being accidentally committed into git. But when working with+big files, it's faster to explicitly add them to the annex yourself+before committing.</p>++<pre><code># echo "now smaller, but even cooler yet" > my_cool_big_file+# git annex add my_cool_big_file+add my_cool_big_file ok+# git commit my_cool_big_file -m "changed an annexed file"+</code></pre>++<h2><a name="index11h2"></a><a href="./walkthrough/using_ssh_remotes.html">using ssh remotes</a></h2>+<p>So far in this walkthrough, git-annex has been used with a remote+repository on a USB drive. But it can also be used with a git remote+that is truely remote, a host accessed by ssh.</p>++<p>Say you have a desktop on the same network as your laptop and want+to clone the laptop's annex to it:</p>++<pre><code># git clone ssh://mylaptop/home/me/annex ~/annex+# cd ~/annex+# git annex init "my desktop"+</code></pre>++<p>Now you can get files and they will be transferred (using <code>rsync</code> via <code>ssh</code>):</p>++<pre><code># git annex get my_cool_big_file+get my_cool_big_file (getting UUID for origin...) (from origin...)+SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e 100% 2159 2.1KB/s 00:00+ok+</code></pre>++<p>When you drop files, git-annex will ssh over to the remote and make+sure the file's content is still there before removing it locally:</p>++<pre><code># git annex drop my_cool_big_file+drop my_cool_big_file (checking origin..) ok+</code></pre>++<p>Note that normally git-annex prefers to use non-ssh remotes, like+a USB drive, before ssh remotes. They are assumed to be faster/cheaper to+access, if available. There is a annex-cost setting you can configure in+<code>.git/config</code> to adjust which repositories it prefers. See+<a href="./git-annex.html">the man page</a> for details.</p>++<p>Also, note that you need full shell access for this to work --+git-annex needs to be able to ssh in and run commands. Or at least,+your shell needs to be able to run the <a href="./git-annex-shell.html">git-annex-shell</a> command.</p>++<h2><a name="index12h2"></a><a href="./walkthrough/moving_file_content_between_repositories.html">moving file content between repositories</a></h2>+<p>Often you will want to move some file contents from a repository to some+other one. For example, your laptop's disk is getting full; time to move+some files to an external disk before moving another file from a file+server to your laptop. Doing that by hand (by using <code>git annex get</code> and+<code>git annex drop</code>) is possible, but a bit of a pain. <code>git annex move</code>+makes it very easy.</p>++<pre><code># git annex move my_cool_big_file --to usbdrive+move my_cool_big_file (to usbdrive...) ok+# git annex move video/hackity_hack_and_kaxxt.mov --from fileserver+move video/hackity_hack_and_kaxxt.mov (from fileserver...)+SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e 100% 82MB 199.1KB/s 07:02+ok+</code></pre>++<h2><a name="index13h2"></a><a href="./walkthrough/unused_data.html">unused data</a></h2>+<p>It's possible for data to accumulate in the annex that no files in any+branch point to anymore. One way it can happen is if you <code>git rm</code> a file+without first calling <code>git annex drop</code>. And, when you modify an annexed+file, the old content of the file remains in the annex. Another way is when+migrating between key-value <a href="./backends.html">backends</a>.</p>++<p>This might be historical data you want to preserve, so git-annex defaults to+preserving it. So from time to time, you may want to check for such data and+eliminate it to save space.</p>++<pre><code># git annex unused+unused . (checking for unused data...) + Some annexed data is no longer used by any files in the repository.+ NUMBER KEY+ 1 SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e+ 2 SHA1-s14--f1358ec1873d57350e3dc62054dc232bc93c2bd1+ (To see where data was previously used, try: git log --stat -S'KEY')+ (To remove unwanted data: git-annex dropunused NUMBER)+ok+</code></pre>++<p>After running <code>git annex unused</code>, you can follow the instructions to examine+the history of files that used the data, and if you decide you don't need that+data anymore, you can easily remove it:</p>++<pre><code># git annex dropunused 1+dropunused 1 ok+</code></pre>++<p>Hint: To drop a lot of unused data, use a command like this:</p>++<pre><code># git annex dropunused 1-1000+</code></pre>++<h2><a name="index14h2"></a><a href="./walkthrough/fsck:_verifying_your_data.html">fsck: verifying your data</a></h2>+<p>You can use the fsck subcommand to check for problems in your data. What+can be checked depends on the key-value <a href="./backends.html">backend</a> you've used+for the data. For example, when you use the SHA1 backend, fsck will verify+that the checksums of your files are good. Fsck also checks that the+annex.numcopies setting is satisfied for all files.</p>++<pre><code># git annex fsck+fsck some_file (checksum...) ok+fsck my_cool_big_file (checksum...) ok+...+</code></pre>++<p>You can also specify the files to check. This is particularly useful if+you're using sha1 and don't want to spend a long time checksumming everything.</p>++<pre><code># git annex fsck my_cool_big_file+fsck my_cool_big_file (checksum...) ok+</code></pre>++<h2><a name="index15h2"></a><a href="./walkthrough/fsck:_when_things_go_wrong.html">fsck: when things go wrong</a></h2>+<p>Fsck never deletes possibly bad data; instead it will be moved to+<code>.git/annex/bad/</code> for you to recover. Here is a sample of what fsck+might say about a badly messed up annex:</p>++<pre><code># git annex fsck+fsck my_cool_big_file (checksum...)+git-annex: Bad file content; moved to .git/annex/bad/SHA1:7da006579dd64330eb2456001fd01948430572f2+git-annex: ** No known copies exist of my_cool_big_file+failed+fsck important_file+git-annex: Only 1 of 2 copies exist. Run git annex get somewhere else to back it up.+failed+git-annex: 2 failed+</code></pre>++<h2><a name="index16h2"></a><a href="./walkthrough/backups.html">backups</a></h2>+<p>git-annex can be configured to require more than one copy of a file exists,+as a simple backup for your data. This is controlled by the "annex.numcopies"+setting, which defaults to 1 copy. Let's change that to require 2 copies,+and send a copy of every file to a USB drive.</p>++<pre><code># echo "* annex.numcopies=2" >> .gitattributes+# git annex copy . --to usbdrive+</code></pre>++<p>Now when we try to <code>git annex drop</code> a file, it will verify that it+knows of 2 other repositories that have a copy before removing its+content from the current repository.</p>++<p>You can also vary the number of copies needed, depending on the file name.+So, if you want 3 copies of all your flac files, but only 1 copy of oggs:</p>++<pre><code># echo "*.ogg annex.numcopies=1" >> .gitattributes+# echo "*.flac annex.numcopies=3" >> .gitattributes+</code></pre>++<p>Or, you might want to make a directory for important stuff, and configure+it so anything put in there is backed up more thoroughly:</p>++<pre><code># mkdir important_stuff+# echo "* annex.numcopies=3" > important_stuff/.gitattributes+</code></pre>++<p>For more details about the numcopies setting, see <a href="./copies.html">copies</a>.</p>++<h2><a name="index17h2"></a><a href="./walkthrough/automatically_managing_content.html">automatically managing content</a></h2>+<p>Once you have multiple repositories, and have perhaps configured numcopies,+any given file can have many more copies than is needed, or perhaps fewer+than you would like. How to manage this?</p>++<p>The whereis subcommand can be used to see how many copies of a file are known,+but then you have to decide what to get or drop. In this example, there+are perhaps not enough copies of the first file, and too many of the second+file.</p>++<pre><code># cd /media/usbdrive+# git annex whereis+whereis my_cool_big_file (1 copy)+ 0c443de8-e644-11df-acbf-f7cd7ca6210d -- laptop+whereis other_file (3 copies)+ 0c443de8-e644-11df-acbf-f7cd7ca6210d -- laptop+ 62b39bbe-4149-11e0-af01-bb89245a1e61 -- here (usb drive)+ 7570b02e-15e9-11e0-adf0-9f3f94cb2eaa -- backup drive+</code></pre>++<p>What would be handy is some automated versions of get and drop, that only+gets a file if there are not yet enough copies of it, or only drops a file+if there are too many copies. Well, these exist, just use the --auto option.</p>++<pre><code># git annex get --auto --numcopies=2+get my_cool_big_file (from laptop...) ok+# git annex drop --auto --numcopies=2+drop other_file ok+</code></pre>++<p>With two quick commands, git-annex was able to decide for you how to+work toward having two copies of your files.</p>++<pre><code># git annex whereis+whereis my_cool_big_file (2 copies)+ 0c443de8-e644-11df-acbf-f7cd7ca6210d -- laptop+ 62b39bbe-4149-11e0-af01-bb89245a1e61 -- here (usb drive)+whereis other_file (2 copies)+ 0c443de8-e644-11df-acbf-f7cd7ca6210d -- laptop+ 7570b02e-15e9-11e0-adf0-9f3f94cb2eaa -- backup drive+</code></pre>++<p>The --auto option can also be used with the copy command,+again this lets git-annex decide whether to actually copy content.</p>++<p>The above shows how to use --auto to manage content based on the number+of copies. It's also possible to configure, on a per-repository basis,+which content is desired. Then --auto also takes that into account+see <a href="./preferred_content.html">preferred content</a> for details.</p>++<h2><a name="index18h2"></a><a href="./walkthrough/more.html">more</a></h2>+<p>So ends the walkthrough. By now you should be able to use git-annex.</p>++<p>Want more? See <a href="./tips.html">tips</a> for lots more features and advice.</p>+++++++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="./distributed_version_control.html">distributed version control</a>++<a href="./how_it_works.html">how it works</a>++<a href="./install/Android.html">install/Android</a>++<a href="./sidebar.html">sidebar</a>++<a href="./summary.html">summary</a>++<a href="./tips/centralized_git_repository_tutorial.html">tips/centralized git repository tutorial</a>++<a href="./tips/using_git_annex_with_no_fixed_hostname_and_optimising_ssh.html">tips/using git annex with no fixed hostname and optimising ssh</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,148 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>backups</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../walkthrough.html">walkthrough</a>/ ++</span>+<span class="title">+backups++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>git-annex can be configured to require more than one copy of a file exists,+as a simple backup for your data. This is controlled by the "annex.numcopies"+setting, which defaults to 1 copy. Let's change that to require 2 copies,+and send a copy of every file to a USB drive.</p>++<pre><code># echo "* annex.numcopies=2" >> .gitattributes+# git annex copy . --to usbdrive+</code></pre>++<p>Now when we try to <code>git annex drop</code> a file, it will verify that it+knows of 2 other repositories that have a copy before removing its+content from the current repository.</p>++<p>You can also vary the number of copies needed, depending on the file name.+So, if you want 3 copies of all your flac files, but only 1 copy of oggs:</p>++<pre><code># echo "*.ogg annex.numcopies=1" >> .gitattributes+# echo "*.flac annex.numcopies=3" >> .gitattributes+</code></pre>++<p>Or, you might want to make a directory for important stuff, and configure+it so anything put in there is backed up more thoroughly:</p>++<pre><code># mkdir important_stuff+# echo "* annex.numcopies=3" > important_stuff/.gitattributes+</code></pre>++<p>For more details about the numcopies setting, see <a href="../copies.html">copies</a>.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,123 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>more</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../walkthrough.html">walkthrough</a>/ ++</span>+<span class="title">+more++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>So ends the walkthrough. By now you should be able to use git-annex.</p>++<p>Want more? See <a href="../tips.html">tips</a> for lots more features and advice.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,146 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>syncing</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../walkthrough.html">walkthrough</a>/ ++</span>+<span class="title">+syncing++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Notice that in the <a href="./getting_file_content.html">previous example</a>, you had to+git fetch and merge from laptop first. This lets git-annex know what has+changed in laptop, and so it knows about the files present there and can+get them.</p>++<p>If you have a lot of repositories to keep in sync, manually fetching and+merging from them can become tedious. To automate it there is a handy+sync command, which also even commits your changes for you.</p>++<pre><code># cd /media/usb/annex+# git annex sync+commit+nothing to commit (working directory clean)+ok+pull laptop+ok+push laptop+ok+</code></pre>++<p>After you run sync, the repository will be updated with all changes made to+its remotes, and any changes in the repository will be pushed out to its+remotes, where a sync will get them. This is especially useful when using+git in a distributed fashion, without a+<a href="../tips/centralized_git_repository_tutorial.html">central bare repository</a>. See+<a href="../sync.html">sync</a> for details.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,205 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>unused data</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../walkthrough.html">walkthrough</a>/ ++</span>+<span class="title">+unused data++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>It's possible for data to accumulate in the annex that no files in any+branch point to anymore. One way it can happen is if you <code>git rm</code> a file+without first calling <code>git annex drop</code>. And, when you modify an annexed+file, the old content of the file remains in the annex. Another way is when+migrating between key-value <a href="../backends.html">backends</a>.</p>++<p>This might be historical data you want to preserve, so git-annex defaults to+preserving it. So from time to time, you may want to check for such data and+eliminate it to save space.</p>++<pre><code># git annex unused+unused . (checking for unused data...) + Some annexed data is no longer used by any files in the repository.+ NUMBER KEY+ 1 SHA256-s86050597--6ae2688bc533437766a48aa19f2c06be14d1bab9c70b468af445d4f07b65f41e+ 2 SHA1-s14--f1358ec1873d57350e3dc62054dc232bc93c2bd1+ (To see where data was previously used, try: git log --stat -S'KEY')+ (To remove unwanted data: git-annex dropunused NUMBER)+ok+</code></pre>++<p>After running <code>git annex unused</code>, you can follow the instructions to examine+the history of files that used the data, and if you decide you don't need that+data anymore, you can easily remove it:</p>++<pre><code># git annex dropunused 1+dropunused 1 ok+</code></pre>++<p>Hint: To drop a lot of unused data, use a command like this:</p>++<pre><code># git annex dropunused 1-1000+</code></pre>++</div>++++<div id="comments">+<div class="feedlink">+++</div>+<div class="comment" id="comment-edbc8f4d58de3e553706acdb6c8a53bb">++++<div class="comment-subject">++<a href="/walkthrough/unused_data.html#comment-edbc8f4d58de3e553706acdb6c8a53bb">finding data that isn't unused, but should be.</a>++</div>++<div class="inlinecontent">+<p>Sometimes links to annexed data still exists on some branch, when it was supposed to be dropped. Here is how I found these; perhaps there is a simpler way.</p>++<pre><code>% git annex find --format '${key}\n' | sort > /tmp/known-keys+% find .git/annex/objects -type f -exec basename {} \; | sort > /tmp/local-keys+% comm -23 /tmp/local-keys /tmp/known-keys+</code></pre>++<p>to look for what branch these are on, try</p>++<pre><code>% git log --stat --all -S$key+</code></pre>++<p>for one of the keys output above. In my case it was the same remote branch keeping them all alive.</p>++<p><em>EDIT</em> sort key lists to make comm work properly</p>+++</div>++<div class="comment-header">++Comment by++<span class="author" title="Signed in">++<a href="?page=bremner&do=goto">bremner</a>++</span>+++— <span class="date">Wed Oct 17 16:32:11 2012</span>+</div>++++<div style="clear: both"></div>+</div>+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">++++++++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
@@ -0,0 +1,164 @@+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">+<html xmlns="http://www.w3.org/1999/xhtml">++<head>++<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />+<title>using bup</title>++<link rel="stylesheet" href="../style.css" type="text/css" />++<link rel="stylesheet" href="../local.css" type="text/css" />+++++++</head>+<body>++<div class="page">++<div class="pageheader">+<div class="header">+<span>+<span class="parentlinks">++<a href="../index.html">git-annex</a>/ ++<a href="../walkthrough.html">walkthrough</a>/ ++</span>+<span class="title">+using bup++</span>+</span>++</div>++++++++</div>+++<div class="sidebar">+<p><img src="../logo_small.png" width="150" height="115" class="img" /></p>++<ul>+<li><a href="../install.html">install</a></li>+<li><a href="../assistant.html">assistant</a></li>+<li><a href="../walkthrough.html">walkthrough</a></li>+<li><a href="../tips.html">tips</a></li>+<li><span class="createlink">bugs</span></li>+<li><span class="createlink">todo</span></li>+<li><span class="createlink">forum</span></li>+<li><a href="../comments.html">comments</a></li>+<li><a href="../contact.html">contact</a></li>+<li><a href="http://flattr.com/thing/84843/git-annex"><img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" /></a></li>+</ul>+++</div>+++<div id="pagebody">++<div id="content">+<p>Another <a href="../special_remotes.html">special remote</a> that git-annex can use is+a <a href="../special_remotes/bup.html">bup</a> repository. Bup stores large file contents+in a git repository of its own, with deduplication. Combined with+git-annex, you can have git on both the frontend and the backend.</p>++<p>Here's how to create a bup remote, and describe it.</p>++<p>[[!template <span class="error">Error: failed to process template <span class="createlink">note</span> </span>]]</p>++<pre><code># git annex initremote mybup type=bup encryption=none buprepo=example.com:/big/mybup+initremote bup (bup init)+Initialized empty Git repository in /big/mybup/+ok+# git annex describe mybup "my bup repository at example.com"+describe mybup ok+</code></pre>++<p>Now the remote can be used like any other remote.</p>++<pre><code># git annex move my_cool_big_file --to mybup+move my_cool_big_file (to mybup...)+Receiving index from server: 1100/1100, done.+ok+</code></pre>++<p>Note that, unlike other remotes, bup does not really support removing+content from its git repositories. This is a feature. :)</p>++<pre><code># git annex move my_cool_big_file --from mybup+move my_cool_big_file (from mybup...)+ content cannot be removed from bup remote+failed+git-annex: 1 failed+</code></pre>++<p>See <a href="../special_remotes/bup.html">bup</a> for details.</p>++</div>++++<div id="comments">+++++<div class="addcomment">Comments on this page are closed.</div>++</div>++++</div>++<div id="footer" class="pagefooter">++<div id="pageinfo">+++++++<div id="backlinks">+Links:++<a href="../special_remotes/bup.html">special remotes/bup</a>+++</div>+++++++<div class="pagedate">+Last edited <span class="date">Fri Sep 28 01:45:57 2012</span>+<!-- Created <span class="date">Fri Sep 28 01:45:57 2012</span> -->+</div>++</div>+++<!-- from git-annex -->+</div>++</div>++</body>+</html>
binary file changed (absent → 1383 bytes)
binary file changed (absent → 12639 bytes)
@@ -1,33 +0,0 @@-What steps will reproduce the problem?--Building from latest source, Cabal update, cabal install --only dependencies, cabal configure, Cabal build--What is the expected output? What do you see instead?--Error message from build--...--Loading package DAV-0.2 ... linking ... done.--Loading object (static) dist/build/git-annex/git-annex-tmp/Utility/libdiskfree.o ... done--Loading object (static) dist/build/git-annex/git-annex-tmp/Utility/libmounts.o ... done--final link ... done---Assistant/Threads/WebApp.hs:47:1: Not in scope: `getAddBoxComR'--Assistant/Threads/WebApp.hs:47:1: Not in scope: `getEnableWebDAVR'---What version of git-annex are you using? On what operating system?--Latest version via git from git-annex.branchable.com--Debian Squeeze (6.0.6)--Please provide any additional information below.--> I noticed this earlier and fixed it. [[done]] --[[Joey]]
@@ -1,16 +0,0 @@-### Please describe the problem.--I'm trying to use the assistant to replicate the basic dropbox functionality of having a synced folder between two machines. Instead of actually syncing file contents by default the assistant just creates broken symlinks.--### What steps will reproduce the problem?--I've setup two repositories with each other as ssh remotes and ran the assistant on each after setting them in direct mode. I can create files on each of the repositories and have them show up on the other but all that shows up is a broken link. Actual contents don't get transferred. If I do a "git annex get" I can get the contents just fine. I tried setting annex.numcopies to 2 and that didn't work either.--What I'm missing here is some setting to tell the assistant "sync the contents of every new file". What it's doing instead is unacceptable. If I have the file in both repositories and change it in one, the other repository gets it's previous version of the file replaced by a broken symlink. From my point of view for the assistant to be a dropbox replacement it should never, under any circumstances, create a broken symlink in the sync folder. I had understood that that's what direct mode was, but it's not behaving that way right now at least.--### What version of git-annex are you using? On what operating system?--My basic setup for testing is two Ubuntu 12.04 LTS machines running git-annex 4.20130501--> [[done]], broken ~/.config/git-annex/program file, which is now detected-> and worked around. --[[Joey]]
@@ -1,61 +0,0 @@-### Please describe the problem.--I added a lot of files to my annex in direct mode. Now I want to switch to indirect mode. git-annex status and indirect create an out-of-memory error.--### What steps will reproduce the problem?--I am not really sure, I added a lot of files to the annex, almost 3TB.-Then either git-annex status or git-annex indirect cause a similar error (see below).---### What version of git-annex are you using? On what operating system?--git-annex version: 4.20130501-g4a5bfb3-local repository version: 4-default repository version: 3-supported repository versions: 3 4-upgrade supported from repository versions: 0 1 2-build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP--Ubuntu precise-3.2.0-26-generic---### Please provide any additional information below.--[[!format sh """-# If you can, paste a complete transcript of the problem occurring here.-# If the problem is with the git-annex assistant, paste in .git/annex/debug.log-git-annex status-supported backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL-supported remote types: git S3 bup directory rsync web webdav glacier hook-repository mode: direct-trusted repositories: 0-semitrusted repositories: 7- 00000000-0000-0000-0000-000000000001 -- web- 0b8e6666-80d5-11e2-adf3-6f4d3d6ef0aa -- marek@x4:~/tmp/annex- 65c057c6-6027-11e2-84b0-b77d71696e49 -- here (.)- 96b31c5e-6524-11e2-b136-fbd1a03b2799 -- BackupOnGlacier- b509c388-629a-11e2-be5f-d376e201ad86 -- marek@x201:~/AllData- c636e33c-6e31-11e2-a9c4-a3c5546d69d9 -- desktop- fbaa1c3a-60d7-11e2-842f-9348368d2f4c -- .-untrusted repositories: 0-dead repositories: 0-transfers in progress: none-available local disk space: 81 gigabytes (+1 megabyte reserved)-temporary directory size: 9 megabytes (clean up with git-annex unused)-local annex keys: 61396-local annex size: 3 terabytes-known annex keys: git-annex: out of memory (requested 985661440 bytes)--OR--git-annex indirect-commit git-annex: out of memory (requested 985661440 bytes)------# End of transcript or log.-"""]]
@@ -1,19 +0,0 @@-What steps will reproduce the problem?--Adding files to a local annex set up to sync to a remote S3 one---What is the expected output? What do you see instead?--It syncs, but maxes out the uplink---What version of git-annex are you using? On what operating system?--3.20121112 on Debian testing---Please provide any additional information below.--The man page lists how to configure rate limiting for rsync, not sure how to do it for this-
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joey.kitenet.net/"- nickname="joey"- subject="comment 1"- date="2012-01-06T03:04:35Z"- content="""-Despite `status` listing S3 support, your git-annex is actually built with S3stub, probably because it failed to find the necessary S3 module at build time. Rebuild git-annex and watch closely, you'll see \"** building without S3 support\". Look above that for the error and fix it.--It was certianly a bug that it showed S3 as supported when built without it. I've fixed that.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joey.kitenet.net/"- nickname="joey"- subject="comment 2"- date="2012-01-06T03:08:28Z"- content="""-BTW, you'll want to \"make clean\", since the S3stub hack symlinks a file into place and it will continue building with S3stub even if you fix the problem until you clean.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkey8WuXUh_x5JC2c9_it1CYRnVTgdGu1M"- nickname="Dustin"- subject="Thank you!"- date="2012-01-06T03:38:27Z"- content="""-make clean and rebuild worked... Thank you-"""]]
@@ -1,15 +0,0 @@-Running the 'assistant' branch, I occassionally get--To myhost1:/Users/jtang/annex- ! [rejected] master -> synced/master (non-fast-forward)-error: failed to push some refs to 'myhost1:/Users/jtang/annex'-hint: Updates were rejected because a pushed branch tip is behind its remote-hint: counterpart. Check out this branch and merge the remote changes-hint: (e.g. 'git pull') before pushing again.-hint: See the 'Note about fast-forwards' in 'git push --help' for details.-(Recording state in git...)--manually running a 'git annex sync' usually fixes it, I guess once the sync command runs periodically this problem will go away, is this even OSX specific? I don't quite get the behaviour that is described in [[design/assistant/blog/day_15__its_aliiive]].--> With my changes today, I've seen it successfully recover from this-> situation. [[done]] --[[Joey]]
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.3.194"- subject="comment 10"- date="2013-01-19T16:13:20Z"- content="""-The app uses the version of git included in it, because using the system's installed version if there is one is likely to run into other version incompatabilities. --You can either install git-annex using cabal and homebrew, as documented, or you could go in and delete-all the git programs out of the app, and then it'd use the system's git stuff instead.-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 10"- date="2013-04-16T17:14:13Z"- content="""-@Jeremy, it's been a long time since anyone reported having the \"LSOpenURLsWithRole()\". It seemed to go away when the dmg was fixed to include all the necessary libraries. So my guess is you installed it wrong, somehow, and perhaps it's not finding those libraries that are part of the dmg.--You should be able to start the assistant by running it directly from the dmg.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlkAghrKEvslMcV2INKUhtPPMsfnzQyyd8"- nickname="Jeremy"- subject="comment 11"- date="2013-04-17T02:02:00Z"- content="""-@joey, figured it out. There was a program added to the startup list, presumably from when I ran things from the dmg a while ago. Once I delete that, it started fine. Of course, I forgot to write down the name of the program... I remember it had an LW in the name.-"""]]
@@ -1,26 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlYy4BrJyV1PdfqzevCVziXRp89iUH6Xzw"- nickname="Christopher"- subject="Code signing errors in log on starting git-annex.app"- date="2013-01-19T22:30:32Z"- content="""-When I run via the App and set up a fresh repo, i get some Console.app spam (looks like one per file added to the repo dir... or maybe one per git command?):-- 2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x1008b4000): p=73995[git] clearing CS_VALID- 2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x10f99e000): p=73996[git] clearing CS_VALID- 2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x102b44000): p=73997[git] clearing CS_VALID- 2013-01-19 2:44:55.000 PM kernel[0]: CODE SIGNING: cs_invalid_page(0x1029f4000): p=73998[git] clearing CS_VALID- ...--and nothing seems to work. The page address and the pid increment steadily with each line. I'm using 10.8.2 (12C60) on a Mac Pro, and grabbed:-- /git-annex/OSX/current/10.8.2_Mountain_Lion/git-annex.dmg.bz2 --(published 14-Jan-2013 15:19)--It seems to be a code signing issue, perhaps with the vendored git binaries. While things are sort-of working, the web app shows the files flying by really fast. --Using a fresh repo via `git annex webapp` works great (I built that after much teeth-knashing, brew install/link cycles, and then cabal install git-annex). --I am very excited for this to work, this is exactly what I've been waiting for to replace dropbox. Came very close to writing it myself a few times (and in Haskell no less!!). -"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkCw26IdxXXPBoLcZsQFslM67OJSJynb1w"- nickname="Alexander"- subject="standalone app dmg won't open in OSX 10.8.3"- date="2013-04-29T18:05:54Z"- content="""-I downloaded the app build from [http://downloads.kitenet.net/git-annex/OSX/current/10.8.2_Mountain_Lion/](http://downloads.kitenet.net/git-annex/OSX/current/10.8.2_Mountain_Lion/) and unpacked it, but the .dmg won't open. I can run other dmg's successfully. --Trying to install git-annex via cabal on the same machine led to this issue: [http://git-annex.branchable.com/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__/#comment-7cc94df1bf9a75a6d03369f3897d6816](http://git-annex.branchable.com/tips/Building_git-annex_on_Debian_OR___37____164____35____34____164____37____38____34____35___Haskell__33__/#comment-7cc94df1bf9a75a6d03369f3897d6816)-"""]]
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmYiJgOvC4IDYkr2KIjMlfVD9r_1Sij_jY"- nickname="Douglas"- subject="Error creating remote repository using ssh on OSX"- date="2013-01-25T13:18:40Z"- content="""-There is an issue with creating remote repositories using ssh (the problem may require using a different account name.) I filed the following bug:---<http://git-annex.branchable.com/bugs/Error_creating_remote_repository_using_ssh_on_OSX/>-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkN91jAhoesnVI9TtWANaBPaYjd1V9Pag8"- nickname="Benjamin"- subject="Package for older OS X"- date="2012-11-17T12:36:45Z"- content="""-Is there an option to provide application bundle for older versions of OS X? The last time I tried the bundle wouldn't work under 10.5. If no specific features from newer OS X versions are required, it could be enough to add a simple switch when building.-"""]]
@@ -1,15 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkurjhi0CRJvgm7QNaZDWS9hitBtavqIpc"- nickname="Bret"- subject="git-annex.app Not working on 32 bit machines"- date="2012-11-03T19:18:47Z"- content="""-I tried running the git-annex.app on my Core Duo Macbook pro, and it does not run at all. I get an error on my system.log--`Nov 3 12:13:26 Bret-Mac [0x0-0x15015].com.branchable.git-annex[155]: /Applications/git-annex.app/Contents/MacOS/runshell: line 52: /Applications/git-annex.app/Contents/MacOS/bin/git-annex: Bad CPU type in executable-Nov 3 12:13:26 Bret-Mac com.apple.launchd.peruser.501[92] ([0x0-0x15015].com.branchable.git-annex[155]): Exited with exit code: 1`--It works on my 64 bit machine, and this has become quite the problem for a while now, where people with newer macs dont compile back for a 32bit machine. --Is there any hope for a pre-compiled binary that works on a 32 bit machine?-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"- nickname="Jimmy"- subject="comment 8"- date="2012-11-07T16:08:00Z"- content="""-I've been updating my haskell platform install recently, i used to try and get the builder to spit out 32/64bit binaries, but recently it's just become too messy, I've just migrated to a full 64bit build system. I'm afraid I won't be able to provide 32bit builds any more.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmOsimKUgz6rxpmsS_nrBQGavEYyUpDlsE"- nickname="Tim"- subject="OS X 10.8.2"- date="2013-01-11T00:07:54Z"- content="""-Double click on the app, give permission for it to run and ... nothing-"""]]
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"- nickname="Andrew"- subject="Prefer the system/path git binaries if they're a newer version"- date="2013-01-19T06:20:38Z"- content="""-I have used homebrew to install git v1.8.0.2 but git-annex.app packages git v1.7.10.2. git 1.7 crashes due to some newer directives in my global git config.-- error: Malformed value for push.default: simple- error: Must be one of nothing, matching, tracking or current.- fatal: bad config file line 38 in /Users/akraut/.gitconfig- - git-annex: fd:13: hGetLine: end of file- failed- git-annex: webapp: 1 failed--"""]]
@@ -1,18 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlkAghrKEvslMcV2INKUhtPPMsfnzQyyd8"- nickname="Jeremy"- subject="Unable to start assistant"- date="2013-04-16T01:07:05Z"- content="""-I got the git-annex assistant to work once a long time ago when I ran it the first time directly from the dmg. Ever since then (i.e., after putting it in my applications folder) I have never gotten it to run. Wondering if anyone else has experienced this?--I am running OSX 10.7.5 and just pulled the latest app (05-Apr-2013 10:17).--For reference, when I try to kick off the the assistant from the command line I get the error:-- $ open /Applications/git-annex.app- LSOpenURLsWithRole() failed with error -10810 for the file /Applications/git-annex.app.--I am wondering if there is some sort of file or modification that was made when I accidently kicked it off initially from the dmg, if so any thoughts on what to clear / change?--"""]]
@@ -1,30 +0,0 @@-What steps will reproduce the problem?--Add an encrypted rsync remote by it's 'Host' value in ~/.ssh/config.--eg.:--cat ~/.ssh/config | grep Host-- Host serverNick--git annex initremote rsyncRemote type=rsync rsyncurl=serverNick:/home/USER/Music encryption=USER@gmail.com--git annex copy some\ artist --to serverNick---What is the expected output? What do you see instead?--I'd expect it to remember the key password like a normal ssh remote. Instead I get asked for the key password 3 times for each file in the folder.--What version of git-annex are you using? On what operating system?--3.20130216. Arch x64 (up to date as of 2013-03-07)--Please provide any additional information below.---[[!meta title="rsync special remote does not use ssh connection caching"]]--> [[done]]; ssh connection caching is now done for these remotes.-> --[[Joey]]
@@ -1,30 +0,0 @@-#What steps will reproduce the problem?--1. Create a new repository in indirect mode.--2. Add the same file twice under a different name. Now you have two symlinks pointing to the same file under .git/annex/objects/--3. Switch to direct mode. The first symlink gets replaced by the actual file. The second stays unchanged, pointing to nowhere. But git annex whereis still reports it has a copy.--4. Delete the first file. Git annex whereis still thinks it has a copy of file 2, which is not true -> data loss.--#What is the expected output? What do you see instead?--When switching to direct mode, both symlinks should be replaced by a copy (or at least a hardlink) of the actual file.--> The typo that caused this bug is fixed. --[[Joey]] --#What version of git-annex are you using? On what operating system?--3.20130107 on Arch Linux x64--#Please provide any additional information below.--The deduplication performed by git-annex is very dangerous in itself-because files with identical content become replaced by references to the-same file without the user necessarily being aware. Think of the user-making a copy of a file, than modifying it. He would expect to end up with-two files, the unchanged original and the modified copy. But what he really-gets is two symlinks pointing to the same modified file.--> I agree, it now copies rather than hard linking. [[done]] --[[Joey]]
@@ -1,27 +0,0 @@-### Please describe the problem.--This is a one-off thing, not a reproducible bug. It was just so weird that I wanted to make a note of it in case somebody else had the same problem and it was reproducible.--I have a remote on the a USB drive which I mount once in a while on /Volumes/TOSHIBAEXT which has a remote on /Volumes/TOSHIBAEXT/annex. It's a remote which I created by hand using "git clone" a long time ago, not something the assistant set up for me.--Anyway, today the assistant kept reporting that it could not sync to it. I didn't know why, because I checked in my Finder sidebar and it showed a mounted drive called TOSHIBAEXT. It's only when I checked with the command line that I noticed something was up! There was now an ordinary directory at /Volumes/TOSHIBAEXT/annex. This had apparently been created at some point when the drive was unmounted, so when it re-mounted, because there was a directory in the way, it re-mounted at "/Volumes/TOSHIBAEXT 1". But it was displayed in the finder sidebar as just "TOSHIBAEXT" anyway because the finder hides this workaround from the user for whatever reason.--Presumably git-annex assistant at some point, for some reason, created an ordinary directory where it expected to find the annex.--I wonder if this may have to do with the fact that this is a non-bare, created-by-hand repo, from before I was using the assistant, not a normal bare remote that the assistant would have created for me if I'd been using the webapp.--### What steps will reproduce the problem?--I've only seen it once, and report the bug not as an outstanding issue but only as a heads-up that this has ever happened.--### What version of git-annex are you using? On what operating system?--git-annex version: 4.20130501-gb61740e--OS X lion (10.7)--### Please provide any additional information below.--I wasn't logging when this happened.--Again, just a heads-up; I'll keep my eye open for this happening again and post more info if it does.
@@ -1,34 +0,0 @@-After a series of pretty convoluted copying files around between annex'd repos and pulling changes around between repos. I noticed that occassionally when git-annex tries to stage files (the `.git-annex/*/*/*logs`) git some times gets wedged and doing a "git commit -a" doesn't seem to work or files might not get added thus leaving a bunch of untracked files or modified files that aren't staged for a commit.--I tried running a *`git rm --cached -f -r *`* then *git add -u .git-annex/* or the usual *git add* then a commit fixes things for me. If I don't do that then my subsequent merges/pulls will fail and result in *no known copies of files* I suspect git-annex might have just touched some file modes and git picked up the changes but got confused since there was no content change. It might also just be a git on OSX thing and it doesn't affect linux/bsd users.--For now it's just a bit of extra work for me when it does occur but it does not seem to occur often.--> What do you mean when you say that git "got wedged"? It hung somehow?->-> If git-annex runs concurrently with another git command that locks-> the repository, its git add of log files can fail.-> -> Update: Also, of course, if you are running a "got annex get" or-> similar, and ctrl-c it after it has gotten some files, it can-> end up with unstaged or in some cases un-added log files that git-annex-> wrote -- since git-annex only stages log files in git on shutdown, and-> ctrl-c bypasses that.-> --[[Joey]] -->> It "got wedged" as in git doesn't let me commit anything, even though it tells me that there is stuff to be committed in the staging area.-->>> I've never seen git refuse to commit staged files. There would have to->>> be some error message? --[[Joey]] -->>>> there were no error messages at all-->>>>> Can I see a transcript? I'm having difficulty getting my head around->>>>> what git is doing. Sounds like the files could just not be `git->>>>> added` yet, but I get the impression from other things that you say->>>>> that it's not so simple. --[[Joey]] --This turns out to be a bug in git, and I have posted a bug report on the mailing list.-The git-annex behavior that causes this situation is being handled as-another bug, [[git-annex directory hashing problems on osx]].-So, closing this bug report. [[done]] --[[Joey]]
@@ -1,32 +0,0 @@-What steps will reproduce the problem?-- $ git clone ~/corbeau/travail/ travail- Cloning into 'travail'...- done.- Checking out files: 100% (8670/8670), done.- $ cd travail- $ git annex init "portable USB drive"- init portable USB drive - Detected a crippled filesystem.-- Enabling direct mode.-- git-annex: /media/LACIE/travail/.git/annex/objects/k1: createDirectory: already exists (File exists)- failed- git-annex: init: 1 failed--What version of git-annex are you using? On what operating system?- $ apt-cache policy git-annex- git-annex:- Installé : 3.20130216--This on a amd64 debian sid recently updated---Please provide any additional information below.--The problem is that git annex already created a /media/LACIE/travail/.git/annex/objects/K1 file (same name in uppercase) and FAT isn't realy case sensitive.---> I *think* I've found the place that used createDirectory-> rather than createDirectoryIfMissing and fixed it. [[done]] --[[Joey]]
@@ -1,34 +0,0 @@-For test.com//test, I get this:-- % git annex copy . --to test.com//test- (getting UUID for test...) git-annex: there is no git remote named "test.com//test"--And my .git/config changes from-- [remote "test.com//test"]- url = richih@test.com:/test- fetch = +refs/heads/*:refs/remotes/test.com//test/*--to-- [remote "test.com//test"]- url = richih@test.com:/test- fetch = +refs/heads/*:refs/remotes/test.com//test/*- annex-uuid = xyz- [remote "test"]- annex-uuid = xyz---Unless I am misunderstanding something, git annex gets confused about what the name of the remote it supposed to be, truncates at the dot for some operations and uses the full name for others.--> I've fixed this bug. [[done]]-> -> However, using "/" in a remote name seems likely to me to confuse -> git's own remote branch handling. Although I've never tried it.-> --[[Joey]] -->> From what I can see, git handles / just fine, but would get upset about : which is why it's not allowed in a remote's name.->> My naming scheme is host//path/to/annex. It sorts nicely and gives all important information left to right with the most specific parts at the beginning and end.->> If you have any other ideas or scheme, I am all ears :)->> Either way, thanks for fixing this so quickly.->> -- RichiH
@@ -1,34 +0,0 @@-What steps will reproduce the problem?--run git annex assistant, add a file, which is picked up and pushed by the assistant. --What is the expected output? What do you see instead?--a ps -ef shows a large number of defunct git processes.. for example:-<pre>-nelg 9622 1 0 02:01 ? 00:00:01 git-annex assistant-nelg 9637 9622 0 02:01 ? 00:00:00 git --git-dir=/home/nelg/Downloads/test2/.git --work-tree=/home/nelg/Downloads/test2 cat-file --batch-nelg 12080 9622 0 02:19 ? 00:00:00 [git] <defunct>-nelg 12082 9622 0 02:19 ? 00:00:00 [git] <defunct>-nelg 12083 9622 0 02:19 ? 00:00:00 [git] <defunct>-nelg 12084 9622 0 02:19 ? 00:00:00 [git] <defunct>-------</pre>--What version of git-annex are you using? On what operating system?--Compiled git annex from git (cbcd208d158f8e42dda03a5eeaf1bac21045a140), on Mandriva 2010.2, 32 bit, using ghc-7.4.1.- git version 1.7.1---Please provide any additional information below.--I also found that the version of git I have does not support the option: --allow-empty-message-So, suggest that if the version of git installed is an older version, that the params in Assistant/Threads/Committer.hs-are changed to [ Param "-m", Param "git assistant".... or something like that.--I have done this on my copy for testing it.--For testing, I am also using two repositories on the same computer. I set this up from the command line, as the web app does not seem to support syncing to two different git folders on the same computer.--> [[done]]; all zombies are squelched now in the assistant. --[[Joey]]
@@ -1,39 +0,0 @@-as of git-annex version 3.20110719, all git-annex commits only contain the word "update" as a commit message. given that the contents of the commit are pretty non-descriptive (SHA1 hashes for file names, uuids for repository names), i suggest to have more descriptive commit messages, as shown here:-- /mnt/usb_disk/photos/2011$ git annex get- /mnt/usb_disk/photos/2011$ git show git-annex- [...]- usb-disk-photos: get 2011- - * 10 files retrieved from 2 sources (9 from local-harddisk, 1 from my-server)- * 120 files were already present- * 2 files could not be retrieved- /mnt/usb_disk/photos/2011$ cd ~/photos/2011/07- ~/photos/2011/07$ git copy --to my-server- ~/photos/2011/07$ git show git-annex- [...]- local-harddisk: copy 2011/07 to my-server- - * 20 files pushed- ~/photos/2011/07$--in my opinion, the messages should at least contain--* what command was used-* in which repository they were executed-* which files or directories they affected (not necessarily all files, but what was given on command line or implicitly from the working directory)----[[chrysn]]--> The implementation of the git-annex branch precludes more descriptive-> commit messages, since a single commit can include changes that were-> previously staged to the branch's index file, or spooled to its journal-> by other git-annex commands (either concurrently running or-> interrupted commands, or even changes needed to automatically merge-> other git-annex branches).-> -> It would be possible to make it *less* verbose, with an empty commit-> message. :) --[[Joey]] -->> Closing as this is literally impossible to do without making->> git-annex worse. [[done]] --[[Joey]]
@@ -1,14 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlu-fdXIt_RF9ggvg4zP0yBbtjWQwHAMS4"- nickname="Jörn"- subject="Mount detection"- date="2012-09-21T09:23:34Z"- content="""-regarding the current mount polling on OSX: why not use the NSNotificationCenter for being notified on mount events on OSX?--Details see:--1. <http://stackoverflow.com/questions/12409458/detect-when-a-volume-is-mounted-on-os-x>-2. <http://stackoverflow.com/questions/6062299/how-to-add-an-observer-to-nsnotificationcenter-in-a-c-class-using-objective-c>-3. <https://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFNotificationCenterRef/Reference/reference.html#//apple_ref/doc/uid/20001438>-"""]]
@@ -1,34 +0,0 @@-It's possible for one git annex repository to configure a special remote-that it makes sense for other repositories to also be able to use. Today I-added the UI to support that; in the list of repositories, such-repositories have a "enable" link.--To enable pre-existing rsync special remotes, the webapp has to do the same-probing and ssh key setup that it does when initially creating them.-Rsync.net is also handled as a special case in that code. There was one-ugly part to this.. When a rsync remote is configured in the webapp,-it uses a mangled hostname like "git-annex-example.com-user", to-make ssh use the key it sets up. That gets stored in the `remote.log`, and so-the enabling code has to unmangle it to get back to the real hostname.-------Based on the still-running [[prioritizing_special_remotes]] poll, a lot-of people want special remote support for their phone or mp3 player.-(As opposed to running git-annex on an Android phone, which comes later..)-It'd be easy enough to make the webapp set up a directory special remote-on such a device, but that makes consuming some types of content on the-phone difficult (mp3 players seem to handle them ok based on what people tell-me). I need to think more about some of the ideas mentioned in [[android]]-for more suitable ways of storing files.--One thing's for sure: You won't want the assistant to sync all your files-to your phone! So I also need to start coming up with partial syncing-controls. One idea is for each remote to have a configurable matcher for files-it likes to receive. That could be only mp3 files, or all files inside a-given subdirectory, or all files *not* in a given subdirectory. That means-that when the assistant detects a file has been moved, it'll need to add-(or remove) a queued transfer. Lots of other things could be matched on,-like file size, number of copies, etc. Oh look, I have a-[beautiful library I wrote earlier](http://joeyh.name/blog/entry/happy_haskell_hacker)-that I can reuse!
@@ -1,9 +0,0 @@-I have a repository on my laptop with a single remote on a USB drive. Both were created without the assistant.--The remote holds all the content. My understanding is that this would be a "backup" repository, using the group definitions.--The local repository generally holds no content. When I want a file, I make sure the remote is available, and then I `git annex get` it.--This works fine in git annex, but I'm now experimenting with the assistant. As soon as I fire up the assistant, it starts downloading all of the data from the remote. I don't ever want it to automatically get any content from the remote. If it sees new content in the repository, I would like it to push that out to the remote. But never get anything from the remote, and never drop anything that is in the repository.--How can I setup this behaviour in the assistant? I have set the remote's repository group to "backup". The local repository is not in any group, since none of the groups fit my model for this repo.
@@ -1,11 +0,0 @@-Hello Joey,--I just want to know if file transfers between three inter-connected repositories somehow gets syncronized. I have a laptop, a local file server in my home and a virtual server on the internet.--Both my laptop and my file server are configured with a full git repository and connected through pairing and xmpp. The server on the internet is configured as a rsync special remote.--I want the local file server to hold a copy of everything in my annex, the rsync remote should get everything except the folder "media" (too large to upload and not that important) and the laptop whatever I manually decide (preferred content is set to "present").--I have added some files to the repository on the local file server and transferred their content to my laptop by using "git annex get". But when I started the web interface, I saw that those files who are present on both the file server and on the laptop get uploaded to the remote server from both computers, often the same file at the same time. Previously I though the two assistants would somehow talk to each other via xmpp so that doubled effort like that would be avoided. I'm also worried about data consistency because two apparently separate processes rsync to the same remote repository at the same time.--So my question would be: Is your xmpp protocol designed to deal with situations like this and I did not set it up correctly or is what I'm trying to accomplish simply not (yet) possible?
@@ -1,3 +0,0 @@-A couple times working in an annex manually, I accidentally did "git add" instead of "git annex add" and ended up with files checked into my repo instead of symlinks. So now there is some file content in git, rather than in the annex. Is there any way to root that out, or is it there forever? (My limited knowledge of git says: it's there forever, unless maybe you go into the branches where it lives, do an interactive rebase to the time before it was added, remove that commit, replay history, and then garbage collect, but I have no idea if that would suddenly break git annex, and it sounds painful anyway.)--If say I were a neat freak and wanted to just start over with a clean annex, I imagine the thing to do would be to just start the hell over -- and if I wanted to do that, the way to go would be to get into a full repository, do a "git annex uninit" and then throw away the .git directory, then do "git init" and "git annex init" and then "git annex add ." ?
@@ -1,2 +0,0 @@-Is that really unsafe? Because I did that and the switch to direct mode seemed to leave a lot of files still as links, and when I panicked and switched back to indirect mode, a whole lot of stuff seemed to have become unannexed and I reannexed it.-
@@ -0,0 +1,37 @@+git-annex 4.20130323 released with [[!toggle text="these changes"]]+[[!toggleable text="""+ * webapp: Repository list is now included in the dashboard, and other+ UI tweaks.+ * webapp: Improved UI for pairing your own devices together using XMPP.+ * webapp: Display an alert when there are XMPP remotes, and a cloud+ transfer repository needs to be configured.+ * Add incrementalbackup repository group.+ * webapp: Encourage user to install git-annex on a server when adding+ a ssh server, rather than just funneling them through to rsync.+ * xmpp: --debug now enables a sanitized dump of the XMPP protocol+ * xmpp: Try harder to detect presence of clients when there's a git push+ to send.+ * xmpp: Re-enable XA flag, since disabling it did not turn out to help+ with the problems Google Talk has with not always sending presence+ messages to clients.+ * map: Combine duplicate repositories, for a nicer looking map.+ * Fix several bugs caused by a bad Ord instance for Remote.+ * webapp: Switch all forms to POST.+ * assistant: Avoid syncing with annex-ignored remotes when reconnecting+ to the network, or connecting a drive.+ * assistant: Fix OSX bug that prevented committing changed files to a+ repository when in indirect mode.+ * webapp: Improved alerts displayed when syncing with remotes, and+ when syncing with a remote fails.+ * webapp: Force wrap long filenames in transfer display.+ * assistant: The ConfigMonitor left one zombie behind each time+ it checked for changes, now fixed.+ * get, copy, move: Display an error message when an identical transfer+ is already in progress, rather than failing with no indication why.+ * assistant: Several optimisations to file transfers.+ * OSX app and standalone Linux tarball now both support being added to+ PATH; no need to use runshell to start git-annex.+ * webapp: When adding a removable drive, you can now specify the+ directory inside it to use.+ * webapp: Confirm whether user wants to combine repositories when+ adding a removable drive that already has a repository on it."""]]
@@ -1,24 +0,0 @@-git-annex 4.20130521 released with [[!toggle text="these changes"]]-[[!toggleable text="""- * Sanitize debian changelog version before putting it into cabal file.- Closes: #[708619](http://bugs.debian.org/708619)- * Switch to MonadCatchIO-transformers for better handling of state while- catching exceptions.- * Fix a zombie that could result when running a process like gpg to- read and write to it.- * Allow building with gpg2.- * Disable building with the haskell threaded runtime when the webapp- is not built. This may fix builds on mips, s390x and sparc, which are- failing to link -lHSrts\_thr- * Temporarily build without webapp on kfreebsd-i386, until yesod is- installable there again.- * Direct mode bug fix: After a conflicted merge was automatically resolved,- the content of a file that was already present could incorrectly- be replaced with a symlink.- * Fix a bug in the git-annex branch handling code that could- cause info from a remote to not be merged and take effect immediately.- * Direct mode is now fully tested by the test suite.- * Detect bad content in ~/.config/git-annex/program and look in PATH instead.- * OSX: Fixed gpg included in dmg.- * Linux standalone: Back to being built with glibc 2.13 for maximum- portability."""]]
@@ -1,23 +0,0 @@-[[!comment format=mdwn- username="http://sekenre.wordpress.com/"- nickname="sekenre"- subject="Synchronizing Bup repositories"- date="2013-05-07T16:46:34Z"- content="""-Hi All,--I managed to answer my questions above about copying changes between local bup repositories efficiently.--You run the following commands -- git annex copy . --to bup_repo_1 # Uses bup split in the background (slow)- rsync -av /mnt/repodisk1/repo/ /mnt/repodisk2/repo/ \- --exclude=config --exclude=*.bloom --exclude=*.midx # rsync without bup-specific indices (speed depends on delta between repositories)- BUP_DIR=/mnt/repodisk2/repo/ bup midx -a && bup bloom # rebuild bup-specific indices on the target (this is extremely fast)- git annex copy . --to bup_repo_2 # Records file is now available in repo2 (also extremely fast)--Now `git annex whereis` will show the correct location and `git annex get <file> --from bup_repo_2` will work.--So far in my testing I haven't found any problems...--"""]]
@@ -1,24 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"- nickname="Tim"- subject="bup location data not synced through annex assistant"- date="2013-05-15T15:08:54Z"- content="""-I set up 2 servers running git annex assistant, both with a ~/annex dir and an additional ~/annex-bup bup repo. There is no additional cloud repository.-For test, I added my /etc dir which uploaded correctly from server1, but which never arrived on server2-- bup@bup1:~/annex/etc$ git annex whereis updatedb.conf- whereis updatedb.conf (3 copies) - 687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- here (bup@bup1:~/annex)- adfc1307-771f-40e9-b794-bae2e1f21b8b -- bup2-annex-bup- e4e0ac0b-992a-4312-a4ac-fc8d3d9f7c0f -- bup1-annex-bup- ok-- bup@bup2:~/annex/etc$ git annex whereis updatedb.conf- whereis updatedb.conf (1 copy) - 687d3a7f-4798-4dbe-8774-1785b8ab6b7d -- bup1 (bup@bup1:~/annex)- ok--As you can see, server 2 just doesn't know the data is already on it's own disk in it's local bup repo.-Is there a reason this data does not get synced? Should I set up a transfer repo?-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnAvbXOnK57sqgvZvxkbG74NUKBDwKDcuk"- nickname="Tim"- subject="my bad"- date="2013-05-15T15:39:31Z"- content="""-Sorry, looks like I did initremote twice on the same folder, instead of enableremote the second time...-"""]]
@@ -1,43 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkgbXwQtPQSG8igdS7U8l031N8sqDmuyvk"- nickname="Albert"- subject="Error with bup and gnupg"- date="2012-10-22T20:56:56Z"- content="""-Hello,--I get this error when trying to use git-annex with bup and gnupg:--<pre>-move importable_pilot_surveys.tar (gpg) (checking localaseebup...) (to localaseebup...) -Traceback (most recent call last):- File \"/usr/lib/bup/cmd/bup-split\", line 133, in <module>- progress=prog)- File \"/usr/lib/bup/bup/hashsplit.py\", line 167, in split_to_shalist- for (sha,size,bits) in sl:- File \"/usr/lib/bup/bup/hashsplit.py\", line 118, in _split_to_blobs- for (blob, bits) in hashsplit_iter(files, keep_boundaries, progress):- File \"/usr/lib/bup/bup/hashsplit.py\", line 86, in _hashsplit_iter- bnew = next(fi)- File \"/usr/lib/bup/bup/helpers.py\", line 86, in next- return it.next()- File \"/usr/lib/bup/bup/hashsplit.py\", line 49, in blobiter- for filenum,f in enumerate(files):- File \"/usr/lib/bup/cmd/bup-split\", line 128, in <genexpr>- files = extra and (open(fn) for fn in extra) or [sys.stdin]-IOError: [Errno 2] No such file or directory: '-'-</pre>---I was able to work-around this issue by altering /usr/lib/bup/cmd/bup-split (though I don't think its a bup bug) to just pull from stdin:--files = [sys.stdin]--on ~ line 128.--Any ideas? Also, do you think that bup's data-deduplication does anything when gnupg is enabled, i.e. is it just as well to use a directory remote with gnupg?--Thanks! Git annex rules!--Albert-"""]]
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.154.0.23"- subject="comment 2"- date="2012-10-23T20:01:43Z"- content="""-@Albert, thanks for reporting this bug (but put them in [[bugs]] in future please).--This is specific to using the bup special remote with encryption. Without encryption it works. And no, it won't manage to deduplicate anything that's encrypted, as far as I know. --I think bup-split must have used - for stdin in the past, but now, it just reads from stdin when no file is specified, so I've updated git-annex.-"""]]
@@ -1,17 +0,0 @@-[[!comment format=mdwn- username="http://sekenre.wordpress.com/"- nickname="sekenre"- subject="Bup remotes in git-annex assistant"- date="2013-03-13T12:54:56Z"- content="""-Hi,--Is the bup remote available via the Assistant user interface?--Unrelated question;--If you are syncing files between two bup repos on local usb drives, does it use git to sync the changes or does it use \"bup split\" to re-add the file? (Basically, is the syncing as efficient as possible using git-annex or would I have to go to a lower level)--Many Thanks,-Sek-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 4"- date="2013-03-13T16:05:50Z"- content="""-I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up.--Your two bup repos would be synced using bup-split.-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnZWCbRYPVnwscdkdEDwgQHZJLwW6H_AHo"- nickname="Tobias"- subject="bup fail?"- date="2013-03-31T21:05:32Z"- content="""-I've run into problems storing a huge number of files in the bup repo. It seems that thousands of branches are a problem. I don't know if it's a problem of git-annex, bup, or the filesystem.--How about adding an option to store tree/commit ids in git-annex instead of using branches in bup?-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- nickname="joey"- subject="comment 7"- date="2013-04-02T21:24:06Z"- content="""-`bup-split` uses a git branch to name the objects stored in the bup repository. So it will be limited by any scalability issues affecting large numbers of git branches. I don't know what those are.--Yes, it would be possible to make git-annex store this in the git-annex branch instead.-"""]]
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"- nickname="Yung-Chin"- subject="re scaling issue"- date="2013-05-03T14:57:51Z"- content="""-Tobias/joey,--I think there are at least two scaling issues that may be causing you trouble. One is that bup writes pack+idx files rather than bare objects, and if you send 1 file per call to bup-split, you end up with a pair of pack and idx files for each such call. When you later try to retrieve a blob, bup currently just calls git, and git will have to traverse all these tiny idx files looking for the right hash (bare objects you could at least find by name). You can probably ameliorate the pain by calling git repack (look at the -a and --max-pack-size switches) on your bup repository. The other is the \"thousands of branches\" issue, and I think \"git pack-refs --all\" (that's again on your bup repository) might help a little bit. --It would certainly help performance if you could store blob/tree ids in git-annex instead of branch names. For small files, all bup would need to store is a blob, but currently you end up storing a blob, a tree, and a commit (and looking-up all of those, plus the ref too, on calling bup-join). (you might want to patch bup-split, so it would allow you to ask it for \"--blob-or-tree\", because currently if you say you pass it -b for blob-ids, then for bigger files you get a series of IDs, whereas you'd be much better off with a tree-id there)-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlsXhOlsW6RaGR83VNSMxPh159l5dFau70"- nickname="Yung-Chin"- subject="comment 9"- date="2013-05-03T16:34:05Z"- content="""-Thinking about this some more, a very elegant way to make a bup remote could actually be to just pass the whole .git/annex tree into bup-index/save (you could avoid sending some files by only bup-indexing select subtrees, or by using --exclude-*'s, but you'd run bup-save over the whole .git/annex tree). You could then use bup-restore to retrieve files or whole subtrees, and you'd refer to the files you're retrieving by their actual pathname under which they live in .git/annex (if that doesn't make sense it's because I've misunderstood how git-annex is organised!), so something like \"bup restore branch_name/latest/.git/annex/aa/bb/sha-of-some-sort\" would work - that's cute, right? And you'd only have 1 branch.--However... somebody who is good with lazy-evaluation would need to rework bup.vfs: currently, if you'd call bup-restore on a path like that, it would instantiate a _lot_ of vfs-nodes you don't need - to begin with, it would make a node for every commit you ever made (on any branch!) - on a big repository you'd wait ages for it to just find the commit objects...-"""]]
@@ -1,32 +0,0 @@-[[!comment format=mdwn- username="helmut"- ip="89.0.176.236"- subject="Asynchronous hooks?"- date="2012-10-13T09:46:14Z"- content="""-Is there a way to use asynchronous remotes? Interaction with git annex would have to-split the part of initiating some action from completing it.--I imagine I could `git annex copy` a file to an asynchronous remote and the command-would almost immediately complete. Later I would learn that the transfer is-completed, so the hook must be able to record that information in the `git-annex`-branch. An additional plumbing command seems required here as well as a way to-indicate that even though the store-hook completed, the file is not transferred.--Similarly `git annex get` would immediately return without actually fetching the-file. This should already be possible by returning non-zero from the retrieve-hook.-Later the hook could use plumbing level commands to actually stick the received file-into the repository.--The remove-hook should need no changes, but the checkpresent-hook would be more like-a trigger without any actual result. The extension of the plumbing required for the-extension to the receive-hook could update the location log. A downside here is that-you never know when a fsck has completed.--My proposal does not include a way to track the completion of actions, but relies on-the hook to always complete them reliably. It is not clear that this is the best road-for asynchronous hooks.--One use case for this would be a remote that is only accessible via uucp. Are there-other use cases? Is the drafted interface useful?-"""]]
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmWg4VvDTer9f49Y3z-R0AH16P4d1ygotA"- nickname="Tobias"- subject="User defined server"- date="2013-04-17T09:45:59Z"- content="""-It would be nice if you could expand the XMPP setup in the assistant to support an \"advanced\" settings view where a custom server could be defined.--Example: I have a google Apps domain called mytest.com, with the users bla1@mytest.com and bla2@mytest.com. When trying to add either of those accounts to the assistant XMPP will try to use mytest.com as the jabber server, and not googles server.--"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawmRFKwny4rArBaz-36xTcsJYqKIgdDaw5Q"- nickname="Andrew"- subject="comment 2"- date="2013-04-17T22:28:39Z"- content="""-Yeah, I agree, this would be nice. --For your own domain, you can configure DNS like this: [[http://support.google.com/a/bin/answer.py?hl=en&answer=34143]] to make XMPP find the right server. But for some that's not an option and the \"advanced\" mode would be useful in that case.-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://me.yahoo.com/a/2djv2EYwk43rfJIAQXjYt_vfuOU-#a11a6"- nickname="Olivier R"- subject="It doesn't work 100%"- date="2012-05-03T21:42:54Z"- content="""-When you remove tracked files... it doesn't show the new status. it's like if the file was ignored.---"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnoUOqs_lbuWyZBqyU6unHgUduJwDDgiKY"- nickname="Matt"- subject="ANNEX_S3 vs AWS for keys"- date="2012-05-29T12:24:25Z"- content="""-The instructions state ANNEX_S3_ACCESS_KEY_ID and ANNEX_SECRET_ACCESS_KEY but git-annex cannot connect with those constants. git-annex tells me to set both \"AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY\" instead, which works. This is with Xubuntu 12.04.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://joeyh.name/"- ip="4.153.81.112"- subject="comment 2"- date="2012-05-29T19:10:42Z"- content="""-Thanks, I've fixed that. (You could have too.. this is a wiki ;)-"""]]
@@ -1,7 +0,0 @@-There are times when it is handy to be able to upload a file to a web host somewhere and share a link for that file to a select few people.--It seems to be that the assistant could handle this scenario. It could generate a directory with a random name on the remote, and transfer the file there (using the existing filename) and the appropriate URL could be displayed in the assistant webapp to allow the user to copy the URL to send it to the appropriate people.--Note: Joey and I had a quick chat about this use case at LCA2013.--[[!tag design/assistant]]
@@ -1,11 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawl9sYlePmv1xK-VvjBdN-5doOa_Xw-jH4U"- nickname="Richard"- subject="comment 1"- date="2011-05-17T07:27:02Z"- content="""-Sounds like a good idea.--* git annex fsck (or similar) should check/rebuild the caches-* I would simply require a clean tree with a verbose error. 80/20 rule and defaulting to save actions.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"- nickname="Michael"- subject="comment 1"- date="2013-03-01T01:26:36Z"- content="""-This would indeed be very helpful when remotely mounting a photo/video collection over samba.-"""]]
@@ -1,9 +0,0 @@-[[!comment format=mdwn- username="http://edheil.wordpress.com/"- ip="173.162.44.162"- subject="comment 2"- date="2013-03-01T04:50:28Z"- content="""-+1 this would be sweet as hell--"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawkRITTYYsN0TFKN7G5sZ6BWGZOTQ88Pz4s"- nickname="Zoltán"- subject="cygwin"- date="2012-05-15T00:14:08Z"- content="""-What about [Cygwin](http://cygwin.com/)? It emulates POSIX fairly well under Windows (including signals, forking, fs (also things like /dev/null, /proc), unix file permissions), has all standard gnu utilities. It also emulates symlinks, but they are unfortunately incompatible with NTFS symlinks introduced in Vista [due to some stupid restrictions on Windows](http://cygwin.com/ml/cygwin/2009-10/msg00756.html).--If git-annex could be modified to not require symlinks to work, the it would be a pretty neat solution (and you get a real shell, not some command.com on drugs (aka cmd.exe))-"""]]
@@ -1,12 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawk5cj-itfFHq_yhJHdzk3QOPp-PNW_MjPU"- nickname="Michael"- subject="+1 Cygwin"- date="2012-05-23T19:30:21Z"- content="""-Windows support is a must. In my experience, binary file means proprietary editor, which means Windows.--Unfortunately, there's not much overlap between people who use graphical editors in Windows all day vs. people who are willing to tolerate Cygwin's setup.exe, compile a Haskell program, learn git and git-annex's 90-odd subcommands, and use a mintty terminal to manage their repository, especially now that there's a sexy GitHub app for Windows.--That aside, I think Windows-based content producers are still *the* audience for git-annex. First Windows support, then a GUI, then the world.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="http://xolus.net/openid/max"- nickname="B0FH"- subject="What about NTFS support ?"- date="2012-08-02T17:45:10Z"- content="""-Has git-annex been tested with an NTFS-formatted disk under Linux ? NTFS is supposed to be case-sensitive and to allow symlinks, and these are supposed to work with ntfs3g.-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawlc1og3PqIGudOMkFNrCCNg66vB7s-jLpc"- nickname="Paul"- subject="Re: What about NTFS support?"- date="2012-08-16T19:30:38Z"- content="""-I successfully use git-annex on an NTFS formatted external USB drive, so yes, it is possible and works well.-"""]]
@@ -1,10 +0,0 @@-[[!comment format=mdwn- username="https://me.yahoo.com/a/dASECLNzvckz4VwqUGYsvthiplY.#d2c27"- nickname="A. D. Sicks"- subject="comment 5"- date="2012-09-09T23:48:21Z"- content="""-Haskell has C++ binding, so it should be possible to port it to .net/Mono with a VB GUI for Windows users. Windows has a primitive form of symlinks called shortcuts. Perhaps shortcut support in Windows could replace the use of symlinks. I've used shortcuts since XP to put my home Windows directory on another partition and never had a hitch...--If anyone is interested in working on this, hit me up. I would like to use this in my XP vbox to have access to files on my host OS...I have a student edition of Visual Studio 2005 to do an open source port...-"""]]
@@ -1,8 +0,0 @@-[[!comment format=mdwn- username="https://www.google.com/accounts/o8/id?id=AItOawnlwEMhiNYv__mEUABW4scn83yMraC3hqE"- nickname="Sean"- subject="NTFS symlinks"- date="2013-01-11T21:44:21Z"- content="""-It seems that NTFS (from Vista forward) has full POSIX support for symlinks. At least, Wikipedia [seems to think so.](http://en.wikipedia.org/wiki/NTFS_symbolic_link). What about doing like GitHub and using MinGW for compatibility? Cygwin absolutely blows in terms of installation size and compatability with the rest of Windows.-"""]]
@@ -1,17 +0,0 @@-I am running centralized git-annex exclusively.--Similar to-- git annex get--I'd like to have a-- git annex put--which would put all files on the default remote(s).--My main reason for not wanting to use copy --to is that I need to specify the remote's name in this case which makes writing a wrapper unnecessarily hard. Also, this would allow-- mr push--to do the right thing all by itself.
@@ -1,5 +1,5 @@ Name: git-annex-Version: 4.20130521+Version: 4.20130521.1 Cabal-Version: >= 1.8 License: GPL Maintainer: Joey Hess <joey@kitenet.net>@@ -132,10 +132,11 @@ CPP-Options: -DWITH_DBUS if flag(Webapp)- Build-Depends: yesod (< 1.2), yesod-static, case-insensitive,- http-types, transformers, wai, wai-logger, warp, blaze-builder,- crypto-api, hamlet, clientsession, aeson, yesod-form,- template-haskell, yesod-default, data-default+ Build-Depends:+ yesod (< 1.2), yesod-default (< 1.2), yesod-static, yesod-form,+ case-insensitive, http-types, transformers, wai, wai-logger, warp,+ blaze-builder, crypto-api, hamlet, clientsession, aeson,+ template-haskell, data-default CPP-Options: -DWITH_WEBAPP GHC-Options: -threaded
@@ -1,25 +0,0 @@-From df0f41f92d003f7d59ef927737ffec3a9bd61827 Mon Sep 17 00:00:00 2001-From: Joey Hess <joey@kitenet.net>-Date: Tue, 7 May 2013 18:41:01 -0400-Subject: [PATCH] avoid cabal hell------ gsasl.cabal | 2 +-- 1 file changed, 1 insertion(+), 1 deletion(-)--diff --git a/gsasl.cabal b/gsasl.cabal-index d991873..c5c2b19 100644---- a/gsasl.cabal-+++ b/gsasl.cabal-@@ -31,7 +31,7 @@ library- build-depends:- base >= 4.0 && < 5.0- , transformers >= 0.2-- , bytestring >= 0.9-+ , bytestring >= 0.10.3.0- - pkgconfig-depends: libgsasl >= 1.1- --- -1.7.10.4-
@@ -1,71 +0,0 @@-From 8fddef803ee9191ca15363283b7e4d5af4c70f3a Mon Sep 17 00:00:00 2001-From: Joey Hess <joey@kitenet.net>-Date: Thu, 28 Feb 2013 23:34:10 -0400-Subject: [PATCH] disable TH------ Database/Persist/GenericSql/Internal.hs | 6 +------ Database/Persist/GenericSql/Raw.hs | 5 ++---- 2 files changed, 3 insertions(+), 8 deletions(-)--diff --git a/Database/Persist/GenericSql/Internal.hs b/Database/Persist/GenericSql/Internal.hs-index f109887..5273398 100644---- a/Database/Persist/GenericSql/Internal.hs-+++ b/Database/Persist/GenericSql/Internal.hs-@@ -14,7 +14,6 @@ module Database.Persist.GenericSql.Internal- , createSqlPool- , mkColumns- , Column (..)-- , logSQL- , InsertSqlResult (..)- ) where- -@@ -33,7 +32,7 @@ import Data.Monoid (Monoid, mappend, mconcat)- import Database.Persist.EntityDef- import qualified Data.Conduit as C- import Language.Haskell.TH.Syntax (Q, Exp)--import Control.Monad.Logger (logDebugS)-+- import Data.Maybe (mapMaybe, listToMaybe)- import Data.Int (Int64)- -@@ -197,6 +196,3 @@ tableColumn t s = go $ entityColumns t- | x == s = ColumnDef x y z- | otherwise = go rest- -}----logSQL :: Q Exp--logSQL = [|\sql_foo params_foo -> $logDebugS (T.pack "SQL") $ T.pack $ show (sql_foo :: Text) ++ " " ++ show (params_foo :: [PersistValue])|]-diff --git a/Database/Persist/GenericSql/Raw.hs b/Database/Persist/GenericSql/Raw.hs-index e4bf9f4..3da8fa0 100644---- a/Database/Persist/GenericSql/Raw.hs-+++ b/Database/Persist/GenericSql/Raw.hs-@@ -26,7 +26,6 @@ import Database.Persist.GenericSql.Internal hiding (execute, withStmt)- import Database.Persist.Store (PersistValue)- import Data.IORef- import Control.Monad.IO.Class--import Control.Monad.Logger (logDebugS)- import Control.Monad.Trans.Reader- import qualified Data.Map as Map- import Control.Applicative (Applicative)-@@ -134,7 +133,7 @@ withStmt :: (MonadSqlPersist m, MonadResource m)- -> [PersistValue]- -> Source m [PersistValue]- withStmt sql vals = do-- lift $ $logDebugS (pack "SQL") $ pack $ show sql ++ " " ++ show vals-+ -- lift $ pack $ show sql ++ " " ++ show vals- conn <- lift askSqlConn- bracketP- (getStmt' conn sql)-@@ -146,7 +145,7 @@ execute x y = liftM (const ()) $ executeCount x y- - executeCount :: MonadSqlPersist m => Text -> [PersistValue] -> m Int64- executeCount sql vals = do-- $logDebugS (pack "SQL") $ pack $ show sql ++ " " ++ show vals-+ -- pack $ show sql ++ " " ++ show vals- stmt <- getStmt sql- res <- liftIO $ I.execute stmt vals- liftIO $ reset stmt--- -1.7.10.4-
@@ -1,308 +0,0 @@-From 332c71b3f6bc4786b914e675020a23c492beee5a Mon Sep 17 00:00:00 2001-From: Joey Hess <joey@kitenet.net>-Date: Tue, 7 May 2013 19:28:06 -0400-Subject: [PATCH] remove TH------ Text/Coffee.hs | 54 -------------------------------------------------- Text/Julius.hs | 56 ++++------------------------------------------------ Text/Roy.hs | 54 -------------------------------------------------- Text/TypeScript.hs | 57 +---------------------------------------------------- 4 files changed, 5 insertions(+), 216 deletions(-)--diff --git a/Text/Coffee.hs b/Text/Coffee.hs-index 2481936..3f7f9c3 100644---- a/Text/Coffee.hs-+++ b/Text/Coffee.hs-@@ -51,14 +51,6 @@ module Text.Coffee- -- ** Template-Reading Functions- -- | These QuasiQuoter and Template Haskell methods return values of- -- type @'JavascriptUrl' url@. See the Yesod book for details.-- coffee-- , coffeeFile-- , coffeeFileReload-- , coffeeFileDebug----#ifdef TEST_EXPORT-- , coffeeSettings--#endif- ) where- - import Language.Haskell.TH.Quote (QuasiQuoter (..))-@@ -66,49 +58,3 @@ import Language.Haskell.TH.Syntax- import Text.Shakespeare- import Text.Julius- --coffeeSettings :: Q ShakespeareSettings--coffeeSettings = do-- jsettings <- javascriptSettings-- return $ jsettings { varChar = '%'-- , preConversion = Just PreConvert {-- preConvert = ReadProcess "coffee" ["-spb"]-- , preEscapeIgnoreBalanced = "'\"`" -- don't insert backtacks for variable already inside strings or backticks.-- , preEscapeIgnoreLine = "#" -- ignore commented lines-- , wrapInsertion = Just WrapInsertion { -- wrapInsertionIndent = Just " "-- , wrapInsertionStartBegin = "(("-- , wrapInsertionSeparator = ", "-- , wrapInsertionStartClose = ") =>"-- , wrapInsertionEnd = ")"-- , wrapInsertionApplyBegin = "("-- , wrapInsertionApplyClose = ")\n"-- }-- }-- }------ | Read inline, quasiquoted CoffeeScript.--coffee :: QuasiQuoter--coffee = QuasiQuoter { quoteExp = \s -> do-- rs <- coffeeSettings-- quoteExp (shakespeare rs) s-- }------ | Read in a CoffeeScript template file. This function reads the file once, at---- compile time.--coffeeFile :: FilePath -> Q Exp--coffeeFile fp = do-- rs <- coffeeSettings-- shakespeareFile rs fp------ | Read in a CoffeeScript template file. This impure function uses---- unsafePerformIO to re-read the file on every call, allowing for rapid---- iteration.--coffeeFileReload :: FilePath -> Q Exp--coffeeFileReload fp = do-- rs <- coffeeSettings-- shakespeareFileReload rs fp------ | Deprecated synonym for 'coffeeFileReload'--coffeeFileDebug :: FilePath -> Q Exp--coffeeFileDebug = coffeeFileReload--{-# DEPRECATED coffeeFileDebug "Please use coffeeFileReload instead." #-}-diff --git a/Text/Julius.hs b/Text/Julius.hs-index 230eac3..1a0376f 100644---- a/Text/Julius.hs-+++ b/Text/Julius.hs-@@ -14,17 +14,8 @@ module Text.Julius- -- ** Template-Reading Functions- -- | These QuasiQuoter and Template Haskell methods return values of- -- type @'JavascriptUrl' url@. See the Yesod book for details.-- js-- , julius-- , juliusFile-- , jsFile-- , juliusFileDebug-- , jsFileDebug-- , juliusFileReload-- , jsFileReload--- -- * Datatypes-- , JavascriptUrl-+ JavascriptUrl- , Javascript (..)- , RawJavascript (..)- -@@ -37,9 +28,11 @@ module Text.Julius- , renderJavascriptUrl- - -- ** internal, used by 'Text.Coffee'-- , javascriptSettings- -- ** internal- , juliusUsedIdentifiers-+-+ -- used by TH splices-+ , asJavascriptUrl- ) where- - import Language.Haskell.TH.Quote (QuasiQuoter (..))-@@ -101,47 +94,6 @@ instance RawJS TL.Text where rawJS = RawJavascript . fromLazyText- instance RawJS Builder where rawJS = RawJavascript- instance RawJS Bool where rawJS = RawJavascript . toJavascript- --javascriptSettings :: Q ShakespeareSettings--javascriptSettings = do-- toJExp <- [|toJavascript|]-- wrapExp <- [|Javascript|]-- unWrapExp <- [|unJavascript|]-- asJavascriptUrl' <- [|asJavascriptUrl|]-- return $ defaultShakespeareSettings { toBuilder = toJExp-- , wrap = wrapExp-- , unwrap = unWrapExp-- , modifyFinalValue = Just asJavascriptUrl'-- }----js, julius :: QuasiQuoter--js = QuasiQuoter { quoteExp = \s -> do-- rs <- javascriptSettings-- quoteExp (shakespeare rs) s-- }----julius = js----jsFile, juliusFile :: FilePath -> Q Exp--jsFile fp = do-- rs <- javascriptSettings-- shakespeareFile rs fp----juliusFile = jsFile------jsFileReload, juliusFileReload :: FilePath -> Q Exp--jsFileReload fp = do-- rs <- javascriptSettings-- shakespeareFileReload rs fp----juliusFileReload = jsFileReload----jsFileDebug, juliusFileDebug :: FilePath -> Q Exp--juliusFileDebug = jsFileReload--{-# DEPRECATED juliusFileDebug "Please use juliusFileReload instead." #-}--jsFileDebug = jsFileReload--{-# DEPRECATED jsFileDebug "Please use jsFileReload instead." #-}--- -- | Determine which identifiers are used by the given template, useful for- -- creating systems like yesod devel.- juliusUsedIdentifiers :: String -> [(Deref, VarType)]-diff --git a/Text/Roy.hs b/Text/Roy.hs-index cf09cec..870c9f6 100644---- a/Text/Roy.hs-+++ b/Text/Roy.hs-@@ -23,13 +23,6 @@ module Text.Roy- -- ** Template-Reading Functions- -- | These QuasiQuoter and Template Haskell methods return values of- -- type @'JavascriptUrl' url@. See the Yesod book for details.-- roy-- , royFile-- , royFileReload----#ifdef TEST_EXPORT-- , roySettings--#endif- ) where- - import Language.Haskell.TH.Quote (QuasiQuoter (..))-@@ -37,50 +30,3 @@ import Language.Haskell.TH.Syntax- import Text.Shakespeare- import Text.Julius- ---- | The Roy language compiles down to Javascript.---- We do this compilation once at compile time to avoid needing to do it during the request.---- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call.--roySettings :: Q ShakespeareSettings--roySettings = do-- jsettings <- javascriptSettings-- return $ jsettings { varChar = '#'-- , preConversion = Just PreConvert {-- preConvert = ReadProcess "roy" ["--stdio"]-- , preEscapeIgnoreBalanced = "'\""-- , preEscapeIgnoreLine = "//"-- , wrapInsertion = Nothing-- {--- Just WrapInsertion { -- wrapInsertionIndent = Just " "-- , wrapInsertionStartBegin = "(\\"-- , wrapInsertionSeparator = " "-- , wrapInsertionStartClose = " ->\n"-- , wrapInsertionEnd = ")"-- , wrapInsertionApplyBegin = " "-- , wrapInsertionApplyClose = ")\n"-- }-- -}-- }-- }------ | Read inline, quasiquoted Roy.--roy :: QuasiQuoter--roy = QuasiQuoter { quoteExp = \s -> do-- rs <- roySettings-- quoteExp (shakespeare rs) s-- }------ | Read in a Roy template file. This function reads the file once, at---- compile time.--royFile :: FilePath -> Q Exp--royFile fp = do-- rs <- roySettings-- shakespeareFile rs fp------ | Read in a Roy template file. This impure function uses---- unsafePerformIO to re-read the file on every call, allowing for rapid---- iteration.--royFileReload :: FilePath -> Q Exp--royFileReload fp = do-- rs <- roySettings-- shakespeareFileReload rs fp-diff --git a/Text/TypeScript.hs b/Text/TypeScript.hs-index 34bf4bf..30c5388 100644---- a/Text/TypeScript.hs-+++ b/Text/TypeScript.hs-@@ -53,65 +53,10 @@- --- -- 2. TypeScript: <http://typescript.codeplex.com/>- module Text.TypeScript-- ( -- * Functions-- -- ** Template-Reading Functions-- -- | These QuasiQuoter and Template Haskell methods return values of-- -- type @'JavascriptUrl' url@. See the Yesod book for details.-- tsc-- , typeScriptFile-- , typeScriptFileReload----#ifdef TEST_EXPORT-- , typeScriptSettings--#endif-+ (- ) where- - import Language.Haskell.TH.Quote (QuasiQuoter (..))- import Language.Haskell.TH.Syntax- import Text.Shakespeare- import Text.Julius------ | The TypeScript language compiles down to Javascript.---- We do this compilation once at compile time to avoid needing to do it during the request.---- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call.--typeScriptSettings :: Q ShakespeareSettings--typeScriptSettings = do-- jsettings <- javascriptSettings-- return $ jsettings { varChar = '#'-- , preConversion = Just PreConvert {-- preConvert = ReadProcess "sh" ["-c", "TMP_IN=$(mktemp XXXXXXXXXX.ts); TMP_OUT=$(mktemp XXXXXXXXXX.js); cat /dev/stdin > ${TMP_IN} && tsc --out ${TMP_OUT} ${TMP_IN} && cat ${TMP_OUT}; rm ${TMP_IN} && rm ${TMP_OUT}"]-- , preEscapeIgnoreBalanced = "'\""-- , preEscapeIgnoreLine = "//"-- , wrapInsertion = Just WrapInsertion { -- wrapInsertionIndent = Nothing-- , wrapInsertionStartBegin = ";(function("-- , wrapInsertionSeparator = ", "-- , wrapInsertionStartClose = "){"-- , wrapInsertionEnd = "})"-- , wrapInsertionApplyBegin = "("-- , wrapInsertionApplyClose = ");\n"-- }-- }-- }------ | Read inline, quasiquoted TypeScript--tsc :: QuasiQuoter--tsc = QuasiQuoter { quoteExp = \s -> do-- rs <- typeScriptSettings-- quoteExp (shakespeare rs) s-- }------ | Read in a Roy template file. This function reads the file once, at---- compile time.--typeScriptFile :: FilePath -> Q Exp--typeScriptFile fp = do-- rs <- typeScriptSettings-- shakespeareFile rs fp------ | Read in a Roy template file. This impure function uses---- unsafePerformIO to re-read the file on every call, allowing for rapid---- iteration.--typeScriptFileReload :: FilePath -> Q Exp--typeScriptFileReload fp = do-- rs <- typeScriptSettings-- shakespeareFileReload rs fp--- -1.7.10.4-
@@ -1,107 +0,0 @@-From abab0f8202998a3e88c5dc5f67a8245da6c174b3 Mon Sep 17 00:00:00 2001-From: Joey Hess <joey@kitenet.net>-Date: Thu, 28 Feb 2013 23:36:20 -0400-Subject: [PATCH] remove IPv6 stuff------ Network/Socks5.hs | 1 -- Network/Socks5/Command.hs | 16 ++--------------- Network/Socks5/Types.hs | 3 +--- Network/Socks5/Wire.hs | 2 --- 4 files changed, 3 insertions(+), 19 deletions(-)--diff --git a/Network/Socks5.hs b/Network/Socks5.hs-index 67b0060..80efb9c 100644---- a/Network/Socks5.hs-+++ b/Network/Socks5.hs-@@ -54,7 +54,6 @@ socksConnectAddr :: Socket -> SockAddr -> SockAddr -> IO ()- socksConnectAddr sock sockserver destaddr = withSocks sock sockserver $ do- case destaddr of- SockAddrInet p h -> socks5ConnectIPV4 sock h p >> return ()-- SockAddrInet6 p _ h _ -> socks5ConnectIPV6 sock h p >> return ()- _ -> error "unsupported unix sockaddr type"- - -- | connect a new socket to the socks server, and connect the stream to a FQDN-diff --git a/Network/Socks5/Command.hs b/Network/Socks5/Command.hs-index 2952706..db994c9 100644---- a/Network/Socks5/Command.hs-+++ b/Network/Socks5/Command.hs-@@ -9,9 +9,8 @@- --- module Network.Socks5.Command- ( socks5Establish-- , socks5ConnectIPV4-- , socks5ConnectIPV6- , socks5ConnectDomainName-+ , socks5ConnectIPV4 - -- * lowlevel interface- , socks5Rpc- ) where-@@ -23,7 +22,7 @@ import qualified Data.ByteString as B- import qualified Data.ByteString.Char8 as BC- import Data.Serialize- --import Network.Socket (Socket, PortNumber, HostAddress, HostAddress6)-+import Network.Socket (Socket, PortNumber, HostAddress)- import Network.Socket.ByteString- - import Network.Socks5.Types-@@ -46,17 +45,6 @@ socks5ConnectIPV4 socket hostaddr port = onReply <$> socks5Rpc socket request- onReply (SocksAddrIPV4 h, p) = (h, p)- onReply _ = error "ipv4 requested, got something different"- --socks5ConnectIPV6 :: Socket -> HostAddress6 -> PortNumber -> IO (HostAddress6, PortNumber)--socks5ConnectIPV6 socket hostaddr6 port = onReply <$> socks5Rpc socket request-- where-- request = SocksRequest-- { requestCommand = SocksCommandConnect-- , requestDstAddr = SocksAddrIPV6 hostaddr6-- , requestDstPort = fromIntegral port-- }-- onReply (SocksAddrIPV6 h, p) = (h, p)-- onReply _ = error "ipv6 requested, got something different"--- -- TODO: FQDN should only be ascii, maybe putting a "fqdn" data type- -- in front to make sure and make the BC.pack safe.- socks5ConnectDomainName :: Socket -> String -> PortNumber -> IO (SocksAddr, PortNumber)-diff --git a/Network/Socks5/Types.hs b/Network/Socks5/Types.hs-index 5dc7d5e..12dea99 100644---- a/Network/Socks5/Types.hs-+++ b/Network/Socks5/Types.hs-@@ -17,7 +17,7 @@ module Network.Socks5.Types- import Data.ByteString (ByteString)- import Data.Word- import Data.Data--import Network.Socket (HostAddress, HostAddress6)-+import Network.Socket (HostAddress)- import Control.Exception- - data SocksCommand =-@@ -38,7 +38,6 @@ data SocksMethod =- data SocksAddr =- SocksAddrIPV4 HostAddress- | SocksAddrDomainName ByteString-- | SocksAddrIPV6 HostAddress6- deriving (Show,Eq)- - data SocksReply =-diff --git a/Network/Socks5/Wire.hs b/Network/Socks5/Wire.hs-index 2cfed52..d3bd9c5 100644---- a/Network/Socks5/Wire.hs-+++ b/Network/Socks5/Wire.hs-@@ -41,12 +41,10 @@ data SocksResponse = SocksResponse- - getAddr 1 = SocksAddrIPV4 <$> getWord32be- getAddr 3 = SocksAddrDomainName <$> (getWord8 >>= getByteString . fromIntegral)--getAddr 4 = SocksAddrIPV6 <$> (liftM4 (,,,) getWord32le getWord32le getWord32le getWord32le)- getAddr n = error ("cannot get unknown socket address type: " ++ show n)- - putAddr (SocksAddrIPV4 h) = putWord8 1 >> putWord32host h- putAddr (SocksAddrDomainName b) = putWord8 3 >> putWord8 (fromIntegral $ B.length b) >> putByteString b--putAddr (SocksAddrIPV6 (a,b,c,d)) = putWord8 4 >> mapM_ putWord32host [a,b,c,d]- - getSocksRequest 5 = do- cmd <- toEnum . fromIntegral <$> getWord8--- -1.7.10.4-
binary file changed (1071 → absent bytes)
binary file changed (587 → absent bytes)
binary file changed (712 → absent bytes)
binary file changed (6850 → absent bytes)