aboutsummaryrefslogtreecommitdiff
path: root/doc/tips
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-02-15 14:16:48 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-02-15 14:16:48 -0400
commitbd0c83bf21d6ebd646576e60bedd0444b33468c7 (patch)
treee5abcbf96b8180b16f25e166786db2208e9163df /doc/tips
parent3776ebfd3f94a46df0878a9cc506ed0e3ff2cbd2 (diff)
parent7644cfac07de00f1d298b01d1a9d62fc9587f295 (diff)
Merge branch 'master' into database
Diffstat (limited to 'doc/tips')
-rw-r--r--doc/tips/Bup_repositories_in_git-annex.mdwn51
-rw-r--r--doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo/comment_5_3062c0794ecd7c6237efae66f4d9b62f._comment13
-rw-r--r--doc/tips/Synology_NAS_and_git_annex/comment_1_ef7e19f1fd2005eb7cc74509ffb92766._comment9
-rw-r--r--doc/tips/Synology_NAS_and_git_annex/comment_2_5e723ccf026fe970ad31207f9f036b69._comment30
-rw-r--r--doc/tips/Synology_NAS_and_git_annex/comment_3_8beb2b4b79c7787a92689aaad3bfc452._comment10
-rw-r--r--doc/tips/Synology_NAS_and_git_annex/comment_4_b04a1245378d3580432e85dff8eefdec._comment26
-rw-r--r--doc/tips/Synology_NAS_and_git_annex/comment_5_7e4ec2b22fb15e653d3b2274493e460c._comment11
-rw-r--r--doc/tips/Synology_NAS_and_git_annex/comment_6_954fc1b423208928fafdeb8cdac47c50._comment8
-rw-r--r--doc/tips/ZSH_completion.mdwn13
-rw-r--r--doc/tips/automatically_adding_metadata.mdwn2
-rw-r--r--doc/tips/automatically_adding_metadata/comment_2_bd64a53914107bc000c887b4d4bdf6af._comment12
-rw-r--r--doc/tips/automatically_adding_metadata/comment_3_02e5314f827d17d482343e8f22c42fd9._comment10
-rw-r--r--doc/tips/automatically_adding_metadata/comment_4_cd3c8e2f45db93576d1b82cfbfbe601b._comment12
-rw-r--r--doc/tips/automatically_adding_metadata/comment_5_888f0a77405d616a0d51a6176b44f605._comment11
-rw-r--r--doc/tips/automatically_adding_metadata/comment_6_34f0c55d09ddee3de642f6b25a9f6269._comment9
-rw-r--r--doc/tips/automatically_adding_metadata/comment_7_94877b21bf80374c2874b971f26f0e55._comment16
-rwxr-xr-xdoc/tips/automatically_adding_metadata/pre-commit-annex24
-rw-r--r--doc/tips/centralised_repository:_starting_from_nothing.mdwn18
-rw-r--r--doc/tips/centralized_git_repository_tutorial.mdwn2
-rw-r--r--doc/tips/centralized_git_repository_tutorial/comment_3_8894229043935e70089caf67f0cc4ddb._comment10
-rw-r--r--doc/tips/centralized_git_repository_tutorial/comment_4_b496622537d2491854b02884acf1672c._comment11
-rw-r--r--doc/tips/deleting_unwanted_files.mdwn40
-rw-r--r--doc/tips/downloading_podcasts.mdwn12
-rw-r--r--doc/tips/downloading_podcasts/comment_21_98a1dacc8d264ff31801e6c5c5f2612d._comment8
-rw-r--r--doc/tips/downloading_podcasts/comment_22_00cc7a2fb936d7ea3d5d3764a1637663._comment10
-rw-r--r--doc/tips/downloading_podcasts/comment_23_62603cda8e581a2eb2cc799dffe8a740._comment15
-rw-r--r--doc/tips/downloading_podcasts/comment_24_e75af243654d15bc7b917fcd888bcf2f._comment13
-rw-r--r--doc/tips/dumb_metadata_extraction_from_xbmc.mdwn29
-rw-r--r--doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl227
-rw-r--r--doc/tips/emacs_integration.mdwn4
-rw-r--r--doc/tips/file_manager_integration.mdwn115
-rw-r--r--doc/tips/file_manager_integration/comment_1_0f82520f415b4715946358658e1799a8._comment8
-rw-r--r--doc/tips/file_manager_integration/comment_2_9cb6b7fcb8e33a75efd2f92d7e40a9c5._comment8
-rw-r--r--doc/tips/file_manager_integration/comment_3_e7096737268cf66fce2709e9e4937f51._comment8
-rw-r--r--doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment12
-rw-r--r--doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment11
-rw-r--r--doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment10
-rw-r--r--doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_10_4440a80d64c60c7312d5c405d54e607a._comment2
-rw-r--r--doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_9_3784e0c828cd60b6a9075c2d32d070cc._comment2
-rw-r--r--doc/tips/googledriveannex/comment_2_c98c00e87bc921158c9c3698fd9f89c9._comment23
-rw-r--r--doc/tips/googledriveannex/comment_3_e7ba5620c0946874f0ae1287f99d1177._comment8
-rw-r--r--doc/tips/googledriveannex/comment_4_239091adaea6ae39fa9a4d9719667a98._comment41
-rw-r--r--doc/tips/googledriveannex/comment_5_b547ee81946e14975f082f22ccbea035._comment29
-rw-r--r--doc/tips/googledriveannex/comment_6_3a693129a0928b327c7ac4ef45c96acb._comment10
-rw-r--r--doc/tips/googledriveannex/comment_7_3a645a0cd1e4c939b7a4b8a97a0e9b03._comment26
-rw-r--r--doc/tips/googledriveannex/comment_8_7df56c426b27f12dfde09edf345cb76b._comment8
-rw-r--r--doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment8
-rw-r--r--doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment10
-rw-r--r--doc/tips/metadata_driven_views.mdwn6
-rw-r--r--doc/tips/metadata_driven_views/comment_1_1d6793701fd8a1a66bae04662cf853ce._comment12
-rw-r--r--doc/tips/metadata_driven_views/comment_2_13ae4e3668b693c0eefaca23b88515cf._comment9
-rw-r--r--doc/tips/metadata_driven_views/comment_3_196f55e52a5d8a8f061603ab87ad04ad._comment18
-rw-r--r--doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment8
-rw-r--r--doc/tips/publishing_your_files_to_the_public.mdwn55
-rw-r--r--doc/tips/publishing_your_files_to_the_public/comment_1_48f545ce26dbec944f96796ed3b9204d._comment21
-rw-r--r--doc/tips/shared_git_annex_directory_between_multiple_users/comment_1_01db8cf9dff016bd8e0498d36f325418._comment8
-rw-r--r--doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment16
-rw-r--r--doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment8
-rw-r--r--doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment8
-rw-r--r--doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment19
-rw-r--r--doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment8
-rw-r--r--doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment8
-rw-r--r--doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment12
-rw-r--r--doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment18
-rw-r--r--doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment18
-rw-r--r--doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment14
-rw-r--r--doc/tips/transmission_integration.mdwn11
-rw-r--r--doc/tips/transmission_integration/transmission_integration.sh38
-rw-r--r--doc/tips/using_Amazon_S3.mdwn6
-rw-r--r--doc/tips/using_Amazon_S3/comment_10_43f3f12a83e3ace1674eae395b865409._comment9
-rw-r--r--doc/tips/using_Amazon_S3/comment_11_70b4e62aabb93d078811cbdcd3cced20._comment24
-rw-r--r--doc/tips/using_Amazon_S3/comment_12_d00472bf4ac5f7b2212073c081ba04c2._comment12
-rw-r--r--doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment8
-rw-r--r--doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment13
-rw-r--r--doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment8
-rw-r--r--doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment10
-rw-r--r--doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment33
-rw-r--r--doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment10
-rw-r--r--doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment11
-rw-r--r--doc/tips/using_Google_Cloud_Storage/comment_2_0843bfb776b8b6d5de4de7fda4489f34._comment15
-rw-r--r--doc/tips/using_Google_Cloud_Storage/comment_3_9738f145014d8eae1f1aae7c39e71d31._comment12
-rw-r--r--doc/tips/using_box.com_as_a_special_remote.mdwn8
-rw-r--r--doc/tips/using_gitolite_with_git-annex.mdwn66
-rw-r--r--doc/tips/using_gitolite_with_git-annex/comment_19_33c19097b6f2b48dfe09ec4c8d952d06._comment11
-rw-r--r--doc/tips/using_gitolite_with_git-annex/comment_20_c82af00db3dd74ee9bfe12668e76e57b._comment13
-rw-r--r--doc/tips/using_gitolite_with_git-annex/comment_21_d2feaaf22d41413048dabf706d1b267e._comment8
-rw-r--r--doc/tips/using_gitolite_with_git-annex/comment_22_90ead0e1fe8615fe11f6f1bd7dcd7e84._comment13
-rw-r--r--doc/tips/using_the_web_as_a_special_remote.mdwn12
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_11_9889828caa47aad88267d0ec35f2240d._comment7
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_12_2ce018f181e039b5dd52e2b712f63eea._comment7
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_5_5ee9717e74ca2afed98e81fc0ea98a95._comment18
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_6_dceb15bd656e69eefa3ca975d9d642de._comment8
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_7_0bde977c62a53c90cb20491936bc399d._comment8
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_8_3f32d536f51d5e9908953caf5736b0a0._comment16
-rw-r--r--doc/tips/using_the_web_as_a_special_remote/comment_9_b420b1f320d620a9909cce5086c549bf._comment8
-rw-r--r--doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn5
-rw-r--r--doc/tips/what_to_do_when_a_repository_is_corrupted/comment_1_c3543190eae2af594f3e050057e80db6._comment8
-rw-r--r--doc/tips/what_to_do_when_a_repository_is_corrupted/comment_2_025178c2b11affe2d42a87544b897dc8._comment8
-rw-r--r--doc/tips/what_to_do_when_a_repository_is_corrupted/comment_3_9a6bae9c0326ecc7610f5415db20f49e._comment8
99 files changed, 1687 insertions, 36 deletions
diff --git a/doc/tips/Bup_repositories_in_git-annex.mdwn b/doc/tips/Bup_repositories_in_git-annex.mdwn
new file mode 100644
index 000000000..542dc2f58
--- /dev/null
+++ b/doc/tips/Bup_repositories_in_git-annex.mdwn
@@ -0,0 +1,51 @@
+I'd like to share my setup for keeping [bup](https://github.com/bup/bup/) repositories in git-annex.¹
+I'm not sure if this is a *good* tip, so comments are welcome.
+
+The purpose of this setup is to (kind of) bring encryption to bup,
+and make it easy to keep bup backups in untrusted storage by making use of the encryption modes and backends provided by git-annex.
+This approach can be used to make encrypted *backups of bup repositories*;
+it can not replace encrypted filesystems such as EncFS or S3QL
+which wouldn't necessarily require local bup repositories but also can't be combined with storage like Amazon Glacier.
+
+To add a bup repository to git-annex, initialize a regular indirect git-annex repository,
+and make the bup repository a subdirectory of it.²
+Then `git annex add $BUP_REPO/objects/packs`, i.e. the location of the large data files (.pack & .par2).
+The rest of the bup repository should be tracked by Git (`git add $BUP_REPO`).³
+This way the repository stays fully functional.
+
+After a bup-save the following steps will synchronize all remotes:⁴
+
+ git annex add $BUP_REPO/objects/pack
+ git add $BUP_REPO
+ git commit -m "Backup on $(date)"
+ git annex sync --content
+
+In my current setup, the git-annex repositories are located on a local file server.
+Various clients use bup to create backups on the server.
+This server also makes backups of other servers.
+Afterwards, it uploads the annexed data to Glacier
+(via an [encrypted S3 special remote](/special_remotes/S3/)),
+and pushes the small Git repositories to an S3QL filesystem and another off-site server.
+Using these repositories (and my GPG key) the bup repositories could be recovered.
+
+It may be important to note that in order to be able to *access* a bup repository,
+*all* files have to be available locally.
+Bup will not function if any pack files are missing (maybe this can be improved?).
+
+-----
+
+¹) Not to be confused with git-annex's [bup special remote](/special_remotes/bup/).
+
+²) You can't initialize git-annex repositories directly inside bup repositories
+because git-annex will (rightfully) identify them as bare git repositories and set itself up accordingly.
+
+³) I've come up with these .gitignore rules to exclude potentially large files not needed for recovery:
+
+ /bup_repo/bupindex*
+ /bup_repo/objects/pack/bup.bloom
+ /bup_repo/objects/pack/midx*midx
+ /bup_repo/objects/tmp*.pack
+ /bup_repo/index-cache/
+
+⁴) `git annex sync` might not be the safest command to use because it would merge changes from the remotes.
+However, assuming normal bup usage, external changes to the bup repository are not to be expected.
diff --git a/doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo/comment_5_3062c0794ecd7c6237efae66f4d9b62f._comment b/doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo/comment_5_3062c0794ecd7c6237efae66f4d9b62f._comment
new file mode 100644
index 000000000..e8ef98d99
--- /dev/null
+++ b/doc/tips/How_to_retroactively_annex_a_file_already_in_a_git_repo/comment_5_3062c0794ecd7c6237efae66f4d9b62f._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlcfH7xkyz1kyG_neK4GcFFfFWuIY7l_6A"
+ nickname="Primiano"
+ subject="large scale rewrite tips"
+ date="2015-01-06T22:55:20Z"
+ content="""
+I recently had the need of re-kind-of-annexing an unusually large repo (one of the largest?).
+With some tricks and the right code I managed to get it down to 170000 commits in 19 minutes and extracing ~8GB of blobs.
+Attaching the link here as I feel it might be helpful for very large projects (where git-filter-branch can become prohibitively slow)
+
+[https://www.primianotucci.com/blog/large-scale-git-history-rewrites](https://www.primianotucci.com/blog/large-scale-git-history-rewrites)
+
+"""]]
diff --git a/doc/tips/Synology_NAS_and_git_annex/comment_1_ef7e19f1fd2005eb7cc74509ffb92766._comment b/doc/tips/Synology_NAS_and_git_annex/comment_1_ef7e19f1fd2005eb7cc74509ffb92766._comment
new file mode 100644
index 000000000..e7a1db937
--- /dev/null
+++ b/doc/tips/Synology_NAS_and_git_annex/comment_1_ef7e19f1fd2005eb7cc74509ffb92766._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnrP-0DGtHDJbWSXeiyk0swNkK1aejoN3c"
+ nickname="sebastien"
+ subject="new dev site for syno dsm 5.0"
+ date="2014-03-25T10:20:46Z"
+ content="""
+There is a new website with documentation to create App for new synology dsm 5.0 here : http://www.synology.com/en-us/support/developer
+A good way to distribute git annex to lot of people ? :)
+"""]]
diff --git a/doc/tips/Synology_NAS_and_git_annex/comment_2_5e723ccf026fe970ad31207f9f036b69._comment b/doc/tips/Synology_NAS_and_git_annex/comment_2_5e723ccf026fe970ad31207f9f036b69._comment
new file mode 100644
index 000000000..60122bb13
--- /dev/null
+++ b/doc/tips/Synology_NAS_and_git_annex/comment_2_5e723ccf026fe970ad31207f9f036b69._comment
@@ -0,0 +1,30 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawllyDAwjTPuM6G2d3eKE481V0qGXRKtF8s"
+ nickname="Pieter"
+ subject="Syncing metadata only with Synology NAS and git annex"
+ date="2014-10-06T12:03:35Z"
+ content="""
+I am not able to get full syncing working. It says \"syncing enabled (metadata only)\".
+When I click on Actions -> Edit it says:
+
+Just a git repository.
+
+This repository is not currently set up as a git annex; only git metadata is synced with this repository.
+
+If this repository's ssh server has git-annex installed, you can upgrade this repository to a full git annex, which will store the contents of your files, not only their metadata.
+
+When I try to upgrade the repository it does not work. The log says:
+
+sh: git-annex-shell: not found
+
+rsync: connection unexpectedly closed (0 bytes received so far) [sender]
+
+rsync error: remote command not found (code 127) at io.c(226) [sender=3.1.1]
+
+I'm using Version: 5.20140717 on the Linux Ubuntu 14.10.
+
+Ssh'ing from Ubuntu to gituser@synology works fine and shows the git-annex-shell options
+
+Any ideas?
+
+"""]]
diff --git a/doc/tips/Synology_NAS_and_git_annex/comment_3_8beb2b4b79c7787a92689aaad3bfc452._comment b/doc/tips/Synology_NAS_and_git_annex/comment_3_8beb2b4b79c7787a92689aaad3bfc452._comment
new file mode 100644
index 000000000..681b001d0
--- /dev/null
+++ b/doc/tips/Synology_NAS_and_git_annex/comment_3_8beb2b4b79c7787a92689aaad3bfc452._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.54"
+ subject="comment 3"
+ date="2014-10-06T15:51:38Z"
+ content="""
+Pieter, I suspect you didn't follow the part of the instructions where it says to run \"./runshell\" on the NAS. If you didn't do that, there will be no ~/.ssh/git-annex-shell script set up.
+
+You have put git-annex-shell in your PATH somehow, but you probably did it by editing a bash dotfile. Those files are used for interactive login shells, but not when git-annex is sshing noninteractively into the NAS to run git-annex-shell.
+"""]]
diff --git a/doc/tips/Synology_NAS_and_git_annex/comment_4_b04a1245378d3580432e85dff8eefdec._comment b/doc/tips/Synology_NAS_and_git_annex/comment_4_b04a1245378d3580432e85dff8eefdec._comment
new file mode 100644
index 000000000..b0eb9bdfa
--- /dev/null
+++ b/doc/tips/Synology_NAS_and_git_annex/comment_4_b04a1245378d3580432e85dff8eefdec._comment
@@ -0,0 +1,26 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnjDzZkA6SzZHgT5_Jy3Rw3s7m_W3-oNLY"
+ nickname="Antoni"
+ subject="Process seems to hang on Synology"
+ date="2015-01-22T20:18:12Z"
+ content="""
+I think I've completed the setup correctly, as I
+
+* am able to execute git-annex-shell on the server
+* locally running ``git-annex sync`` triggers the git-annex process on the server
+
+However, once I provide the password to the key on my local machine, nothing seemingly happens - there is no output after the password prompt.
+
+The repository I'm trying to sync with the remote on the server is ~200 mb and is in my lan.
+
+When monitoring the remote server, I see the following in process being triggered:
+
+````
+31433 31431 amk D 656m270.7 7.1 /volume1/homes/amk/bin/git-annex.linux//lib/ld-linux.so.3 --library-path /volume1/homes/amk/bin/git-annex.linux//etc/ld.so.conf.d:/volume1/homes/amk/bin/git-annex.linux//usr/lib/arm-linux-gnueabi/audit:/volume1/homes/amk/bin/git-annex.linux//usr/lib/arm-linux-gnueabi/gconv:/volume1/homes/amk/bin/git-annex.linux//usr/lib:/volume1/homes/amk/bin/git-annex.linux//usr/lib/arm-linux-gnueabi:/volume1/homes/amk/bin/git-annex.linux//lib:/volume1/homes/amk/bin/git-annex.linux//lib/arm-linux-gnueabi: /volume1/homes/amk/bin/git-annex.linux/shimmed/git-annex-shell/git-annex-shell -c git-annex-shell 'configlist' '/volume1/homes/amk/archive/annex'
+````
+
+The memory usage goes up graudally, reaching well over 200mb, hogging the cpu significantly. I have never used git-annex before, so I'm not sure what else I should be looking for. This is what the server runs on:
+``armv7l GNU/Linux synology_armada370_214se``
+
+Is this an issue caused by the host architecture mismatch?
+"""]]
diff --git a/doc/tips/Synology_NAS_and_git_annex/comment_5_7e4ec2b22fb15e653d3b2274493e460c._comment b/doc/tips/Synology_NAS_and_git_annex/comment_5_7e4ec2b22fb15e653d3b2274493e460c._comment
new file mode 100644
index 000000000..af36ba513
--- /dev/null
+++ b/doc/tips/Synology_NAS_and_git_annex/comment_5_7e4ec2b22fb15e653d3b2274493e460c._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 5"""
+ date="2015-02-04T19:16:36Z"
+ content="""
+@Antoni git-annex-shell configlist does not do anything that would
+normally make it use much memory at all.
+
+You might find strace or similar tools useful to figure out what's going
+on.
+"""]]
diff --git a/doc/tips/Synology_NAS_and_git_annex/comment_6_954fc1b423208928fafdeb8cdac47c50._comment b/doc/tips/Synology_NAS_and_git_annex/comment_6_954fc1b423208928fafdeb8cdac47c50._comment
new file mode 100644
index 000000000..b9d037bd1
--- /dev/null
+++ b/doc/tips/Synology_NAS_and_git_annex/comment_6_954fc1b423208928fafdeb8cdac47c50._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2015-02-11T17:05:15Z"
+ content="""
+There's a bug report for the memory use hang now:
+[[bugs/git-annex_on_NAS_eats_all_memory]]
+"""]]
diff --git a/doc/tips/ZSH_completion.mdwn b/doc/tips/ZSH_completion.mdwn
new file mode 100644
index 000000000..f3ececd46
--- /dev/null
+++ b/doc/tips/ZSH_completion.mdwn
@@ -0,0 +1,13 @@
+ZSH users, here's some good news: after 2 years of silence, the completion function for git-annex has been updated. It now supports *all* git-annex commands (as of 5.20140517) and has many improvements for completing arguments, remotes, groups, and backends.
+
+To install it:
+
+1. make sure your have Python 3 installed (as `python3` somewhere in your `$PATH`; tested with 3.4, should work with 3.2+)
+2. get it from [GitHub](https://github.com/Schnouki/git-annex-zsh-completion)
+3. copy `_git-annex` to somewhere in your `$fpath` (I use `$HOME/.config/zsh/completion`)
+4. run `autoload -U path/to/_git-annex`
+5. type `git annex <TAB>`
+
+This is very far from being perfect, but it's (IMHO) better than nothing. If you have any issue or suggestion, please [tell me](https://github.com/Schnouki/git-annex-zsh-completion/issues)!
+
+Many thanks to Frank Terbeck and Valentin Haenel, the original authors of this completion function ([source](https://github.com/esc/git-annex-zsh-completion)).
diff --git a/doc/tips/automatically_adding_metadata.mdwn b/doc/tips/automatically_adding_metadata.mdwn
index c3f50bb39..e6d02defa 100644
--- a/doc/tips/automatically_adding_metadata.mdwn
+++ b/doc/tips/automatically_adding_metadata.mdwn
@@ -17,7 +17,7 @@ like photos, mp3s, etc.
Now any fields you list in metadata.extract to will be extracted and
stored when files are committed.
-To get a list of all possible fields, run: `extract -L | sed ' ' _`
+To get a list of all possible fields, run: `extract -L | sed 's/ /_/g'`
By default, if a git-annex already has a metadata field for a file,
its value will not be overwritten with metadata taken from files.
diff --git a/doc/tips/automatically_adding_metadata/comment_2_bd64a53914107bc000c887b4d4bdf6af._comment b/doc/tips/automatically_adding_metadata/comment_2_bd64a53914107bc000c887b4d4bdf6af._comment
new file mode 100644
index 000000000..13b3865e1
--- /dev/null
+++ b/doc/tips/automatically_adding_metadata/comment_2_bd64a53914107bc000c887b4d4bdf6af._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://id.koumbit.net/anarcat"
+ ip="2001:1928:1:9::1"
+ subject="comment 2"
+ date="2014-04-01T04:18:10Z"
+ content="""
+is there a way for this to be done globally, without having to install and configure the hook for each repository? it seems like a fairly useful feature that could be factored in git-annex itself (as opposed to be shipped as a shell script)...
+
+also, is there a way to retroactively parse the tags from existing files (as opposed to only new files added to the repo).
+
+thanks
+"""]]
diff --git a/doc/tips/automatically_adding_metadata/comment_3_02e5314f827d17d482343e8f22c42fd9._comment b/doc/tips/automatically_adding_metadata/comment_3_02e5314f827d17d482343e8f22c42fd9._comment
new file mode 100644
index 000000000..644ece527
--- /dev/null
+++ b/doc/tips/automatically_adding_metadata/comment_3_02e5314f827d17d482343e8f22c42fd9._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.191"
+ subject="comment 3"
+ date="2014-04-17T20:15:07Z"
+ content="""
+@anarcat, I have modified [[pre-commit-annex]] so if it's passed already annexed files, it'll extract their metadata.
+
+So this can be used to add metadata to files added before you installed the hook, or if you've configured more fields to be extracted.
+"""]]
diff --git a/doc/tips/automatically_adding_metadata/comment_4_cd3c8e2f45db93576d1b82cfbfbe601b._comment b/doc/tips/automatically_adding_metadata/comment_4_cd3c8e2f45db93576d1b82cfbfbe601b._comment
new file mode 100644
index 000000000..f6b2773eb
--- /dev/null
+++ b/doc/tips/automatically_adding_metadata/comment_4_cd3c8e2f45db93576d1b82cfbfbe601b._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnW_CrhP9p50n9UUhTg_a9glyKWSvnrjRQ"
+ nickname="Michele"
+ subject="direct mode pre-commit hooks [on windows]"
+ date="2015-01-20T12:43:24Z"
+ content="""
+seemingly pre-commit hooks are not being called on windows, it could have to do with git annex sync bypassing them when doing commits ?
+
+on the other side genmetadata works. although that is not enough for me since I'd want to preserve complete last modification date/time and I was in the process of modifying the supplied pre-commit script to call for \"stat %Y\" (which btw is working fine on windows, while the last binaries for extract are failing there).
+
+am I correct in assuming that direct mode [on windows at least] bypasses hooks [namely pre-commit as well as pre-commit-annex] ?
+"""]]
diff --git a/doc/tips/automatically_adding_metadata/comment_5_888f0a77405d616a0d51a6176b44f605._comment b/doc/tips/automatically_adding_metadata/comment_5_888f0a77405d616a0d51a6176b44f605._comment
new file mode 100644
index 000000000..29f5cecb4
--- /dev/null
+++ b/doc/tips/automatically_adding_metadata/comment_5_888f0a77405d616a0d51a6176b44f605._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 5"""
+ date="2015-01-20T16:52:28Z"
+ content="""
+@Michele git annex sync in a direct mode repository does bypass the
+pre-commit hook. However, it will try to run the pre-commit-annex hook.
+
+Most likely, the hook script does not appear executable on Windows, so
+git-annex cannot run it.
+"""]]
diff --git a/doc/tips/automatically_adding_metadata/comment_6_34f0c55d09ddee3de642f6b25a9f6269._comment b/doc/tips/automatically_adding_metadata/comment_6_34f0c55d09ddee3de642f6b25a9f6269._comment
new file mode 100644
index 000000000..ab5bc7b76
--- /dev/null
+++ b/doc/tips/automatically_adding_metadata/comment_6_34f0c55d09ddee3de642f6b25a9f6269._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 6"""
+ date="2015-01-20T17:19:34Z"
+ content="""
+@Michele after testing, git-annex on Windows seems to not see a file that
+does have the executable bit set as executable. I have opened a bug report
+[[bugs/windows_isExecutable_fail]], and worked around the problem now.
+"""]]
diff --git a/doc/tips/automatically_adding_metadata/comment_7_94877b21bf80374c2874b971f26f0e55._comment b/doc/tips/automatically_adding_metadata/comment_7_94877b21bf80374c2874b971f26f0e55._comment
new file mode 100644
index 000000000..74bd60224
--- /dev/null
+++ b/doc/tips/automatically_adding_metadata/comment_7_94877b21bf80374c2874b971f26f0e55._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnW_CrhP9p50n9UUhTg_a9glyKWSvnrjRQ"
+ nickname="Michele"
+ subject="pre-commit is OK on windows now - auto adding last mod datetime"
+ date="2015-01-30T11:48:24Z"
+ content="""
+@Joey just tested a nightly build and now pre-commit-annex is called, and with my modifications it autoadds last modified times for content.
+Trivially it's just the matter of adding:
+
+ field=\"datemod\"
+ value=$(stat -c %Y $f)
+ addmeta \"$f\" \"$field\" \"$value\"
+
+to the body of the process() function to the supplied pre-commit-annex script.
+thanks
+"""]]
diff --git a/doc/tips/automatically_adding_metadata/pre-commit-annex b/doc/tips/automatically_adding_metadata/pre-commit-annex
index f300bd731..fe818d032 100755
--- a/doc/tips/automatically_adding_metadata/pre-commit-annex
+++ b/doc/tips/automatically_adding_metadata/pre-commit-annex
@@ -1,6 +1,11 @@
#!/bin/sh
+#
# This script can be used to add git-annex metadata to files when they're
-# committed.
+# committed. It is typically installed as .git/hooks/pre-commit-annex
+#
+# You can also run this script by hand, passing it the names of files
+# already checked into git-annex, and it will extract/refresh the git-annex
+# metadata from the files.
#
# Copyright 2014 Joey Hess <id@joeyh.name>
# License: GPL-3+
@@ -12,8 +17,6 @@ if [ -z "$want" ]; then
exit 0
fi
-echo "$want"
-
case "$(git config --bool metadata.overwrite || true)" in
true)
overwrite=1
@@ -46,7 +49,8 @@ fi
IFS="
"
-for f in $(git diff-index --name-only --cached $against); do
+
+process () {
if [ -e "$f" ]; then
for l in $(extract "$f" | egrep "$want"); do
field="${l%% - *}"
@@ -54,4 +58,14 @@ for f in $(git diff-index --name-only --cached $against); do
addmeta "$f" "$field" "$value"
done
fi
-done
+}
+
+if [ -n "$*" ]; then
+ for f in $@; do
+ process "$f"
+ done
+else
+ for f in $(git diff-index --name-only --cached $against); do
+ process "$f"
+ done
+fi
diff --git a/doc/tips/centralised_repository:_starting_from_nothing.mdwn b/doc/tips/centralised_repository:_starting_from_nothing.mdwn
index b12246d36..7018697a0 100644
--- a/doc/tips/centralised_repository:_starting_from_nothing.mdwn
+++ b/doc/tips/centralised_repository:_starting_from_nothing.mdwn
@@ -16,7 +16,6 @@ Clone that to the laptop:
laptop$ cd /other
laptop$ git clone ssh://server//one/git/m
Cloning into 'm'...
- Warning: No xauth data; using fake authentication data for X11 forwarding.
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
@@ -28,18 +27,9 @@ Clone that to the laptop:
init laptop ok
laptop$
-Merge the `git-annex` repository (this is the bit that is often
-overlooked!):
-
- laptop$ git annex merge
- merge . (merging "origin/git-annex" into git-annex...)
- ok
- laptop$
-
Add some content:
laptop$ git annex addurl http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg
- "kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg"
addurl kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg (downloading http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg ...) --2011-12-15 08:13:10-- http://kitenet.net/~joey/screencasts/git-annex_coding_in_haskell.ogg
Resolving kitenet.net (kitenet.net)... 2001:41c8:125:49::10, 80.68.85.49
Connecting to kitenet.net (kitenet.net)|2001:41c8:125:49::10|:80... connected.
@@ -53,6 +43,9 @@ Add some content:
(checksum...) ok
(Recording state in git...)
+
+Don't forget to commit it:
+
laptop$ git commit -m 'See Joey play.'
[master (root-commit) 106e923] See Joey play.
1 files changed, 1 insertions(+), 0 deletions(-)
@@ -61,7 +54,7 @@ Add some content:
All fine, now push it back to the centralised master:
- laptop$ git push
+ laptop$ git push origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (11/11), done.
@@ -71,5 +64,8 @@ All fine, now push it back to the centralised master:
3ba1386..ad3bc9e git-annex -> git-annex
laptop$
+You'll probably want to use `git annex copy --to origin` to copy the
+annexed file contents to the server. See the [[walkthrough]] for details.
+
You can add more "client" repositories by following the `laptop`
sequence of operations.
diff --git a/doc/tips/centralized_git_repository_tutorial.mdwn b/doc/tips/centralized_git_repository_tutorial.mdwn
index 00283829f..8088e7d23 100644
--- a/doc/tips/centralized_git_repository_tutorial.mdwn
+++ b/doc/tips/centralized_git_repository_tutorial.mdwn
@@ -47,7 +47,7 @@ This file is available directly from the web; so git-annex can download it:
(Recording state in git...)
# git commit -a -m 'added a screencast I made'
-Feel free the rename the files, etc, using normal git commands:
+Feel free to rename the files, etc, using normal git commands:
# git mv Haskell_Amuse_Bouche-b9FagOVqxmI.mp4 Haskell_Amuse_Bouche.mp4
# git mv kitenet.net_~joey_screencasts_git-annex_coding_in_haskell.ogg git-annex_coding_in_haskell.ogg
diff --git a/doc/tips/centralized_git_repository_tutorial/comment_3_8894229043935e70089caf67f0cc4ddb._comment b/doc/tips/centralized_git_repository_tutorial/comment_3_8894229043935e70089caf67f0cc4ddb._comment
new file mode 100644
index 000000000..b0324d47a
--- /dev/null
+++ b/doc/tips/centralized_git_repository_tutorial/comment_3_8894229043935e70089caf67f0cc4ddb._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawn8d6WBPNtmyeANT-gjlN19QnCTQ0psRPs"
+ nickname="James"
+ subject="S3 special remote?"
+ date="2015-01-22T21:52:13Z"
+ content="""
+Is it possible to use special remotes (like S3) with this centralized method?
+
+Public web content works fine, but I've had no luck with S3.
+"""]]
diff --git a/doc/tips/centralized_git_repository_tutorial/comment_4_b496622537d2491854b02884acf1672c._comment b/doc/tips/centralized_git_repository_tutorial/comment_4_b496622537d2491854b02884acf1672c._comment
new file mode 100644
index 000000000..9ef4ddd1d
--- /dev/null
+++ b/doc/tips/centralized_git_repository_tutorial/comment_4_b496622537d2491854b02884acf1672c._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 4"""
+ date="2015-02-04T19:29:01Z"
+ content="""
+You can add any kind of special remotes to such a repository.
+
+Each clone from the central repository will need to have `git annex
+enableremote` used to enable any special remote(s) you need to use
+from that clone.
+"""]]
diff --git a/doc/tips/deleting_unwanted_files.mdwn b/doc/tips/deleting_unwanted_files.mdwn
new file mode 100644
index 000000000..8c09b42aa
--- /dev/null
+++ b/doc/tips/deleting_unwanted_files.mdwn
@@ -0,0 +1,40 @@
+It's quite hard to delete a file from a git repository once it's checked in and pushed to origin. This is normally ok, since git repositories contain mostly small files, and a good thing since losing hard work stinks.
+
+With git-annex this changes some: Very large files can be managed with git-annex, and it's not uncommon to be done with such a file and want to delete it. So, git-annex provides a number of ways to handle this, while still trying to avoid accidental foot shooting that would lose the last copy of an important file.
+
+## the garbage collecting method
+
+In this method, you just remove annexed files whenever you want, and commit the changes. This is probably the most natural way to go.
+
+In an indirect mode repo, you can do this the same way you would in a regular git repository. For example, `git rm foo; git commit -m "removed foo"`. This leaves the contents of the files still in the annex, not really deleted yet.
+
+If you have a direct mode repo, you can't run `git rm` in it. Instead, you can just delete files using `rm` or your file manager, and then run `git annex sync` to commit the deletion. That will delete the file's content from your disk. Even if it's the only copy of the file!
+
+Either way, deleting files can leave some garbage lying around in either the local repository, or other repositories that contained a copy of the content of the file you deleted. Eventually you'll want to free up some disk space used by one of these repositories, and then it's time to take out the garbage.
+
+To collect the garbage, you can run `git annex unused` inside the repository which you want to slim down. That will list files stored in the annex that are not used by any git branches or tags. Followed by `git annex dropunused 1-10` to delete a range of the unused files from the annex.
+
+In recent versions of git-annex, `git annex dropunused` checks that enough other copies of a file's content exist in other repositories before deleting it, so this won't ever delete the last copy of some file. This is a good default, because these unused files are still referred to by some commits in the git history, and you might want to retain the full history of every version of a file.
+
+But, let's say you don't care about that, you only want to keep files that are in use by branches and tags. Then you can use `git annex dropunused --force` with a range of files, which will delete them even if it's the last copy.
+
+Finally, sometimes you want to remove unused files from a special remote. To accomplish this, pass `--from remotename` to the unused and dropunused commands, and they will act on
+files stored in that remote, rather than on the local repository.
+
+## let the assistant take care of it
+
+If you're using the git-annex assistant, you don't normally need to worry about this. Just delete files however you normally would. The assistant will try to migrate unused file contents away from your local repository and store them in whatever backup repositories you've set up.
+
+## delete all the copies method
+
+You have a file. You want that file to immediately vanish from the face of the earth to the best of your abilities.
+
+Note that, since git-annex deduplicates files by default, any files with
+the same content will be removed by these commands.
+
+1. `git annex drop --force file`
+2. `git annex whereis file`
+3. `git annex drop --force file --from $repo` repeat for each repository listed by the whereis command
+4. `rm file; git annex sync`
+
+Of course, if you have offline backup repositories that contain this file, you'll have to bring them online before you can drop it from them, etc.
diff --git a/doc/tips/downloading_podcasts.mdwn b/doc/tips/downloading_podcasts.mdwn
index d412a73bf..7805f84cb 100644
--- a/doc/tips/downloading_podcasts.mdwn
+++ b/doc/tips/downloading_podcasts.mdwn
@@ -23,7 +23,8 @@ there's a --template option. The default is
`--template='${feedtitle}/${itemtitle}${extension}'`
Other available template variables:
-feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid
+feedauthor, itemauthor, itemsummary, itemdescription, itemrights, itemid,
+itempubdate, author, title.
## catching up
@@ -67,3 +68,12 @@ and transferring to your laptop on demand.
If your git-annex is also built with quvi support, you can also use
`git annex importfeed` on youtube playlists. It will automatically download
the videos linked to by the playlist.
+
+## metadata
+
+As well as storing the urls for items imported from a feed, git-annex can
+store additional [[metadata]], like the author, and itemdescription.
+This can then be looked up later, used in [[metadata_driven_views]], etc.
+
+To make all available metadata from the feed be stored:
+`git config annex.genmetadata true`
diff --git a/doc/tips/downloading_podcasts/comment_21_98a1dacc8d264ff31801e6c5c5f2612d._comment b/doc/tips/downloading_podcasts/comment_21_98a1dacc8d264ff31801e6c5c5f2612d._comment
new file mode 100644
index 000000000..eebc00ad9
--- /dev/null
+++ b/doc/tips/downloading_podcasts/comment_21_98a1dacc8d264ff31801e6c5c5f2612d._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="Sazius"
+ ip="62.78.213.233"
+ subject="comment 21"
+ date="2014-07-01T20:52:06Z"
+ content="""
+For some podcast feeds I typically wish to view the description of the show before I decide to download it or not. Is there some way to perform that use case using git annex? I know `itemdescription` is something I can include in the template for the filename, but the descriptions can be really long... doesn't seem very elegant to have that in the file name. Could the description for example be included as metadata of the item?
+"""]]
diff --git a/doc/tips/downloading_podcasts/comment_22_00cc7a2fb936d7ea3d5d3764a1637663._comment b/doc/tips/downloading_podcasts/comment_22_00cc7a2fb936d7ea3d5d3764a1637663._comment
new file mode 100644
index 000000000..2fba1b57d
--- /dev/null
+++ b/doc/tips/downloading_podcasts/comment_22_00cc7a2fb936d7ea3d5d3764a1637663._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.55"
+ subject="metadata"
+ date="2014-07-03T18:25:32Z"
+ content="""
+Good idea, Sazius!
+
+I've made importfeed store the metadata, as long as annex.genmetadata is set in .git/config.
+"""]]
diff --git a/doc/tips/downloading_podcasts/comment_23_62603cda8e581a2eb2cc799dffe8a740._comment b/doc/tips/downloading_podcasts/comment_23_62603cda8e581a2eb2cc799dffe8a740._comment
new file mode 100644
index 000000000..13909c27c
--- /dev/null
+++ b/doc/tips/downloading_podcasts/comment_23_62603cda8e581a2eb2cc799dffe8a740._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="ewen"
+ subject="itempubdate"
+ date="2015-01-03T22:01:37Z"
+ content="""
+Using a `--template='${feedtitle}/${itempubdate}-${itemtitle}${extension}'` with a libsyn RSS feed (eg, [Poly Weekly](http://polyweekly.libsyn.com/rss)), I found that `itempubdate` was expanding to \"none\", even though there is a date with each entry in the RSS, eg,
+
+ <pubDate>Fri, 26 Dec 2014 15:25:38 +0000</pubDate>
+
+Maybe the date string cannot be parsed? But it does look like a fairly typical datestamp to me. If the cause is the mixed-case in the tag, could `pubDate` be supported in addition to `pubdate`? (AFAICT [`pubDate` is the standardised mix of lower/upper case](http://validator.w3.org/feed/docs/rss2.html), but maybe not the most common, in which case supporting both `pubDate` and `pubdate` might help?) As seen with `git-annex version: 5.20141024~bpo70+1`, installed from Debian Backports; AFAICT it's still the latest release to make it to backports.
+
+For now I'm just omitting \"itempubdate\" from my template.
+
+Ewen
+"""]]
diff --git a/doc/tips/downloading_podcasts/comment_24_e75af243654d15bc7b917fcd888bcf2f._comment b/doc/tips/downloading_podcasts/comment_24_e75af243654d15bc7b917fcd888bcf2f._comment
new file mode 100644
index 000000000..25deb97b4
--- /dev/null
+++ b/doc/tips/downloading_podcasts/comment_24_e75af243654d15bc7b917fcd888bcf2f._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""pubDate"""
+ date="2015-01-05T22:55:06Z"
+ content="""
+@ewen, I tested that feed and it is able to get the pubDate from it and
+parses it ok.
+
+Most likely, your version of git-annex is not built with a new enough
+version of the haskell feed library. Version 0.3.9 or newer is needed to be
+able to extract pubdates. For example, Debian stable doesn't have a new
+enough version.
+"""]]
diff --git a/doc/tips/dumb_metadata_extraction_from_xbmc.mdwn b/doc/tips/dumb_metadata_extraction_from_xbmc.mdwn
new file mode 100644
index 000000000..e3611ec30
--- /dev/null
+++ b/doc/tips/dumb_metadata_extraction_from_xbmc.mdwn
@@ -0,0 +1,29 @@
+I wanted to get the list of movies I haven't seen yet in XBMC, and i'm lazy. So I'll use [[metadata]] to be able to extract those movies only, for the road for example.
+
+First I fiddled around with shell scripts to extract the list of those films, which in XBMC-speak means that have a `NULL playCount`. Since there are two ways that XMBC can represent those files (in a `stack://` if there is multiple files for the movie or not), there are two scripts. For "stacked" movies:
+
+ echo 'SELECT files.strFileName FROM movie JOIN files ON files.idFile=movie.idFile JOIN path ON path.idPath=files.idPath WHERE playCount IS NULL AND files.strFileName LIKE "stack://%";' | sqlite3 /home/video/.xbmc/userdata/Database/MyVideos75.db | sed "s#stack://##;s/, /\n/g" | sed "s#/home/media/video/##"
+
+And the rest:
+
+ echo 'SELECT path.strPath || files.strFileName FROM movie JOIN files ON files.idFile=movie.idFile JOIN path ON path.idPath=files.idPath WHERE playCount IS NULL AND files.strFileName NOT LIKE "stack://%";' | sqlite3 /home/video/.xbmc/userdata/Database/MyVideos75.db | sed "s#/home/media/video/##"
+
+Also notice how I remove the absolute prefix for the annex so that i can refer to files as a relative path.
+
+So this quick and dirty hack could have been used to mark files as "new". Unfortunately, this won't unmark them when the playcount increases. So instead I think this should be a field, and we need to extract the playcount. Play around with shell scripting enough to get sick, get back into bad perl habits and you'll end up with this nasty script: [[git-annex-xbmc-playcount.pl]].
+
+After the script is ran, you can sort the files by play count with:
+
+ git annex view "playCount=*"
+
+Or just show the files that haven't been played yet:
+
+ git annex view playCount=0
+
+Use `git checkout master` to reset the view. Note that the above will flatten the tree hierarchy, which you may not want. Try this in that case:
+
+ git annex view playCount=0 films/=*
+
+For more information, see [[tips/metadata_driven_views/]].
+
+-- [[anarcat]]
diff --git a/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl b/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl
new file mode 100644
index 000000000..85b97188f
--- /dev/null
+++ b/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl
@@ -0,0 +1,227 @@
+#! /usr/bin/perl -w
+
+use Getopt::Long;
+use Pod::Usage;
+
+my $help = 0;
+my $usage = 0;
+my $dryrun = 0;
+my $verbose = 0;
+my $path = '';
+my $annex = '';
+my $home = $ENV{'HOME'};
+
+sub main() {
+ checkargs();
+ if (!$path) {
+ $path = $home . '/.xbmc/userdata/Database';
+ }
+ print("# checking XBMC directory '$path'\n") if ($verbose);
+ $dbpath = finddb($path);
+ if (!$dbpath) {
+ pod2usage("$0: can't find a XBMC database in '$path'.");
+ }
+ print("# using database '$dbpath'\n") if ($verbose);
+ checkdb();
+}
+
+# list videos database, find the latest one
+# modified version of
+# http://stackoverflow.com/questions/4651092/getting-the-list-of-files-sorted-by-modification-date-in-perl
+sub finddb($) {
+ my $path = shift(@_);
+ opendir my($dirh), $path or die "can't opendir $path: $!";
+ my @flist = sort { -M $a <=> -M $b } # Sort by modification time
+ map { "$path/$_" } # We need full paths for sorting
+ grep { /^MyVideos.*\.db$/ }
+ readdir $dirh;
+ closedir $dirh;
+ if ($#flist > 0) {
+ return $flist[0];
+ }
+ else {
+ return 0;
+ }
+}
+
+sub checkargs() {
+ pod2usage(1) if $help;
+ pod2usage(-exitval => 0, -verbose => 2) if $usage;
+
+ GetOptions('h|?' => \$help,
+ 'help|usage' => \$usage,
+ # we want to operate on relative links, so set this to
+ # the common annex to the git annex repo
+ 'annex=s' => \$annex,
+ 'path=s' => \$path,
+ 'home=s' => \$home,
+ 'dryrun|n' => \$dryrun,
+ 'verbose|v' => \$verbose,
+ )
+ or die("Error parsing commandline\n");
+}
+
+sub checkdb() {
+ my @lines = `echo 'SELECT playCount, path.strPath, files.strFileName FROM movie JOIN files ON files.idFile=movie.idFile JOIN path ON path.idPath=files.idPath;' | sqlite3 $dbpath`;
+ print "# finding files...\n" if $verbose;
+ for (@lines) {
+ my ($count, $dir, $file) = split /\|/;
+ chomp $file;
+ # empty or non-numeric count is zero
+ if ($count !~ /[0-9]/) {
+ $count = 0;
+ }
+ print "# $dir/$file\n" if $verbose;
+ if ($file =~ s#stack://##) {
+ for (split /,/, $file) {
+ s/$annex//;
+ s/^ //;
+ s/ $//;
+ my @cmd = (qw(git annex metadata --set), "playCount=$count", $_);
+ if ($dryrun) {
+ print join(' ', @cmd) . "\n";
+ }
+ else {
+ system(@cmd);
+ }
+ }
+ }
+ else {
+ $dir =~ s/$annex//;
+ my @cmd = (qw(git annex metadata --set), "playCount=$count", "$dir$file");
+ if ($dryrun) {
+ print join(' ', @cmd) . "\n";
+ }
+ else {
+ system(@cmd);
+ }
+ }
+ }
+}
+
+main();
+
+__END__
+=encoding utf8
+
+=head1 NAME
+
+git-annex-xbmc-playcount - register XBMC playcounts as git-annex metadata
+
+=head1 SYNOPSIS
+
+git-annex-xbmc-playcount [--path .xbmc/userdata/Database]
+
+ Options:
+ -h short usage
+ --help complete help
+ --dryrun, -n do nothing and show the commands that would be ran
+ --annex path to the git-annex repo
+ --home the home directory where the .xbmc directory is located
+ --path the location of the Database directory of XBMC, overrides --home
+ --verbose show interaction details with the database
+
+=head1 DESCRIPTION
+
+This program will look into the XBMC database for the "playcount"
+field to register that number as metadata in the git-annex repository.
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<--dryrun>
+
+Do nothing but show all the steps that would be ran. The output can be
+piped through a POSIX shell after inspection. B<-n> is an alias of
+this command. Example:
+
+ git-annex-xbmc-playcount -n | tee runme
+ # inspect the output
+ sh < runme
+
+=item B<--annex>
+
+This option allows the user to specify the root of the git-annex
+repository, which is then stripped off the paths found in the XBMC
+database.
+
+=item B<--home>
+
+Home of the user running XBMC. If not specified, defaults to the $HOME
+environment variables. The script will look into
+B<$home/.xbmc/userdata/Database> for a file matching
+B<^MyVideos.*\.db$> and will fail if none is found.
+
+=item B<--path>
+
+Manually specify the path to B<.xbmc/userdata/Database>. This
+overrides B<--home>.
+
+Note that this doesn't point directly to the datbase itself, because
+there are usually many database files and we want to automatically
+find the latest. This may be a stupid limitation.
+
+=item B<--verbose>
+
+Show more information about path discovery. Doesn't obstruct
+B<--dryrun> output because lines are prefixed with C<#>.
+
+=back
+
+=head1 EXAMPLES
+
+You have a git annex in B</srv/video> and XBMC is ran as the
+B<video> user and you want to be cautious:
+
+ $ ./git-annex-xbmc-playcount.pl --home /home/video/ -n --annex /srv/video/ | tee set-metadata
+ git annex metadata --set playCount=0 films/Animal.Farm.1954.DVDRip.DivX-MDX.avi
+
+This looks about right, set the metadata:
+
+ $ git annex metadata --set playCount=0 films/Animal.Farm.1954.DVDRip.DivX-MDX.avi
+ metadata films/Animal.Farm.1954.DVDRip.DivX-MDX.avi
+ lastchanged=2014-10-04@22-17-42
+ playCount=0
+ playCount-lastchanged=2014-10-04@22-17-42
+ ok
+ (Recording state in git...)
+
+=head1 ENVIRONMENT
+
+B<$HOME> is looked into to find the B<.xbmc> home directory if none of
+B<--home> or B<--path> is specified.
+
+=head1 FILES
+
+=over 8
+
+=item B<$HOME/.xbmc/userdata/Database/MyVideos.*\.db>
+
+This is where we assume the SQLite database of videos XBMC uses is
+stored.
+
+=back
+
+=head1 BUGS
+
+If there are pipes (C<|>) in filenames, the script may fail to find
+the files properly. We would need to rewrite the database code to use
+B<DBD::SQLite>(3pm) instead of a pipe to B<sqlite3>(1).
+
+=head1 LIMITATIONS
+
+It took longer writing this help than writing the stupid script.
+
+The script will not tag files not yet detected by XBMC.
+
+The script is not incremental, so it will repeatedly add the same
+counts to files it has already found.
+
+=head1 SEE ALSO
+
+B<git-annex>(1), B<xbmc>(1)
+
+=head1 AUTHOR
+
+Written by Antoine Beaupré <anarcat@debian.org>
diff --git a/doc/tips/emacs_integration.mdwn b/doc/tips/emacs_integration.mdwn
index 2390474a4..3eeff788a 100644
--- a/doc/tips/emacs_integration.mdwn
+++ b/doc/tips/emacs_integration.mdwn
@@ -21,5 +21,5 @@ file`; otherwise it will "git add" it.
----
-[magit-annex](https://github.com/kyleam/magit-annex) adds magit support
-for a few features, including adding files and syncing.
+[magit-annex](https://github.com/magit/magit-annex) adds git annex
+operations to Magit.
diff --git a/doc/tips/file_manager_integration.mdwn b/doc/tips/file_manager_integration.mdwn
new file mode 100644
index 000000000..4429b9093
--- /dev/null
+++ b/doc/tips/file_manager_integration.mdwn
@@ -0,0 +1,115 @@
+Integrating git-annex and your file manager provides an easy way to select
+annexed files to get or drop. The file manager can also be used to undo
+changes to file managed by git-annex.
+
+[[!toc]]
+
+## GNOME (nautilus)
+
+Recent git-annex comes with built-in integration for Nautilus.
+
+[[!img assistant/nautilusmenu.png]]
+
+[[!img assistant/downloadnotification.png]]
+
+This is set up by git-annex creating simple scripts in
+`~/.local/share/nautilus/scripts`, with names like "git-annex get"
+
+## KDE (Dolphin/Konqueror)
+
+Even more recent git-annex comes with built-in integration with Konqueror.
+
+[[!img assistant/konquerormenu.png]]
+
+This is set up by git-annex creating a
+`~/.kde/share/kde4/services/ServiceMenus/git-annex.desktop file.
+
+## XFCE (Thunar)
+
+XFCE uses the Thunar file manager, which can also be easily configured to
+allow for custom actions. Just go to the "Configure custom actions..." item
+in the "Edit" menu, and create a custom action for get, drop, and undo with the
+following commands:
+
+ git-annex drop --notify-start --notify-finish -- %F
+
+for drop, and for get:
+
+ git-annex get --notify-start --notify-finish -- %F
+
+and for undo:
+
+ git-annex undo --notify-start --notify-finish -- %F
+
+This gives me the resulting config on disk, in `.config/Thunar/uca.xml`:
+
+ <action>
+ <icon>git-annex</icon>
+ <name>git-annex get</name>
+ <unique-id>1396278104182858-3</unique-id>
+ <command>git-annex get --notify-start --notify-finish -- %F</command>
+ <description>get the files from a remote git annex repository</description>
+ <patterns>*</patterns>
+ <directories/>
+ <audio-files/>
+ <image-files/>
+ <other-files/>
+ <text-files/>
+ <video-files/>
+ </action>
+ <action>
+ <icon>git-annex</icon>
+ <name>git-annex drop</name>
+ <unique-id>1396278093174843-2</unique-id>
+ <command>git-annex drop --notify-start --notify-finish -- %F</command>
+ <description>drop the files from the local repository</description>
+ <patterns>*</patterns>
+ <directories/>
+ <audio-files/>
+ <image-files/>
+ <other-files/>
+ <text-files/>
+ <video-files/>
+ </action>
+
+The complete instructions on how to setup actions is [in the XFCE documentation](http://docs.xfce.org/xfce/thunar/custom-actions).
+
+## OS X (Finder)
+
+For OS X, it is possible to get context menus in Finder. Due to how OS X
+deals with sym links, one needs to operate on folders if using indirect
+mode. Direct mode operation has not been tested.
+
+1. Open Automator and create a new Service.
+2. Using the Drop down menus in the top create the sentence "Service receives selected folders in Finder.app" to have it work on folders. For direct mode operation it is probably reasonable to select "files or folders".
+3. Add a "Run shell script" element and fill in line with the following script:
+
+ #!/usr/bin/bash
+ source ~/.bash_profile
+ for f in "$@"
+ do
+ cd "$(dirname "$f")" && git-annex get "$f"
+ done
+
+The purpose of the first line is there to get git-annex on to the path. The
+reason for the for loop is in case multiple files or folders are marked
+when running the context menu command.
+
+Finally save the the workflow under the name for which it should be listed in the context menu.
+
+## your file manager here
+
+Edit this page and add instructions!
+
+## general
+
+If your file manager can run a command on a file, it should be easy to
+integrate git-annex with it. A simple script will suffice:
+
+ #!/bin/sh
+ git-annex get --notify-start --notify-finish -- "$@"
+
+The --notify-start and --notify-stop options make git-annex display a
+desktop notification. This is useful to give the user an indication that
+their action took effect. Desktop notifications are currently only
+implemented for Linux.
diff --git a/doc/tips/file_manager_integration/comment_1_0f82520f415b4715946358658e1799a8._comment b/doc/tips/file_manager_integration/comment_1_0f82520f415b4715946358658e1799a8._comment
new file mode 100644
index 000000000..2dedcc884
--- /dev/null
+++ b/doc/tips/file_manager_integration/comment_1_0f82520f415b4715946358658e1799a8._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnmF_9CAtfqdZkC4e-_dCX-rK5bqh4RWkw"
+ nickname="Carl"
+ subject="Finder added"
+ date="2014-04-23T13:19:02Z"
+ content="""
+For some reason I do not manage to get the shell script to pretty print. I can also supply a screenshot of the Automator, but do not manage to upload it to the wiki.
+"""]]
diff --git a/doc/tips/file_manager_integration/comment_2_9cb6b7fcb8e33a75efd2f92d7e40a9c5._comment b/doc/tips/file_manager_integration/comment_2_9cb6b7fcb8e33a75efd2f92d7e40a9c5._comment
new file mode 100644
index 000000000..ad3e4c0b4
--- /dev/null
+++ b/doc/tips/file_manager_integration/comment_2_9cb6b7fcb8e33a75efd2f92d7e40a9c5._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 2"
+ date="2014-04-23T17:49:09Z"
+ content="""
+@Carl, I've fixed the formatting. To add a picture, you'd need to send me a pull request adding it to the git repo.
+"""]]
diff --git a/doc/tips/file_manager_integration/comment_3_e7096737268cf66fce2709e9e4937f51._comment b/doc/tips/file_manager_integration/comment_3_e7096737268cf66fce2709e9e4937f51._comment
new file mode 100644
index 000000000..1c3c7eeb5
--- /dev/null
+++ b/doc/tips/file_manager_integration/comment_3_e7096737268cf66fce2709e9e4937f51._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://id.koumbit.net/anarcat"
+ ip="72.0.72.144"
+ subject="comment 3"
+ date="2014-10-01T02:02:39Z"
+ content="""
+for some reason this doesn't work in gnome2. i had to add the shortcuts in /usr/share/nautilus-scripts (iirc). --[[anarcat]]
+"""]]
diff --git a/doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment b/doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment
new file mode 100644
index 000000000..f625d6bc0
--- /dev/null
+++ b/doc/tips/flickrannex/comment_14_c728f10074d194efa8b2c60e97d275e7._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://id.koumbit.net/anarcat"
+ ip="72.0.72.144"
+ subject="great job on that plugin!"
+ date="2014-04-15T04:47:17Z"
+ content="""
+it's pretty awesome to have 1TB of free storage like that out there... but for storing photos, it could be improved - I filed a few bugs on the github repo here:
+
+https://github.com/TobiasTheViking/flickrannex/issues/created_by/anarcat?state=open
+
+thanks!
+"""]]
diff --git a/doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment b/doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment
new file mode 100644
index 000000000..67f7d3b74
--- /dev/null
+++ b/doc/tips/flickrannex/comment_15_2dd75800e4db58761fcbbd1954a36f1f._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmvzzyDA8uXFz8yokeCrepbh8PwWe_WrjE"
+ nickname="Michael"
+ subject="current status?"
+ date="2014-08-08T16:00:18Z"
+ content="""
+Hi, just wondering what the current status of this plugin is.
+The repo at TobiasTheViking looks a little odd - it has a few large commits from January with an unknown author, and the last one appears to completely remove the main script.
+
+What's going on? does it need a fork?
+"""]]
diff --git a/doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment b/doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment
new file mode 100644
index 000000000..f45aad147
--- /dev/null
+++ b/doc/tips/flickrannex/comment_16_2f65093ec9f6d67d2cfe5b5fae201123._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmvzzyDA8uXFz8yokeCrepbh8PwWe_WrjE"
+ nickname="Michael"
+ subject="a more recent fork"
+ date="2014-08-08T16:03:24Z"
+ content="""
+Just a note that I poked around on github and saw a more recent cleaned up version in this fork: https://github.com/magthe/flickrannex/tree/devo
+
+
+"""]]
diff --git a/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_10_4440a80d64c60c7312d5c405d54e607a._comment b/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_10_4440a80d64c60c7312d5c405d54e607a._comment
index 4ee70bcd7..b1031646f 100644
--- a/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_10_4440a80d64c60c7312d5c405d54e607a._comment
+++ b/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_10_4440a80d64c60c7312d5c405d54e607a._comment
@@ -9,7 +9,7 @@
Sorry, I ment that the file containing the symmetric encryption key should obviously not be used to encrypt itself, it would be stored in the repository \"unencrypted\" (but protected with a passphrase)
-> store a non-encrypted gpg key alongside the repsitory encrypted with it, but then you have to rely on a passphrase for all your security.
+> store a non-encrypted gpg key alongside the repository encrypted with it, but then you have to rely on a passphrase for all your security.
Exactly. I think such a mode be a great addition. It might not be as secure as encryption based on a private key - depending on the passphrase strength -, but it would certainly be a lot more convenient and portable (and still much more secure than the shared encryption method).
"""]]
diff --git a/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_9_3784e0c828cd60b6a9075c2d32d070cc._comment b/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_9_3784e0c828cd60b6a9075c2d32d070cc._comment
index 24e5f5b83..7a452e8f0 100644
--- a/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_9_3784e0c828cd60b6a9075c2d32d070cc._comment
+++ b/doc/tips/fully_encrypted_git_repositories_with_gcrypt/comment_9_3784e0c828cd60b6a9075c2d32d070cc._comment
@@ -8,7 +8,7 @@
Then you would need to decrypt the repository in order get the key you need to decrypt the repository. The impossibility of this design is why I didn't do that!
-It would certainly be possible to store a non-encrypted gpg key alongside the repsitory encrypted with it, but then you have to rely on a passphrase for all your security.
+It would certainly be possible to store a non-encrypted gpg key alongside the repository encrypted with it, but then you have to rely on a passphrase for all your security.
You should file a bug report for the bug you saw..
"""]]
diff --git a/doc/tips/googledriveannex/comment_2_c98c00e87bc921158c9c3698fd9f89c9._comment b/doc/tips/googledriveannex/comment_2_c98c00e87bc921158c9c3698fd9f89c9._comment
new file mode 100644
index 000000000..e90903b19
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_2_c98c00e87bc921158c9c3698fd9f89c9._comment
@@ -0,0 +1,23 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawl64jV2rE8GMogJ6XuqESSkz78RVBgVdGw"
+ nickname="Mesut"
+ subject="I can't add google drive as remote"
+ date="2014-04-10T07:55:56Z"
+ content="""
+Hi,
+
+I am new to git-annex and I want to use google drive as remote but I can't.
+
+I create syslink to `googledriveannex` in `/usr/local/bin`.
+
+When I execute below command, command waiting but not make anything:
+
+`$ git annex initremote googledrive type=external externaltype=googledrive encryption=shared folder=gitannex`
+
+`initremote googledrive (encryption setup)` # Waiting but does not do anything.
+
+What I am doing wrong?
+
+Thanks for helps
+
+"""]]
diff --git a/doc/tips/googledriveannex/comment_3_e7ba5620c0946874f0ae1287f99d1177._comment b/doc/tips/googledriveannex/comment_3_e7ba5620c0946874f0ae1287f99d1177._comment
new file mode 100644
index 000000000..c80dbf01f
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_3_e7ba5620c0946874f0ae1287f99d1177._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.191"
+ subject="comment 3"
+ date="2014-04-17T20:58:41Z"
+ content="""
+@Mesut, I think you're doing everything right. It can take a long time for the highly secure gpg key to be generated. Sit tight and let it finish, or you can pass --fast to generate a key that is a tiny bit less secure.
+"""]]
diff --git a/doc/tips/googledriveannex/comment_4_239091adaea6ae39fa9a4d9719667a98._comment b/doc/tips/googledriveannex/comment_4_239091adaea6ae39fa9a4d9719667a98._comment
new file mode 100644
index 000000000..7c9675045
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_4_239091adaea6ae39fa9a4d9719667a98._comment
@@ -0,0 +1,41 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmp1ThsNNAbSn46ju-gwFELfStlhl8usJo"
+ nickname="donkeyicydragon"
+ subject="Googledrive annex on second repository"
+ date="2014-04-19T20:45:23Z"
+ content="""
+Hi Johnny,
+
+I wrote a patch for googledriveannex that fixed this problem for me. First you add the google drive special remote in repo1 then you clone repo1 into repo2. In repo2 you do \"git annex enableremote googldrivespecialremotename\" and it should work.
+The problem was that the init method, that is called by git annex when a special remote is first created but also when it is enabled somewhere else, did not factor in the possibility that it had already been created.
+I will simultaneously submit the patch to the author of the special remote plugin but here it is for you to quickly get going:
+
+ diff --git a/git-annex-remote-googledrive b/git-annex-remote-googledrive
+ index 49cd917..c8e70f3 100755
+ --- a/git-annex-remote-googledrive
+ +++ b/git-annex-remote-googledrive
+ @@ -330,13 +330,16 @@ def initremote(line):
+ oauth = os.getenv(\"OAUTH\") or \"\"
+ encryption = common.getConfig(\"encryption\")
+ myfolder = common.getConfig(\"folder\")
+ - stored_creds = sys.modules[\"__main__\"].login({\"oauth\": oauth})
+ - if len(myfolder) and stored_creds:
+ - common.sprint('SETCONFIG myfolder ' + myfolder + '')
+ - common.sprint('SETCONFIG stored_creds ' + json.dumps(stored_creds) + '')
+ - common.sprint('INITREMOTE-SUCCESS')
+ + if not common.getConfig(\"stored_creds\"):
+ + stored_creds = sys.modules[\"__main__\"].login({\"oauth\": oauth})
+ + if len(myfolder) and stored_creds:
+ + common.sprint('SETCONFIG myfolder ' + myfolder + '')
+ + common.sprint('SETCONFIG stored_creds ' + json.dumps(stored_creds) + '')
+ + common.sprint('INITREMOTE-SUCCESS')
+ + else:
+ + common.sprint('INITREMOTE-FAILURE You need to set OAUTH environment variables and folder and encryption parameters when running initremote.')
+ else:
+ - common.sprint('INITREMOTE-FAILURE You need to set OAUTH environment variables and folder and encryption parameters when running initremote.')
+ + common.sprint('INITREMOTE-SUCCESS')
+ common.log(\"Done\")
+
+ def prepare(line):
+ --
+"""]]
diff --git a/doc/tips/googledriveannex/comment_5_b547ee81946e14975f082f22ccbea035._comment b/doc/tips/googledriveannex/comment_5_b547ee81946e14975f082f22ccbea035._comment
new file mode 100644
index 000000000..93b7fc508
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_5_b547ee81946e14975f082f22ccbea035._comment
@@ -0,0 +1,29 @@
+[[!comment format=mdwn
+ username="hugo"
+ ip="37.160.8.232"
+ subject="'content-length' error"
+ date="2014-10-05T19:40:23Z"
+ content="""
+I moved a big PDF to Google Drive (with shared encryption).
+
+Now, when I try to get it again:
+
+ get Documents/Guyau - The Non-Religion of the Future, nonreligionoffut00guyarich.pdf (from googledrive...) (gpg)
+ Traceback (most recent call last):
+ File \"/usr/bin/git-annex-remote-googledrive\", line 411, in <module>
+ common.startRemote()
+ File \"/usr/share/googledriveannex-git/lib/CommonFunctions.py\", line 555, in startRemote
+ sys.modules[\"__main__\"].transfer(line)
+ File \"/usr/bin/git-annex-remote-googledrive\", line 372, in transfer
+ if getFile(line[2], \" \".join(line[3:]), folder):
+ File \"/usr/bin/git-annex-remote-googledrive\", line 257, in getFile
+ ret = common.fetchPage({\"link\": download_url, \"headers\": [(\"Authorization\", \"Bearer \" + credentials.access_token)], \"progress\": \"true\"})
+ File \"/usr/share/googledriveannex-git/lib/CommonFunctions.py\", line 207, in fetchPage
+ totalsize = int(con.headers['content-length'])
+ File \"/usr/lib/python2.7/rfc822.py\", line 388, in __getitem__
+ return self.dict[name.lower()]
+ KeyError: 'content-length'
+
+It works for smaller files. Is there a limit on the file size?
+
+"""]]
diff --git a/doc/tips/googledriveannex/comment_6_3a693129a0928b327c7ac4ef45c96acb._comment b/doc/tips/googledriveannex/comment_6_3a693129a0928b327c7ac4ef45c96acb._comment
new file mode 100644
index 000000000..122cdc898
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_6_3a693129a0928b327c7ac4ef45c96acb._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="hugo"
+ ip="37.160.8.232"
+ subject="Re: 'content-length' error "
+ date="2014-10-05T19:43:04Z"
+ content="""
+The Google Drive interface tells me:
+
+Size 29,776,826 bytes
+"""]]
diff --git a/doc/tips/googledriveannex/comment_7_3a645a0cd1e4c939b7a4b8a97a0e9b03._comment b/doc/tips/googledriveannex/comment_7_3a645a0cd1e4c939b7a4b8a97a0e9b03._comment
new file mode 100644
index 000000000..970a5e7b5
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_7_3a645a0cd1e4c939b7a4b8a97a0e9b03._comment
@@ -0,0 +1,26 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.54"
+ subject="comment 7"
+ date="2014-10-06T15:23:59Z"
+ content="""
+Hugo, I didn't write this code, but it looks to me like you could work around the problem by changing line 207 of lib/CommonFunctions.py:
+
+<pre>
+diff --git a/lib/CommonFunctions.py b/lib/CommonFunctions.py
+index 050b93e..083f5d6 100644
+--- a/lib/CommonFunctions.py
++++ b/lib/CommonFunctions.py
+@@ -204,7 +204,7 @@ def fetchPage(params={}):
+ if get(\"progress\"):
+ data = False
+ tdata = \"\"
+- totalsize = int(con.headers['content-length'])
++ totalsize = 0
+ chunksize = totalsize / 100
+ if chunksize < 4096:
+ chunksize = 4096
+</pre>
+
+Probably the API used to return a content-length header, and no longer does, or doesn't do so reliably. It does not seem to be used for anything too important -- this change will break git-annex's progress display a little bit, perhaps.
+"""]]
diff --git a/doc/tips/googledriveannex/comment_8_7df56c426b27f12dfde09edf345cb76b._comment b/doc/tips/googledriveannex/comment_8_7df56c426b27f12dfde09edf345cb76b._comment
new file mode 100644
index 000000000..d9bcc333c
--- /dev/null
+++ b/doc/tips/googledriveannex/comment_8_7df56c426b27f12dfde09edf345cb76b._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="hugo"
+ ip="79.212.203.201"
+ subject="Re: comment 7 Re: 'content-length' error "
+ date="2014-10-06T16:45:03Z"
+ content="""
+Thanks Joey, I was able to get the file after this modification. I’ll make a pull request on Github.
+"""]]
diff --git a/doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment b/doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment
new file mode 100644
index 000000000..8b4b7f82b
--- /dev/null
+++ b/doc/tips/megaannex/comment_1_eec701662debd2a78c48243dbcebf59a._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 1"
+ date="2014-07-21T19:56:13Z"
+ content="""
+Note that there has apparently been an API break, so this special remote may not work anymore. See: <http://git-annex.branchable.com/forum/MegaAnnex_not_working./>
+"""]]
diff --git a/doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment b/doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment
new file mode 100644
index 000000000..99da0e370
--- /dev/null
+++ b/doc/tips/megaannex/comment_2_c1158b7ec15646d64cae8215ce845642._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw"
+ nickname="dxtrish"
+ subject="comment 2"
+ date="2014-09-07T21:16:09Z"
+ content="""
+Because megaannex apparently isn't working nowadays I have created a compatible program in Go. I think it should handle everything except REMOVE right now.
+
+You can find it on github: https://github.com/dxtr/megaannex-go
+"""]]
diff --git a/doc/tips/metadata_driven_views.mdwn b/doc/tips/metadata_driven_views.mdwn
index 17ebc6869..1826ed1ce 100644
--- a/doc/tips/metadata_driven_views.mdwn
+++ b/doc/tips/metadata_driven_views.mdwn
@@ -6,7 +6,7 @@ keeps track of.
One nice way to use the metadata is through **views**. You can ask
git-annex to create a view of files in the currently checked out branch
-that have certian metadata. Once you're in a view, you can move and copy
+that have certain metadata. Once you're in a view, you can move and copy
files to adjust their metadata further. Rather than the traditional
hierarchical directory structure, views are dynamic; you can easily
refine or reorder a view.
@@ -106,9 +106,9 @@ by tag.
# tree -d
2014
|-- work
- |-- todo
+ |-- todo
|-- urgent
- `-- done
+ `-- done
2013
|-- work
`-- done
diff --git a/doc/tips/metadata_driven_views/comment_1_1d6793701fd8a1a66bae04662cf853ce._comment b/doc/tips/metadata_driven_views/comment_1_1d6793701fd8a1a66bae04662cf853ce._comment
new file mode 100644
index 000000000..808a332af
--- /dev/null
+++ b/doc/tips/metadata_driven_views/comment_1_1d6793701fd8a1a66bae04662cf853ce._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlFZFMFm-AapYAgV_V5X9HRJxWvhdiX9fY"
+ nickname="Reiner"
+ subject="comment 1"
+ date="2014-03-24T21:11:31Z"
+ content="""
+I have played around with views and found out that I can create new tags by creating directories in the view and that I can created files in those new directories that are not contained in the original working tree. The behavoiur of git annex in this behaviour is a bit strange.
+
+Assume for example you have a file \"foo\" with tag \"t1\" and switch to the tag view. Then create a directory \"t2\" and a file \"bar\" in it. Add the file, sync, and switch back to the master branch. If you enter the tag view again, the directory \"t2\" will be vanished, i.e. your newly created file is gone, too. This is not surprising, as the file has never been added to the original working tree. However, another \"git annex sync\" will restore the file.
+
+I am unsure what behaviour I would expect, maybe it shouldn't be possible to files to a view in the first place, or newly created files might be collected in a separate branch. On the other hand, it seems reasonable to add a new file with a new tag at the same time. Anyway, I found it confusing that I can seemingly lose a file like this. It took me a bit of time to figure out that another sync recovers the file.
+"""]]
diff --git a/doc/tips/metadata_driven_views/comment_2_13ae4e3668b693c0eefaca23b88515cf._comment b/doc/tips/metadata_driven_views/comment_2_13ae4e3668b693c0eefaca23b88515cf._comment
new file mode 100644
index 000000000..3ec563311
--- /dev/null
+++ b/doc/tips/metadata_driven_views/comment_2_13ae4e3668b693c0eefaca23b88515cf._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"
+ nickname="Michael"
+ subject="possible to have a view based on file location info?"
+ date="2014-06-08T03:55:24Z"
+ content="""
+For example, I'd like to have a view that only contains files present in this git-annex repository (no dangling symlinks).
+
+"""]]
diff --git a/doc/tips/metadata_driven_views/comment_3_196f55e52a5d8a8f061603ab87ad04ad._comment b/doc/tips/metadata_driven_views/comment_3_196f55e52a5d8a8f061603ab87ad04ad._comment
new file mode 100644
index 000000000..e522ed837
--- /dev/null
+++ b/doc/tips/metadata_driven_views/comment_3_196f55e52a5d8a8f061603ab87ad04ad._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnPgn611P6ym5yyL0BS8rUzO0_ZKRldMt0"
+ nickname="Samuel"
+ subject="git annex view */=podcast"
+ date="2014-08-19T06:11:50Z"
+ content="""
+Hi,
+
+Would it be hard to handle the wildcard character in the location view before the = sign.
+
+ git annex foo/=*
+
+works but
+
+ git annex *=/bar
+
+does not.
+"""]]
diff --git a/doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment b/doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment
new file mode 100644
index 000000000..c0295be03
--- /dev/null
+++ b/doc/tips/owncloudannex/comment_8_6579203d726f4a39db02fcdda156e12c._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawn97aJ3CN48pBix54RDHRhqtBzeklNEbSA"
+ nickname="Manuel"
+ subject="advantage of owncloudannex over webdav remote?"
+ date="2015-01-08T18:00:48Z"
+ content="""
+It seems that owncloud can also be accessed using the webdav remote. Does owncloudannex offer any features which aren't implemented in the webdav remote?
+"""]]
diff --git a/doc/tips/publishing_your_files_to_the_public.mdwn b/doc/tips/publishing_your_files_to_the_public.mdwn
new file mode 100644
index 000000000..3845ae3e9
--- /dev/null
+++ b/doc/tips/publishing_your_files_to_the_public.mdwn
@@ -0,0 +1,55 @@
+# Creating a special S3 remote to hold files shareable by URL
+
+(In this example, I'll assume you'll be creating a bucket in S3 named **public-annex** and a special remote in git-annex, which will store its files in the previous bucket, named **public-s3**, but change these names if you are going to do the thing for real)
+
+First, in the AWS dashboard, go to (or create) the bucket you will use at S3 and add a public get policy to it:
+
+ {
+ "Version": "2008-10-17",
+ "Statement": [
+ {
+ "Sid": "AllowPublicRead",
+ "Effect": "Allow",
+ "Principal": {
+ "AWS": "*"
+ },
+ "Action": "s3:GetObject",
+ "Resource": "arn:aws:s3:::public-annex/*"
+ }
+ ]
+ }
+
+Then set up your special [S3](http://git-annex.branchable.com/special_remotes/S3/) remote with (at least) these options:
+
+ git annex initremote public-s3 type=s3 encryption=none bucket=public-annex chunk=0
+
+This way git-annex will upload the files to this repo, (when you call `git annex copy [FILES...] --to public-s3`) without encrypting them and without chunking them, and, because of the policy of the bucket, they will be accessible by anyone with the link.
+
+Following the example, the files will be accessible at `http://public-annex.s3.amazonaws.com/KEY` where `KEY` is the file key created by git-annex and which you can discover running
+
+ git annex lookupkey FILEPATH
+
+This way you can share a link to each file you have at your S3 remote.
+
+___________________
+
+## Sharing all links in a folder
+
+To share all the links in a given folder, for example, you can go to that folder and run (this is an example with the _fish_ shell, but I'm sure you can do the same in _bash_, I just don't know exactly):
+
+ for filename in (ls)
+ echo $filename": https://public-annex.s3.amazonaws.com/"(git annex lookupkey $filename)
+ end
+
+## Sharing all links matching certain metadata
+
+The same applies to all the filters you can do with git-annex.
+
+For example, let's share links to all the files whose _author_'s name starts with "Mario" and are, in fact, stored at your public-s3 remote.
+However, instead of just a list of links we will output a markdown-formatted list of the filenames linked to their S3 urls:
+
+ for filename in (git annex find --metadata "author=Mario*" --and --in public-s3)
+ echo "* ["$filename"](https://public-annex.s3.amazonaws.com/"(git annex lookupkey $filename)")"
+ end
+
+Very useful.
diff --git a/doc/tips/publishing_your_files_to_the_public/comment_1_48f545ce26dbec944f96796ed3b9204d._comment b/doc/tips/publishing_your_files_to_the_public/comment_1_48f545ce26dbec944f96796ed3b9204d._comment
new file mode 100644
index 000000000..6ee85367e
--- /dev/null
+++ b/doc/tips/publishing_your_files_to_the_public/comment_1_48f545ce26dbec944f96796ed3b9204d._comment
@@ -0,0 +1,21 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""nice tip"""
+ date="2014-12-01T22:59:58Z"
+ content="""
+Thanks Giovanni for that nice tip!
+
+You can additionally publish the whole git repository
+by eg pushing it to github. (Not if it contains private files
+or if you have embedded encryption keys or credentials though.)
+
+You can tell git-annex the public url for the files too, and then others
+can just clone the git repository and use git-annex to download the files
+from S3.
+
+You could set that up by running something like this:
+
+ for filename in $(git annex find --in public-s3); do
+ git annex addurl --file "$filename" https://public-annex.s3.amazonaws.com/"$(git annex lookupkey $filename)"
+ done
+"""]]
diff --git a/doc/tips/shared_git_annex_directory_between_multiple_users/comment_1_01db8cf9dff016bd8e0498d36f325418._comment b/doc/tips/shared_git_annex_directory_between_multiple_users/comment_1_01db8cf9dff016bd8e0498d36f325418._comment
new file mode 100644
index 000000000..4b7b516c5
--- /dev/null
+++ b/doc/tips/shared_git_annex_directory_between_multiple_users/comment_1_01db8cf9dff016bd8e0498d36f325418._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="madduck"
+ ip="2001:a60:f0fb:0:224:d7ff:fe04:c82c"
+ subject="Does not work"
+ date="2014-04-06T10:48:06Z"
+ content="""
+This does not seem to work, even with latest git-annex. I think it's because git-annex [[!debbug desc=\"creates files without honouring +s on the parent directory\" 729757]]. I just found out it also doesn't honour default ACLs. I hope this can be fixed soon.
+"""]]
diff --git a/doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment b/doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment
new file mode 100644
index 000000000..58b6c9077
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_10_c3465b5587548dea56b80b32cd66d653._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="Syncing not working :-/"
+ date="2014-05-17T19:52:33Z"
+ content="""
+Error log says:
+
+ git-annex-remote-skydrive is not installed in PATH (/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/Applications/git-annex.app/Contents/MacOS/bundle:/usr/bin:/bin:/usr/sbin:/sbin)
+
+BUT I did a symlink, I even did 2 to 2 different locations that are in my path:
+
+ cd /Users/ovi/skydriveannex/
+ ln -sf `pwd`/git-annex-remote-skydrive /usr/bin/git-annex-remote-skydrive
+ ln -sf `pwd`/git-annex-remote-skydrive /opt/local/bin/git-annex-remote-skydrive
+"""]]
diff --git a/doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment b/doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment
new file mode 100644
index 000000000..5bca3dfee
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_1_bf383481b2bbb962fbfe783b9f2f213a._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="working for git-annex assistant?"
+ date="2014-05-13T18:40:31Z"
+ content="""
+Will following these steps lead to the Skydrive repo being visible and recognized by the assistant too?
+"""]]
diff --git a/doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment b/doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment
new file mode 100644
index 000000000..0c737129b
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_2_1f747018b35ab8accd2bf0905e6ad926._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 2"
+ date="2014-05-16T16:26:50Z"
+ content="""
+The assistant will use any repositories you set up, no matter how you set them up.
+"""]]
diff --git a/doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment b/doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment
new file mode 100644
index 000000000..892462cb3
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_3_8b9444006734262693f71e50a40eae1d._comment
@@ -0,0 +1,19 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="Hitting trouble"
+ date="2014-05-16T17:49:59Z"
+ content="""
+ shiny-2:skydriveannex ovi$ git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=git-annex
+ git-annex: First run: git-annex init
+ shiny-2:skydriveannex ovi$
+
+Above wasn't mentioned in the tutorial so I tried it:
+
+ shiny-2:skydriveannex ovi$ git-annex init
+ init ok
+ (Recording state in git...)
+ shiny-2:skydriveannex ovi$
+
+What now? Never got asked about any OAUTH...
+"""]]
diff --git a/doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment b/doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment
new file mode 100644
index 000000000..7edc9d414
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_4_8b01dc6ca1082a8c24ff65fec9d759d8._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="comment 4"
+ date="2014-05-16T17:51:29Z"
+ content="""
+And no link was opened automatically
+"""]]
diff --git a/doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment b/doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment
new file mode 100644
index 000000000..f6a4c7415
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_5_1d220d96945d497f3a93b5d848eb3995._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="108.236.230.124"
+ subject="comment 5"
+ date="2014-05-16T19:03:34Z"
+ content="""
+You have to run git-annex init before you can use other git-annex commands. I think if you run git annex initremote now, it will work.
+"""]]
diff --git a/doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment b/doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment
new file mode 100644
index 000000000..d589a676c
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_6_a7a3afdc7eed9a0eda48dcb57f1e87c6._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="comment 6"
+ date="2014-05-16T19:25:03Z"
+ content="""
+tried it but no luck:
+
+ git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=git-annex
+ initremote skydrive (encryption setup) (shared cipher) env: python2: No such file or directory
+ git-annex: external special remote protocol error, unexpectedly received \"\" (unable to parse command)
+"""]]
diff --git a/doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment b/doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment
new file mode 100644
index 000000000..d789a8d94
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_7_7fcd9c6b5e2a3fc7b753eeac06164036._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="making some progress"
+ date="2014-05-17T19:08:16Z"
+ content="""
+Figured out how to solve that:
+ which python
+ /opt/local/bin/python
+ shiny-2:git-annex ovi$ sudo ln -s `which python` /usr/bin/python2
+
+The URL opened in my browser, I allowed access, waited for the redirect, copied the URL, hit the next problem:
+
+ OAUTH='https://login.live.com/oauth20_desktop.srf?code=hidden_on_purpose' git annex initremote skydrive type=external externaltype=skydrive encryption=shared folder=git-annex
+initremote skydrive (encryption setup) (shared cipher) 21:06:27 [skydriveannex-0.2.1] <module> : 'Starting'
+ 21:06:27 [skydriveannex-0.2.1] login : 'EXCEPTION api.auth_get_token:ImportError('No module named requests',)'
+ git-annex: You need to set OAUTH environment variables and folder and encryption parameters when running initremote.
+"""]]
diff --git a/doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment b/doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment
new file mode 100644
index 000000000..0fc61da00
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_8_856eaa1b167033aede91a937099c7833._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="Done! Success!"
+ date="2014-05-17T19:23:06Z"
+ content="""
+realized I need requests. to install I need pip.
+
+ sudo port install py27-pip
+
+ pip install requests
+
+ login : 'EXCEPTION api.auth_get_token:ImportError('No module named six',)'
+
+ pip install six
+
+Finished! Seems to be working and I can see this repository in my assistant!
+"""]]
diff --git a/doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment b/doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment
new file mode 100644
index 000000000..614e74c98
--- /dev/null
+++ b/doc/tips/skydriveannex/comment_9_cfcf767a1bf07957b76d7f44ef8a9500._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkAUMhKOSkh9JaBA6xst3XxQIIsDEq5Zd4"
+ nickname="Ovidiu"
+ subject="QUESTION"
+ date="2014-05-17T19:29:37Z"
+ content="""
+Wondering about this:
+
+ encryption=shared
+
+I read what it means: http://git-annex.branchable.com/encryption/
+
+But now I'm wondering how the repos which I set up via the assistant have been setup. when setting them up I only had the choice between \"encrypt all files\" and \"disable encryption\" so how can I check what settings my other repos are using?
+"""]]
diff --git a/doc/tips/transmission_integration.mdwn b/doc/tips/transmission_integration.mdwn
new file mode 100644
index 000000000..12f556b90
--- /dev/null
+++ b/doc/tips/transmission_integration.mdwn
@@ -0,0 +1,11 @@
+[[This simple script|transmission_integration/transmission_integration.sh]] will make sure files downloaded by the
+[Transmission BitTorrent client](https://www.transmissionbt.com/) will
+be added into git-annex.
+
+To enable it, install it to /usr/local/bin and add the following to
+your settings.json:
+
+ "script-torrent-done-enabled": true,
+ "script-torrent-done-filename": "/usr/local/bin/transmission-git-annex-add",
+
+-- [[users/anarcat]]
diff --git a/doc/tips/transmission_integration/transmission_integration.sh b/doc/tips/transmission_integration/transmission_integration.sh
new file mode 100644
index 000000000..8b4dcd4d0
--- /dev/null
+++ b/doc/tips/transmission_integration/transmission_integration.sh
@@ -0,0 +1,38 @@
+#! /bin/sh
+
+set -e
+
+# environment from transmission:
+# TR_APP_VERSION
+# TR_TIME_LOCALTIME
+# TR_TORRENT_DIR
+# TR_TORRENT_HASH
+# TR_TORRENT_ID
+# TR_TORRENT_NAME
+# source: https://trac.transmissionbt.com/wiki/Scripts
+
+if [ -z "$TR_APP_VERSION" ]; then
+ echo "missing expected $TR_APP_VERSION from Transmission"
+ exit 1
+fi
+
+message="transmission adding torrent '$TR_TORRENT_NAME'
+
+TR_APP_VERSION: $TR_APP_VERSION
+TR_TIME_LOCALTIME: $TR_TIME_LOCALTIME
+TR_TORRENT_DIR: $TR_TORRENT_DIR
+TR_TORRENT_HASH: $TR_TORRENT_HASH
+TR_TORRENT_ID: $TR_TORRENT_ID
+TR_TORRENT_NAME: $TR_TORRENT_NAME
+"
+
+# heredocs preserve newlines
+cat <<EOF
+$message
+EOF
+# add the actual torrent and commit whatever's left to commit
+cd "$TR_TORRENT_DIR"
+git annex add "$TR_TORRENT_NAME" && \
+git commit -F- <<EOF
+$message
+EOF
diff --git a/doc/tips/using_Amazon_S3.mdwn b/doc/tips/using_Amazon_S3.mdwn
index 0c68c7387..d6f621786 100644
--- a/doc/tips/using_Amazon_S3.mdwn
+++ b/doc/tips/using_Amazon_S3.mdwn
@@ -14,7 +14,7 @@ like "2512E3C7"
Next, create the S3 remote, and describe it.
- # git annex initremote cloud type=S3 keyid=2512E3C7
+ # git annex initremote cloud type=S3 chunk=1MiB keyid=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
@@ -24,8 +24,8 @@ repository use the same S3 remote is easy:
# cd /media/usb/annex
# git pull laptop
- # git annex initremote cloud
- initremote cloud (gpg) (checking bucket) ok
+ # git annex enableremote cloud
+ enableremote cloud (gpg) (checking bucket) ok
Now the remote can be used like any other remote.
diff --git a/doc/tips/using_Amazon_S3/comment_10_43f3f12a83e3ace1674eae395b865409._comment b/doc/tips/using_Amazon_S3/comment_10_43f3f12a83e3ace1674eae395b865409._comment
new file mode 100644
index 000000000..fa306212f
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_10_43f3f12a83e3ace1674eae395b865409._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkPIqJZ88VZEVqLhLOd1LMdYXcy6bAW9qE"
+ nickname="Lemao"
+ subject="comment 10"
+ date="2015-01-07T23:53:32Z"
+ content="""
+My bad. I didn't realize git annex creates a new branch. After I pushed it, the clone was able to enableremote and I was able to get the file.
+
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_11_70b4e62aabb93d078811cbdcd3cced20._comment b/doc/tips/using_Amazon_S3/comment_11_70b4e62aabb93d078811cbdcd3cced20._comment
new file mode 100644
index 000000000..678908686
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_11_70b4e62aabb93d078811cbdcd3cced20._comment
@@ -0,0 +1,24 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawn8d6WBPNtmyeANT-gjlN19QnCTQ0psRPs"
+ nickname="James"
+ subject="comment 11"
+ date="2015-01-22T22:16:46Z"
+ content="""
+Even after enableremote I can't get from s3.
+
+
+ get Docs.zip (from s3...)
+
+ Unable to access these remotes: s3
+
+ Try making some of these repositories available:
+ 02b4e373-02b1-42b9-8285-c353c047895c -- my laptop
+ f287b4f7-4e5a-4734-bd6b-62b1f4498838 -- [s3]
+
+ (Note that these git remotes have annex-ignore set: origin)
+ failed
+ git-annex: get: 1 failed
+
+
+This is after all branches are pushed from my original repo. Any suggestions?
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_12_d00472bf4ac5f7b2212073c081ba04c2._comment b/doc/tips/using_Amazon_S3/comment_12_d00472bf4ac5f7b2212073c081ba04c2._comment
new file mode 100644
index 000000000..9494e118f
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_12_d00472bf4ac5f7b2212073c081ba04c2._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawn8d6WBPNtmyeANT-gjlN19QnCTQ0psRPs"
+ nickname="James"
+ subject="RE: last comment"
+ date="2015-01-23T01:02:18Z"
+ content="""
+RE: my last comment
+
+The reason I couldn't get it to work is because I didn't have proper read access to the bucket. My bad for not checking first but it would be great it there was a clearer error message from git-annex and/or a way to get more detailed information on the s3 extension (-d doesn't do much).
+
+Regardless git-annex is pretty cool, thanks to all the maintainers for their hard work.
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment b/doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment
new file mode 100644
index 000000000..e83ade0c7
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_3_32acba030c2ad252e2f7027075e4303e._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="annexuser"
+ ip="64.71.7.82"
+ subject="Altering AWS credentials"
+ date="2014-04-15T21:59:43Z"
+ content="""
+If I revoke old AWS credentials and create new ones, how would I inform git-annex of the change to `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`?
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment b/doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment
new file mode 100644
index 000000000..5bcf34b74
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_4_92df5a9f923beafba55a1c455728112e._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.191"
+ subject="comment 4"
+ date="2014-04-17T19:44:55Z"
+ content="""
+You can use `git annex enableremote` to change an existing remote's configuration. So this should work:
+
+ # export AWS_ACCESS_KEY_ID=\"newRANDOMGOBBLDEYGOOK\"
+ # export AWS_SECRET_ACCESS_KEY=\"news3kr1t\"
+ # git annex enableremote cloud
+
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment b/doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment
new file mode 100644
index 000000000..320a09d63
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_5_6b288e06010bedbb71e0afed6b427704._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkmN2ZZIdYNiFKmEH7rz4jMb6sYsx_dptA"
+ nickname="Jack William"
+ subject="What if you do not want to encrypt?"
+ date="2014-09-07T18:35:19Z"
+ content="""
+Once use case for GIT with Amazon S3 is to maintain a web site on S3 you can easily update from a local machine. In that case you would not want to encrypt. Is encryption optional? This isn't clear from the instructions.
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment b/doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment
new file mode 100644
index 000000000..0fce69dad
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_6_3b6c74b40ea666389ac04b52ab0819a0._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://schnouki.net/"
+ nickname="Schnouki"
+ subject="comment 6"
+ date="2014-09-09T12:48:59Z"
+ content="""
+Jack, if you don't want to use encryption you can use `encryption=none` as documented [here](http://git-annex.branchable.com/special_remotes/S3/).
+
+I'm not sure exactly what you're trying to do, but please note that you files won't be easily available on S3: they will be named as git-annex keys, with long and unreadable names such as \"SHA256E-s6311--c7533fdd259d872793b7298cbb56a1912e80c52a845661b0b9ff391c65ee2abc.html\" instead of \"index.html\".
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment b/doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment
new file mode 100644
index 000000000..3c7b817f7
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_7_cf6755d88463878f2ea6e4c300899027._comment
@@ -0,0 +1,33 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmH7o6q2l99M-PQolOfbR3_i5B_jtTIcAE"
+ nickname="Giovanni"
+ subject="How to publish your files to the public"
+ date="2014-09-13T15:29:18Z"
+ content="""
+I don't know if this is what Jack wanted, but you can upload your files to S3 and let them be accessible through a public URL.
+
+First, go to (or create) the bucket you will use at [S3](https://console.aws.amazon.com/s3/) and add a public get policy to it:
+
+```
+ {
+ \"Version\": \"2008-10-17\",
+ \"Statement\": [
+ {
+ \"Sid\": \"AllowPublicRead\",
+ \"Effect\": \"Allow\",
+ \"Principal\": {
+ \"AWS\": \"*\"
+ },
+ \"Action\": \"s3:GetObject\",
+ \"Resource\": \"arn:aws:s3:::BUCKETNAME/*\"
+ }
+ ]
+ }
+```
+
+Then set up your special remote with the options `encryption=none`, `bucket='BUCKETNAME'` `chunk=0` (and any others you want).
+
+Your files will be accessible through `http://BUCKETNAME.s3-website-LOCATION.amazonaws.com/KEY` where location is the one specified through the options `datacenter` and KEY is the SHA-SOMETHING hash of the file, created by git annex and accessible if you run `git annex lookupkey FILEPATH`.
+
+This way you can share a link to each file you have at your S3 remote.
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment b/doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment
new file mode 100644
index 000000000..0616e0c87
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_8_4f9c2f6627f8ed3423bcc8b7bf2f76cb._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawkPIqJZ88VZEVqLhLOd1LMdYXcy6bAW9qE"
+ nickname="Lemao"
+ subject="comment 8"
+ date="2015-01-07T13:54:23Z"
+ content="""
+I use github as my central git repository and I would like to use S3 to store large files with annex. Since the s3 remote in .git/config is not stored in github, how do I make sure I reconnect to the same s3 bucket in case I delete my local clone? Reinitializing the remote will create a completely new bucket.
+
+I would also be a good idea to centralize git-annex folders inside a single bucket so I keep the global namespace under control and can narrow down the permissioning.
+"""]]
diff --git a/doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment b/doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment
new file mode 100644
index 000000000..277e1c02b
--- /dev/null
+++ b/doc/tips/using_Amazon_S3/comment_9_47e4ea77d0262d332d86a06d7aaeddd8._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ subject="comment 9"
+ date="2015-01-07T17:25:43Z"
+ content="""
+Lemao, make sure you have pushed your git-annex branch to your central git repository.
+
+When you clone that repo elsewhere, you can add the S3 remote by running `git annex enableremote cloud` (replace \"cloud\" with whatever name you originally picked when you used `git annex initremote` to set up the S3 remote in the first place.
+
+git-annex stores the necessary configuration of the S3 remote on the git-annex branch.
+"""]]
diff --git a/doc/tips/using_Google_Cloud_Storage/comment_2_0843bfb776b8b6d5de4de7fda4489f34._comment b/doc/tips/using_Google_Cloud_Storage/comment_2_0843bfb776b8b6d5de4de7fda4489f34._comment
new file mode 100644
index 000000000..5a888348e
--- /dev/null
+++ b/doc/tips/using_Google_Cloud_Storage/comment_2_0843bfb776b8b6d5de4de7fda4489f34._comment
@@ -0,0 +1,15 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlPfB0_GcGJ827kZqRE1PF4D23rxpfOeg4"
+ nickname="Björn"
+ subject="Can't find developer API key and secret"
+ date="2014-06-01T21:25:54Z"
+ content="""
+According to the last comment, and this page:
+* https://developers.google.com/storage/docs/migrating#keys
+
+there's supposed to be a \"Interoperable Access\" menu option, something I can't find. Note that both the previous comment and this page refers to Googles old Developer Console.
+
+I can find a few things under \"APIs and Auth\" => \"Credentials\" under the heading \"Public API access\", but no matter what kind of key I try to create I can't get anything other than an API key. No secrets here, and no \"Show\"-button for newly created keys.
+
+Another thing worth mentioning is that these API keys I'm seeing do not like described in that first link in this comment. It's much longer, contains both upper- and lowercase and also contains dashes.
+"""]]
diff --git a/doc/tips/using_Google_Cloud_Storage/comment_3_9738f145014d8eae1f1aae7c39e71d31._comment b/doc/tips/using_Google_Cloud_Storage/comment_3_9738f145014d8eae1f1aae7c39e71d31._comment
new file mode 100644
index 000000000..cd8caecc7
--- /dev/null
+++ b/doc/tips/using_Google_Cloud_Storage/comment_3_9738f145014d8eae1f1aae7c39e71d31._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawlPfB0_GcGJ827kZqRE1PF4D23rxpfOeg4"
+ nickname="Björn"
+ subject="comment 3"
+ date="2014-06-17T19:18:09Z"
+ content="""
+I just found the \"Interoperable access\" thing. The instructions from Google (linked in previous comments) are not perfect.
+
+After step 4 click \"Google Cloud Storage\", then at the bottom you have a heading called \"Interoperable Access\" where you have to activate it for this project.
+
+Then it appears at the bottom of the left hand menu.
+"""]]
diff --git a/doc/tips/using_box.com_as_a_special_remote.mdwn b/doc/tips/using_box.com_as_a_special_remote.mdwn
index ac59834f5..2edd200b1 100644
--- a/doc/tips/using_box.com_as_a_special_remote.mdwn
+++ b/doc/tips/using_box.com_as_a_special_remote.mdwn
@@ -5,9 +5,9 @@ for providing 50 gb of free storage if you sign up with its Android client.
git-annex can use Box as a [[special remote|special_remotes]].
Recent versions of git-annex make this very easy to set up:
- WEBDAV_USERNAME=you@example.com WEBDAV_PASSWORD=xxxxxxx git annex initremote box.com type=webdav url=https://dav.box.com/dav/git-annex chunksize=75mb encryption=shared
+ WEBDAV_USERNAME=you@example.com WEBDAV_PASSWORD=xxxxxxx git annex initremote box.com type=webdav url=https://dav.box.com/dav/git-annex chunk=50mb encryption=shared
-Note the use of chunksize; Box has a 100 mb maximum file size, and this
+Note the use of [[chunking]]; Box has a 100 mb maximum file size, and this
breaks up large files into chunks before that limit is reached.
# old davfs2 method
@@ -42,7 +42,7 @@ using the webdav special remote.
* Create `~/.davfs2/secrets`. This file contains your Box.com login and password.
Your login is probably the email address you signed up with.
- echo "/media/box.com joey@kitenet.net mypassword" > ~/.davfs2/secrets
+ echo "/media/box.com id@joeyh.name mypassword" > ~/.davfs2/secrets
chmod 600 ~/.davfs2/secrets
* Now you should be able to mount Box, as a non-root user:
@@ -58,7 +58,7 @@ Create the special remote, in your git-annex repository.
** This example is non-encrypted; fill in your gpg key ID for a securely
encrypted special remote! **
- git annex initremote box.com type=directory directory=/media/box.com chunksize=2mb encryption=none
+ git annex initremote box.com type=directory directory=/media/box.com chunk=2mb encryption=none
Now git-annex can copy files to box.com, get files from it, etc, just like
with any other special remote.
diff --git a/doc/tips/using_gitolite_with_git-annex.mdwn b/doc/tips/using_gitolite_with_git-annex.mdwn
index fcc3f96c3..31f34c6fb 100644
--- a/doc/tips/using_gitolite_with_git-annex.mdwn
+++ b/doc/tips/using_gitolite_with_git-annex.mdwn
@@ -3,19 +3,79 @@ manager. Here's how to add git-annex support to gitolite, so you can
`git annex copy` files to a gitolite repository, and `git annex get`
files from it.
-Warning : The method described here works with gitolite version g2, avaible in the g2 branch on github. There is an experimental support for g3 in the git-annex branch, if you tested it please add some feedback.
-
A nice feature of using gitolite with git-annex is that users can be given
read-only access to a repository, and this allows them to `git annex get`
file contents, but not change anything.
First, you need new enough versions:
-* gitolite 2.2 is needed -- this version contains a git-annex-shell ADC
+* the current `master` branch of gitolite works with git-annex (tested 2014-04-19),
+ but v3.5.3 and earlier v3.x require use of the `git-annex` branch.
+* gitolite 2.2 also works -- this version contains a git-annex-shell ADC
and supports "ua" ADCs.
* git-annex 3.20111016 or newer needs to be installed on the gitolite
server. Don't install an older version, it wouldn't be secure!
+### Instructions for gitolite `master` branch
+
+To setup gitolite to work with git-annex, you can follow the instructions on the gitolite website,
+and just add `'git-annex-shell ua',` to the ENABLE list in `~/.gitolite.rc`.
+
+Here are more detailed instructions:
+
+1: Create a `git` user
+
+<pre>
+sudo adduser \
+ --system \
+ --shell /bin/bash \
+ --gecos 'git version control' \
+ --group \
+ --disabled-password \
+ --home /home/git git
+</pre>
+
+2: Copy a public SSH key for the user you want to be the gitolite administrator.
+In the instructions below, I placed the key in a file named `/home/git/me.pub`.
+
+3: Clone and install gitolite
+
+First switch to the `git` user (e.g. `sudo su - git`) and then run:
+
+<pre>
+cd
+git clone https://github.com/sitaramc/gitolite.git
+mkdir -p bin
+./gitolite/install -ln
+</pre>
+
+4: Add `~/bin` to `PATH`
+
+Make sure that `~/bin` is in the `PATH`, since that's where gitolite installed its binary. Do something like this:
+
+<pre>
+echo 'export PATH=/home/git/bin:$PATH' >> .profile
+export PATH=/home/git/bin:$PATH
+</pre>
+
+5: Configure gitolite
+
+Edit `~/.gitolite.rc` to enable the git-annex-shell command.
+Find the `ENABLE` list and add this line in there somewhere:
+
+<pre>
+'git-annex-shell ua',
+</pre>
+
+Now run gitolite's setup:
+
+<pre>
+gitolite setup -pk me.pub
+rm me.pub
+</pre>
+
+### Instructions for gitolite 2.2
+
And here's how to set it up. The examples are for gitolite as installed
on Debian with apt-get, but the changes described can be made to any
gitolite installation, just with different paths.
diff --git a/doc/tips/using_gitolite_with_git-annex/comment_19_33c19097b6f2b48dfe09ec4c8d952d06._comment b/doc/tips/using_gitolite_with_git-annex/comment_19_33c19097b6f2b48dfe09ec4c8d952d06._comment
new file mode 100644
index 000000000..636794aba
--- /dev/null
+++ b/doc/tips/using_gitolite_with_git-annex/comment_19_33c19097b6f2b48dfe09ec4c8d952d06._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnftLWVOF0DUdXr2HSW4IKzuqtW8V7X3YU"
+ nickname="Adrian"
+ subject="How can the git annex init command be called on the server?"
+ date="2014-03-25T06:58:56Z"
+ content="""
+The latest commit in the gitolite repository \"git-annex support, finally in master!\" looks really promissing. I'm currently using ubuntu trusty with updated gitolite3 package and the configuration provided by Khaije. One line needs to be changed: 'git-annex-shell' => 'ua', instead of 'git-annex-shell' =>1,
+
+However, one little detail is still open for me. I need to call the server side \"git annex init\" on the server (sudo su gitolite3; cd ~/repositories/testing.git && git annex init). I cannot find a way to initialize the server from client side. E.g. git annex init && git push --all is not enough. The man page describes git annex initremote for other server types but not for gitolite remotes. Wouldn't we need something similar for gitolite as well? Or is there a better solution which I do not recognize?
+
+"""]]
diff --git a/doc/tips/using_gitolite_with_git-annex/comment_20_c82af00db3dd74ee9bfe12668e76e57b._comment b/doc/tips/using_gitolite_with_git-annex/comment_20_c82af00db3dd74ee9bfe12668e76e57b._comment
new file mode 100644
index 000000000..45ff960f4
--- /dev/null
+++ b/doc/tips/using_gitolite_with_git-annex/comment_20_c82af00db3dd74ee9bfe12668e76e57b._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.41"
+ subject="comment 20"
+ date="2014-03-26T18:24:30Z"
+ content="""
+@Adrian, that's good news. It would be helpful if someone could update the top of this page to document how to use git-annex with the new version of gitolite.
+This is a wiki..
+
+You're not supposed to need to use initremote when dealing with normal git remotes. It seems that something got lost that automatically initialize the remote repository in this situation. I've fixed it so that it will be set up when `git-annex-shell configlist` is run.
+
+(@wayne, this fixes the problem you reported too..)
+"""]]
diff --git a/doc/tips/using_gitolite_with_git-annex/comment_21_d2feaaf22d41413048dabf706d1b267e._comment b/doc/tips/using_gitolite_with_git-annex/comment_21_d2feaaf22d41413048dabf706d1b267e._comment
new file mode 100644
index 000000000..2746ee41b
--- /dev/null
+++ b/doc/tips/using_gitolite_with_git-annex/comment_21_d2feaaf22d41413048dabf706d1b267e._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawn26WQjIP5fnMgQF_L_k3Q3UrR5v8mjRTY"
+ nickname="Ellis"
+ subject="Worked for me, updated wiki"
+ date="2014-04-19T09:41:11Z"
+ content="""
+I tried the `master` branch of gitolite today on my server, and it works fine! Updated the wiki with the commands I used to setup gitolite.
+"""]]
diff --git a/doc/tips/using_gitolite_with_git-annex/comment_22_90ead0e1fe8615fe11f6f1bd7dcd7e84._comment b/doc/tips/using_gitolite_with_git-annex/comment_22_90ead0e1fe8615fe11f6f1bd7dcd7e84._comment
new file mode 100644
index 000000000..6f959c0d7
--- /dev/null
+++ b/doc/tips/using_gitolite_with_git-annex/comment_22_90ead0e1fe8615fe11f6f1bd7dcd7e84._comment
@@ -0,0 +1,13 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawk3gWkz5Qgy5qEa-myg8KWtiTrHSKW1x7Q"
+ nickname="Nicolas"
+ subject="Using Gitolite 3.6.1"
+ date="2014-09-11T00:11:32Z"
+ content="""
+Hi!
+
+I've made a fresh install of Gitolite 3.6.1 and got this error when trying to sync :
+
+FATAL: bad git-annex-shell command: git-annex-shell 'configlist' '/nicolas.git' at /home/git/bin/commands/git-annex-shell line 25, <DATA> line 1.
+
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote.mdwn b/doc/tips/using_the_web_as_a_special_remote.mdwn
index 62ef58b69..087d2e24b 100644
--- a/doc/tips/using_the_web_as_a_special_remote.mdwn
+++ b/doc/tips/using_the_web_as_a_special_remote.mdwn
@@ -104,6 +104,18 @@ feed is "http://gdata.youtube.com/feeds/api/playlists/PL4F80C7D2DC8D9B6C"
More details about youtube feeds at <http://googlesystem.blogspot.com/2008/01/youtube-feeds.html>
-- `git-annex importfeed` should handle all of them.
+## bittorrent
+
+The [[bittorrent_special_remote|special_remotes/bittorrent]] lets git-annex
+also download the content of torrent files, and magnet links to torrents.
+
+You can simply pass the url to a torrent to `git annex addurl`
+the same as any other url.
+
+You have to have [aria2](http://aria2.sourceforge.net/)
+and bittornado (or the original bittorrent) installed for this
+to work.
+
## podcasts
This is done using `git annex importfeed`. See [[downloading podcasts]].
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_11_9889828caa47aad88267d0ec35f2240d._comment b/doc/tips/using_the_web_as_a_special_remote/comment_11_9889828caa47aad88267d0ec35f2240d._comment
new file mode 100644
index 000000000..ccd27bf3c
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_11_9889828caa47aad88267d0ec35f2240d._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="thnetos"
+ subject="How to get the URL of an added file?"
+ date="2014-12-18T18:56:57Z"
+ content="""
+Once a file has been added with either `addurl` or `importfeed`, how can I get the URL of the file or feed from git-annex?
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_12_2ce018f181e039b5dd52e2b712f63eea._comment b/doc/tips/using_the_web_as_a_special_remote/comment_12_2ce018f181e039b5dd52e2b712f63eea._comment
new file mode 100644
index 000000000..7e3d8c9c7
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_12_2ce018f181e039b5dd52e2b712f63eea._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="joey"
+ subject="""comment 12"""
+ date="2014-12-18T19:59:54Z"
+ content="""
+You can see the url(s) of a file when you run `git annex whereis $file`
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_5_5ee9717e74ca2afed98e81fc0ea98a95._comment b/doc/tips/using_the_web_as_a_special_remote/comment_5_5ee9717e74ca2afed98e81fc0ea98a95._comment
new file mode 100644
index 000000000..b1060147f
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_5_5ee9717e74ca2afed98e81fc0ea98a95._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="Xyem"
+ ip="87.194.19.134"
+ subject="comment 5"
+ date="2014-04-04T15:25:39Z"
+ content="""
+Adding videos from youtube ends up with it using the URL backend, even without fast.
+
+ $ git init quvitest
+ $ cd quvitest/
+ $ git annex init
+ $ git annex addurl https://www.youtube.com/watch?v=mghhLqu31cQ
+ (... file is downloaded ...)
+ $ find .git/annex/objects/ -type f
+ .git/annex/objects/1J/Wp/URL--quvi&chttps&c%%www.youtube.com%watch,63v,61mghhLqu31cQ/URL--quvi&chttps&c%%www.youtube.com%watch,63v,61mghhLqu31cQ
+
+Is migrating manually required or should I log a bug?
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_6_dceb15bd656e69eefa3ca975d9d642de._comment b/doc/tips/using_the_web_as_a_special_remote/comment_6_dceb15bd656e69eefa3ca975d9d642de._comment
new file mode 100644
index 000000000..0c39eb183
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_6_dceb15bd656e69eefa3ca975d9d642de._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.244"
+ subject="comment 6"
+ date="2014-04-07T20:07:45Z"
+ content="""
+Using the URL backend for youtube is intentional. Youtube may serve up different encodings for the same video over time, and this way git-annex treats them all as equvilant. If you want to \"freeze\" the repository to the current one, use `git annex migrate`, and be prepared for `git annex get --from web` to not work long term.
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_7_0bde977c62a53c90cb20491936bc399d._comment b/doc/tips/using_the_web_as_a_special_remote/comment_7_0bde977c62a53c90cb20491936bc399d._comment
new file mode 100644
index 000000000..df5b0ef41
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_7_0bde977c62a53c90cb20491936bc399d._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnkXKIAfgPsuV-EJpXm3jCc3q9IZwzvCcw"
+ nickname="Garrett"
+ subject="Default pathdepth"
+ date="2014-05-08T21:36:00Z"
+ content="""
+Is there away to change the default pathdepth so I do not need to add --pathdepth=-1 everything I run addurl?
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_8_3f32d536f51d5e9908953caf5736b0a0._comment b/doc/tips/using_the_web_as_a_special_remote/comment_8_3f32d536f51d5e9908953caf5736b0a0._comment
new file mode 100644
index 000000000..c3403500a
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_8_3f32d536f51d5e9908953caf5736b0a0._comment
@@ -0,0 +1,16 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnvr2UPmp7ABeH0yI8KGAHCqFhl91Ju4Tc"
+ nickname="Calvin"
+ subject="HTTP Authentication?"
+ date="2014-09-29T21:37:44Z"
+ content="""
+Hi!
+
+I have a somewhat interesting use case. My course notes require HTTP authentication. This is possible with wget, but is there any way to make git annex do it?
+
+[wget authentication stuff!](http://stackoverflow.com/questions/4272770/wget-with-authentication)
+
+It would be nice to have the user and pass encrypted with GPG too. This might be a strange use case, but I can see other people wanting to do something like this in the future.
+
+Thanks!
+"""]]
diff --git a/doc/tips/using_the_web_as_a_special_remote/comment_9_b420b1f320d620a9909cce5086c549bf._comment b/doc/tips/using_the_web_as_a_special_remote/comment_9_b420b1f320d620a9909cce5086c549bf._comment
new file mode 100644
index 000000000..d6b194d69
--- /dev/null
+++ b/doc/tips/using_the_web_as_a_special_remote/comment_9_b420b1f320d620a9909cce5086c549bf._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.55"
+ subject="comment 9"
+ date="2014-09-30T18:09:04Z"
+ content="""
+For urls using http basic auth, you can use the standard url form, http://username:password@example.org/url/ , which should work with `git annex addurl`. The url, including the password, will be stored in the git-annex branch though. If you want to protect the password from being exposed to anyone who gets a clone of the repository, just download manually, and then `git annex add` the file.
+"""]]
diff --git a/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn b/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn
index 80cb046d9..78f4977a2 100644
--- a/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn
+++ b/doc/tips/what_to_do_when_a_repository_is_corrupted.mdwn
@@ -19,4 +19,9 @@ on the drive.
* Check for any problems with the annexed data: `cd $good; git annex fsck`
* Now you can remove the corrupted repository, the new one is ready to use.
+Alternatively, recent versions of git-annex have a `git annex repair`
+command that uses <http://git-repair.branchable.com/> to repair a
+repository in-place. The git-annex assistant will detect most corruptions
+and offer to run the repair for you automatically.
+
--[[Joey]]
diff --git a/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_1_c3543190eae2af594f3e050057e80db6._comment b/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_1_c3543190eae2af594f3e050057e80db6._comment
new file mode 100644
index 000000000..3954bef0d
--- /dev/null
+++ b/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_1_c3543190eae2af594f3e050057e80db6._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnq-RfkVpFN15SWvQ2lpSGAi0XpNQuLxKM"
+ nickname="Yuval"
+ subject="Automation"
+ date="2014-04-27T11:34:44Z"
+ content="""
+Could this step be automated?
+"""]]
diff --git a/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_2_025178c2b11affe2d42a87544b897dc8._comment b/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_2_025178c2b11affe2d42a87544b897dc8._comment
new file mode 100644
index 000000000..beb177d00
--- /dev/null
+++ b/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_2_025178c2b11affe2d42a87544b897dc8._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawmZilYULa6CDEGfuagoDlesyakBgnf-dF8"
+ nickname="Maarten"
+ subject="comment 2"
+ date="2014-05-23T23:50:58Z"
+ content="""
+What if the drive is destroyed? How would I re-initialize a new drive to act as a substitute for the remote that was just lost?
+"""]]
diff --git a/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_3_9a6bae9c0326ecc7610f5415db20f49e._comment b/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_3_9a6bae9c0326ecc7610f5415db20f49e._comment
new file mode 100644
index 000000000..870d7b93f
--- /dev/null
+++ b/doc/tips/what_to_do_when_a_repository_is_corrupted/comment_3_9a6bae9c0326ecc7610f5415db20f49e._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ ip="209.250.56.36"
+ subject="comment 3"
+ date="2014-05-24T18:29:03Z"
+ content="""
+@Maarten git clone from one of the other clones of the repository to the new drive. Also, recent versions of git-annex have a `git annex reinit` command that can be used to easily initialize a repository with the same settings as a repository that was lost.
+"""]]