diff --git a/Build/DistributionUpdate.hs b/Build/DistributionUpdate.hs index e3990d0395..ce5edcdd9a 100644 --- a/Build/DistributionUpdate.hs +++ b/Build/DistributionUpdate.hs @@ -19,7 +19,6 @@ import Annex.Content import Backend import Git.Command -import Data.Default import Data.Time.Clock import Data.Char import System.Posix.Directory diff --git a/Utility/Quvi.hs b/Utility/Quvi.hs index 33653b07ba..0669e7351a 100644 --- a/Utility/Quvi.hs +++ b/Utility/Quvi.hs @@ -63,7 +63,7 @@ parseEnum s = Page probeVersion :: IO QuviVersion probeVersion = catchDefaultIO NoQuvi $ - examine <$> processTranscript "quviaaa" ["--version"] Nothing + examine <$> processTranscript "quvi" ["--version"] Nothing where examine (s, True) | "quvi v0.4" `isInfixOf` s = Quvi04 diff --git a/debian/changelog b/debian/changelog index 1daa001766..c579b73b75 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,16 @@ -git-annex (5.20150206) UNRELEASED; urgency=medium +git-annex (5.2015022) UNRELEASED; urgency=medium + + * fsck: Incremental fsck uses sqlite to store its records, instead + of abusing the sticky bit. Existing sticky bits are ignored; + incremental fscks started by old versions won't be resumed by + this version. + * fsck: Multiple incremental fscks of different repos (including remotes) + can now be running at the same time in the same repo without it + getting confused about which files have been checked for which remotes. + + -- Joey Hess Thu, 19 Feb 2015 14:16:03 -0400 + +git-annex (5.20150219) unstable; urgency=medium * glacier: Detect when the glacier command in PATH is the wrong one, from boto, rather than from glacier-cli, and refuse to use it, @@ -21,7 +33,7 @@ git-annex (5.20150206) UNRELEASED; urgency=medium * addurl: Avoid crash if quvi is not installed, when git-annex was built with process-1.2 * bittorrent: Fix mojibake introduced in parsing arai2c progress output. - * fsck --from: If a download from a remote fails, propigate the failure. + * fsck --from: If a download from a remote fails, propagate the failure. * metadata: When setting metadata, do not recurse into directories by default, since that can be surprising behavior and difficult to recover from. The old behavior is available by using --force. @@ -32,15 +44,8 @@ git-annex (5.20150206) UNRELEASED; urgency=medium and push. * remotedaemon: Use the ssh-options git config. * Linux standalone: Improved process names of linker shimmed programs. - * fsck: Incremental fsck uses sqlite to store its records, instead - of abusing the sticky bit. Existing sticky bits are ignored, - incremental fscks started by old versions won't be resumed by - this version. - * fsck: Multiple incremental fscks of different repos (some remote) - can now be in progress at the same time in the same repo without it - getting confused about which files have been checked for which remotes. - -- Joey Hess Fri, 06 Feb 2015 13:57:08 -0400 + -- Joey Hess Thu, 19 Feb 2015 14:16:03 -0400 git-annex (5.20150205) unstable; urgency=medium diff --git a/doc/bugs/Assistant_merge_loop/comment_15_494f55419f131495a7994afe2a0e9bc3._comment b/doc/bugs/Assistant_merge_loop/comment_15_494f55419f131495a7994afe2a0e9bc3._comment new file mode 100644 index 0000000000..db92aadc63 --- /dev/null +++ b/doc/bugs/Assistant_merge_loop/comment_15_494f55419f131495a7994afe2a0e9bc3._comment @@ -0,0 +1,54 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawk9nck8WX8-ADF3Fdh5vFo4Qrw1I_bJcR8" + nickname="Jon Ander" + subject="comment 15" + date="2015-02-18T12:39:04Z" + content=""" +This is happening in in a repo shared by two computers using the webapp with version 5.20141125. All are empty commits. + + * 23da33e - (7 minutes ago) merge refs/remotes/bitbucket/synced/master (HEAD, bitbucket/synced/master, annex/direct/master) + * 7bd23db - (67 minutes ago) merge refs/remotes/bitbucket/synced/master + * d2f5c6b - (2 hours ago) merge refs/remotes/bitbucket/synced/master + * 05c0448 - (12 hours ago) merge refs/remotes/bitbucket/synced/master + * 5c370aa - (19 hours ago) merge refs/remotes/bitbucket/synced/master + * c6d7be4 - (20 hours ago) merge refs/remotes/bitbucket/synced/master + * 507a6c7 - (21 hours ago) merge refs/remotes/bitbucket/synced/master + * 6932fec - (22 hours ago) merge refs/remotes/bitbucket/synced/master + * cc0efa1 - (23 hours ago) merge refs/remotes/bitbucket/synced/master + * 12a7b8f - (24 hours ago) merge refs/remotes/bitbucket/synced/master + * 49a3f2c - (25 hours ago) merge refs/remotes/bitbucket/synced/master + * 6611612 - (26 hours ago) merge refs/remotes/bitbucket/synced/master + * 303895c - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 3f8c96b - (2 days ago) merge refs/remotes/bitbucket/synced/master + * f283e20 - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 96b920e - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 2c88b50 - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 5f6643b - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 7a2f5ff - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 3bdb942 - (2 days ago) merge refs/remotes/bitbucket/synced/master + * d24de2b - (2 days ago) merge refs/remotes/bitbucket/synced/master + * b29d45e - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 871adb7 - (2 days ago) merge refs/remotes/bitbucket/synced/master + |\ + * | 4138b01 - (2 days ago) merge refs/remotes/bitbucket/synced/master + |/ + * c754adc - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 587a56a - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 2d257fd - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 23018bf - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 9f202b7 - (2 days ago) merge refs/remotes/bitbucket/synced/master + * bdd40f4 - (2 days ago) merge refs/remotes/bitbucket/synced/master + * 146b1a5 - (4 days ago) merge refs/remotes/bitbucket/synced/master (bitbucket/master) + |\ + * | 3886b4a - (4 days ago) merge refs/remotes/github/synced/master + * | 5714860 - (4 days ago) merge refs/remotes/github/synced/master + * | 64325a0 - (4 days ago) merge refs/remotes/github/synced/master + * | f1b49e6 - (5 days ago) merge refs/remotes/github/synced/master + * | 17330c8 - (5 days ago) merge refs/remotes/github/synced/master + |/ + * 54f9a8b - (6 days ago) (synced/master, master) + * ceb8133 - (6 days ago) + * f36ae3b - (6 days ago) + * 6acdf4c - (6 days ago) + +"""]] diff --git a/doc/bugs/SignatureDoesNotMatch_error_when_trying_to_enable_S3_remote_with_IAM_credentials/comment_4_17391f47897f166b763e8f3e33426fcf._comment b/doc/bugs/SignatureDoesNotMatch_error_when_trying_to_enable_S3_remote_with_IAM_credentials/comment_4_17391f47897f166b763e8f3e33426fcf._comment new file mode 100644 index 0000000000..1d221cb3ad --- /dev/null +++ b/doc/bugs/SignatureDoesNotMatch_error_when_trying_to_enable_S3_remote_with_IAM_credentials/comment_4_17391f47897f166b763e8f3e33426fcf._comment @@ -0,0 +1,15 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmg0NqVniTETKYIWr6eyYRJnakNg0A6tRc" + nickname="Oliver" + subject="comment 4" + date="2015-02-19T11:54:14Z" + content=""" +I used `s3cmd` with the same credentials and I'm able to list the bucket contents. That file does exist, and it does contain the line expected. If I try and make the bucket: + +s3cmd mb s3://s3musicencrypted-a7e22956-5ce2-11e2-97a5-6f33220ffbf3 +ERROR: S3 error: 409 (BucketAlreadyOwnedByYou): Your previous request to create the named bucket succeeded and you already own it. + +So I should be able to create buckets, but of course creating a bucket that already exists doesn't really do anything. + +Taking exactly the same credentials as my .s3cfg and using them with git annex continues to fail with signature errors. +"""]] diff --git a/doc/bugs/git-annex_on_NAS_eats_all_memory/comment_8_5cabffc139a8db7680346ccf0f4dc429._comment b/doc/bugs/git-annex_on_NAS_eats_all_memory/comment_8_5cabffc139a8db7680346ccf0f4dc429._comment new file mode 100644 index 0000000000..b0cb8674f6 --- /dev/null +++ b/doc/bugs/git-annex_on_NAS_eats_all_memory/comment_8_5cabffc139a8db7680346ccf0f4dc429._comment @@ -0,0 +1,254 @@ +[[!comment format=c + username="https://www.google.com/accounts/o8/id?id=AItOawlmLuHhscJsoAqb9q0N3LdtHum6LjY1LK4" + nickname="Markus" + subject="comment 8" + date="2015-02-18T12:39:17Z" + content=""" +Diff between the straces (the first ~490 lines have been identical and are removed for simplicity) + +Running per ssh: +mprotect(0x2b1e2000, 8192, PROT_READ) = 0 +mprotect(0x2aafb000, 4096, PROT_READ) = 0 +mprotect(0x2b24e000, 4096, PROT_READ) = 0 +mprotect(0x2aca5000, 4096, PROT_READ) = 0 +mprotect(0x2ad6d000, 4096, PROT_READ) = 0 +mprotect(0x2b21f000, 4096, PROT_READ) = 0 +mprotect(0x2acdd000, 4096, PROT_READ) = 0 +mprotect(0x2ac24000, 4096, PROT_READ) = 0 +mprotect(0x2aae5000, 4096, PROT_READ) = 0 +mprotect(0x2ad27000, 20480, PROT_READ) = 0 +mprotect(0x2acbd000, 4096, PROT_READ) = 0 +mprotect(0x2b0a0000, 4096, PROT_READ) = 0 +mprotect(0x2ab55000, 4096, PROT_READ) = 0 +mprotect(0x2aacd000, 4096, PROT_READ) = 0 +mprotect(0x2ab32000, 4096, PROT_READ) = 0 +mprotect(0x2afeb000, 16384, PROT_READ) = 0 +mprotect(0x2aeaf000, 20480, PROT_READ) = 0 +mprotect(0x2abfd000, 4096, PROT_READ) = 0 +mprotect(0x2ada4000, 4096, PROT_READ) = 0 +mprotect(0x2abbc000, 4096, PROT_READ) = 0 +set_tid_address(0x2ac28068) = 18015 +set_robust_list(0x2ac28070, 0xc) = 0 +rt_sigaction(SIGRTMIN, {0x2ac04550, [], SA_SIGINFO|0x4000000}, NULL, 8) = 0 +rt_sigaction(SIGRT_1, {0x2ac043e4, [], SA_RESTART|SA_SIGINFO|0x4000000}, NULL, 8) = 0 +rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 +getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 +futex(0x2ad2cc44, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +brk(0) = 0x2bf15000 +brk(0x2bf36000) = 0x2bf36000 +open(\"/dev/urandom\", O_RDONLY|O_LARGEFILE) = 3 +fcntl64(3, F_GETFD) = 0 +fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 +fstat64(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0 +clock_gettime(CLOCK_REALTIME, {1424257023, 820788195}) = 0 +getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 20000}, ru_stime={0, 10000}, ...}) = 0 +read(3, \"yx$\17\207\4\364\233\366\361\210[,\334(\214\\"\343\226\2'd\303\24\306\254\323\363\2523\36\2\", 32) = 32 +read(3, \"\243e\370\36n\320@l\345\27\6/\323%5`2\355\355B\", 8) = 8 +clock_getres(0x2 /* CLOCK_??? */, {0, 1}) = 0 +clock_gettime(0x2 /* CLOCK_??? */, {0, 44157400}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438775, 660164522}) = 0 +brk(0x2bf57000) = 0x2bf57000 +mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b250000 +munmap(0x2b250000, 720896) = 0 +munmap(0x2b400000, 327680) = 0 +timer_create(CLOCK_MONOTONIC, {0, SIGVTALRM, SIGEV_SIGNAL, {...}}, {0x1}) = 0 +rt_sigaction(SIGVTALRM, {0x3cc4e08, [], SA_RESTART|0x4000000}, NULL, 8) = 0 +timer_settime(0x1, 0, {it_interval={0, 10000000}, it_value={0, 10000000}}, NULL) = 0 +rt_sigaction(SIGINT, {0x3cce17c, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0}, 8) = 0 +rt_sigaction(SIGINT, NULL, {0x3cce17c, [], 0x4000000 /* SA_??? */}, 8) = 0 +rt_sigaction(SIGINT, {0x3cce17c, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +rt_sigaction(SIGPIPE, {0x3cce0b4, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0}, 8) = 0 +rt_sigaction(SIGTSTP, {0x3cce1c0, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +epoll_create(0x100) = 4 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +pipe([5, 6]) = 0 +fcntl64(6, F_GETFL) = 0x1 (flags O_WRONLY) +fcntl64(6, F_SETFL, O_WRONLY|O_NONBLOCK) = 0 +fcntl64(5, F_SETFD, FD_CLOEXEC) = 0 +fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 +mmap2(NULL, 8388608, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|0x20000, -1, 0) = 0x2b400000 +mprotect(0x2b400000, 4096, PROT_NONE) = 0 +clone(child_stack=0x2bbfef98, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x2bbff4c8, tls=0x2bbff920, child_tidptr=0x2bbff4c8) = 18039 +futex(0x2bf3aa6c, FUTEX_WAIT_PRIVATE, 1, NULL) = 0 +futex(0x2bf3aa98, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 +futex(0x2bf3aa98, FUTEX_WAKE_PRIVATE, 1) = 0 +futex(0x41981d0, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 +futex(0x41981d0, FUTEX_WAKE_PRIVATE, 1) = 0 +eventfd2(0, 0) = 7 +fcntl64(7, F_GETFL) = 0x2 (flags O_RDWR) +fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0 +fcntl64(7, F_SETFD, FD_CLOEXEC) = 0 +epoll_ctl(0x4, 0x1, 0x5, 0x2b304430) = 0 +epoll_ctl(0x4, 0x1, 0x7, 0x2b304448) = 0 +clock_gettime(0x2 /* CLOCK_??? */, {0, 46001320}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438775, 665190920}) = 0 +futex(0x2bf3aa6c, FUTEX_WAIT_PRIVATE, 3, NULL) = 0 +futex(0x2bf3aa98, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 +futex(0x2bf3aa98, FUTEX_WAKE_PRIVATE, 1) = 0 +futex(0x41981d0, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 +futex(0x41981d0, FUTEX_WAKE_PRIVATE, 1) = 0 +rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 +rt_sigaction(SIGINT, {0x3cce0b8, [], SA_RESETHAND|SA_SIGINFO|0x4000000}, NULL, 8) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +open(\"/usr/lib/arm-linux-gnueabi/gconv/gconv-modules.cache\", O_RDONLY) = -1 ENOENT (No such file or directory) +open(\"/usr/lib/arm-linux-gnueabi/gconv/gconv-modules\", O_RDONLY|0x80000) = -1 ENOENT (No such file or directory) +futex(0x2b1e4ef4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +--- SIGVTALRM (Virtual timer expired) @ 0 (0) --- +sigreturn() = ? (mask now [TRAP FPE KILL SEGV USR2 TERM STKFLT CHLD CONT TSTP TTIN TTOU XCPU VTALRM WINCH PWR]) +--- SIGVTALRM (Virtual timer expired) @ 0 (0) --- +sigreturn() = ? (mask now [TRAP FPE KILL SEGV USR2 TERM STKFLT CHLD CONT TSTP TTIN TTOU XCPU VTALRM WINCH PWR]) + +Running local on NAS: +mprotect(0x2b0dc000, 8192, PROT_READ) = 0 +mprotect(0x2ae4a000, 4096, PROT_READ) = 0 +mprotect(0x2b241000, 4096, PROT_READ) = 0 +mprotect(0x2aee9000, 4096, PROT_READ) = 0 +mprotect(0x2b19e000, 4096, PROT_READ) = 0 +mprotect(0x2b1d7000, 4096, PROT_READ) = 0 +mprotect(0x2b15c000, 4096, PROT_READ) = 0 +mprotect(0x2ae71000, 4096, PROT_READ) = 0 +mprotect(0x2ab70000, 4096, PROT_READ) = 0 +mprotect(0x2b138000, 20480, PROT_READ) = 0 +mprotect(0x2b0f8000, 4096, PROT_READ) = 0 +mprotect(0x2af9a000, 4096, PROT_READ) = 0 +mprotect(0x2ab57000, 4096, PROT_READ) = 0 +mprotect(0x2ab3a000, 4096, PROT_READ) = 0 +mprotect(0x2ab1b000, 4096, PROT_READ) = 0 +mprotect(0x2ae33000, 16384, PROT_READ) = 0 +mprotect(0x2acf7000, 20480, PROT_READ) = 0 +mprotect(0x2abec000, 4096, PROT_READ) = 0 +mprotect(0x2abab000, 4096, PROT_READ) = 0 +mprotect(0x2aaf3000, 4096, PROT_READ) = 0 +set_tid_address(0x2b2a8068) = 18072 +set_robust_list(0x2b2a8070, 0xc) = 0 +rt_sigaction(SIGRTMIN, {0x2ae51550, [], SA_SIGINFO|0x4000000}, NULL, 8) = 0 +rt_sigaction(SIGRT_1, {0x2ae513e4, [], SA_RESTART|SA_SIGINFO|0x4000000}, NULL, 8) = 0 +rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 +getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 +futex(0x2b13dc44, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +brk(0) = 0x2ca10000 +brk(0x2ca31000) = 0x2ca31000 +open(\"/dev/urandom\", O_RDONLY|O_LARGEFILE) = 3 +fcntl64(3, F_GETFD) = 0 +fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 +fstat64(3, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 9), ...}) = 0 +clock_gettime(CLOCK_REALTIME, {1424257086, 456931329}) = 0 +getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 20000}, ru_stime={0, 0}, ...}) = 0 +read(3, \"l\36K\322\231Ud\302.\335\301dhC)A\260\374~\350\254\341-\267\215\300\313\334\215XqI\", 32) = 32 +read(3, \"\25017J\372\361^\374\254\347$\f=Ag)\10r\25\317r]\216\337G\371M\27\321\326\0(\", 32) = 32 +read(3, \"\245\271\251\373\270\350S1\", 8) = 8 +open(\"/usr/lib/locale/locale-archive\", O_RDONLY|O_LARGEFILE|0x80000) = 4 +fstat64(4, {st_mode=S_IFREG|0644, st_size=14362288, ...}) = 0 +mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 4, 0) = 0x2b36b000 +close(4) = 0 +clock_getres(0x2 /* CLOCK_??? */, {0, 1}) = 0 +clock_gettime(0x2 /* CLOCK_??? */, {0, 29204680}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438838, 301653485}) = 0 +brk(0x2ca52000) = 0x2ca52000 +mmap2(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b579000 +munmap(0x2b579000, 552960) = 0 +munmap(0x2b700000, 495616) = 0 +timer_create(CLOCK_MONOTONIC, {0, SIGVTALRM, SIGEV_SIGNAL, {...}}, {0x2}) = 0 +rt_sigaction(SIGVTALRM, {0x3cc4e08, [], SA_RESTART|0x4000000}, NULL, 8) = 0 +timer_settime(0x2, 0, {it_interval={0, 10000000}, it_value={0, 10000000}}, NULL) = 0 +rt_sigaction(SIGINT, {0x3cce17c, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0}, 8) = 0 +rt_sigaction(SIGINT, NULL, {0x3cce17c, [], 0x4000000 /* SA_??? */}, 8) = 0 +rt_sigaction(SIGINT, {0x3cce17c, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +rt_sigaction(SIGPIPE, {0x3cce0b4, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0}, 8) = 0 +rt_sigaction(SIGTSTP, {0x3cce1c0, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +epoll_create(0x100) = 4 +fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 +pipe([5, 6]) = 0 +fcntl64(6, F_GETFL) = 0x1 (flags O_WRONLY) +fcntl64(6, F_SETFL, O_WRONLY|O_NONBLOCK) = 0 +fcntl64(5, F_SETFD, FD_CLOEXEC) = 0 +fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 +mmap2(NULL, 8388608, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS|0x20000, -1, 0) = 0x2b700000 +mprotect(0x2b700000, 4096, PROT_NONE) = 0 +clone(child_stack=0x2befef98, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x2beff4c8, tls=0x2beff920, child_tidptr=0x2beff4c8) = 18073 +futex(0x2ca36264, FUTEX_WAIT_PRIVATE, 1, NULL) = 0 +futex(0x2ca36290, FUTEX_WAKE_PRIVATE, 1) = 0 +eventfd2(0, 0) = 7 +fcntl64(7, F_GETFL) = 0x2 (flags O_RDWR) +fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0 +fcntl64(7, F_SETFD, FD_CLOEXEC) = 0 +epoll_ctl(0x4, 0x1, 0x5, 0x2b604430) = 0 +epoll_ctl(0x4, 0x1, 0x7, 0x2b604448) = 0 +futex(0x2ca36314, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2ca36310, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 +clock_gettime(0x2 /* CLOCK_??? */, {0, 31248840}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438838, 311493486}) = 0 +futex(0x2ca36264, FUTEX_WAIT_PRIVATE, 3, NULL) = 0 +futex(0x2ca36290, FUTEX_WAKE_PRIVATE, 1) = 0 +rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 +rt_sigaction(SIGINT, {0x3cce0b8, [], SA_RESETHAND|SA_SIGINFO|0x4000000}, NULL, 8) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 +stat64(\"/volume1/homes/admin/GitAnnex.git\", 0x2b604890) = -1 ENOENT (No such file or directory) +getcwd(\"/volume1/homes/admin\", 4096) = 21 +getcwd(\"/volume1/homes/admin\", 4096) = 21 +getcwd(\"/volume1/homes/admin\", 4096) = 21 +pipe([8, 9]) = 0 +pipe([10, 11]) = 0 +rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 +timer_settime(0x2, 0, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0 +vfork() = 18074 +close(9) = 0 +fcntl64(8, F_SETFD, FD_CLOEXEC) = 0 +close(11) = 0 +fcntl64(10, F_SETFD, FD_CLOEXEC) = 0 +read(10, \"\", 4) = 0 +close(10) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +timer_settime(0x2, 0, {it_interval={0, 10000000}, it_value={0, 10000000}}, NULL) = 0 +fcntl64(8, F_GETFL) = 0 (flags O_RDONLY) +fcntl64(8, F_SETFL, O_RDONLY|O_NONBLOCK) = 0 +ioctl(8, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7ea3e7ac) = -1 EINVAL (Invalid argument) +read(8, 0x2b6f1010, 8096) = -1 EAGAIN (Resource temporarily unavailable) +epoll_ctl(0x4, 0x1, 0x8, 0x2b604d0c) = 0 +write(7, \"\1\0\0\0\0\0\0\0\", 8) = 8 +futex(0x2ca36314, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2ca36310, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 +futex(0x2ca36340, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x41981d0, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x2ca36264, FUTEX_WAIT_PRIVATE, 5, NULL) = ? ERESTARTSYS (To be restarted) +--- SIGCHLD (Child exited) @ 0 (0) --- +futex(0x2ca36264, FUTEX_WAIT_PRIVATE, 5, NULL) = -1 EAGAIN (Resource temporarily unavailable) +futex(0x2ca36290, FUTEX_WAKE_PRIVATE, 1) = 0 +read(8, \"user.email\nbraun_markus@gmx.de\0u\"..., 8096) = 211 +read(8, \"\", 8096) = 0 +close(8) = 0 +wait4(18074, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 18074 +rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0 +rt_sigaction(SIGINT, {SIG_DFL, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +select(2, [], [1], NULL, {0, 0}) = 1 (out [1], left {0, 0}) +write(1, \"annex.uuid=8d7304a1-6ea5-46cc-83\"..., 48) = 48 +select(2, [], [1], NULL, {0, 0}) = 1 (out [1], left {0, 0}) +write(1, \"core.gcrypt-id=\n\", 16) = 16 +wait4(-1, 0x2b604f10, WNOHANG|WSTOPPED, NULL) = -1 ECHILD (No child processes) +clock_gettime(0x2 /* CLOCK_??? */, {0, 36727080}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438838, 341180247}) = 0 +write(6, \"\376\", 1) = 1 +rt_sigprocmask(SIG_BLOCK, [], [], 8) = 0 +clock_gettime(0x2 /* CLOCK_??? */, {0, 36947040}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438838, 341757433}) = 0 +clock_getres(0x3 /* CLOCK_??? */, {0, 1}) = 0 +clock_gettime(0x3 /* CLOCK_??? */, {0, 36313200}) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +futex(0x2ca36314, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x2ca36310, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 +futex(0x2ca36340, FUTEX_WAKE_PRIVATE, 1) = 1 +futex(0x41981d0, FUTEX_WAKE_PRIVATE, 1) = 1 +timer_settime(0x2, 0, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0 +rt_sigaction(SIGVTALRM, {SIG_IGN, [], SA_INTERRUPT|SA_NODEFER|SA_RESETHAND|0x4000000}, {0x3cc4e08, [], SA_RESTART|0x4000000}, 8) = 0 +timer_delete(0x2) = 0 +rt_sigprocmask(SIG_BLOCK, [TTOU], [], 8) = 0 +rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +rt_sigaction(SIGINT, {SIG_DFL, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +rt_sigaction(SIGPIPE, {SIG_DFL, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +rt_sigaction(SIGTSTP, {SIG_DFL, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0 +clock_gettime(0x2 /* CLOCK_??? */, {0, 38184040}) = 0 +clock_gettime(CLOCK_MONOTONIC, {438838, 344573245}) = 0 +close(3) = 0 +exit_group(0) = ? + +"""]] diff --git a/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn b/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn index 779f3f7fd7..05b431a4dc 100644 --- a/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn +++ b/doc/devblog/day_255__sqlite_concurrent_writers_problem.mdwn @@ -4,7 +4,7 @@ multiple concurrent fsck processes. The first problem was that having `fsck --incremental` running and starting a new `fsck --incremental` caused it to crash. And with good reason, since starting a new incremental fsck deletes the old database, the old process -was left writing to a datbase that had been deleted and recreated out from +was left writing to a database that had been deleted and recreated out from underneath it. Fixed with some locking. Next problem is harder. Sqlite doesn't support multiple concurrent writers diff --git a/doc/devblog/day_256__sqlite_concurrency_argh.mdwn b/doc/devblog/day_256__sqlite_concurrency_argh.mdwn new file mode 100644 index 0000000000..df02d47be7 --- /dev/null +++ b/doc/devblog/day_256__sqlite_concurrency_argh.mdwn @@ -0,0 +1,28 @@ +Breaking news: gitlab.com repositories now support git-annex! + +* [GitLab Annex solves the problem of versioning large binaries with git](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/) +* [freely licensed source code](https://gitlab.com/gitlab-org/gitlab-shell) + +A very nice surprise! More git hosters should do this.. + +---- + +Back to sqlite concurrency, I thought I had it dealt with, but more testing +today has turned up a lot more problems with sqlite and concurrent writers +(and readers). + +First, I noticed that a process can be happily writing changes to the +database, but if a second process starts reading from the database, this +will make the writier start failing with BUSY, and keep failing until the +second process goes idle. It turns out the solution to this is to use WAL +mode, which prevents readers from blocking writers. + +After several hours (persistent doesn't make it easy to enable WAL mode), +it seemed pretty robust with concurrent fsck. + +But then I saw SELECT fail with BUSY. I don't understand why a reader would +fail in WAL mode; that's counter to the documentation. My best guess is +that this happens when a checkpoint is being made. + +This seems to be a real bug in sqlite. It may only affect the older +versions bundled with persistent. diff --git a/doc/devblog/day_257__release_day.mdwn b/doc/devblog/day_257__release_day.mdwn new file mode 100644 index 0000000000..bd3057145c --- /dev/null +++ b/doc/devblog/day_257__release_day.mdwn @@ -0,0 +1,17 @@ +Today's release doesn't have the database branch merged of course, but it +still has a significant amount of changes. + +Developed a test case for the sqlite problem, that +reliably reproduces it, and sent it to the sqlite mailing list. It seems +that under heavy write load, when a new connection is made to the database, +SELECT can fail for a little while. Once one SELECT succeeds, that database +connection becomes solid, and won't fail any more (apparently). This makes +me think there might be some connection initialization steps that don't end +up finishing before the SELECT goes through in this situation. I should be +able to work around this problem by probing new connections for stability, +and probably will have to, since it'll be years before any bug fixed sqlite +is available everywhere. + +I also noticed that current git-annex incremental parallel fsck doesn't +really parallelize well; eg the processes do duplicate work. So, the +database branch is not really a regression in this area. diff --git a/doc/forum/What_happens_after_terminated_add_of_huge_picture_folder__63__/comment_3_f0a2ec3d0b05d84fb05a1708313a6762._comment b/doc/forum/What_happens_after_terminated_add_of_huge_picture_folder__63__/comment_3_f0a2ec3d0b05d84fb05a1708313a6762._comment new file mode 100644 index 0000000000..d06b509651 --- /dev/null +++ b/doc/forum/What_happens_after_terminated_add_of_huge_picture_folder__63__/comment_3_f0a2ec3d0b05d84fb05a1708313a6762._comment @@ -0,0 +1,12 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawldTFGlKsKUyq6F6CJ22CNBnmYJ0LQbLUQ" + nickname="Rolandas" + subject="comment 3" + date="2015-02-18T06:58:59Z" + content=""" +Jes, it was an entirely new git repo and I removed .git folder and start over.
+The question was is there some sort of „UNDO“ in this case.
+I get it now.
+I will read internals documentation.
+Thank You very much!
+"""]] diff --git a/doc/forum/lsof_resource_use_problems/comment_2_7b0d4109c04c47e65420105f0de3b7a2._comment b/doc/forum/lsof_resource_use_problems/comment_2_7b0d4109c04c47e65420105f0de3b7a2._comment new file mode 100644 index 0000000000..a74832bba6 --- /dev/null +++ b/doc/forum/lsof_resource_use_problems/comment_2_7b0d4109c04c47e65420105f0de3b7a2._comment @@ -0,0 +1,8 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawmuT_R0AecWcfCFTN055N8rD_WwQkgo1PE" + nickname="Tomas" + subject="macosx 10.9.5" + date="2015-02-19T20:18:05Z" + content=""" +I have the same issue. +"""]] diff --git a/doc/forum/optimising_lookupkey/comment_3_2c895e4494cddab70ba761c6c48e7cf8._comment b/doc/forum/optimising_lookupkey/comment_3_2c895e4494cddab70ba761c6c48e7cf8._comment new file mode 100644 index 0000000000..5ee6599586 --- /dev/null +++ b/doc/forum/optimising_lookupkey/comment_3_2c895e4494cddab70ba761c6c48e7cf8._comment @@ -0,0 +1,11 @@ +[[!comment format=mdwn + username="anarcat" + subject="thanks" + date="2015-02-18T21:53:52Z" + content=""" +great, thanks for the feedback! + +i agree that 25ms is quite fast to fire up a 52MB binary. :) i am just saying that if this is going to end up as part of building a webpage, i need something faster, or cache the results somewhere. + +duly noted for the other points, thanks again. i see a great intimate relationship building between `git cat-file` and me. ;) +"""]] diff --git a/doc/news/version_5.20141219.mdwn b/doc/news/version_5.20141219.mdwn deleted file mode 100644 index 74d228c523..0000000000 --- a/doc/news/version_5.20141219.mdwn +++ /dev/null @@ -1,20 +0,0 @@ -git-annex 5.20141219 released with [[!toggle text="these changes"]] -[[!toggleable text=""" - * Webapp: When adding a new box.com remote, use the new style chunking. - Thanks, Jon Ander Peñalba. - * External special remote protocol now includes commands for setting - and getting the urls associated with a key. - * Urls can now be claimed by remotes. This will allow creating, - for example, a external special remote that handles magnet: and - *.torrent urls. - * Use wget -q --show-progress for less verbose wget output, - when built with wget 1.16. - * Added bittorrent special remote. - * addurl behavior change: When downloading an url ending in .torrent, - it will download files from bittorrent, instead of the old behavior - of adding the torrent file to the repository. - * Added Recommends on aria2. - * When possible, build with the haskell torrent library for parsing - torrent files. As a fallback, can instead use btshowmetainfo from - bittornado | bittorrent. - * Fix build with -f-S3."""]] \ No newline at end of file diff --git a/doc/news/version_5.20150219.mdwn b/doc/news/version_5.20150219.mdwn new file mode 100644 index 0000000000..0225e85626 --- /dev/null +++ b/doc/news/version_5.20150219.mdwn @@ -0,0 +1,34 @@ +git-annex 5.20150219 released with [[!toggle text="these changes"]] +[[!toggleable text=""" + * glacier: Detect when the glacier command in PATH is the wrong one, + from boto, rather than from glacier-cli, and refuse to use it, + since the boto program fails to fail when passed + parameters it does not understand. + * groupwanted: New command to set the groupwanted preferred content + expression. + * import: Support file matching options such as --exclude, --include, + --smallerthan, --largerthan + * The file matching options are now only accepted by commands that + can actually use them, instead of by all commands. + * import: Avoid checksumming file twice when run in the default + or --duplicate mode. + * Windows: Fix bug in dropping an annexed file, which + caused a symlink to be staged that contained backslashes. + * webapp: Fix reversion in opening webapp when starting it manually + inside a repository. + * assistant: Improve sanity check for control characters when pairing. + * Improve race recovery code when committing to git-annex branch. + * addurl: Avoid crash if quvi is not installed, when git-annex was + built with process-1.2 + * bittorrent: Fix mojibake introduced in parsing arai2c progress output. + * fsck --from: If a download from a remote fails, propagate the failure. + * metadata: When setting metadata, do not recurse into directories by + default, since that can be surprising behavior and difficult to recover + from. The old behavior is available by using --force. + * sync, assistant: Include repository name in head branch commit message. + * The ssh-options git config is now used by gcrypt, rsync, and ddar + special remotes that use ssh as a transport. + * sync, assistant: Use the ssh-options git config when doing git pull + and push. + * remotedaemon: Use the ssh-options git config. + * Linux standalone: Improved process names of linker shimmed programs."""]] \ No newline at end of file diff --git a/doc/preferred_content/standard_groups/comment_4_f5cd38886b58917fa3c417861fd10a10._comment b/doc/preferred_content/standard_groups/comment_4_f5cd38886b58917fa3c417861fd10a10._comment new file mode 100644 index 0000000000..495afaeee9 --- /dev/null +++ b/doc/preferred_content/standard_groups/comment_4_f5cd38886b58917fa3c417861fd10a10._comment @@ -0,0 +1,9 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawnbBRfl5F8gKRr1ko8Ai6FbEZStXXNF1S4" + nickname="Áron" + subject=""new files" group" + date="2015-02-19T11:06:34Z" + content=""" +In my mobile devices I would like to automatically have the newest files, because those have the biggest chance that I want to watch/read them on mobile. But I have found any preferred content expression that is about the age of a file. Is it possible to do something like this with the existing git-annex capabilities? +thanks +"""]] diff --git a/doc/related_software.mdwn b/doc/related_software.mdwn index f2b8e601be..4b6f42d2f7 100644 --- a/doc/related_software.mdwn +++ b/doc/related_software.mdwn @@ -3,12 +3,10 @@ designed to interoperate with it. * The [[git-annex assistant|assistant]] is included in git-annex, and extends its use cases into new territory. -* [git-annex-watcher](https://github.com/rubiojr/git-annex-watcher) - is a status icon for your desktop. -* [[forum/gadu_-_git-annex_disk_usage]] is a du like utility that - is git-annex aware. -* [sizes](http://hackage.haskell.org/package/sizes) is another du-like - utility, with a `-A` switch that enables git-annex support. +* [gitlab-shell](https://gitlab.com/gitlab-org/gitlab-shell) supports + git-annex. So git-annex can be used with repositries served by Gitlab, + including gitlab.com, or deploy your own. + [See Gitlab's announcment](https://about.gitlab.com/2015/02/17/gitlab-annex-solves-the-problem-of-versioning-large-binaries-with-git/) * Emacs Org mode can auto-commit attached files to git-annex. * [git annex darktable integration](https://github.com/xxv/darktable-git-annex) * [Magit](http://github.com/magit/magit), an Emacs mode for Git, has @@ -19,3 +17,9 @@ designed to interoperate with it. built by the Brazilian [Mocambos network](http://www.mocambos.net/) is [using git-annex to connect isolated communities](http://www.modspil.dk/itpolitik/baob_xia.html). Repositories sync over satellite internet and/or sneakernet. +* [[forum/gadu_-_git-annex_disk_usage]] is a du like utility that + is git-annex aware. +* [sizes](http://hackage.haskell.org/package/sizes) is another du-like + utility, with a `-A` switch that enables git-annex support. +* [git-annex-watcher](https://github.com/rubiojr/git-annex-watcher) + is a status icon for your desktop. diff --git a/doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment b/doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment new file mode 100644 index 0000000000..85145ffb72 --- /dev/null +++ b/doc/special_remotes/S3/comment_17_52d3510016c099d083553f9b3fa40db9._comment @@ -0,0 +1,10 @@ +[[!comment format=mdwn + username="https://www.google.com/accounts/o8/id?id=AItOawlc-3pdibcizrdz4WmZooECL0k6AvM1cWc" + nickname="Joe" + subject="S3 file/folder names" + date="2015-02-19T22:22:26Z" + content=""" +Is there a way to tell the S3 backend to store the files as they are named locally, instead of by hashed content name? i.e., I've annexed foo/bar.txt and annex puts it in s3 as mybucket.name/foo/bar.txt instead of mybucket.name/GPGHMACSHA1-random.txt + +Or should I just write a script to s3cmd sync my annex, and add the S3/cloudfront distribution URL as a web remote? +"""]] diff --git a/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl b/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl index 85b97188f1..56f902cb03 100644 --- a/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl +++ b/doc/tips/dumb_metadata_extraction_from_xbmc/git-annex-xbmc-playcount.pl @@ -158,7 +158,7 @@ B<^MyVideos.*\.db$> and will fail if none is found. Manually specify the path to B<.xbmc/userdata/Database>. This overrides B<--home>. -Note that this doesn't point directly to the datbase itself, because +Note that this doesn't point directly to the database itself, because there are usually many database files and we want to automatically find the latest. This may be a stupid limitation. diff --git a/doc/todo/server-level_daemon__63__.mdwn b/doc/todo/server-level_daemon__63__.mdwn new file mode 100644 index 0000000000..dad11595b6 --- /dev/null +++ b/doc/todo/server-level_daemon__63__.mdwn @@ -0,0 +1,3 @@ +coming from [[bugs/weird_entry_in_process_list]] - are there plans to make an init.d / systemd .service file for git-annex? + +my use case is that i have dedicated machines that will sync a common directory. they will run only one assistant - would patches to make a `git-annex` user, and the associated startup scripts, in the debian package be welcome? --[[anarcat]] diff --git a/git-annex.cabal b/git-annex.cabal index 75e483b84b..7f2c50b801 100644 --- a/git-annex.cabal +++ b/git-annex.cabal @@ -1,5 +1,5 @@ Name: git-annex -Version: 5.20150205 +Version: 5.20150219 Cabal-Version: >= 1.8 License: GPL-3 Maintainer: Joey Hess