Recent changes to this wiki:
diff --git a/doc/bugs/Problems_building_on_Mac_OS_X.mdwn b/doc/bugs/Problems_building_on_Mac_OS_X.mdwn new file mode 100644 index 0000000..b1d672a --- /dev/null +++ b/doc/bugs/Problems_building_on_Mac_OS_X.mdwn @@ -0,0 +1,59 @@ +### Please describe the problem. + +Installing via Cabal fails due to dependency conflicts with yesod. If I build without the webapp flag, the problem disappears. + +### What steps will reproduce the problem? +Running `cabal install c2hs git-annex --bindir=$HOME/bin`. + +### What version of git-annex are you using? On what operating system? +I was attempting to install 4.20130521 from Hackage. My operating system is Mac OS X 10.6.8. Cabal-install is at 0.14.0. + +### Please provide any additional information below. + +[[!format sh """ +# If you can, paste a complete transcript of the problem occurring here. +# If the problem is with the git-annex assistant, paste in .git/annex/debug.log +Resolving dependencies... +cabal: Could not resolve dependencies: +trying: git-annex-4.20130521 (user goal) +trying: git-annex-4.20130521:+webapp +trying: yesod-default-1.2.0 (dependency of git-annex-4.20130521:+webapp) +trying: yesod-core-1.2.1 (dependency of yesod-default-1.2.0) +trying: cookie-0.4.0.1/installed-9d9... (dependency of yesod-core-1.2.1) +next goal: yesod (dependency of git-annex-4.20130521:+webapp) +rejecting: yesod-1.2.0.1, 1.2.0 (conflict: git-annex-4.20130521:webapp => +yesod(<1.2)) +rejecting: yesod-1.1.9.3, 1.1.9.2, 1.1.9.1, 1.1.9, 1.1.8.2, 1.1.8.1, 1.1.8, +1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4 (conflict: +yesod-core==1.2.1, yesod => yesod-core>=1.1.5 && <1.2) +rejecting: yesod-1.1.3.1, 1.1.3, 1.1.2, 1.1.1.2, 1.1.1, 1.1.0.3, 1.1.0.2, +1.1.0.1, 1.1.0 (conflict: yesod-core==1.2.1, yesod => yesod-core>=1.1 && <1.2) +rejecting: yesod-1.0.1.6, 1.0.1.5, 1.0.1.4, 1.0.1.3, 1.0.1.2, 1.0.1.1, 1.0.1, +1.0.0.2, 1.0.0.1, 1.0.0 (conflict: yesod-core==1.2.1, yesod => yesod-core>=1.0 +&& <1.1) +rejecting: yesod-0.10.2, 0.10.1.4, 0.10.1.3, 0.10.1.2, 0.10.1.1, 0.10.1 +(conflict: yesod-core==1.2.1, yesod => yesod-core>=0.10.1 && <0.11) +rejecting: yesod-0.9.4.1, 0.9.4, 0.9.3.4, 0.9.3.3, 0.9.3.2 (conflict: +yesod-core==1.2.1, yesod => yesod-core>=0.9.3.4 && <0.10) +rejecting: yesod-0.9.3.1, 0.9.3, 0.9.2.2, 0.9.2.1, 0.9.2, 0.9.1.1 (conflict: +yesod-core==1.2.1, yesod => yesod-core>=0.9.1.1 && <0.10) +rejecting: yesod-0.9.1 (conflict: yesod-core==1.2.1, yesod => yesod-core>=0.9 +&& <0.10) +rejecting: yesod-0.8.2.1, 0.8.2, 0.8.1 (conflict: yesod-core==1.2.1, yesod => +yesod-core>=0.8.1 && <0.9) +rejecting: yesod-0.8.0 (conflict: yesod-core==1.2.1, yesod => yesod-core>=0.8 +&& <0.9) +rejecting: yesod-0.7.3, 0.7.2 (conflict: yesod-core==1.2.1, yesod => +yesod-core>=0.7.0.2 && <0.8) +rejecting: yesod-0.7.1 (conflict: yesod-core==1.2.1, yesod => +yesod-core>=0.7.0.1 && <0.8) +rejecting: yesod-0.7.0 (conflict: yesod-core==1.2.1, yesod => yesod-core>=0.7 +&& <0.8) +rejecting: yesod-0.6.7, 0.6.6, 0.6.5, 0.6.4, 0.6.3, 0.6.2, 0.6.1.2, 0.6.1.1, +0.6.1, 0.6.0.2, 0.6.0.1, 0.6.0, 0.5.4.2, 0.5.4.1, 0.5.4, 0.5.3, 0.5.2, 0.5.1, +0.5.0.3, 0.5.0.2, 0.5.0.1, 0.5.0, 0.4.1, 0.4.0.3, 0.4.0.2, 0.4.0.1, 0.4.0 +(conflict: cookie => time==1.4/installed-d61..., yesod => time>=1.1.4 && <1.3) +rejecting: yesod-0.3.1.1, 0.3.1, 0.3.0, 0.2.0, 0.0.0.2, 0.0.0.1, 0.0.0 +(conflict: cookie => time==1.4/installed-d61..., yesod => time>=1.1.3 && <1.2) +# End of transcript or log. +"""]]
diff --git a/doc/tips/megaannex.mdwn b/doc/tips/megaannex.mdwn
index 96f6f8a..b375d5f 100644
--- a/doc/tips/megaannex.mdwn
+++ b/doc/tips/megaannex.mdwn
@@ -3,6 +3,7 @@ is a hook program for git-annex to use mega.co.nz as backend
# Requirements:
+ python2
requests>=0.10
pycrypto
update
diff --git a/doc/assistant/release_notes.mdwn b/doc/assistant/release_notes.mdwn index 7f793be..6ce8bac 100644 --- a/doc/assistant/release_notes.mdwn +++ b/doc/assistant/release_notes.mdwn @@ -1,3 +1,7 @@ +## version 4.20130521 + +This is a bugfix release. Recommended upgrade. + ## version 4.20130516 This version contains numerous bug fixes, and improvements.
fix link to windows autobuild
diff --git a/doc/install/Windows.mdwn b/doc/install/Windows.mdwn index 573f823..90568a8 100644 --- a/doc/install/Windows.mdwn +++ b/doc/install/Windows.mdwn @@ -13,7 +13,7 @@ on Windows. A daily build is also available, thanks to Yury V. Zaytsev and [NEST](http://nest-initiative.org/). -* [download](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/lastSuccessfulBuild/artifact/git-annex-installer.exe) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/)) +* [download](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/lastSuccessfulBuild/artifact/git-annex/git-annex-installer.exe) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/)) ## building it yourself
add news item for git-annex 4.20130521
diff --git a/doc/news/version_4.20130323.mdwn b/doc/news/version_4.20130323.mdwn deleted file mode 100644 index 1ccdf90..0000000 --- a/doc/news/version_4.20130323.mdwn +++ /dev/null @@ -1,37 +0,0 @@ -git-annex 4.20130323 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * webapp: Repository list is now included in the dashboard, and other - UI tweaks. - * webapp: Improved UI for pairing your own devices together using XMPP. - * webapp: Display an alert when there are XMPP remotes, and a cloud - transfer repository needs to be configured. - * Add incrementalbackup repository group. - * webapp: Encourage user to install git-annex on a server when adding - a ssh server, rather than just funneling them through to rsync. - * xmpp: --debug now enables a sanitized dump of the XMPP protocol - * xmpp: Try harder to detect presence of clients when there's a git push - to send. - * xmpp: Re-enable XA flag, since disabling it did not turn out to help - with the problems Google Talk has with not always sending presence - messages to clients. - * map: Combine duplicate repositories, for a nicer looking map. - * Fix several bugs caused by a bad Ord instance for Remote. - * webapp: Switch all forms to POST. - * assistant: Avoid syncing with annex-ignored remotes when reconnecting - to the network, or connecting a drive. - * assistant: Fix OSX bug that prevented committing changed files to a - repository when in indirect mode. - * webapp: Improved alerts displayed when syncing with remotes, and - when syncing with a remote fails. - * webapp: Force wrap long filenames in transfer display. - * assistant: The ConfigMonitor left one zombie behind each time - it checked for changes, now fixed. - * get, copy, move: Display an error message when an identical transfer - is already in progress, rather than failing with no indication why. - * assistant: Several optimisations to file transfers. - * OSX app and standalone Linux tarball now both support being added to - PATH; no need to use runshell to start git-annex. - * webapp: When adding a removable drive, you can now specify the - directory inside it to use. - * webapp: Confirm whether user wants to combine repositories when - adding a removable drive that already has a repository on it."""]] \ No newline at end of file diff --git a/doc/news/version_4.20130521.mdwn b/doc/news/version_4.20130521.mdwn new file mode 100644 index 0000000..af4f25b --- /dev/null +++ b/doc/news/version_4.20130521.mdwn @@ -0,0 +1,24 @@ +git-annex 4.20130521 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * Sanitize debian changelog version before putting it into cabal file. + Closes: #[708619](http://bugs.debian.org/708619) + * Switch to MonadCatchIO-transformers for better handling of state while + catching exceptions. + * Fix a zombie that could result when running a process like gpg to + read and write to it. + * Allow building with gpg2. + * Disable building with the haskell threaded runtime when the webapp + is not built. This may fix builds on mips, s390x and sparc, which are + failing to link -lHSrts\_thr + * Temporarily build without webapp on kfreebsd-i386, until yesod is + installable there again. + * Direct mode bug fix: After a conflicted merge was automatically resolved, + the content of a file that was already present could incorrectly + be replaced with a symlink. + * Fix a bug in the git-annex branch handling code that could + cause info from a remote to not be merged and take effect immediately. + * Direct mode is now fully tested by the test suite. + * Detect bad content in ~/.config/git-annex/program and look in PATH instead. + * OSX: Fixed gpg included in dmg. + * Linux standalone: Back to being built with glibc 2.13 for maximum + portability."""]] \ No newline at end of file
fix quotes
diff --git a/doc/tips/megaannex.mdwn b/doc/tips/megaannex.mdwn index 0ff953d..96f6f8a 100644 --- a/doc/tips/megaannex.mdwn +++ b/doc/tips/megaannex.mdwn @@ -35,7 +35,7 @@ Note: The folder option in the megaannex.conf file isn't yet used. git config annex.mega-remove-hook 'python2 ~/megaannex/megaannex.py delete --subject $ANNEX_KEY' git annex initremote mega type=hook hooktype=mega encryption=shared - git annex describe mega \"the mega.co.nz library\" + git annex describe mega "the mega.co.nz library" ## Notes
lift megaannex comment into tip, etc
diff --git a/doc/design/assistant/more_cloud_providers.mdwn b/doc/design/assistant/more_cloud_providers.mdwn index 7949f8a..35e5345 100644 --- a/doc/design/assistant/more_cloud_providers.mdwn +++ b/doc/design/assistant/more_cloud_providers.mdwn @@ -16,5 +16,8 @@ More should be added, such as: * Mediafire provides 50gb free and has a REST API. * Flickr provides 1 tb (!!!!) to free accounts, and can store at least photos and videos. +* mega.co.nz. Already supported via [[tips/megaannex]], would just need + webapp modifications to configure it. May want to use megaannex as-is to + build a non-hook special remote in haskell. See poll at [[polls/prioritizing_special_remotes]]. diff --git a/doc/special_remotes.mdwn b/doc/special_remotes.mdwn index 6c33b52..96cc779 100644 --- a/doc/special_remotes.mdwn +++ b/doc/special_remotes.mdwn @@ -26,6 +26,7 @@ for various cloud things: * [[tips/Internet_Archive_via_S3]] * [[tahoe-lafs|forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs]] * [[tips/using_box.com_as_a_special_remote]] +* [[tips/using_mega.co.nz_as_a_special_remote|tips/megaannex]] * [[forum/special_remote_for_IMAP]] * [[forum/nntp__47__usenet special remote]] diff --git a/doc/tips/megaannex.mdwn b/doc/tips/megaannex.mdwn new file mode 100644 index 0000000..0ff953d --- /dev/null +++ b/doc/tips/megaannex.mdwn @@ -0,0 +1,45 @@ +[Megaannex](https://github.com/TobiasTheViking/megaannex) +is a hook program for git-annex to use mega.co.nz as backend + +# Requirements: + + requests>=0.10 + pycrypto + +Credit for the mega api interface goes to: +<https://github.com/richardasaurus/mega.py> + +## Install + +Clone the git repository in your home folder. + + git clone git://github.com/TobiasTheViking/megaannex.git + +This should make a ~/megannex folder + +## Setup + +Run the program once to make an empty config file. + + cd ~/megaannex; python2 megaannex.py + +Edit the megaannex.conf file. Add your mega.co.nz username and password + +Note: The folder option in the megaannex.conf file isn't yet used. + +## Configuring git-annex + + git config annex.mega-store-hook 'python2 ~/megaannex/megaannex.py store --subject $ANNEX_KEY --file $ANNEX_FILE' + git config annex.mega-retrieve-hook 'python2 ~/megaannex/megaannex.py getfile --subject $ANNEX_KEY --file $ANNEX_FILE' + git config annex.mega-checkpresent-hook 'python2 ~/megaannex/megaannex.py fileexists --subject $ANNEX_KEY' + git config annex.mega-remove-hook 'python2 ~/megaannex/megaannex.py delete --subject $ANNEX_KEY' + + git annex initremote mega type=hook hooktype=mega encryption=shared + git annex describe mega \"the mega.co.nz library\" + +## Notes + +You may need to use a different command than "python2", depending +on your python installation. + +-- Tobias diff --git a/doc/todo/wishlist:_special_remote_mega.co.nz.mdwn b/doc/todo/wishlist:_special_remote_mega.co.nz.mdwn index 788a3a4..4116408 100644 --- a/doc/todo/wishlist:_special_remote_mega.co.nz.mdwn +++ b/doc/todo/wishlist:_special_remote_mega.co.nz.mdwn @@ -1 +1,3 @@ mega.co.nz has 50gb for free accounts. They also have an API, so I guess it wouldn't be too hard to use it as a special remote. + +[[done]], see [[tips/megaannex]].
diff --git a/doc/todo/wishlist:_Advanced_settings_for_xmpp_and_webdav.mdwn b/doc/todo/wishlist:_Advanced_settings_for_xmpp_and_webdav.mdwn new file mode 100644 index 0000000..268bc9f --- /dev/null +++ b/doc/todo/wishlist:_Advanced_settings_for_xmpp_and_webdav.mdwn @@ -0,0 +1,5 @@ +It would be very nice with an "advanced settings" for jabber and webdav support. + +Currently XMPP fails if you use a google apps account. Since the domain provided in the email is not the same as the XMPP server. + +Same goes for webdav support. If i have my own webdav server somewhere on the internet there is no way to set it up in the assistant.
removed
diff --git a/doc/todo/wishlist:_special_remote_mega.co.nz/comment_1_e156a70bfea5c079aaf8654eacd645b2._comment b/doc/todo/wishlist:_special_remote_mega.co.nz/comment_1_e156a70bfea5c079aaf8654eacd645b2._comment deleted file mode 100644 index 5524e75..0000000 --- a/doc/todo/wishlist:_special_remote_mega.co.nz/comment_1_e156a70bfea5c079aaf8654eacd645b2._comment +++ /dev/null @@ -1,10 +0,0 @@ -[[!comment format=mdwn - username="https://www.google.com/accounts/o8/id?id=AItOawmLB39PC89rfGaA8SwrsnB6tbumezj-aC0" - nickname="Tobias" - subject="Look what i made" - date="2013-05-21T08:43:16Z" - content=""" -YMMV - -https://github.com/TobiasTheViking/megaannex -"""]]
Added a comment: Usage of mega hook
diff --git a/doc/todo/wishlist:_special_remote_mega.co.nz/comment_2_6ca08ef808d4336fc42d0f279d6627b5._comment b/doc/todo/wishlist:_special_remote_mega.co.nz/comment_2_6ca08ef808d4336fc42d0f279d6627b5._comment new file mode 100644 index 0000000..542b92a --- /dev/null +++ b/doc/todo/wishlist:_special_remote_mega.co.nz/comment_2_6ca08ef808d4336fc42d0f279d6627b5._comment @@ -0,0 +1,44 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmLB39PC89rfGaA8SwrsnB6tbumezj-aC0" + nickname="Tobias" + subject="Usage of mega hook" + date="2013-05-21T09:09:28Z" + content=""" +megaannex +========= + +Hook program for gitannex to use mega.co.nz as backend + +# Requirements: + + requests>=0.10 + pycrypto + +Credit for the mega api interface goes to: https://github.com/richardasaurus/mega.py + +## Install +Clone the git repository in your home folder. + + git clone git://github.com/TobiasTheViking/megaannex.git + +This should make a ~/megannex folder + +## Setup +Run the program once to make an empty config file + + cd ~/megaannex; python2 megaannex.py + +Edit the megaannex.conf file. Add your mega.co.nz username and password + +Note: The folder option in the megaannex.conf file isn't yet used. + +## Commands for gitannex: + + git config annex.mega-store-hook '/usr/bin/python2 ~/megaannex/megaannex.py store --subject $ANNEX_KEY --file $ANNEX_FILE' + git config annex.mega-retrieve-hook '/usr/bin/python2 ~/megaannex/megaannex.py getfile --subject $ANNEX_KEY --file $ANNEX_FILE' + git config annex.mega-checkpresent-hook '/usr/bin/python2 ~/megaannex/megaannex.py fileexists --subject $ANNEX_KEY' + git config annex.mega-remove-hook '/usr/bin/python2 ~/megaannex/megaannex.py delete --subject $ANNEX_KEY' + git annex initremote mega type=hook hooktype=mega encryption=shared + git annex describe mega \"the mega.co.nz library\" + +"""]]
Added a comment: Look what i made
diff --git a/doc/todo/wishlist:_special_remote_mega.co.nz/comment_1_e156a70bfea5c079aaf8654eacd645b2._comment b/doc/todo/wishlist:_special_remote_mega.co.nz/comment_1_e156a70bfea5c079aaf8654eacd645b2._comment new file mode 100644 index 0000000..5524e75 --- /dev/null +++ b/doc/todo/wishlist:_special_remote_mega.co.nz/comment_1_e156a70bfea5c079aaf8654eacd645b2._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmLB39PC89rfGaA8SwrsnB6tbumezj-aC0" + nickname="Tobias" + subject="Look what i made" + date="2013-05-21T08:43:16Z" + content=""" +YMMV + +https://github.com/TobiasTheViking/megaannex +"""]]
diff --git a/doc/bugs/gpg_error_on_android.mdwn b/doc/bugs/gpg_error_on_android.mdwn new file mode 100644 index 0000000..42f0830 --- /dev/null +++ b/doc/bugs/gpg_error_on_android.mdwn @@ -0,0 +1,36 @@ +### Please describe the problem. + +Adding an existing cloud repo on box.com results in an gpg error: + + user error (gpg ["--quiet","--trust-model","always","--batch","--passphrase-fd","86","--decrypt"] exited 2) + +### What steps will reproduce the problem? + +Enabling an existing cloud repository. + +### What version of git-annex are you using? On what operating system? + +Latest Android (4.20130516-g32 40006) on a rooted Samsung Galaxy Note (CyanogenMod 10.1) + +### Please provide any additional information below. + +[[!format sh """ +# If you can, paste a complete transcript of the problem occurring here. +# If the problem is with the git-annex assistant, paste in .git/annex/debug.log + +(merging refs/synced/de8a8792-70de-48c3-a646-a168ce1d9d35/c25hdXRoQGphYmJlci5vcmc=/git-annex into git-annex...) +(Recording state in git...) +(gpg) gpg: can't open `/usr/local/share/gnupg/options.skel': No such file or directory +gpg: DBG: locking for `/sdcard/git-annex.home/.gnupg/secring.gpg.lock' done via O_EXCL +gpg: DBG: locking for `/sdcard/git-annex.home/.gnupg/pubring.gpg.lock' done via O_EXCL +gpg: encrypted with unknown algorithm 3 +gpg: decryption failed: secret key not available +(gpg) gpg: encrypted with unknown algorithm 3 +gpg: decryption failed: secret key not available +(gpg) gpg: encrypted with unknown algorithm 3 +gpg: decryption failed: secret key not available +(gpg) gpg: encrypted with unknown algorithm 3 +gpg: decryption failed: secret key not available + +# End of transcript or log. +"""]]
Added a comment: Same error with Android
diff --git a/doc/bugs/Use_a_git_repository_on_the_server_don__39__t_work/comment_7_a7139f19f0b73c024cd9218eb01e6104._comment b/doc/bugs/Use_a_git_repository_on_the_server_don__39__t_work/comment_7_a7139f19f0b73c024cd9218eb01e6104._comment new file mode 100644 index 0000000..3654724 --- /dev/null +++ b/doc/bugs/Use_a_git_repository_on_the_server_don__39__t_work/comment_7_a7139f19f0b73c024cd9218eb01e6104._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawnu1NYw8UF-NoDbKu8YKVGxi8FoZLH7JPs" + nickname="Chris" + subject="Same error with Android" + date="2013-05-21T02:15:25Z" + content=""" +I'm using git-annex version 4.20130516-g3240006 on Android, and when I attempt to add a cloud repo with SSH & git, I get that same error - \"unknown UUID: cannot modify\". My Linux box running 4.20130516-gedc4ccd handles the same server as a cloud repo without any problems. +"""]]
flickr
diff --git a/doc/design/assistant/more_cloud_providers.mdwn b/doc/design/assistant/more_cloud_providers.mdwn index 26df6ae..7949f8a 100644 --- a/doc/design/assistant/more_cloud_providers.mdwn +++ b/doc/design/assistant/more_cloud_providers.mdwn @@ -14,5 +14,7 @@ More should be added, such as: * [nimbus.io](https://nimbus.io/) Fairly low prices ($0.06/GB); REST API; free software * Mediafire provides 50gb free and has a REST API. +* Flickr provides 1 tb (!!!!) to free accounts, and can store at least + photos and videos. See poll at [[polls/prioritizing_special_remotes]].
blog for the day
diff --git a/doc/design/assistant/blog/day_269__bugfixes.mdwn b/doc/design/assistant/blog/day_269__bugfixes.mdwn new file mode 100644 index 0000000..7cbdb58 --- /dev/null +++ b/doc/design/assistant/blog/day_269__bugfixes.mdwn @@ -0,0 +1,14 @@ +Worked on several important bug fixes today. One affects automatic merge +confict resolution, and can case data loss in direct mode, so I will be +making a release with the fix tomorrow. + +Practiced TDD today, and good thing too. The new improved test suite +turned up a really subtle bug involving the git-annex branch vector +clocks-ish code, which I also fixed. + +Also, fixes to the OSX autobuilds. One of them had a broken gpg, which is +now fixed. The other one is successfully building again. And, I'm switching +the Linux autobuilds to build against Debian stable, since testing has a +new version of libc now, which would make the autobuilds not work on older +systems. Getting an amd64 chroot into shape is needing rather a lot +of backporting of build dependencies, which I already did for i386.
close
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn index a100c5a..c381035 100644 --- a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn @@ -11,3 +11,6 @@ What I'm missing here is some setting to tell the assistant "sync the contents o ### What version of git-annex are you using? On what operating system? My basic setup for testing is two Ubuntu 12.04 LTS machines running git-annex 4.20130501 + +> [[done]], broken ~/.config/git-annex/program file, which is now detected +> and worked around. --[[Joey]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_9_c7d51a26e1febc3894d02546940d64e5._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_9_c7d51a26e1febc3894d02546940d64e5._comment new file mode 100644 index 0000000..2f5e2d4 --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_9_c7d51a26e1febc3894d02546940d64e5._comment @@ -0,0 +1,19 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 9" + date="2013-05-20T21:43:04Z" + content=""" +Based on the log, it appears that you have a `~/.config/git-annex/program` file that contains \"/home/pedrocr/software/git-annex/git-annex.linux/git-annex\", but that is either not where git-annex is actually installed, or running that program +(which git-annex does when it needs to transfer a file contents) fails. + +I am able to exactly replicate the failure to transfer file content, and the log output, when I set things up in that way. + +This would be consistent with you, for example, having previously installed git-annex from the standalone tarball, used it at least once, and then deleted that installation, and installed it from, say, a Ubuntu repository. + +I've put in a fix so if the programfile is wrong, git-annex just tries PATH. + +(BTW, I do not advocate storing config files in the git annex. Small files that you want to have fully versioned are best stored in git. The git-annex assistant can still be used for syncing files that are checked into git in the regular way. See [[tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant]].) + +(git annex assistant --foreground intentionally logs to the log file, because otherwise the \"view logs\" page in the webapp can't show any logs.) +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_8_7eb530851ae6fa1a69813725c4e8fcec._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_8_7eb530851ae6fa1a69813725c4e8fcec._comment new file mode 100644 index 0000000..157923a --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_8_7eb530851ae6fa1a69813725c4e8fcec._comment @@ -0,0 +1,59 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY" + nickname="Pedro" + subject="comment 8" + date="2013-05-20T19:59:22Z" + content=""" +Here's the same example you posted being followed by me and showing the problem + +[[!format sh \"\"\" +$mkdir 1 2 +$cd 1; git init; git-annex init; git annex direct; echo \"file added to 1\" > file_from_1; cd .. +Initialized empty Git repository in /home/pedrocr/Hacks/test-git-annex/1/.git/ +init ok +(Recording state in git...) +commit +# On branch master +# +# Initial commit +# +nothing to commit (create/copy files and use \"git add\" to track) +ok +direct ok +$cd 2; git init; git-annex init; git annex direct; echo \"file added to 2\" > file_from_2; cd .. +Initialized empty Git repository in /home/pedrocr/Hacks/test-git-annex/2/.git/ +init ok +(Recording state in git...) +commit +# On branch master +# +# Initial commit +# +nothing to commit (create/copy files and use \"git add\" to track) +ok +direct ok +$cd 1; git remote add 2 ssh://localhost/~pedrocr/Hacks/test-git-annex/2; git annex assistant; cd .. +$cd 2; git remote add 1 ssh://localhost/~pedrocr/Hacks/test-git-annex/1; git annex assistant; cd .. +(merging synced/git-annex into git-annex...) +$cd 1 +$ls +file_from_1 file_from_2 +$ls -la +total 20 +drwxrwxr-x 3 pedrocr pedrocr 4096 May 20 20:57 . +drwxrwxr-x 4 pedrocr pedrocr 4096 May 20 20:55 .. +-rw-r--r-- 1 pedrocr pedrocr 16 May 20 20:56 file_from_1 +lrwxrwxrwx 1 pedrocr pedrocr 180 May 20 20:57 file_from_2 -> .git/annex/objects/1P/8w/SHA256E-s16--b651aaa274225b617cb4d3033047ac6aee29dd6f2465f94ec38dc6630b7d48c8/SHA256E-s16--b651aaa274225b617cb4d3033047ac6aee29dd6f2465f94ec38dc6630b7d48c8 +drwxrwxr-x 9 pedrocr pedrocr 4096 May 20 20:57 .git +$cd .. +$cd 2 +$ls -la +total 20 +drwxrwxr-x 3 pedrocr pedrocr 4096 May 20 20:57 . +drwxrwxr-x 4 pedrocr pedrocr 4096 May 20 20:55 .. +lrwxrwxrwx 1 pedrocr pedrocr 180 May 20 20:57 file_from_1 -> .git/annex/objects/qQ/x9/SHA256E-s16--cca8b6c2db480aa680e12c48f471a351de69978c7665fac5b63d9a765f4c16f4/SHA256E-s16--cca8b6c2db480aa680e12c48f471a351de69978c7665fac5b63d9a765f4c16f4 +-rw-r--r-- 1 pedrocr pedrocr 16 May 20 20:56 file_from_2 +drwxrwxr-x 9 pedrocr pedrocr 4096 May 20 20:57 .git +$ +\"\"\"]] +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_7_8acb66850e5db8337cf3f2b2dd236ccc._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_7_8acb66850e5db8337cf3f2b2dd236ccc._comment new file mode 100644 index 0000000..8bd9016 --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_7_8acb66850e5db8337cf3f2b2dd236ccc._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY" + nickname="Pedro" + subject="comment 7" + date="2013-05-20T19:52:30Z" + content=""" +Your example is pretty much what I've done. I'll enable a debug log as soon as possible. By the away \"git annex assistant --foreground\" still logs to .git/annex/daemon.log instead of stdout/stderr, which I assume was not the intended behavior. + +This bug was indeed about the assistant not syncing, the comments about the broken symlinks were just in response to edheil's comment. I can post a separate bug report about this but the reason I don't think this should be default behavior is that it breaks several simple uses of git-annex. One simple example is using it to store your configs across machines (things like .bashrc). If at any point the git-annex can't sync a file (a network problem or ssh breakage or whatever) but becomes aware of a file change (for example through xmpp) you now have a broken login shell. In general it breaks the user expectations of having a \"folder that just happens to also sync\" for something where his files randomly get replaced with strange broken things for odd technical reasons. +"""]]
Added a comment
diff --git a/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_3_a7a9c55c2ad448179dff5d5b69976c7d._comment b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_3_a7a9c55c2ad448179dff5d5b69976c7d._comment new file mode 100644 index 0000000..39ed830 --- /dev/null +++ b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_3_a7a9c55c2ad448179dff5d5b69976c7d._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 3" + date="2013-05-20T17:46:08Z" + content=""" +Erm, I missed that you want to use direct mode. All this fun with git won't really work in direct mode, and indeed direct mode is not able to guarantee that old versions of modified files are retained. + +Direct mode is nice for some applications involving syncing and less than ideal devices, but not for this. +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_6_ced397b9e6119a0798a282ee07e885df._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_6_ced397b9e6119a0798a282ee07e885df._comment new file mode 100644 index 0000000..61d5f9b --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_6_ced397b9e6119a0798a282ee07e885df._comment @@ -0,0 +1,61 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 6" + date="2013-05-20T16:22:18Z" + content=""" +Here is a simple example of setting up 2 repositories in the way the bug reporter describes here and on IRC. As you can see, the assistant syncs file content without any configuration: + +[[!format sh \"\"\" +joey@gnu:~/tmp/test>mkdir 1 2 +joey@gnu:~/tmp/test>cd 1; git init; git-annex init; git annex direct; echo \"file added to 1\" > file_from_1; cd .. +Initialized empty Git repository in /home/joey/tmp/test/1/.git/ +init ok +(Recording state in git...) +commit +# On branch master +# +# Initial commit +# +nothing to commit (create/copy files and use \"git add\" to track) +ok +direct ok +joey@gnu:~/tmp/test>cd 2; git init; git-annex init; git annex direct; echo \"file added to 2\" > file_from_2; cd .. +Initialized empty Git repository in /home/joey/tmp/test/2/.git/ +init ok +(Recording state in git...) +commit +# On branch master +# +# Initial commit +# +nothing to commit (create/copy files and use \"git add\" to track) +ok +direct ok +joey@gnu:~/tmp/test>cd 1; git remote add 2 ssh://localhost/~joey/tmp/test/2; git annex assistant; cd .. +joey@gnu:~/tmp/test>cd 2; git remote add 1 ssh://localhost/~joey/tmp/test/1; git annex assistant; cd .. +(merging synced/git-annex into git-annex...) +(Recording state in git...) +joey@gnu:~/tmp/test>cd 1 +joey@gnu:~/tmp/test/1>ls +file_from_1 +joey@gnu:~/tmp/test/1>ls +file_from_1 file_from_2 +joey@gnu:~/tmp/test/1>cat file_from_2 +file added to 2 +joey@gnu:~/tmp/test/1>cd .. +joey@gnu:~/tmp/test>cd 2 +joey@gnu:~/tmp/test/2>cat file_from_1 +file added to 1 +joey@gnu:~/tmp/test/2>rm file_from_2 +joey@gnu:~/tmp/test/2>cd .. +joey@gnu:~/tmp/test>cd 1 +joey@gnu:~/tmp/test/1>ls +file_from_1 +joey@gnu:~/tmp/test/1>date > newfile +joey@gnu:~/tmp/test/1>cd .. +joey@gnu:~/tmp/test>cd 2 +joey@gnu:~/tmp/test/2>cat newfile +Mon May 20 12:20:24 JEST 2013 +\"\"\"]] +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_5_73532556cfc354ad5f37a3f3a048fb32._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_5_73532556cfc354ad5f37a3f3a048fb32._comment new file mode 100644 index 0000000..008ed98 --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_5_73532556cfc354ad5f37a3f3a048fb32._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 5" + date="2013-05-20T16:09:47Z" + content=""" +\"What I want to do is to tell the assistant \"sync the contents of every file into this repository as soon as you can from whatever remote you happen to be able to copy it from\". I couldn't find a setting that would do that though.\" + +The reason you cannot find a setting that does this, is because that is the default behavior of the assistent, when correctly configured. + +Since it syncs files for everyone else, I conclude there must be an error in your configuration. You need to descibe it in detail and/or enable debugging and paste a debug log. +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_4_ca908021ab5a2a50fd0d4a7e8d12498f._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_4_ca908021ab5a2a50fd0d4a7e8d12498f._comment new file mode 100644 index 0000000..0356069 --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_4_ca908021ab5a2a50fd0d4a7e8d12498f._comment @@ -0,0 +1,9 @@ +[[!comment format=mdwn + username="http://edheil.wordpress.com/" + ip="173.162.44.162" + subject="comment 4" + date="2013-05-20T16:08:14Z" + content=""" +The broken symlinks are important to me, because they represent content in archive directories which is intentionally not present, and they allow me to prompt git annex to retrieve that content by dragging and dropping them out of the archive subdirectory. I'm not sure what the issue is with transferring content for you though. + +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_3_fd8f6938596aace60b04fb35c4069e37._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_3_fd8f6938596aace60b04fb35c4069e37._comment new file mode 100644 index 0000000..65bccfb --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_3_fd8f6938596aace60b04fb35c4069e37._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 3" + date="2013-05-20T16:06:50Z" + content=""" +If git-annex did not update its working tree until all files referenced in it had been downloaded, then it would be possible, if you have a lot of files, for changes to take a long time, or forever, to show up. I prefer the current behavior. + +In any case, is this bug report about the mechanics of how the assistant choses to update its working tree, or is it about your configuration of two repositories that are not syncing with one-another? Conflating two entirely separate issues in one bug report is a good way to add so much noise to it that nothing gets done. +"""]]
Added a comment
diff --git a/doc/install/Ubuntu/comment_1_d1c511153fe94bf33e19a1281f1c92f2._comment b/doc/install/Ubuntu/comment_1_d1c511153fe94bf33e19a1281f1c92f2._comment new file mode 100644 index 0000000..3b48bb4 --- /dev/null +++ b/doc/install/Ubuntu/comment_1_d1c511153fe94bf33e19a1281f1c92f2._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY" + nickname="Pedro" + subject="comment 1" + date="2013-05-20T15:53:25Z" + content=""" +Note that the fmarier ppa includes more than just git-annex. I've asked the author if he could segregate git-annex into a separate ppa. +"""]]
Added a comment
diff --git a/doc/forum/Ubuntu_PPA/comment_6_bd99fb70399fc58d98781a89c6d38428._comment b/doc/forum/Ubuntu_PPA/comment_6_bd99fb70399fc58d98781a89c6d38428._comment new file mode 100644 index 0000000..8252fe5 --- /dev/null +++ b/doc/forum/Ubuntu_PPA/comment_6_bd99fb70399fc58d98781a89c6d38428._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY" + nickname="Pedro" + subject="comment 6" + date="2013-05-20T15:52:40Z" + content=""" +Be careful that the fmarier ppa includes more than just git-annex. +"""]]
poll vote (/sdcard/annex)
diff --git a/doc/design/assistant/polls/Android_default_directory.mdwn b/doc/design/assistant/polls/Android_default_directory.mdwn index 0d1c65d..c94cdd7 100644 --- a/doc/design/assistant/polls/Android_default_directory.mdwn +++ b/doc/design/assistant/polls/Android_default_directory.mdwn @@ -4,4 +4,4 @@ Same as the desktop webapp, users will be able to enter a directory they want the first time they run it, but to save typing on android, anything that gets enough votes will be included in a list of choices as well. -[[!poll open=yes expandable=yes 44 "/sdcard/annex" 3 "Whole /sdcard" 4 "DCIM directory (photos and videos only)" 1 "Same as for regular git-annex. ~/annex/"]] +[[!poll open=yes expandable=yes 45 "/sdcard/annex" 3 "Whole /sdcard" 4 "DCIM directory (photos and videos only)" 1 "Same as for regular git-annex. ~/annex/"]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_2_027521e48283c68b39315bb8213f6e45._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_2_027521e48283c68b39315bb8213f6e45._comment new file mode 100644 index 0000000..9d5e07e --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_2_027521e48283c68b39315bb8213f6e45._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY" + nickname="Pedro" + subject="comment 2" + date="2013-05-20T14:37:37Z" + content=""" +I know what the broken symlinks are I just don't think they should ever happen in a direct mode repository. They're an artifact of the traditional way git-annex was run but the assistant in direct mode should never use them. Right now if one of the repositories changes a file and another finds out that has happened but hasn't synced the content yet you lose access to your file. That's not acceptable in a file sync utility. Dropbox certainly doesn't do that. What git-annex should do in this case is use the knowledge of the updated file to run a sync but before it can complete it maintain the file at its previous version. By definition direct mode should not be deleting my files and replacing them with symlinks, it should only replace existing files with newer versions of those same files. + +I also don't know why numcopies didn't work but it shouldn't be needed at all. What I want to do is to tell the assistant \"sync the contents of every file into this repository as soon as you can from whatever remote you happen to be able to copy it from\". I couldn't find a setting that would do that though. +"""]]
Added a comment
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_1_8577fdaa4d49e6241c4372b159694c9c._comment b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_1_8577fdaa4d49e6241c4372b159694c9c._comment new file mode 100644 index 0000000..5e300d5 --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default/comment_1_8577fdaa4d49e6241c4372b159694c9c._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="http://edheil.wordpress.com/" + ip="173.162.44.162" + subject="comment 1" + date="2013-05-20T13:57:59Z" + content=""" +just fyi -- *broken* symlinks represent content which git-annex knows about, but is not present on that machine. They are there even in direct mode. In indirect mode, content which is present is represented by non-broken symlinks. In direct mode, content which is present is actual files. + +I'm not sure why your setup doesn't work. It seems as if it would, from your description of it. + +Your machines are successfully syncing their knowledge about what files exist (which is stored in git), but not actually transferring the content of those files. That's why symlinks are showing up (to show that those files exist) but not the content. I would think numcopies=2 would force that to happen. +"""]]
diff --git a/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn new file mode 100644 index 0000000..a100c5a --- /dev/null +++ b/doc/bugs/Assistant_doesn__39__t_actually_sync_file_contents_by_default.mdwn @@ -0,0 +1,13 @@ +### Please describe the problem. + +I'm trying to use the assistant to replicate the basic dropbox functionality of having a synced folder between two machines. Instead of actually syncing file contents by default the assistant just creates broken symlinks. + +### What steps will reproduce the problem? + +I've setup two repositories with each other as ssh remotes and ran the assistant on each after setting them in direct mode. I can create files on each of the repositories and have them show up on the other but all that shows up is a broken link. Actual contents don't get transferred. If I do a "git annex get" I can get the contents just fine. I tried setting annex.numcopies to 2 and that didn't work either. + +What I'm missing here is some setting to tell the assistant "sync the contents of every new file". What it's doing instead is unacceptable. If I have the file in both repositories and change it in one, the other repository gets it's previous version of the file replaced by a broken symlink. From my point of view for the assistant to be a dropbox replacement it should never, under any circumstances, create a broken symlink in the sync folder. I had understood that that's what direct mode was, but it's not behaving that way right now at least. + +### What version of git-annex are you using? On what operating system? + +My basic setup for testing is two Ubuntu 12.04 LTS machines running git-annex 4.20130501
add nntp remote page
diff --git a/doc/special_remotes.mdwn b/doc/special_remotes.mdwn index 086726a..6c33b52 100644 --- a/doc/special_remotes.mdwn +++ b/doc/special_remotes.mdwn @@ -27,6 +27,7 @@ for various cloud things: * [[tahoe-lafs|forum/tips:_special__95__remotes__47__hook_with_tahoe-lafs]] * [[tips/using_box.com_as_a_special_remote]] * [[forum/special_remote_for_IMAP]] +* [[forum/nntp__47__usenet special remote]] ## Unused content on special remotes
blog for the day
diff --git a/doc/design/assistant/blog/day_268__core_monad_change.mdwn b/doc/design/assistant/blog/day_268__core_monad_change.mdwn new file mode 100644 index 0000000..2704bb0 --- /dev/null +++ b/doc/design/assistant/blog/day_268__core_monad_change.mdwn @@ -0,0 +1,9 @@ +Today I had to change the implementation of the Annex monad. The old one +turned out to be buggy around exception handling -- changes to state +recorded by code that ran in an exception handler were discarded when it +threw an exception. Changed from a StateT monad to a ReaderT with +a MVar. Really deep-level change, but it went off without a +hitch! + +Other than that it was a bug catch up day. Almost entirely caught up once +more.
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_13_56ca8590110abffeed6d826c54ca1136._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_13_56ca8590110abffeed6d826c54ca1136._comment new file mode 100644 index 0000000..64ee5e8 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_13_56ca8590110abffeed6d826c54ca1136._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 13" + date="2013-05-19T22:03:57Z" + content=""" +Ok, I've made a note that I should look into pulling in gpgtools rather than gpg into the DMG. At least if the webapp every gets a UI that allows setting up remotes that are encrypted to a gpg key. Currently the webapp avoids that because I know gpg password prompting is not sorted out everywhere. + +And also, I've made the configure script check for gpg2 if it can't find a gpg. +"""]]
update
diff --git a/doc/install/Ubuntu.mdwn b/doc/install/Ubuntu.mdwn index 9d47509..7140a4c 100644 --- a/doc/install/Ubuntu.mdwn +++ b/doc/install/Ubuntu.mdwn @@ -1,22 +1,26 @@ +## Saucy + + sudo apt-get install git-annex + ## Raring sudo apt-get install git-annex -Note: This version does not have the WebApp/[[assistant]] enabled (see [here](https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/1084693)), but is otherwise +Note: This version does not have the WebApp enabled (see [here](https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/1084693)), but is otherwise usable. ## Precise sudo apt-get install git-annex -Note: This version is too old to include the [[assistant]], but is otherwise -usable. +Note: This version is too old to include the [[assistant]] or its WebApp, +but is otherwise usable. ## Precise PPA <https://launchpad.net/~fmarier/+archive/ppa> -A newer version of git-annex, including the [[assistant]]. +A newer version of git-annex, including the [[assistant]] and WebApp. (Maintained by François Marier) sudo add-apt-repository ppa:fmarier/ppa
Allow building with gpg2.
diff --git a/Build/BundledPrograms.hs b/Build/BundledPrograms.hs
index 570af4a..ae4beed 100644
--- a/Build/BundledPrograms.hs
+++ b/Build/BundledPrograms.hs
@@ -30,7 +30,7 @@ bundledPrograms = catMaybes
#ifndef mingw32_HOST_OS
, Just "sh"
#endif
- , ifset SysConfig.gpg "gpg"
+ , SysConfig.gpg
, ifset SysConfig.curl "curl"
, ifset SysConfig.wget "wget"
, ifset SysConfig.bup "bup"
diff --git a/Build/Configure.hs b/Build/Configure.hs
index 65ba375..399af9d 100644
--- a/Build/Configure.hs
+++ b/Build/Configure.hs
@@ -31,7 +31,9 @@ tests =
, TestCase "curl" $ testCmd "curl" "curl --version >/dev/null"
, TestCase "wget" $ testCmd "wget" "wget --version >/dev/null"
, TestCase "bup" $ testCmd "bup" "bup --version >/dev/null"
- , TestCase "gpg" $ testCmd "gpg" "gpg --version >/dev/null"
+ , TestCase "gpg" $ maybeSelectCmd "gpg"
+ [ ("gpg", "--version >/dev/null")
+ , ("gpg2", "--version >/dev/null") ]
, TestCase "lsof" $ findCmdPath "lsof" "lsof"
, TestCase "ssh connection caching" getSshConnectionCaching
] ++ shaTestCases
diff --git a/Test.hs b/Test.hs
index 1274f97..f063b91 100644
--- a/Test.hs
+++ b/Test.hs
@@ -732,7 +732,7 @@ test_bup_remote env = "git-annex bup remote" ~: intmpclonerepo env $ when Build.
-- gpg is not a build dependency, so only test when it's available
test_crypto :: TestEnv -> Test
-test_crypto env = "git-annex crypto" ~: intmpclonerepo env $ when Build.SysConfig.gpg $ do
+test_crypto env = "git-annex crypto" ~: intmpclonerepo env $ whenM (Utility.Path.inPath Utility.Gpg.gpgcmd) $ do
#ifndef __WINDOWS__
Utility.Gpg.testTestHarness @? "test harness self-test failed"
Utility.Gpg.testHarness $ do
diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs
index aa4a7af..33a26e2 100644
--- a/Utility/Gpg.hs
+++ b/Utility/Gpg.hs
@@ -17,10 +17,16 @@ import System.Path
import Common
import Utility.Env
+import qualified Build.SysConfig as SysConfig
newtype KeyIds = KeyIds [String]
deriving (Ord, Eq)
+{- If a specific gpg command was found at configure time, use it.
+ - Otherwise, try to run gpg. -}
+gpgcmd :: FilePath
+gpgcmd = fromMaybe "gpg" SysConfig.gpg
+
stdParams :: [CommandParam] -> IO [String]
stdParams params = do
#ifndef __WINDOWS__
@@ -44,7 +50,7 @@ stdParams params = do
readStrict :: [CommandParam] -> IO String
readStrict params = do
params' <- stdParams params
- withHandle StdoutHandle createProcessSuccess (proc "gpg" params') $ \h -> do
+ withHandle StdoutHandle createProcessSuccess (proc gpgcmd params') $ \h -> do
hSetBinaryMode h True
hGetContentsStrict h
@@ -53,7 +59,7 @@ readStrict params = do
pipeStrict :: [CommandParam] -> String -> IO String
pipeStrict params input = do
params' <- stdParams params
- withBothHandles createProcessSuccess (proc "gpg" params') $ \(to, from) -> do
+ withBothHandles createProcessSuccess (proc gpgcmd params') $ \(to, from) -> do
hSetBinaryMode to True
hSetBinaryMode from True
hPutStr to input
@@ -84,7 +90,7 @@ feedRead params passphrase feeder reader = do
params' <- stdParams $ [Param "--batch"] ++ passphrasefd ++ params
closeFd frompipe `after`
- withBothHandles createProcessSuccess (proc "gpg" params') go
+ withBothHandles createProcessSuccess (proc gpgcmd params') go
where
go (to, from) = do
void $ forkIO $ do
diff --git a/debian/changelog b/debian/changelog
index 43bb13c..b3bea55 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,7 @@ git-annex (4.20130517) UNRELEASED; urgency=low
catching exceptions.
* Fix a zombie that could result when running a process like gpg to
read and write to it.
+ * Allow building with gpg2.
-- Joey Hess <joeyh@debian.org> Fri, 17 May 2013 11:17:03 -0400
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn b/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn
index 958727b..9bfe3ee 100644
--- a/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn
+++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn
@@ -21,3 +21,5 @@ add tinco.gpg
.. (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) ..etc
recv (resource unavailable or something) ..
+
+> [[done]]; fixed 3 bugs! --[[Joey]]
removed
diff --git a/doc/assistant/comment_1_2e9380a99bd703e92affdec4268eeb81._comment b/doc/assistant/comment_1_2e9380a99bd703e92affdec4268eeb81._comment deleted file mode 100644 index e73eed6..0000000 --- a/doc/assistant/comment_1_2e9380a99bd703e92affdec4268eeb81._comment +++ /dev/null @@ -1,9 +0,0 @@ -[[!comment format=mdwn - username="https://www.google.com/accounts/o8/id?id=AItOawnFjuvfPpi1kf6l54bxfFUm0Aw_Gf_IO0o" - nickname="Aaron" - subject="Official Raring build also does not have the Assistant enabled" - date="2013-05-19T21:52:57Z" - content=""" -It seems that the Raring build does not have the WebApp enabled and will need a PPA as well, though this will apparently be included in Saucy: -https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/1084693 -"""]]
Add note about no webapp in Raring
diff --git a/doc/install/Ubuntu.mdwn b/doc/install/Ubuntu.mdwn index 4a2796d..9d47509 100644 --- a/doc/install/Ubuntu.mdwn +++ b/doc/install/Ubuntu.mdwn @@ -2,6 +2,9 @@ sudo apt-get install git-annex +Note: This version does not have the WebApp/[[assistant]] enabled (see [here](https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/1084693)), but is otherwise +usable. + ## Precise sudo apt-get install git-annex
Added a comment: Official Raring build also does not have the Assistant enabled
diff --git a/doc/assistant/comment_1_2e9380a99bd703e92affdec4268eeb81._comment b/doc/assistant/comment_1_2e9380a99bd703e92affdec4268eeb81._comment new file mode 100644 index 0000000..e73eed6 --- /dev/null +++ b/doc/assistant/comment_1_2e9380a99bd703e92affdec4268eeb81._comment @@ -0,0 +1,9 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawnFjuvfPpi1kf6l54bxfFUm0Aw_Gf_IO0o" + nickname="Aaron" + subject="Official Raring build also does not have the Assistant enabled" + date="2013-05-19T21:52:57Z" + content=""" +It seems that the Raring build does not have the WebApp enabled and will need a PPA as well, though this will apparently be included in Saucy: +https://bugs.launchpad.net/ubuntu/+source/git-annex/+bug/1084693 +"""]]
Added a comment
diff --git a/doc/forum/exclude_files_from_annex/comment_2_03d4599fdceb3dff184eed82824674bc._comment b/doc/forum/exclude_files_from_annex/comment_2_03d4599fdceb3dff184eed82824674bc._comment new file mode 100644 index 0000000..7d8f6ce --- /dev/null +++ b/doc/forum/exclude_files_from_annex/comment_2_03d4599fdceb3dff184eed82824674bc._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawnSenxKyE_2Z6Wb-EBMO8FciyRywjx1ZiQ" + nickname="Walter" + subject="comment 2" + date="2013-05-19T21:35:37Z" + content=""" +This seems to have stopped happening, after I installed a newer version (from git) of git-annex. + +I might try and recreate it later, but for now it seems to work as expected. + +Thanks for your help. +"""]]
idea
diff --git a/doc/design/assistant/OSX.mdwn b/doc/design/assistant/OSX.mdwn index de48721..400e517 100644 --- a/doc/design/assistant/OSX.mdwn +++ b/doc/design/assistant/OSX.mdwn @@ -5,6 +5,8 @@ Misc OSX porting things: * use FSEvents to detect file changes (better than kqueue) **done** * Use OSX's "network reachability functionality" to detect when on a network <http://developer.apple.com/library/mac/#documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Intro/SC_Intro.html#//apple_ref/doc/uid/TP40001065> +* Switch from gpg to <https://gpgtools.org/>. According to a user, + this is better because it can show a dialog window for password prompts. Bugs:
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_12_41746b731eae7f280bb668c776022bcb._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_12_41746b731eae7f280bb668c776022bcb._comment new file mode 100644 index 0000000..ee27c54 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_12_41746b731eae7f280bb668c776022bcb._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 12" + date="2013-05-19T21:24:48Z" + content=""" +Yes exactly, it spawns a dialog window and overall has a very nice interface for managing gpg keys. I switched from the DMG to cabal because I couldn't get the bundled gpg to ask for my password, setting up a gpg-agent seemed pretty complicated, so I just went for the packaged approach from https://gpgtools.org/. +"""]]
moreinfo
diff --git a/doc/bugs/Can__39__t_set_repositories_directory.mdwn b/doc/bugs/Can__39__t_set_repositories_directory.mdwn index 4322b1d..bbc5bd6 100644 --- a/doc/bugs/Can__39__t_set_repositories_directory.mdwn +++ b/doc/bugs/Can__39__t_set_repositories_directory.mdwn @@ -8,3 +8,5 @@ At beginning during the webapp installation user error (git ["--git-dir=/Users/filippo/Desktop/annex/.git","--work-tree=/Users/filippo/Desktop/annex","commit-tree","4b825dc642cb6eb9a060e54bf8d69288fbee4904"] exited 128) + +[[!tag moreinfo assistant]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_11_ad13e3221ae06086e86800316912d951._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_11_ad13e3221ae06086e86800316912d951._comment new file mode 100644 index 0000000..ba2f442 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_11_ad13e3221ae06086e86800316912d951._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 11" + date="2013-05-19T21:13:41Z" + content=""" +You're certianly welcome. + +So, you did not install git-annex from the dmg? That bundles its own gpg. + +I'm curious about this passphrase thing.. Does gpgtools + gpg2 on the Mac cause it to ask for a passphrase better, like in a dialog window? Perhaps I can improve the gpg stuff bundled in the dmg.. +"""]]
Added a comment
diff --git a/doc/bugs/adding_an_rsync.net_repo_give_an_gpg_error/comment_1_f55cfc133be72ac10cae93c877c487df._comment b/doc/bugs/adding_an_rsync.net_repo_give_an_gpg_error/comment_1_f55cfc133be72ac10cae93c877c487df._comment new file mode 100644 index 0000000..7daf6b7 --- /dev/null +++ b/doc/bugs/adding_an_rsync.net_repo_give_an_gpg_error/comment_1_f55cfc133be72ac10cae93c877c487df._comment @@ -0,0 +1,21 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 1" + date="2013-05-19T21:09:54Z" + content=""" +I'm seeing some indications (this bug and also the [[git_annex_fork_bombs_on_gpg_file]] bug) that gpg is somehow broken on OSX. + +Aha. I just tried on my build box, and: + +<pre> +oberon:~ joeyh$ gpg +dyld: warning, LC_RPATH @loader_path/../lib in /usr/local/bin/gpg being ignored in restricted program because of @loader_path +dyld: Library not loaded: @rpath/libz.1.2.7.dylib + Referenced from: /usr/local/bin/gpg + Reason: image not found +</pre> + +So, I'm packing up a broken gpg. Need to fix that then.. + +"""]]
close; was wrong password
diff --git a/doc/bugs/Adding_box.com_remote_on_Android_fails_for_me.mdwn b/doc/bugs/Adding_box.com_remote_on_Android_fails_for_me.mdwn index 9cdf363..62c6a37 100644 --- a/doc/bugs/Adding_box.com_remote_on_Android_fails_for_me.mdwn +++ b/doc/bugs/Adding_box.com_remote_on_Android_fails_for_me.mdwn @@ -15,3 +15,6 @@ Fill in the box.com add remote form. Username=username, password=password, "shar ### Please provide any additional information below. Didn't find a .git/annex/debug.log + +> This error seems entirely consistent with you entering the wrong password. +> [[done]] --[[Joey]]
Added a comment
diff --git a/doc/design/assistant/blog/day_259__Android_dominos_toppling/comment_3_eed7792f6142f3fc74d3c384bb16559b._comment b/doc/design/assistant/blog/day_259__Android_dominos_toppling/comment_3_eed7792f6142f3fc74d3c384bb16559b._comment new file mode 100644 index 0000000..245ae7a --- /dev/null +++ b/doc/design/assistant/blog/day_259__Android_dominos_toppling/comment_3_eed7792f6142f3fc74d3c384bb16559b._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 3" + date="2013-05-19T20:56:25Z" + content=""" +For the record, there was a bug with XMPP and SRV records. This got fixed in time for the last release. +"""]]
removed
diff --git a/doc/special_remotes/bup/comment_5_61b32f9ee00e6016443a1cf10273959c._comment b/doc/special_remotes/bup/comment_5_61b32f9ee00e6016443a1cf10273959c._comment deleted file mode 100644 index 66a4396..0000000 --- a/doc/special_remotes/bup/comment_5_61b32f9ee00e6016443a1cf10273959c._comment +++ /dev/null @@ -1,10 +0,0 @@ -[[!comment format=mdwn - username="http://joeyh.name/" - nickname="joey" - subject="comment 5" - date="2013-03-13T16:05:57Z" - content=""" -I don't plan to support creating bup spefial remotes in the assistant, currently. Of course the assistant can use bup special remotes you set up. - -Your two bup repos would be synced using bup-split. -"""]]
Added a comment
diff --git a/doc/forum/nntp__47__usenet_special_remote/comment_1_171a0b95b1f95cfd82073e88bdefaab9._comment b/doc/forum/nntp__47__usenet_special_remote/comment_1_171a0b95b1f95cfd82073e88bdefaab9._comment new file mode 100644 index 0000000..ff14f6f --- /dev/null +++ b/doc/forum/nntp__47__usenet_special_remote/comment_1_171a0b95b1f95cfd82073e88bdefaab9._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 1" + date="2013-05-19T20:49:06Z" + content=""" +I think it's a neat idea. I can't see using it for my own data due to retention, but if I had a use case where I wanted to spread data around and didn't care if it vanished after X months, I can see using it. + +I think you should publish the details, if getting it to a state others can use is not too much work, +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_10_6e29b60cd77f3288e33ad270f95f410e._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_10_6e29b60cd77f3288e33ad270f95f410e._comment new file mode 100644 index 0000000..0338219 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_10_6e29b60cd77f3288e33ad270f95f410e._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 10" + date="2013-05-19T20:45:53Z" + content=""" +Alright! So first the issue was that gpg was asking for a passphrase. I fixed that by installing gpgtools for mac, but that one doesn't have a gpg executable, instead it has gpg2. I hadn't noticed that, so that's why it was saying 'resource vanished' without a proper error message, it simply couldn't find the gpg executable. I did ln -s /usr/local/bin/gpg2 /usr/local/bin/gpg, and now it's happily copying files. Thanks for helping me find out what was wrong! +"""]]
move todo item that wasn't to the forum, with a better title
diff --git a/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents.mdwn b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents.mdwn new file mode 100644 index 0000000..4f24117 --- /dev/null +++ b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents.mdwn @@ -0,0 +1,7 @@ +It would be nice to have a way to drop files without leaving broken symlinks around, at least while in direct mode. + +Here is my user case. I have a collection of music CDs ripped in FLAC formats. At the same time I convert all these files to MP3 files to that I can use them in various other devices and to save space. + +The problem is that if I `git annex drop` the FLAC files once they are converted and copied, they leave broken symlinks around; this result in various annoying error messages in almost all the music playback I tried. At the same time, if I `rm` or `git rm` these symlinks, the content of these files will be removed also from the remotes as they are signalled as no longer wanted. + +Couldn't git-annex keep a separate index of files that have been removed but are meant to be kept? diff --git a/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_1_cba76311e146dabb8ffc789bf4c8b714._comment b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_1_cba76311e146dabb8ffc789bf4c8b714._comment new file mode 100644 index 0000000..c490c82 --- /dev/null +++ b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_1_cba76311e146dabb8ffc789bf4c8b714._comment @@ -0,0 +1,14 @@ +[[!comment format=mdwn + username="http://svario.it/gioele" + ip="2001:1418:100:262::2" + subject="Maybe using branches?" + date="2013-05-16T10:22:48Z" + content=""" +A suggestion from #git-annex: + +> <mhameed> i think others are already doing this, using branches, but not sure if we have a writeup/tutorial of it +> +> <mhameed> gioele: instead of working on master branch, switch to laptop branch, git rm the files that are not wanted and commit +> +> <gioele> mhameed: I'm lazy, I'd like git-annex to do that for me :) +"""]] diff --git a/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment new file mode 100644 index 0000000..f0b20f1 --- /dev/null +++ b/doc/forum/how_to_remove_files_and_symlinks_but_keep_historical_file_contents/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment @@ -0,0 +1,40 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 2" + date="2013-05-19T20:43:43Z" + content=""" +The original poster seems to have a misunderstanding of what git-annex does with the content of files. Deleting a file does not remove the content of the file. You can always use git to check out a previous version of a file, and the content from the annex will still be there (or you can `git annex get` it to get it from whereever git-annex stored the content). + +The only exception to this rule is is you, manually, chose to run `git annex unused` and then `git annex dropunused`. That can delete the contents of files, when no branch or tag refers to them. As long as some branch refers to the content of the files, even if it's not the currently checked out branch, the file content is retained. + +So a branch *is* the \"index of files that have been removed but are wanted to be kept\". + +For example, you could do: + +[[!format sh \"\"\" +git checkout -b keepflacs + +cdrom-rip-command +git annex add *.flac +git commit -m \"ripped a cd\" +flac-convert-command +git annex add *.mp3 +git commit -m \"converted to mp3\" + +git checkout master +git merge keepflacs +git rm *.flac +git commit -m \"removed flac files from this branch. They are still available in the keepflacs branch\" +\"\"\"]] + +As long as you always switch to the keepflacs branch to add flac files, and never merge the master branch into keepflacs, +but only merge keepflacs into master, keepflacs will have every flac file you have ripped. And so git-annex will retain those files +even when you `git annex unused; git-annex dropunused`. + +Or, just make a promise to yourself that you'll never run `git-annex unused`, similarly to how you'd probably never run `rm -rf .git/objects/$rand`, and you don't need the branches; like git, git-annex will retain all data that has ever been checked into it. + +(The branches are still a good idea. For one thing, they let you run `git annex fsck` and other repository maintenance commands with the keepflacs branch checked out.) + +I am going to move this thread to the [[forum]], because it's not really a TODO item, but is something others may want to read. +"""]] diff --git a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote.mdwn b/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote.mdwn deleted file mode 100644 index 4f24117..0000000 --- a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote.mdwn +++ /dev/null @@ -1,7 +0,0 @@ -It would be nice to have a way to drop files without leaving broken symlinks around, at least while in direct mode. - -Here is my user case. I have a collection of music CDs ripped in FLAC formats. At the same time I convert all these files to MP3 files to that I can use them in various other devices and to save space. - -The problem is that if I `git annex drop` the FLAC files once they are converted and copied, they leave broken symlinks around; this result in various annoying error messages in almost all the music playback I tried. At the same time, if I `rm` or `git rm` these symlinks, the content of these files will be removed also from the remotes as they are signalled as no longer wanted. - -Couldn't git-annex keep a separate index of files that have been removed but are meant to be kept? diff --git a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_1_cba76311e146dabb8ffc789bf4c8b714._comment b/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_1_cba76311e146dabb8ffc789bf4c8b714._comment deleted file mode 100644 index c490c82..0000000 --- a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_1_cba76311e146dabb8ffc789bf4c8b714._comment +++ /dev/null @@ -1,14 +0,0 @@ -[[!comment format=mdwn - username="http://svario.it/gioele" - ip="2001:1418:100:262::2" - subject="Maybe using branches?" - date="2013-05-16T10:22:48Z" - content=""" -A suggestion from #git-annex: - -> <mhameed> i think others are already doing this, using branches, but not sure if we have a writeup/tutorial of it -> -> <mhameed> gioele: instead of working on master branch, switch to laptop branch, git rm the files that are not wanted and commit -> -> <gioele> mhameed: I'm lazy, I'd like git-annex to do that for me :) -"""]] diff --git a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment b/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment deleted file mode 100644 index f0b20f1..0000000 --- a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment +++ /dev/null @@ -1,40 +0,0 @@ -[[!comment format=mdwn - username="http://joeyh.name/" - nickname="joey" - subject="comment 2" - date="2013-05-19T20:43:43Z" - content=""" -The original poster seems to have a misunderstanding of what git-annex does with the content of files. Deleting a file does not remove the content of the file. You can always use git to check out a previous version of a file, and the content from the annex will still be there (or you can `git annex get` it to get it from whereever git-annex stored the content). - -The only exception to this rule is is you, manually, chose to run `git annex unused` and then `git annex dropunused`. That can delete the contents of files, when no branch or tag refers to them. As long as some branch refers to the content of the files, even if it's not the currently checked out branch, the file content is retained. - -So a branch *is* the \"index of files that have been removed but are wanted to be kept\". - -For example, you could do: - -[[!format sh \"\"\" -git checkout -b keepflacs - -cdrom-rip-command -git annex add *.flac -git commit -m \"ripped a cd\" -flac-convert-command -git annex add *.mp3 -git commit -m \"converted to mp3\" - -git checkout master -git merge keepflacs -git rm *.flac -git commit -m \"removed flac files from this branch. They are still available in the keepflacs branch\" -\"\"\"]] - -As long as you always switch to the keepflacs branch to add flac files, and never merge the master branch into keepflacs, -but only merge keepflacs into master, keepflacs will have every flac file you have ripped. And so git-annex will retain those files -even when you `git annex unused; git-annex dropunused`. - -Or, just make a promise to yourself that you'll never run `git-annex unused`, similarly to how you'd probably never run `rm -rf .git/objects/$rand`, and you don't need the branches; like git, git-annex will retain all data that has ever been checked into it. - -(The branches are still a good idea. For one thing, they let you run `git annex fsck` and other repository maintenance commands with the keepflacs branch checked out.) - -I am going to move this thread to the [[forum]], because it's not really a TODO item, but is something others may want to read. -"""]]
Added a comment
diff --git a/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment b/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment new file mode 100644 index 0000000..f0b20f1 --- /dev/null +++ b/doc/todo/wishlist:_remove_files_and_symlinks_but_keep_in_remote/comment_2_8d99c50fc1347367ccc0714e8d1af385._comment @@ -0,0 +1,40 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 2" + date="2013-05-19T20:43:43Z" + content=""" +The original poster seems to have a misunderstanding of what git-annex does with the content of files. Deleting a file does not remove the content of the file. You can always use git to check out a previous version of a file, and the content from the annex will still be there (or you can `git annex get` it to get it from whereever git-annex stored the content). + +The only exception to this rule is is you, manually, chose to run `git annex unused` and then `git annex dropunused`. That can delete the contents of files, when no branch or tag refers to them. As long as some branch refers to the content of the files, even if it's not the currently checked out branch, the file content is retained. + +So a branch *is* the \"index of files that have been removed but are wanted to be kept\". + +For example, you could do: + +[[!format sh \"\"\" +git checkout -b keepflacs + +cdrom-rip-command +git annex add *.flac +git commit -m \"ripped a cd\" +flac-convert-command +git annex add *.mp3 +git commit -m \"converted to mp3\" + +git checkout master +git merge keepflacs +git rm *.flac +git commit -m \"removed flac files from this branch. They are still available in the keepflacs branch\" +\"\"\"]] + +As long as you always switch to the keepflacs branch to add flac files, and never merge the master branch into keepflacs, +but only merge keepflacs into master, keepflacs will have every flac file you have ripped. And so git-annex will retain those files +even when you `git annex unused; git-annex dropunused`. + +Or, just make a promise to yourself that you'll never run `git-annex unused`, similarly to how you'd probably never run `rm -rf .git/objects/$rand`, and you don't need the branches; like git, git-annex will retain all data that has ever been checked into it. + +(The branches are still a good idea. For one thing, they let you run `git annex fsck` and other repository maintenance commands with the keepflacs branch checked out.) + +I am going to move this thread to the [[forum]], because it's not really a TODO item, but is something others may want to read. +"""]]
Added a comment
diff --git a/doc/forum/exclude_files_from_annex/comment_1_82e7de5e631bae3b347815586274a936._comment b/doc/forum/exclude_files_from_annex/comment_1_82e7de5e631bae3b347815586274a936._comment
new file mode 100644
index 0000000..23ad6aa
--- /dev/null
+++ b/doc/forum/exclude_files_from_annex/comment_1_82e7de5e631bae3b347815586274a936._comment
@@ -0,0 +1,25 @@
+[[!comment format=mdwn
+ username="http://joeyh.name/"
+ nickname="joey"
+ subject="comment 1"
+ date="2013-05-19T20:29:14Z"
+ content="""
+I don't seem to be seeing the problem you describe in direct mode:
+
+[[!format sh \"\"\"
+
+joey@gnu:~/tmp/r2>git init
+joey@gnu:~/tmp/r2>git annex init
+joey@gnu:~/tmp/r2>git config annex.largefiles \"largerthan=100kb and not (include=*.c or include=*.h)\"
+joey@gnu:~/tmp/r2>git annex direct
+joey@gnu:~/tmp/r2>git annex assistant
+joey@gnu:~/tmp/r2>dd if=/dev/urandom of=bigfile bs=1M count=1
+1+0 records in
+1+0 records out
+joey@gnu:~/tmp/r2>echo \"main() { printf(\"hello, world!\n\") }\" > hello.c
+\"\"\"]]
+
+At that point, the bigfile was annexed, and the hello.c file was checked into git as a regular file.
+
+Are you sure you have annex.largefiles correctly configured to exclude the files you don't want to be annexed?
+"""]]
Added a comment
diff --git a/doc/forum/Running_assistant_steps_manually/comment_1_e14e0a1d55d01cb4f67a94bbe349b872._comment b/doc/forum/Running_assistant_steps_manually/comment_1_e14e0a1d55d01cb4f67a94bbe349b872._comment new file mode 100644 index 0000000..6629ff0 --- /dev/null +++ b/doc/forum/Running_assistant_steps_manually/comment_1_e14e0a1d55d01cb4f67a94bbe349b872._comment @@ -0,0 +1,20 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 1" + date="2013-05-19T20:18:11Z" + content=""" +Essentially, you want to run this: + +<pre> +git annex add +git annex sync +for remote in $(git remote); do + git annex copy --auto --to $remote + git annex get --auto --from $remote +done +git annex drop --auto +</pre> + +Of course this cannot sync with XMPP remotes. Otherwise it will get you to essentially the same place as the assistant. +"""]]
Added a comment
diff --git a/doc/bugs/Can__39__t_set_repositories_directory/comment_1_beb5d5b66a8d0fab12be44a7d877e9b0._comment b/doc/bugs/Can__39__t_set_repositories_directory/comment_1_beb5d5b66a8d0fab12be44a7d877e9b0._comment new file mode 100644 index 0000000..d769219 --- /dev/null +++ b/doc/bugs/Can__39__t_set_repositories_directory/comment_1_beb5d5b66a8d0fab12be44a7d877e9b0._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 1" + date="2013-05-19T20:12:18Z" + content=""" +There has never been a git-annex version 0.0.1. What is the real version you have installed? +"""]]
Added a comment
diff --git a/doc/Android/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment b/doc/Android/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment new file mode 100644 index 0000000..1c4acea --- /dev/null +++ b/doc/Android/comment_6_7b9523ddb20dc4a929e556c3ed0c7406._comment @@ -0,0 +1,18 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 6" + date="2013-05-19T20:06:56Z" + content=""" +@yarikoptic, there is a process you can perform that will help me determine what's going on. + +You should be able to get the git-annex app to let you into a shell. You can do this by starting the app, and then going into its configuration menu, to Preferences, selecting \"Command Line\", and changing it to run \"/system/bin/sh\" + +Then when you open a new window in the git-annex app, you'll be at a shell prompt. From there, you can run: + +ls -ld /data/data/ga.androidterm + +I'm interested to know a) whether the directory exists and b) what permissions and owner it has. On my tablet, I get back \"drwxr-x--x app_39 app_39\" .. and if I run `id` in the shell, it tells me it's running as `app_39`. + +My guess is the directory probably does exist, but cannot be written to by the app. If you're able to verify that, the next step will be to investigate if there is some other directory that the app can write to. It needs to be able to write to someplace that is not on the `/sdcard` to install itself. +"""]]
Added a comment: Problems syncing with box.com
diff --git a/doc/forum/Problems_syncing_with_box.com/comment_2_cd18f33647aebc04af5469e4ce1fbcd2._comment b/doc/forum/Problems_syncing_with_box.com/comment_2_cd18f33647aebc04af5469e4ce1fbcd2._comment new file mode 100644 index 0000000..d156622 --- /dev/null +++ b/doc/forum/Problems_syncing_with_box.com/comment_2_cd18f33647aebc04af5469e4ce1fbcd2._comment @@ -0,0 +1,11 @@ +[[!comment format=mdwn + username="tomas" + ip="188.167.111.235" + subject="Problems syncing with box.com" + date="2013-05-19T19:56:09Z" + content=""" +Thanks for the answer Joey. +My setup is really 2 PCs that are usually not turned on at the same time (usually) and are unable to connect directly (usually). I've dropped box.com because there are bugs. When I sync a file, I see a broken link sometimes. That happens even in situation when the two PCs see each other. Other repos work as expected. So I assume this is a box.com issue. I tried to remove the box repo from both sides, but it is still in 'cleaning out' state even after few days and a lot of daemon restarts. I also have a queue to box. If I delete the transfers, they would appear later. Any way of sorting that out? +I know that reporting bugs like this is not really efficient. What would be the best way to make it reproducible? E.g. using vagrant and two VMs? + +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_9_7d80f131f43312bb061df2be7fa956ef._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_9_7d80f131f43312bb061df2be7fa956ef._comment new file mode 100644 index 0000000..ff81f53 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_9_7d80f131f43312bb061df2be7fa956ef._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 9" + date="2013-05-19T19:53:04Z" + content=""" +I've fixed things so it will not pile up zombie processes. It'll still fail to send stuff if gpg is broken, but it'll fail more nicely now. + +We still need to find out why gpg is failing to run on your system.. +"""]]
Added a comment
diff --git a/doc/Android/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment b/doc/Android/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment new file mode 100644 index 0000000..d29a590 --- /dev/null +++ b/doc/Android/comment_5_9d78009435736a178d5a3f5a9bc0ed6a._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 5" + date="2013-05-19T19:46:14Z" + content=""" +@Chris, that is a known bug: [[bugs/Android_app_permission_denial_on_startup]] +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_8_178fd4e4d6abbca192fcd6d592615fca._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_8_178fd4e4d6abbca192fcd6d592615fca._comment new file mode 100644 index 0000000..38b136b --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_8_178fd4e4d6abbca192fcd6d592615fca._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 8" + date="2013-05-19T19:35:51Z" + content=""" +I've fixed the repeated \"(gpg)\" problem. But that is not the real problem... + +Looks to me like there is a problem with running gpg to extract the encryption key of the repository. I can cause the same \"resource vanished\" message if I make gpg exit 1 immediately when it starts. I also managed to get 3 zombies when failing to send 100 files. Although in my case they were gpg zombies, not git-annex zombies. + +Can you run `gpg` manually at the command line? If you installed git-annex from the OSX dmg file, you need to have used \"runshell\" to get the gpg that's included in it onto the PATH before you do this. +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_7_a3aa4231a82917c56cbdf52b65db7133._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_7_a3aa4231a82917c56cbdf52b65db7133._comment new file mode 100644 index 0000000..16961af --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_7_a3aa4231a82917c56cbdf52b65db7133._comment @@ -0,0 +1,21 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 7" + date="2013-05-19T19:27:03Z" + content=""" +Hi Joey thanks for working with me on this. The result from copying one file over is 'resource vanished': + + [2013-05-19 21:24:53 CEST] read: git [\"--git-dir=/Users/tinco/Documents/.git\",\"--work-tree=/Users/tinco/Documents\",\"show-ref\",\"git-annex\"] + [2013-05-19 21:24:53 CEST] read: git [\"--git-dir=/Users/tinco/Documents/.git\",\"--work-tree=/Users/tinco/Documents\",\"show-ref\",\"--hash\",\"refs/heads/git-annex\"] + [2013-05-19 21:24:53 CEST] read: git [\"--git-dir=/Users/tinco/Documents/.git\",\"--work-tree=/Users/tinco/Documents\",\"log\",\"refs/heads/git-annex..f0523a06e2eb7217d98fe2b9f6ec5afa724ccd92\",\"--oneline\",\"-n1\"] + [2013-05-19 21:24:53 CEST] chat: git [\"--git-dir=/Users/tinco/Documents/.git\",\"--work-tree=/Users/tinco/Documents\",\"cat-file\",\"--batch\"] + [2013-05-19 21:24:53 CEST] read: git [\"--git-dir=/Users/tinco/Documents/.git\",\"--work-tree=/Users/tinco/Documents\",\"ls-files\",\"--cached\",\"-z\",\"--\",\"About Stacks.pdf\"] + copy About Stacks.pdf (gpg) [2013-05-19 21:24:53 CEST] chat: gpg [\"--quiet\",\"--trust-model\",\"always\",\"--decrypt\"] + + git-annex: fd:12: hClose: resource vanished (Broken pipe) + failed + git-annex: copy: 1 failed + + +"""]]
Added a comment
diff --git a/doc/design/assistant/blog/day_265__correctness/comment_3_df57628a8969af2995732e7ea2a0fae3._comment b/doc/design/assistant/blog/day_265__correctness/comment_3_df57628a8969af2995732e7ea2a0fae3._comment new file mode 100644 index 0000000..27bee61 --- /dev/null +++ b/doc/design/assistant/blog/day_265__correctness/comment_3_df57628a8969af2995732e7ea2a0fae3._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 3" + date="2013-05-19T19:12:59Z" + content=""" +git-annex can use any xmpp server. The only thing that would need to be changed if google talk went away tomorrow is changing some text that suggests entering one's gmail address, to some other text that suggests some other xmpp server to use. + +However, I am skeptical about echo chamber conclusions (and/or tech press) about what google is, or is not doing, or is or is not planning to do. +"""]]
close
diff --git a/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn b/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn index 2939b15..a6fdab0 100644 --- a/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn +++ b/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn @@ -28,3 +28,15 @@ I expect it to confirm the file is committed, instead I get the error message: Ubuntu 13.04, using the PPA by marcier linked on the branchable website. +> I don't think this is something I want to change.. `git-annex init` +> installs a pre-commit hook that runs `git annex fix`. If git-annex +> is removed that hook is left behind to fail. However, if you were really +> using git-annex in the repo, that's the least of your troubles. If you were +> using git-annex in the repo and stopped, then you should run `git annex uninit` to remove the hook. +> +> The only change I could make is to have the hook check if git-annex +> is in PATH before trying to run it. But this adds time and complexity +> to the usual case for a edge case. And keeps cruft around in the edge case +> rather than informing you of the problem. +> +> [[done]] --[[Joey]]
Added a comment
diff --git a/doc/forum/Check_when_your_last_fsck_was__63__/comment_1_ee98a1fcd796fe4fd7af6f77d0c1837d._comment b/doc/forum/Check_when_your_last_fsck_was__63__/comment_1_ee98a1fcd796fe4fd7af6f77d0c1837d._comment new file mode 100644 index 0000000..ae8ffe4 --- /dev/null +++ b/doc/forum/Check_when_your_last_fsck_was__63__/comment_1_ee98a1fcd796fe4fd7af6f77d0c1837d._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 1" + date="2013-05-19T18:50:06Z" + content=""" +You're quite right. that info is stored in `.git/annex/fsckstate`. The timestamp of the file is when the last incremental fsck was started. The contents of the file is the same date, represented as seconds from epoch. + +That is only written to when doing an incremental fsck though. A non-incremental fsck does not touch the file. +"""]]
diff --git a/doc/forum/Check_when_your_last_fsck_was__63__.mdwn b/doc/forum/Check_when_your_last_fsck_was__63__.mdwn index 44bb2e5..4a655cc 100644 --- a/doc/forum/Check_when_your_last_fsck_was__63__.mdwn +++ b/doc/forum/Check_when_your_last_fsck_was__63__.mdwn @@ -1,4 +1,4 @@ Hey Joey, - Is there a way to see when the last fsck was? I know about --incremental and the related options, but sometimes I'd like to know when the last time I fsck'd a file (or even the whole repo) was. There doesn't seem to be a command line option for it, but I know that info is saved somewhere... + Is there a way to see when the last fsck was? I know about --incremental and the related options, but sometimes I'd like to know when the last time I fsck'd a file (or even the whole repo) was. There doesn't seem to be a command line option for it, but I know that info is saved somewhere...maybe this could be part of 'git annex status'? -<insert words of gratitude and encouragement> +$(words of gratitude and encouragement)
diff --git a/doc/forum/Check_when_your_last_fsck_was__63__.mdwn b/doc/forum/Check_when_your_last_fsck_was__63__.mdwn new file mode 100644 index 0000000..44bb2e5 --- /dev/null +++ b/doc/forum/Check_when_your_last_fsck_was__63__.mdwn @@ -0,0 +1,4 @@ +Hey Joey, + Is there a way to see when the last fsck was? I know about --incremental and the related options, but sometimes I'd like to know when the last time I fsck'd a file (or even the whole repo) was. There doesn't seem to be a command line option for it, but I know that info is saved somewhere... + +<insert words of gratitude and encouragement>
Switch to MonadCatchIO-transformers for better handling of state while catching exceptions.
As seen in this bug report, the lifted exception handling using the StateT
monad throws away state changes when an action throws an exception.
http://git-annex.branchable.com/bugs/git_annex_fork_bombs_on_gpg_file/
.. Which can result in cached values being redundantly calculated, or other
possibly worse bugs when the annex state gets out of sync with reality.
This switches from a StateT AnnexState to a ReaderT (MVar AnnexState).
All changes to the state go via the MVar. So when an Annex action is
running inside an exception handler, and it makes some changes, they
immediately go into affect in the MVar. If it then throws an exception
(or even crashes its thread!), the state changes are still in effect.
The MonadCatchIO-transformers change is actually only incidental.
I could have kept on using lifted-base for the exception handling.
However, I'd have needed to write a new instance of MonadBaseControl
for the new monad.. and I didn't write the old instance.. I begged Bas
and he kindly sent it to me. Happily, MonadCatchIO-transformers is
able to derive a MonadCatchIO instance for my monad.
This is a deep level change. It passes the test suite! What could it break?
Well.. The most likely breakage would be to code that runs an Annex action
in an exception handler, and *wants* state changes to be thrown away.
Perhaps the state changes leaves the state inconsistent, or wrong. Since
there are relatively few places in git-annex that catch exceptions in the
Annex monad, and the AnnexState is generally just used to cache calculated
data, this is unlikely to be a problem.
Oh yeah, this change also makes Assistant.Types.ThreadedMonad a bit
redundant. It's now entirely possible to run concurrent Annex actions in
different threads, all sharing access to the same state! The ThreadedMonad
just adds some extra work on top of that, with its own MVar, and avoids
such actions possibly stepping on one-another's toes. I have not gotten
rid of it, but might try that later. Being able to run concurrent Annex
actions would simplify parts of the Assistant code.
As seen in this bug report, the lifted exception handling using the StateT
monad throws away state changes when an action throws an exception.
http://git-annex.branchable.com/bugs/git_annex_fork_bombs_on_gpg_file/
.. Which can result in cached values being redundantly calculated, or other
possibly worse bugs when the annex state gets out of sync with reality.
This switches from a StateT AnnexState to a ReaderT (MVar AnnexState).
All changes to the state go via the MVar. So when an Annex action is
running inside an exception handler, and it makes some changes, they
immediately go into affect in the MVar. If it then throws an exception
(or even crashes its thread!), the state changes are still in effect.
The MonadCatchIO-transformers change is actually only incidental.
I could have kept on using lifted-base for the exception handling.
However, I'd have needed to write a new instance of MonadBaseControl
for the new monad.. and I didn't write the old instance.. I begged Bas
and he kindly sent it to me. Happily, MonadCatchIO-transformers is
able to derive a MonadCatchIO instance for my monad.
This is a deep level change. It passes the test suite! What could it break?
Well.. The most likely breakage would be to code that runs an Annex action
in an exception handler, and *wants* state changes to be thrown away.
Perhaps the state changes leaves the state inconsistent, or wrong. Since
there are relatively few places in git-annex that catch exceptions in the
Annex monad, and the AnnexState is generally just used to cache calculated
data, this is unlikely to be a problem.
Oh yeah, this change also makes Assistant.Types.ThreadedMonad a bit
redundant. It's now entirely possible to run concurrent Annex actions in
different threads, all sharing access to the same state! The ThreadedMonad
just adds some extra work on top of that, with its own MVar, and avoids
such actions possibly stepping on one-another's toes. I have not gotten
rid of it, but might try that later. Being able to run concurrent Annex
actions would simplify parts of the Assistant code.
diff --git a/Annex.hs b/Annex.hs
index f9cbfef..b0a6789 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -1,6 +1,6 @@
{- git-annex monad
-
- - Copyright 2010-2012 Joey Hess <joey@kitenet.net>
+ - Copyright 2010-2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@@ -16,7 +16,6 @@ module Annex (
newState,
run,
eval,
- exec,
getState,
changeState,
setFlag,
@@ -35,10 +34,10 @@ module Annex (
withCurrentState,
) where
-import "mtl" Control.Monad.State.Strict
-import Control.Monad.Trans.Control (StM, MonadBaseControl, liftBaseWith, restoreM)
-import Control.Monad.Base (liftBase, MonadBase)
+import "mtl" Control.Monad.Reader
+import "MonadCatchIO-transformers" Control.Monad.CatchIO
import System.Posix.Types (Fd)
+import Control.Concurrent
import Common
import qualified Git
@@ -56,32 +55,24 @@ import Types.TrustLevel
import Types.Group
import Types.Messages
import Types.UUID
-import Utility.State
import qualified Utility.Matcher
import qualified Data.Map as M
import qualified Data.Set as S
--- git-annex's monad
-newtype Annex a = Annex { runAnnex :: StateT AnnexState IO a }
+{- git-annex's monad is a ReaderT around an AnnexState stored in a MVar.
+ - This allows modifying the state in an exception-safe fashion.
+ - The MVar is not exposed outside this module.
+ -}
+newtype Annex a = Annex { runAnnex :: ReaderT (MVar AnnexState) IO a }
deriving (
Monad,
MonadIO,
- MonadState AnnexState,
+ MonadReader (MVar AnnexState),
+ MonadCatchIO,
Functor,
Applicative
)
-instance MonadBase IO Annex where
- liftBase = Annex . liftBase
-
-instance MonadBaseControl IO Annex where
- newtype StM Annex a = StAnnex (StM (StateT AnnexState IO) a)
- liftBaseWith f = Annex $ liftBaseWith $ \runInIO ->
- f $ liftM StAnnex . runInIO . runAnnex
- restoreM = Annex . restoreM . unStAnnex
- where
- unStAnnex (StAnnex st) = st
-
type Matcher a = Either [Utility.Matcher.Token a] (Utility.Matcher.Matcher a)
data FileInfo = FileInfo
@@ -156,13 +147,32 @@ newState gitrepo = AnnexState
new :: Git.Repo -> IO AnnexState
new = newState <$$> Git.Config.read
-{- performs an action in the Annex monad -}
+{- Performs an action in the Annex monad from a starting state,
+ - returning a new state. -}
run :: AnnexState -> Annex a -> IO (a, AnnexState)
-run s a = runStateT (runAnnex a) s
+run s a = do
+ mvar <- newMVar s
+ r <- runReaderT (runAnnex a) mvar
+ s' <- takeMVar mvar
+ return (r, s')
+
+{- Performs an action in the Annex monad from a starting state,
+ - and throws away the new state. -}
eval :: AnnexState -> Annex a -> IO a
-eval s a = evalStateT (runAnnex a) s
-exec :: AnnexState -> Annex a -> IO AnnexState
-exec s a = execStateT (runAnnex a) s
+eval s a = do
+ mvar <- newMVar s
+ runReaderT (runAnnex a) mvar
+
+getState :: (AnnexState -> v) -> Annex v
+getState selector = do
+ mvar <- ask
+ s <- liftIO $ readMVar mvar
+ return $ selector s
+
+changeState :: (AnnexState -> AnnexState) -> Annex ()
+changeState modifier = do
+ mvar <- ask
+ liftIO $ modifyMVar_ mvar $ return . modifier
{- Sets a flag to True -}
setFlag :: String -> Annex ()
@@ -204,6 +214,7 @@ inRepo a = liftIO . a =<< gitRepo
fromRepo :: (Git.Repo -> a) -> Annex a
fromRepo a = a <$> gitRepo
+{- Calculates a value from an annex's git repository and its GitConfig. -}
calcRepo :: (Git.Repo -> GitConfig -> IO a) -> Annex a
calcRepo a = do
s <- getState id
diff --git a/Annex/Exception.hs b/Annex/Exception.hs
index de6a236..f06f568 100644
--- a/Annex/Exception.hs
+++ b/Annex/Exception.hs
@@ -1,36 +1,37 @@
{- exception handling in the git-annex monad
-
- - Copyright 2011 Joey Hess <joey@kitenet.net>
+ - Note that when an Annex action fails and the exception is handled
+ - by these functions, any changes the action has made to the
+ - AnnexState are retained. This works because the Annex monad
+ - internally stores the AnnexState in a MVar.
+ -
+ - Copyright 2011-2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Annex.Exception (
bracketIO,
- handle,
tryAnnex,
throw,
+ catchAnnex,
) where
-import Control.Exception.Lifted (handle, try)
-import Control.Monad.Trans.Control (liftBaseOp)
-import Control.Exception hiding (handle, try, throw)
+import Prelude hiding (catch)
+import "MonadCatchIO-transformers" Control.Monad.CatchIO (bracket, try, throw, catch)
+import Control.Exception hiding (handle, try, throw, bracket, catch)
import Common.Annex
-{- Runs an Annex action, with setup and cleanup both in the IO monad.
- -
- - Warning: Currently if the Annex action fails, any changes it has made
- - to Annex state are discarded.
- -}
+{- Runs an Annex action, with setup and cleanup both in the IO monad. -}
bracketIO :: IO c -> (c -> IO b) -> Annex a -> Annex a
bracketIO setup cleanup go =
- liftBaseOp (Control.Exception.bracket setup cleanup) (const go)
+ bracket (liftIO setup) (liftIO . cleanup) (const go)
{- try in the Annex monad -}
tryAnnex :: Annex a -> Annex (Either SomeException a)
tryAnnex = try
-{- Throws an exception in the Annex monad. -}
-throw :: Control.Exception.Exception e => e -> Annex a
-throw = liftIO . throwIO
+{- catch in the Annex monad -}
+catchAnnex :: Exception e => Annex a -> (e -> Annex a) -> Annex a
+catchAnnex = catch
diff --git a/Assistant/Monad.hs b/Assistant/Monad.hs
index b8a4715..4b73061 100644
--- a/Assistant/Monad.hs
+++ b/Assistant/Monad.hs
@@ -26,7 +26,6 @@ module Assistant.Monad (
) where
import "mtl" Control.Monad.Reader
-import Control.Monad.Base (liftBase, MonadBase)
import System.Log.Logger
import Common.Annex
@@ -53,9 +52,6 @@ newtype Assistant a = Assistant { mkAssistant :: ReaderT AssistantData IO a }
Applicative
)
-instance MonadBase IO Assistant where
- liftBase = Assistant . liftBase
-
data AssistantData = AssistantData
{ threadName :: ThreadName
, threadState :: ThreadState
diff --git a/Command/Add.hs b/Command/Add.hs
index be7c6e7..543d371 100644
(Diff truncated)
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_6_7eb535ca38b3e84d44d0f8cbf5e61b8b._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_6_7eb535ca38b3e84d44d0f8cbf5e61b8b._comment new file mode 100644 index 0000000..80a0470 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_6_7eb535ca38b3e84d44d0f8cbf5e61b8b._comment @@ -0,0 +1,18 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 6" + date="2013-05-19T16:39:44Z" + content=""" +So there are a lot of uploads attempts being made (and apparently failing), and a lot of zombie git-annex processes are building up as children of the git-annex transferkeys process. That isolates the problem some. + +The repeated \"(gpg)\" is an interesting clue, since normally git-annex only runs gpg once, to unlock an encrypted special remote's encryption key, and then should retain the key, cached in memory. I was able to reproduce this part of the bug (but not the zombie processes) when I purposfully broke the bup special remote by making it throw an error when it was supposed to run bup to send a file. That defeats the caching, since the state, including the cache, is thrown away when there's an exception. Working on a fix for that.. + +That doesn't explain what's actually causing the problem for you, but it does certianly suggest the bup special remote code is failing in some unusual way. What happens if rather than starting the assistant, you use git-annex manually to send files to the remote? Run: + +<pre> +git annex copy --to ffe41272-608e-43c4-8f35-e9cd63087892 --debug +</pre> + +(You may want to give it the name of just 1 file to send.) +"""]]
Added a comment
diff --git a/doc/bugs/git_annix_breaks_git_commit_after_uninstall/comment_2_4173770375fca51dcaf9b974296d041a._comment b/doc/bugs/git_annix_breaks_git_commit_after_uninstall/comment_2_4173770375fca51dcaf9b974296d041a._comment new file mode 100644 index 0000000..a354c55 --- /dev/null +++ b/doc/bugs/git_annix_breaks_git_commit_after_uninstall/comment_2_4173770375fca51dcaf9b974296d041a._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 2" + date="2013-05-19T15:37:23Z" + content=""" +Alright, found there's a pre-commit hook that performed a git annex task. I removed it and now it all works again. +"""]]
Added a comment
diff --git a/doc/bugs/git_annix_breaks_git_commit_after_uninstall/comment_1_c8b1bab40d3bb2468a5bba7b116e854e._comment b/doc/bugs/git_annix_breaks_git_commit_after_uninstall/comment_1_c8b1bab40d3bb2468a5bba7b116e854e._comment new file mode 100644 index 0000000..1494a87 --- /dev/null +++ b/doc/bugs/git_annix_breaks_git_commit_after_uninstall/comment_1_c8b1bab40d3bb2468a5bba7b116e854e._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 1" + date="2013-05-19T15:35:27Z" + content=""" +I'm sorry, there seems to be an annex directory in the .git of that repository.. apparently I have accidentily made it an annex repository. I'm going to find out how to remove it now :) +"""]]
diff --git a/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn b/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn new file mode 100644 index 0000000..2939b15 --- /dev/null +++ b/doc/bugs/git_annix_breaks_git_commit_after_uninstall.mdwn @@ -0,0 +1,30 @@ +Sorry to be reporting another vague bug, this one interferes with my work unfortunately. + +### Please describe the problem. +After uninstalling git-annix, running git commit returns the following error: + +git: 'annex' is not a git command. See 'git --help'. + +### What steps will reproduce the problem? + +Install git-annex using the ubuntu ppa of fmarcier like so: + + sudo apt-get install git-annex + +Then remove it: + + sudo apt-get remove git-annex + +Then go to work in a git project, that is not in annex and has no relation to it. Add your changes and run commit: + + git add my-new-file + git commit -m "added new file" + +I expect it to confirm the file is committed, instead I get the error message: + + git: 'annex' is not a git command. See 'git --help'. + +### What version of git-annex are you using? On what operating system? + +Ubuntu 13.04, using the PPA by marcier linked on the branchable website. +
Added a comment: Not starting browser on Nexus 7, Android 4.2.2
diff --git a/doc/Android/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment b/doc/Android/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment new file mode 100644 index 0000000..ad46a26 --- /dev/null +++ b/doc/Android/comment_4_86f7b5444e2eaea7f8f7b9160f671a1d._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawnu1NYw8UF-NoDbKu8YKVGxi8FoZLH7JPs" + nickname="Chris" + subject="Not starting browser on Nexus 7, Android 4.2.2" + date="2013-05-19T14:04:28Z" + content=""" +I just tried to run this on my Nexus 7 which has Android 4.2.2, and I received the following: <http://hodapple.com/files/Screenshot_2013-05-19-09-49-53.png> <http://hodapple.com/files/git-annex-error.txt> + +In spite of that, though, the URL provided still worked. +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_5_8345331b9b313769ba401da2ffd89332._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_5_8345331b9b313769ba401da2ffd89332._comment new file mode 100644 index 0000000..d0ff6f0 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_5_8345331b9b313769ba401da2ffd89332._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 5" + date="2013-05-19T12:37:22Z" + content=""" +Sorry, I just noticed that after I killed the process it created some more logs. The log I previously pasted is moved to log.3, here are the additional ones (all created in around the same minute:) + +http://pastie.org/7929225 +"""]]
Added a comment: GTalk/XMPP
diff --git a/doc/design/assistant/blog/day_265__correctness/comment_2_0cb953fcc085eedb34e65c227309ede7._comment b/doc/design/assistant/blog/day_265__correctness/comment_2_0cb953fcc085eedb34e65c227309ede7._comment new file mode 100644 index 0000000..cf936cf --- /dev/null +++ b/doc/design/assistant/blog/day_265__correctness/comment_2_0cb953fcc085eedb34e65c227309ede7._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmubB1Sj2rwFoVdZYvGV0ACaQUJQyiJXJI" + nickname="Paul" + subject="GTalk/XMPP" + date="2013-05-19T09:58:51Z" + content=""" +Google seems to be deprecating XMPP and GTalk. Can git-annex assistant use other XMPP services? And does it handle federation correctly? +"""]]
Added a comment
diff --git a/doc/special_remotes/glacier/comment_3_cea5bcb162e4288847ba5f25464a0406._comment b/doc/special_remotes/glacier/comment_3_cea5bcb162e4288847ba5f25464a0406._comment new file mode 100644 index 0000000..8a8b914 --- /dev/null +++ b/doc/special_remotes/glacier/comment_3_cea5bcb162e4288847ba5f25464a0406._comment @@ -0,0 +1,28 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmUJBh1lYmvfCCiGr3yrdx-QhuLCSRnU5c" + nickname="Justin" + subject="comment 3" + date="2013-05-19T05:56:45Z" + content=""" +Hi! :) + +The main issue I'm hitting is the \"Multiple rows were found for one()\" error. I think I get this when git-annex tries to upload the same file twice (which may be a bug in git-annex, which could apply de-duplication earlier), but I think I also get it when trying to upload a file whose upload I've canceled in the past. + +I don't quite understand what git-annex needs here, and I totally understand that you're writing a general-purpose tool. But there does seem to be an issue that git-annex needs fixed one way or another. + +I'm happy to try fixing it myself if you can help me understand what's going on (I didn't quite understand your review in the PR), but if I'm the only person in the world using git-annex to back up to glacier, that scares me a little! + + copy foo/bar/baz (checking glacier...) Traceback (most recent call last): + File \"/home/jlebar/code/glacier-cli/glacier\", line 694, in <module> + App().main() + File \"/home/jlebar/code/glacier-cli/glacier\", line 680, in main + args.func(args) + File \"/home/jlebar/code/glacier-cli/glacier\", line 579, in archive_checkpresent + last_seen = self.cache.get_archive_last_seen(args.vault, args.name) + File \"/home/jlebar/code/glacier-cli/glacier\", line 157, in get_archive_last_seen + result = self._get_archive_query_by_ref(vault, ref).one() + File \"/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/query.py\", line 2182, in one + \"Multiple rows were found for one()\") + sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one() + +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_4_a35d04440b1220faf9088107c3f17762._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_4_a35d04440b1220faf9088107c3f17762._comment new file mode 100644 index 0000000..bd1fef0 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_4_a35d04440b1220faf9088107c3f17762._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 4" + date="2013-05-19T03:15:10Z" + content=""" +Ok I got some interesting data from the debug switch, posted it here: https://pastee.org/ kn2hv (remove space, TTL 1 month) + +And managed to get a ps lax in after launch but before I'm starved of processes: http://pastie.org/pastes/7928091/text?key=gdywhjzo8xm5etcgv8e8jw +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_3_ab403d7abbbbabd498b954b0b9742755._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_3_ab403d7abbbbabd498b954b0b9742755._comment new file mode 100644 index 0000000..0ffbccc --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_3_ab403d7abbbbabd498b954b0b9742755._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 3" + date="2013-05-18T23:59:59Z" + content=""" +run it with `--debug` + +paste the whole log, not an except + +get a `ps lax` so we can see which programs are running which other programs and how many programs are running at the same time +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_2_aa237adebe7674b8cdb9a967bb5f96a8._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_2_aa237adebe7674b8cdb9a967bb5f96a8._comment new file mode 100644 index 0000000..f5358da --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_2_aa237adebe7674b8cdb9a967bb5f96a8._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 2" + date="2013-05-18T23:36:22Z" + content=""" +So that probably means I have some problem with the gpg encryption, that is used by bup. Maybe it doesn't even have to do with git annex, I'll see if I can make it say more in the log. +"""]]
Added a comment
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_1_73ae438a37e4c5f56fe291448e1c64dd._comment b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_1_73ae438a37e4c5f56fe291448e1c64dd._comment new file mode 100644 index 0000000..e1c3ed2 --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file/comment_1_73ae438a37e4c5f56fe291448e1c64dd._comment @@ -0,0 +1,13 @@ +[[!comment format=mdwn + username="http://me.tinco.nl/" + nickname="Tinco" + subject="comment 1" + date="2013-05-18T23:32:32Z" + content=""" +Nevermind the gpg file suspicion, it now crashes without that file too: + +[2013-05-19 01:30:36 CEST] main: starting assistant version 4.20130516-g8a26544 + +(scanning...) [2013-05-19 01:30:36 CEST] Watcher: Performing startup scan +(started...) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) +"""]]
diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn b/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn new file mode 100644 index 0000000..958727b --- /dev/null +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn @@ -0,0 +1,23 @@ +### Please describe the problem. +git-annex goes into a loop of I think Haskell's createProcess function and causes the entire operating system to starve of process creation. + +### What steps will reproduce the problem? +The last file git-annex was processing was tinco.gpg, my gpg key exported with + + gpg --export mail@tinco.nl --output tinco.gpg + +### What version of git-annex are you using? On what operating system? +4.20130516-g8a26544 on OSX + +I had a remote setup using bup. + +### Please provide any additional information below. +Unfortunately to fix the problem I have deleted the entire git repository and made a new init in the same directory, this time without the gpg file. Everything seems to be working now. + +What I remember about the log file is that the last thing it said was something along the lines of + +add tinco.gpg + +.. (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) ..etc + +recv (resource unavailable or something) ..
diff --git a/doc/bugs/Can__39__t_set_repositories_directory.mdwn b/doc/bugs/Can__39__t_set_repositories_directory.mdwn new file mode 100644 index 0000000..4322b1d --- /dev/null +++ b/doc/bugs/Can__39__t_set_repositories_directory.mdwn @@ -0,0 +1,10 @@ +Can't set the repository directory + + +At beginning during the webapp installation + + +0.0.1 for OS X 10.8.2 + + +user error (git ["--git-dir=/Users/filippo/Desktop/annex/.git","--work-tree=/Users/filippo/Desktop/annex","commit-tree","4b825dc642cb6eb9a060e54bf8d69288fbee4904"] exited 128)
Typo
Combed with extra fine teeth just to make Joey happy
Combed with extra fine teeth just to make Joey happy

diff --git a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn index f80b8f8..b9e2843 100644 --- a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn +++ b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn @@ -1,9 +1,9 @@ -git-annex is now autobuilt for Windows on the same jenkins farm that +git-annex is now autobuilt for Windows on the same Jenkins farm that builds msysgit. Thanks for Yury V. Zaytsev for providing that! Spent about half of today setting up the build. Got the test suite to pass in direct mode, and indeed in direct mode -on a FAT filesystem. Had to fix one corner case in direct mode `git annex +on a FAT file system. Had to fix one corner case in direct mode `git annex add`. Unfortunately it still doesn't work on Android; somehow `git clone` of a local repository is broken there. Also got the test suite to build, and run on Windows, though it fails pretty miserably.
Added a comment: Follow-up information on my system
diff --git a/doc/Android/comment_3_0e4980c27b13dbc28477c02a82898248._comment b/doc/Android/comment_3_0e4980c27b13dbc28477c02a82898248._comment new file mode 100644 index 0000000..fdbfac1 --- /dev/null +++ b/doc/Android/comment_3_0e4980c27b13dbc28477c02a82898248._comment @@ -0,0 +1,14 @@ +[[!comment format=mdwn + username="http://yarikoptic.myopenid.com/" + nickname="site-myopenid" + subject="Follow-up information on my system" + date="2013-05-18T01:23:28Z" + content=""" +Sorry for the delay: my android is stock Samsung-tuned Jelly beans. +Android 4.1.2 +Baseband version N7000XXLSO + +not sure if that would be of any use :-/ nothing in the logs (aLogcat) if I filter by annex -- should there any debug output? what should be a key to search by? + + +"""]]
Fixed a typo
diff --git a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn index 8ac2845..f80b8f8 100644 --- a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn +++ b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn @@ -4,6 +4,6 @@ half of today setting up the build. Got the test suite to pass in direct mode, and indeed in direct mode on a FAT filesystem. Had to fix one corner case in direct mode `git annex -add`. Unofrtunatly it still doesn't work on Android; somehow `git clone` +add`. Unfortunately it still doesn't work on Android; somehow `git clone` of a local repository is broken there. Also got the test suite to build, and run on Windows, though it fails pretty miserably.
Added a comment
diff --git a/doc/Android/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment b/doc/Android/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment new file mode 100644 index 0000000..bfa4dec --- /dev/null +++ b/doc/Android/comment_2_c2422b7dd9d526b3616e49f48cf178c2._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="http://joeyh.name/" + nickname="joey" + subject="comment 2" + date="2013-05-17T22:28:34Z" + content=""" +The Android app works on many non-rooted Android systems. + +The \"link busybox: Read-only file system\" means that `/data/data/ga.androidterm/lib/lib.busybox.so` cannot be hard linked to `/data/data/ga.androidterm/busybox`. That's not normal. I'd appreciate if you could provide more information on your Android device, like Android version and model number. +"""]]
blog for the day
diff --git a/doc/design/assistant/android.mdwn b/doc/design/assistant/android.mdwn index aa681eb..3325d43 100644 --- a/doc/design/assistant/android.mdwn +++ b/doc/design/assistant/android.mdwn @@ -6,6 +6,7 @@ to improve it. * [[bugs/Android_app_permission_denial_on_startup]] * S3 doesn't work (at least to Internet Archive: "connect: does not exist (connection refused)") +* Get app into Goole Play and/or FDroid ## TODO @@ -25,7 +26,8 @@ to improve it. and a few places use it. I have some horrible workarounds in place. * Get local pairing to work. network-multicast and network-info don't currently install. -* Get test suite to pass. +* Get test suite to pass. `git clone` of a local repo fails on android + for some reason. * Make app autostart on boot, optionally. <http://stackoverflow.com/questions/1056570/how-to-autostart-an-android-application> * The app should be aware of power status, and avoid expensive background jobs when low on battery or run flat out when plugged in. diff --git a/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn new file mode 100644 index 0000000..8ac2845 --- /dev/null +++ b/doc/design/assistant/blog/day_267__windows_autobuilder.mdwn @@ -0,0 +1,9 @@ +git-annex is now autobuilt for Windows on the same jenkins farm that +builds msysgit. Thanks for Yury V. Zaytsev for providing that! Spent about +half of today setting up the build. + +Got the test suite to pass in direct mode, and indeed in direct mode +on a FAT filesystem. Had to fix one corner case in direct mode `git annex +add`. Unofrtunatly it still doesn't work on Android; somehow `git clone` +of a local repository is broken there. Also got the test suite to build, +and run on Windows, though it fails pretty miserably.
diff --git a/doc/forum/exclude_files_from_annex.mdwn b/doc/forum/exclude_files_from_annex.mdwn new file mode 100644 index 0000000..c1707af --- /dev/null +++ b/doc/forum/exclude_files_from_annex.mdwn @@ -0,0 +1,10 @@ +I'm wanting to do essentially [[/tips/replacing_Sparkleshare_or_dvcs-autosync_with_the_assistant/]], that is prevent git-annex from annexing certain files (by extension), and rather manage them in git only. + +This seems to work fine, and the assistant auto-adds them to git, and commits when I make changes, when in indirect mode. + +However, in a direct mode repository, then the files are automatically annexed, and even if I create them in an indirect repo, and then change it, they are annexed. + +Is this expected behaviour? Does the annex.largefiles setting only make sense in indirect mode? + + +--Walter
remove old comments, there is a build script now
diff --git a/doc/install/Windows/comment_1_77e6b1023fee32277f1890def86b0106._comment b/doc/install/Windows/comment_1_77e6b1023fee32277f1890def86b0106._comment deleted file mode 100644 index aa78d28..0000000 --- a/doc/install/Windows/comment_1_77e6b1023fee32277f1890def86b0106._comment +++ /dev/null @@ -1,14 +0,0 @@ -[[!comment format=mdwn - username="https://www.google.com/accounts/o8/id?id=AItOawkGCmVc5qIJaQQgG82Hc5zzBdAVdhe2JEM" - nickname="Bruno" - subject="comment 1" - date="2013-05-15T18:29:19Z" - content=""" -Did you have any problem installing unix-2.6.0.1? - -I got : - - cabal.exe: Missing dependencies on foreign libraries: - * Missing (or bad) header file: HsUnix.h - * Missing C libraries: rt, dl -"""]] diff --git a/doc/install/Windows/comment_2_1b4eaffa46dfff0a5e20f7f2016bdf9a._comment b/doc/install/Windows/comment_2_1b4eaffa46dfff0a5e20f7f2016bdf9a._comment deleted file mode 100644 index 5c56288..0000000 --- a/doc/install/Windows/comment_2_1b4eaffa46dfff0a5e20f7f2016bdf9a._comment +++ /dev/null @@ -1,52 +0,0 @@ -[[!comment format=mdwn - username="https://www.google.com/accounts/o8/id?id=AItOawkGCmVc5qIJaQQgG82Hc5zzBdAVdhe2JEM" - nickname="Bruno" - subject="comment 2" - date="2013-05-16T02:22:26Z" - content=""" -By doing `cabal install --only-dependencies -v3` I saw that the problem was that it didn't find `sys/times.h`: - - In file included from C:\cygwin\tmp\36.c:1:0: - include/HsUnix.h:33:23: fatal error: sys/times.h: No such file or directory - compilation terminated. - (\"C:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\mingw\\bin\\gcc.exe\",[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\",\"C:\\cygwin\\tmp\\36.c\",\"-o\",\"C:\\cygwin\\tmp\\36\",\"-E\",\"-D__GLASGOW_HASKELL__=704\",\"-Dmingw32_HOST_OS=1\",\"-Di386_HOST_ARCH=1\",\"-Idist\\build\\autogen\",\"-Iinclude\",\"-I.\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\time-1.4\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\Win32-2.2.2.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\bytestring-0.9.2.1\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\base-4.5.1.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib/include\"]) - C:\Program Files (x86)\Haskell Platform\2012.4.0.0\mingw\bin\gcc.exe returned - ExitFailure 1 with error message: - In file included from C:\cygwin\tmp\36.c:1:0: - include/HsUnix.h:33:23: fatal error: sys/times.h: No such file or directory - compilation terminated. - cabal.exe: Missing dependencies on foreign libraries: - * Missing (or bad) header file: HsUnix.h - * Missing C libraries: rt, dl - This problem can usually be solved by installing the system packages that - provide these libraries (you may need the \"-dev\" versions). If the libraries - are already installed but in a non-standard location then you can use the - flags --extra-include-dirs= and --extra-lib-dirs= to specify where they are. - If the header file does exist, it may contain errors that are caught by the C - compiler at the preprocessing stage. In this case you can re-run configure - with the verbosity flag -v3 to see the error messages. - Failed to install unix-2.6.0.1 - -Is it normal that cabal use mingw's gcc (from the Haskell Platform)? - -If so, should the following command work (I'm not sure if mixing mingw and cygwin stuff is ok) ? - -cabal install --only-dependencies -v3 --extra-include-dirs=C:\\cygwin\\usr\\include --extra-lib-dirs=c:\\cygwin\\lib - - configure: WARNING: unrecognized options: --with-compiler, --with-gcc - Reading parameters from .\unix.buildinfo - (\"C:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\mingw\\bin\\gcc.exe\",[\"-Wl,--hash-size=31\",\"-Wl,--reduce-memory-overheads\",\"C:\\cygwin\\tmp\\3504.c\",\"-o\",\"C:\\cygwin\\tmp\\3504\",\"-D__GLASGOW_HASKELL__=704\",\"-Dmingw32_HOST_OS=1\",\"-Di386_HOST_ARCH=1\",\"-Idist\\build\\autogen\",\"-Iinclude\",\"-IC:\\cygwin\\usr\\include\",\"-I.\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\time-1.4\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\Win32-2.2.2.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\bytestring-0.9.2.1\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\base-4.5.1.0\\include\",\"-IC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib/include\",\"-lrt\",\"-ldl\",\"-Lc:\\cygwin\\lib\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\time-1.4\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\old-locale-1.0.0.4\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\deepseq-1.3.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\array-0.4.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\Win32-2.2.2.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\bytestring-0.9.2.1\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\base-4.5.1.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\integer-gmp-0.4.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\\ghc-prim-0.2.0.0\",\"-LC:\\Program Files (x86)\\Haskell Platform\\2012.4.0.0\\lib\"]) - C:\Program Files (x86)\Haskell Platform\2012.4.0.0\mingw\bin\gcc.exe returned - ExitFailure 1 with error message: - In file included from include/HsUnix.h:39:0, - from C:\cygwin\tmp\3504.c:1: - C:\cygwin\usr\include/sys/resource.h:76:29: error: expected declaration - specifiers or '...' before 'id_t' - C:\cygwin\usr\include/sys/resource.h:77:29: error: expected declaration - specifiers or '...' before 'id_t' - In file included from C:\cygwin\usr\include/dirent.h:6:0, - from include/HsUnix.h:75, - from C:\cygwin\tmp\3504.c:1: - C:\cygwin\usr\include/sys/dirent.h:24:3: error: expected - specifier-qualifier-list before '__ino64_t' -"""]] diff --git a/doc/install/Windows/comment_3_b0c4c6e77246b1b4a81f6940e11b67d3._comment b/doc/install/Windows/comment_3_b0c4c6e77246b1b4a81f6940e11b67d3._comment deleted file mode 100644 index fc776f1..0000000 --- a/doc/install/Windows/comment_3_b0c4c6e77246b1b4a81f6940e11b67d3._comment +++ /dev/null @@ -1,10 +0,0 @@ -[[!comment format=mdwn - username="http://joeyh.name/" - nickname="joey" - subject="comment 3" - date="2013-05-16T02:29:10Z" - content=""" -You need to build from git master, which is fixed to not use unix on windows, or wait for tomorrow's release. - -(Cabal will also try to upgrade network as part of installing yesod. Since the webapp is not ported yet, you need to `cabal configure -f-Webapp` for now.) -"""]] diff --git a/doc/install/Windows/comment_4_7a244275724da1f8493f3faff9268f6d._comment b/doc/install/Windows/comment_4_7a244275724da1f8493f3faff9268f6d._comment deleted file mode 100644 index f593fb9..0000000 --- a/doc/install/Windows/comment_4_7a244275724da1f8493f3faff9268f6d._comment +++ /dev/null @@ -1,8 +0,0 @@ -[[!comment format=mdwn - username="http://joeyh.name/" - nickname="joey" - subject="comment 4" - date="2013-05-16T16:17:52Z" - content=""" -You should probably run `cabal install` from outside cygwin. You definitely do not want to end up with libraries installed that link cygwin.dll into git-annex. mingw should provide enough stuff to run `configure` scripts. Still investigating how to get all the libraries best installed. -"""]]
fix link
diff --git a/doc/install/Windows.mdwn b/doc/install/Windows.mdwn index eb70f01..573f823 100644 --- a/doc/install/Windows.mdwn +++ b/doc/install/Windows.mdwn @@ -13,7 +13,7 @@ on Windows. A daily build is also available, thanks to Yury V. Zaytsev and [NEST](http://nest-initiative.org/). -* [download](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/lastSuccessfulBuild/artifact/git-annex.exe) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/)) +* [download](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/lastSuccessfulBuild/artifact/git-annex-installer.exe) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/)) ## building it yourself
update
diff --git a/doc/assistant/thanks.mdwn b/doc/assistant/thanks.mdwn index a6cfb73..04159fd 100644 --- a/doc/assistant/thanks.mdwn +++ b/doc/assistant/thanks.mdwn @@ -50,8 +50,9 @@ Andrew, Aaron De Vries, Monti Knazze, Jorge Canseco, Hamish, Mark Eichin, Sherif Abouseda, Ben Strawbridge, chee rabbits, Pedro Côrte-Real And special thanks to Kevin McKenzie, who also gave me a login to a Mac OSX -machine, which has proven invaluable, and Jimmy Tang who has helped -with Mac OSX autobuilding and packaging. +machine, which has proven invaluable, Jimmy Tang who has helped +with Mac OSX autobuilding and packaging, and Yury V. Zaytsev who +provides the Windows autobuilder. ## Other Backers diff --git a/doc/install/Windows.mdwn b/doc/install/Windows.mdwn index a1c558e..eb70f01 100644 --- a/doc/install/Windows.mdwn +++ b/doc/install/Windows.mdwn @@ -10,7 +10,8 @@ on Windows. ## autobuilds -A daily build is also available. +A daily build is also available, thanks to Yury V. Zaytsev and +[NEST](http://nest-initiative.org/). * [download](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/lastSuccessfulBuild/artifact/git-annex.exe) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/))
update with autobuilder
diff --git a/doc/install/Windows.mdwn b/doc/install/Windows.mdwn index dd8b716..a1c558e 100644 --- a/doc/install/Windows.mdwn +++ b/doc/install/Windows.mdwn @@ -8,19 +8,18 @@ git-annex, many things will not work. See [[todo/windows_support]] for current status. Note especially that git-annex always uses [[direct_mode]] on Windows. -## building it yourself +## autobuilds -To build git-annex from source on Windows, you need to install -the Haskell Platform and Cygwin. Use Cygwin to install gcc, rsync, git, -ssh, and gpg. +A daily build is also available. -Then, within Cygwin, git-annex can be compiled following the instructions -for [[using cabal|cabal]]. +* [download](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/lastSuccessfulBuild/artifact/git-annex.exe) ([build logs](https://qa.nest-initiative.org/view/msysGit/job/msysgit-git-annex-assistant-test/)) -Once git-annex is built, the NullSoft installer can be built, as follows: +## building it yourself + +To build git-annex from source on Windows, you need to install +the Haskell Platform, Mingw, and Cygwin. Use Cygwin to install +gcc, rsync, git, wget, ssh, and gpg. -<pre> - cabal install nsis - ghc --make Build/NullSoftInstaller.hs - Build/NullSoftInstaller.exe -</pre> +There is a shell script `standalone/windows/build.sh` that can be +used to build git-annex. Note that this shell script cannot be run +in Cygwin; run it with the Mingw sh.

