Merge branch 'master' into incrementalfsck
This commit is contained in:
commit
a1040a38c5
18 changed files with 505 additions and 9 deletions
|
@ -18,7 +18,6 @@ import qualified Remote
|
||||||
import Types.Remote (RemoteConfig)
|
import Types.Remote (RemoteConfig)
|
||||||
import Types.StandardGroups
|
import Types.StandardGroups
|
||||||
import Logs.Remote
|
import Logs.Remote
|
||||||
import Assistant.Gpg
|
|
||||||
import Assistant.WebApp.Utility
|
import Assistant.WebApp.Utility
|
||||||
import Git.Remote
|
import Git.Remote
|
||||||
|
|
||||||
|
@ -26,6 +25,7 @@ import qualified Data.Map as M
|
||||||
#endif
|
#endif
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import Network.URI
|
import Network.URI
|
||||||
|
import Assistant.Gpg
|
||||||
|
|
||||||
webDAVConfigurator :: Widget -> Handler Html
|
webDAVConfigurator :: Widget -> Handler Html
|
||||||
webDAVConfigurator = page "Add a WebDAV repository" (Just Configuration)
|
webDAVConfigurator = page "Add a WebDAV repository" (Just Configuration)
|
||||||
|
|
|
@ -371,10 +371,11 @@ staleSize label dirspec = go =<< lift (dirKeys dirspec)
|
||||||
onsize size = stat label $
|
onsize size = stat label $
|
||||||
json (++ aside "clean up with git-annex unused") $
|
json (++ aside "clean up with git-annex unused") $
|
||||||
return $ roughSize storageUnits False size
|
return $ roughSize storageUnits False size
|
||||||
keysizes keys = map (fromIntegral . fileSize) <$> stats keys
|
keysizes keys = do
|
||||||
stats keys = do
|
|
||||||
dir <- lift $ fromRepo dirspec
|
dir <- lift $ fromRepo dirspec
|
||||||
liftIO $ forM keys $ \k -> getFileStatus (dir </> keyFile k)
|
liftIO $ forM keys $ \k -> catchDefaultIO 0 $
|
||||||
|
fromIntegral . fileSize
|
||||||
|
<$> getFileStatus (dir </> keyFile k)
|
||||||
|
|
||||||
aside :: String -> String
|
aside :: String -> String
|
||||||
aside s = " (" ++ s ++ ")"
|
aside s = " (" ++ s ++ ")"
|
||||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -15,6 +15,8 @@ git-annex (4.20131003) UNRELEASED; urgency=low
|
||||||
* Remove bogus runshell loop check.
|
* Remove bogus runshell loop check.
|
||||||
* addurl: Improve message when adding url with wrong size to existing file.
|
* addurl: Improve message when adding url with wrong size to existing file.
|
||||||
* Fixed handling of URL keys that have no recorded size.
|
* Fixed handling of URL keys that have no recorded size.
|
||||||
|
* status: Fix a crash if a temp file went away while its size was
|
||||||
|
being checked for status.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Thu, 03 Oct 2013 15:41:24 -0400
|
-- Joey Hess <joeyh@debian.org> Thu, 03 Oct 2013 15:41:24 -0400
|
||||||
|
|
||||||
|
|
BIN
doc/assistant/fsckconfig.png
Normal file
BIN
doc/assistant/fsckconfig.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
65
doc/bugs/addurl_fails_on_the_internet_archive.mdwn
Normal file
65
doc/bugs/addurl_fails_on_the_internet_archive.mdwn
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
### Please describe the problem.
|
||||||
|
|
||||||
|
`addurl` doesn't support the internet archive:
|
||||||
|
|
||||||
|
1. it doesn't actually accept the proper URL as a secondary source of content
|
||||||
|
2. it doesn't parse the HTML from the video page (the "details page")
|
||||||
|
|
||||||
|
### What steps will reproduce the problem?
|
||||||
|
|
||||||
|
# download eben moglen's excellent re:publica presentation from youtube
|
||||||
|
git annex addurl https://www.youtube.com/watch?v=sKOk4Y4inVY
|
||||||
|
# copy that file aside
|
||||||
|
cp -L re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm-bak
|
||||||
|
# drop it so we can try again
|
||||||
|
git annex drop re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
# add the IA URL for the same video, failing
|
||||||
|
git annex addurl --file=re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
# try again with --relaxed to skip some checks
|
||||||
|
git annex addurl --relaxed --file=re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
# observe both files are the same size and checksum
|
||||||
|
|
||||||
|
The files should look like this:
|
||||||
|
|
||||||
|
[[!format txt """
|
||||||
|
anarcat@angela:presentations$ ls -alL re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm*
|
||||||
|
-r--r--r-- 1 anarcat anarcat 419359123 oct 9 23:41 re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
-r--r--r-- 1 anarcat anarcat 419359123 oct 11 19:40 re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm-bak
|
||||||
|
anarcat@angela:presentations$ md5sum re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm*
|
||||||
|
7892df24a9e1c40e2587be1035728ef0 re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
7892df24a9e1c40e2587be1035728ef0 re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm-bak
|
||||||
|
"""]]
|
||||||
|
|
||||||
|
There are two separate bugs here: one is the above need to use --relaxed even though the file is the same.
|
||||||
|
|
||||||
|
The second is probably simply that quvi doesn't support the internet archive, and maybe that one should be moved to a separate [[todo]]/[[wishlist]]. I was expecting this to "do the right thing" (ie. download the video):
|
||||||
|
|
||||||
|
git annex addurl http://archive.org/details/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia
|
||||||
|
|
||||||
|
... but instead it downloads the HTML.
|
||||||
|
### What version of git-annex are you using? On what operating system?
|
||||||
|
|
||||||
|
my good old faithful `4.20130921-g434dc22` i compiled manually some time ago. :)
|
||||||
|
|
||||||
|
This is [[done]] in git-annex version: 4.20131011-g2c0badc. Thanks!
|
||||||
|
|
||||||
|
### Please provide any additional information below.
|
||||||
|
|
||||||
|
[[!format sh """
|
||||||
|
anarcat@marcos:presentations$ git annex addurl --file=re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm http://archive.org/download/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
addurl re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
failed to verify url exists: http://archive.org/download/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
failed
|
||||||
|
git-annex: addurl: 1 failed
|
||||||
|
anarcat@marcos:presentations$ git annex addurl --debug --file=re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
[2013-10-09 18:26:30 EDT] call: quvi ["-v","mute","--support","http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm"]
|
||||||
|
addurl re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm [2013-10-09 18:26:30 EDT] read: curl ["-s","--head","-L","http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm","-w","%{http_code}"]
|
||||||
|
|
||||||
|
failed to verify url exists: http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
|
||||||
|
failed
|
||||||
|
git-annex: addurl: 1 failed
|
||||||
|
"""]]
|
||||||
|
|
||||||
|
Originally reported in [[tips/Internet_Archive_via_S3]]. --[[anarcat]]
|
||||||
|
|
||||||
|
> [[done]] --[[Joey]]
|
|
@ -0,0 +1,10 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://joeyh.name/"
|
||||||
|
ip="4.154.4.22"
|
||||||
|
subject="comment 1"
|
||||||
|
date="2013-10-11T18:49:25Z"
|
||||||
|
content="""
|
||||||
|
Afaik this was fixed in 747f5b123cb3c6b3b87d4e79f8767e69d842b96b.
|
||||||
|
|
||||||
|
Probably noone has bothered to add IA support to quvi, but it should be doable.
|
||||||
|
"""]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://id.koumbit.net/anarcat"
|
||||||
|
ip="72.0.72.144"
|
||||||
|
subject="awesome, fix confirmed, and IA+quvi forwarded upstream"
|
||||||
|
date="2013-10-12T11:23:31Z"
|
||||||
|
content="""
|
||||||
|
Great! I confirm latest versions work properly.. I have [written the quvi-devel mailing list](http://sourceforge.net/mailarchive/forum.php?thread_name=20131012104904.GA11972%40angela.anarcat.ath.cx&forum_name=quvi-devel) to ask for help for archive.org support, we'll see where it goes...
|
||||||
|
"""]]
|
|
@ -0,0 +1,197 @@
|
||||||
|
### Please describe the problem.
|
||||||
|
Data loss due to incorrect merge of repos in direct mode. (I tested the same scenario in indirect mode and it worked fine there)
|
||||||
|
|
||||||
|
Given 2 repos A and B, in direct mode:
|
||||||
|
|
||||||
|
1. in A: mkdir f, with a file f in it
|
||||||
|
2. in B: touch f
|
||||||
|
3. in B: sync
|
||||||
|
|
||||||
|
Result: Only an f.variant-f###remains, which is file f of B, and the merge conflict has already been automatically resolved. I.e. Directory f containing file f, is lost.
|
||||||
|
|
||||||
|
Expected result: remaining contents: f.variant-AAA which is file f of B, f.variant-BBB which is directory f of A, containing a file f. Merge conflict marked resolved.
|
||||||
|
|
||||||
|
### What steps will reproduce the problem?
|
||||||
|
Execute the script given below in additional information.
|
||||||
|
|
||||||
|
### What version of git-annex are you using?
|
||||||
|
git-annex version: 4.20130911-g6625d0e
|
||||||
|
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP Feeds Quvi
|
||||||
|
|
||||||
|
### On what operating system?
|
||||||
|
Linux basementcat 3.10.10-1-ARCH #1 SMP PREEMPT Fri Aug 30 11:30:06 CEST 2013 x86_64 GNU/Linux
|
||||||
|
|
||||||
|
### Please provide any additional information below.
|
||||||
|
|
||||||
|
[[!format sh """
|
||||||
|
[~]$ mkdir test
|
||||||
|
[~/test]$ mkdir a
|
||||||
|
[~/test/a]$ git init
|
||||||
|
Initialized empty Git repository in /home/limyreth/test/a/.git/
|
||||||
|
[~/test/a]$ git annex init test
|
||||||
|
init test ok
|
||||||
|
(Recording state in git...)
|
||||||
|
[~/test/a]$ touch firstfile
|
||||||
|
[~/test/a]$ git annex add firstfile
|
||||||
|
add firstfile (checksum...) ok
|
||||||
|
(Recording state in git...)
|
||||||
|
[~/test/a]$ git annex sync
|
||||||
|
commit
|
||||||
|
ok
|
||||||
|
git-annex: no branch is checked out
|
||||||
|
[~]$ git clone test/a
|
||||||
|
Cloning into 'a'...
|
||||||
|
done.
|
||||||
|
[~]$ mv a test/b
|
||||||
|
[~/test/a]$ git annex direct
|
||||||
|
commit
|
||||||
|
# On branch master
|
||||||
|
nothing to commit, working directory clean
|
||||||
|
ok
|
||||||
|
direct firstfile ok
|
||||||
|
direct ok
|
||||||
|
[~/test/a]$ ls -l
|
||||||
|
total 0
|
||||||
|
-rw-r--r-- 1 limyreth users 0 Oct 12 15:09 firstfile
|
||||||
|
[~/test/a]$ mkdir f
|
||||||
|
[~/test/a]$ touch f/f
|
||||||
|
[~/test/a]$ git annex add f/f
|
||||||
|
add f/f (checksum...) ok
|
||||||
|
(Recording state in git...)
|
||||||
|
[~/test/a]$ git annex sync
|
||||||
|
commit
|
||||||
|
ok
|
||||||
|
[~/test/b]$ git remote -v
|
||||||
|
origin /home/limyreth/test/a (fetch)
|
||||||
|
origin /home/limyreth/test/a (push)
|
||||||
|
[~/test/b]$ ls
|
||||||
|
firstfile
|
||||||
|
[~/test/b]$ git annex direct
|
||||||
|
commit
|
||||||
|
(Recording state in git...)
|
||||||
|
# On branch master
|
||||||
|
nothing to commit, working directory clean
|
||||||
|
ok
|
||||||
|
direct ok
|
||||||
|
[~/test/b]$ touch f
|
||||||
|
[~/test/b]$ git annex add f
|
||||||
|
add f (checksum...) ok
|
||||||
|
(Recording state in git...)
|
||||||
|
[~/test/b]$ git annex sync
|
||||||
|
(merging origin/git-annex into git-annex...)
|
||||||
|
(Recording state in git...)
|
||||||
|
commit
|
||||||
|
ok
|
||||||
|
pull origin
|
||||||
|
remote: Counting objects: 14, done.
|
||||||
|
remote: Compressing objects: 100% (7/7), done.
|
||||||
|
remote: Total 9 (delta 1), reused 0 (delta 0)
|
||||||
|
Unpacking objects: 100% (9/9), done.
|
||||||
|
From /home/limyreth/test/a
|
||||||
|
2a8fa45..ad6802d master -> origin/master
|
||||||
|
1f39016..19e3e12 git-annex -> origin/git-annex
|
||||||
|
* [new branch] synced/master -> origin/synced/master
|
||||||
|
|
||||||
|
Adding f/f
|
||||||
|
CONFLICT (file/directory): There is a directory with name f in refs/remotes/origin/master. Adding f as f~HEAD
|
||||||
|
Automatic merge failed; fix conflicts and then commit the result.
|
||||||
|
f: needs merge
|
||||||
|
(Recording state in git...)
|
||||||
|
ok
|
||||||
|
[master 37a8019] git-annex automatic merge conflict fix
|
||||||
|
|
||||||
|
Already up-to-date.
|
||||||
|
ok
|
||||||
|
(merging origin/git-annex into git-annex...)
|
||||||
|
(Recording state in git...)
|
||||||
|
push origin
|
||||||
|
Counting objects: 36, done.
|
||||||
|
Delta compression using up to 4 threads.
|
||||||
|
Compressing objects: 100% (20/20), done.
|
||||||
|
Writing objects: 100% (25/25), 2.16 KiB | 0 bytes/s, done.
|
||||||
|
Total 25 (delta 5), reused 0 (delta 0)
|
||||||
|
To /home/limyreth/test/a
|
||||||
|
ad6802d..37a8019 master -> synced/master
|
||||||
|
* [new branch] git-annex -> synced/git-annex
|
||||||
|
ok
|
||||||
|
[~/test/b]$ ls -l
|
||||||
|
total 0
|
||||||
|
-rw-r--r-- 1 limyreth users 0 Oct 12 15:11 firstfile
|
||||||
|
-rw-r--r-- 1 limyreth users 0 Oct 12 15:11 f.variant-f874
|
||||||
|
[~/test/b]$ git log --summary
|
||||||
|
commit 37a80199abe3cf82100bbdb5dd2217ed6bcb4b62
|
||||||
|
Merge: 5a8942a ad6802d
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:11:47 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic merge conflict fix
|
||||||
|
|
||||||
|
commit 5a8942a9a1735cb313c1f6624cbd3f48b252d9d9
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:11:47 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic sync
|
||||||
|
|
||||||
|
create mode 120000 f
|
||||||
|
|
||||||
|
commit ad6802dc231d389b86154e2df900a70b18e17b29
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:11:40 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic sync
|
||||||
|
|
||||||
|
create mode 120000 f/f
|
||||||
|
|
||||||
|
commit 2a8fa45bea996ab5ae219a017d4b642153e6d9c9
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:09:40 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic sync
|
||||||
|
|
||||||
|
create mode 120000 firstfile
|
||||||
|
[~/test/a]$ git annex sync
|
||||||
|
(merging synced/git-annex into git-annex...)
|
||||||
|
commit
|
||||||
|
ok
|
||||||
|
merge synced/master
|
||||||
|
Updating ad6802d..37a8019
|
||||||
|
Fast-forward
|
||||||
|
f.variant-f874 | 1 +
|
||||||
|
f/f | 1 -
|
||||||
|
2 files changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
create mode 120000 f.variant-f874
|
||||||
|
delete mode 120000 f/f
|
||||||
|
ok
|
||||||
|
[~/test/a]$ git log --summary
|
||||||
|
commit 37a80199abe3cf82100bbdb5dd2217ed6bcb4b62
|
||||||
|
Merge: 5a8942a ad6802d
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:11:47 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic merge conflict fix
|
||||||
|
|
||||||
|
commit 5a8942a9a1735cb313c1f6624cbd3f48b252d9d9
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:11:47 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic sync
|
||||||
|
|
||||||
|
create mode 120000 f
|
||||||
|
|
||||||
|
commit ad6802dc231d389b86154e2df900a70b18e17b29
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:11:40 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic sync
|
||||||
|
|
||||||
|
create mode 120000 f/f
|
||||||
|
|
||||||
|
commit 2a8fa45bea996ab5ae219a017d4b642153e6d9c9
|
||||||
|
Author: timdiels <timdiels.m@gmail.com>
|
||||||
|
Date: Sat Oct 12 15:09:40 2013 +0200
|
||||||
|
|
||||||
|
git-annex automatic sync
|
||||||
|
|
||||||
|
create mode 120000 firstfile
|
||||||
|
|
||||||
|
"""]]
|
|
@ -0,0 +1,10 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawlWskoNgUB7r70OXglR-4iKI4bOuPJb-xg"
|
||||||
|
nickname="Tim"
|
||||||
|
subject="comment 1"
|
||||||
|
date="2013-10-13T12:35:47Z"
|
||||||
|
content="""
|
||||||
|
I've just tested a similar scenario with 2 conflicting files, a file-file conflict, and then it works fine. That makes sense, as there's a test written for that.
|
||||||
|
|
||||||
|
So the specific bits are: directory-file conflict of repos in direct mode.
|
||||||
|
"""]]
|
|
@ -24,7 +24,7 @@ check that nothing else is using it, fix the problem, and redo the commit.
|
||||||
|
|
||||||
## incremental fsck
|
## incremental fsck
|
||||||
|
|
||||||
TODO: Add webapp UI to enable incremental fsck
|
Add webapp UI to enable incremental fsck **done**
|
||||||
|
|
||||||
Of course, incremental fsck will run as an niced (and ioniced) background
|
Of course, incremental fsck will run as an niced (and ioniced) background
|
||||||
job. There will need to be a button in the webapp to stop it, in case it's
|
job. There will need to be a button in the webapp to stop it, in case it's
|
||||||
|
@ -33,8 +33,16 @@ annoying. **done**
|
||||||
When fsck finds a damanged file, queue a download of the file from a
|
When fsck finds a damanged file, queue a download of the file from a
|
||||||
remote. **done**
|
remote. **done**
|
||||||
|
|
||||||
TODO: If no accessible remote has the file, prompt the user to eg, connect
|
TODO: If no accessible remote has a file that fsck reported missing,
|
||||||
a drive containing it
|
prompt the user to eg, connect a drive containing it. Or perhaps this is a
|
||||||
|
special case of a general problem, and the webapp should prompt the user
|
||||||
|
when any desired file is available on a remote that's not mounted?
|
||||||
|
|
||||||
|
TODO: Detect when a removable drive is connected in the Cronner, and check
|
||||||
|
and try to run its remote fsck jobs.
|
||||||
|
|
||||||
|
TODO: git-annex-shell fsck support, which would allow cheap fast fscks
|
||||||
|
of ssh remotes.
|
||||||
|
|
||||||
## git-annex-shell remote fsck
|
## git-annex-shell remote fsck
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://joeyh.name/"
|
||||||
|
ip="4.154.4.22"
|
||||||
|
subject="comment 4"
|
||||||
|
date="2013-10-12T23:31:16Z"
|
||||||
|
content="""
|
||||||
|
Git simply creates a file as a lock file, and does not use any form of locking on it, so if the git process dies for any reason before it gets a chance to remove the lock file, a stale lock file remains, and future git commands will fall over it.
|
||||||
|
|
||||||
|
It's really surprisingly bad..
|
||||||
|
"""]]
|
20
doc/devblog/day_32__fsck_config_UI.mdwn
Normal file
20
doc/devblog/day_32__fsck_config_UI.mdwn
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
Last night, built this nice user interface for configuring periodic fscks:
|
||||||
|
|
||||||
|
[[!img assistant/fsckconfig.png]]
|
||||||
|
|
||||||
|
Rather happy that that whole UI needed only 140 lines of code to build.
|
||||||
|
Though rather more work behind it, as seen in this blog..
|
||||||
|
|
||||||
|
Today I added some support to git-annex for smart fscking of remotes.
|
||||||
|
So far only git repos on local drives, but this should get extended to
|
||||||
|
git-annex-shell for ssh remotes. The assistant can also run periodic fscks
|
||||||
|
of these.
|
||||||
|
|
||||||
|
Still need to test that, and find a way to make a removable drive's fsck
|
||||||
|
job run when the drive gets plugged in. That's where picking "any time"
|
||||||
|
will be useful; it'll let you configure fscking of removable drives when
|
||||||
|
they're available, as long as they have not been fscked too recently.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Today's work was sponsored by Georg Bauer.
|
|
@ -0,0 +1,136 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://www.google.com/accounts/o8/id?id=AItOawkUwqII7LhbatqAQY1T5ZZOdPEFcQJKG6I"
|
||||||
|
nickname="Rafael"
|
||||||
|
subject="comment 3"
|
||||||
|
date="2013-10-13T16:14:34Z"
|
||||||
|
content="""
|
||||||
|
This code needs the bash-completion file for git by Shawn O. Pearce, I think it is distributed by default on debian. Any feed-back or improvement is welcome! I'm far from expert, use at your own risks.
|
||||||
|
|
||||||
|
|
||||||
|
#!bash
|
||||||
|
#
|
||||||
|
# bash completion support for git-annex
|
||||||
|
|
||||||
|
# depends on git completion file (by Shawn O. Pearce):
|
||||||
|
[ -n \"$__git_whitespacelist\" ] || . $BASH_COMPLETION_DIR/git
|
||||||
|
|
||||||
|
|
||||||
|
# almost copy of __git_aliased_command
|
||||||
|
# requires 2 arguments: alias and main command (after git)
|
||||||
|
__git_aliased_subcommand ()
|
||||||
|
{
|
||||||
|
local word cmdline=$(git --git-dir=\"$(__gitdir)\" \
|
||||||
|
config --get \"alias.$1\")
|
||||||
|
for word in $cmdline; do
|
||||||
|
case \"$word\" in
|
||||||
|
\!*) : shell command alias ;;
|
||||||
|
-*) : option ;;
|
||||||
|
*=*) : setting env ;;
|
||||||
|
git) : git itself ;;
|
||||||
|
\"$2\") : main command
|
||||||
|
local found=1 ;;
|
||||||
|
*)
|
||||||
|
[ -n \"${found-}\" ] && echo \"$word\"
|
||||||
|
return
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
_git_annex ()
|
||||||
|
{
|
||||||
|
_get_comp_words_by_ref -n =: cur words
|
||||||
|
# $ git annex 2>&1 |sed '1,6d '|grep -v '^$'|grep -v 'commands:$'|cut -c1-12
|
||||||
|
local subcommands=\"
|
||||||
|
add addurl assistant copy drop edit get import importfeed lock
|
||||||
|
mirror move rmurl sync unlock watch webapp content dead describe
|
||||||
|
direct enableremote group indirect init initremote semitrust
|
||||||
|
trust ungroup untrust vicfg addunused dropunused fix forget fsck
|
||||||
|
merge unused upgrade find help list log map status version
|
||||||
|
whereis migrate reinject unannex uninit dropkey
|
||||||
|
\"
|
||||||
|
# plumbing (to complete?): fromkey fuzztest pre-commit rekey test
|
||||||
|
# transferkey transferkeys xmppgit
|
||||||
|
local subcommand=\"$(__git_find_on_cmdline \"$subcommands\")\"
|
||||||
|
if [ -z \"$subcommand\" ]; then
|
||||||
|
## search for aliased subcommand
|
||||||
|
## works only if the alias is invoked just after git
|
||||||
|
## (simpler, cf _git function)
|
||||||
|
local maybesubcom maybealias=${words[1]}
|
||||||
|
[ -n \"$maybealias\" ] && # false with a bash alias='git annex'
|
||||||
|
[ \"${maybealias:0:1}\" != '-' ] &&
|
||||||
|
maybesubcom=$(__git_aliased_subcommand \"$maybealias\" annex)
|
||||||
|
for subcommand in $subcommands \"\"; do
|
||||||
|
[ \"$maybesubcom\" = \"$subcommand\" ] && break
|
||||||
|
done
|
||||||
|
[ -z \"$subcommand\" ] &&
|
||||||
|
__gitcomp \"$subcommands\" &&
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
case \"$cur\" in
|
||||||
|
--from=*|--to=*|--trust=*|--semitrust=*|--untrust=*|--in=*)
|
||||||
|
__gitcomp \"here $(__git_remotes)\" \"\" \"${cur##*=}\"
|
||||||
|
;;
|
||||||
|
--*)
|
||||||
|
__gitcomp \"
|
||||||
|
--force --fast --auto --all --unused --quiet --verbose --json --debug
|
||||||
|
--no-debug --from= --to= --numcopies= --time-limit= --trust= --semitrust=
|
||||||
|
--untrust= --trust-glacier-inventory --backend= --format= --user-agent=
|
||||||
|
--exclude= --include= --in= --copies= --inbackend= --inallgroup=
|
||||||
|
--smallerthan= --largerthan= --not --and --or
|
||||||
|
\"
|
||||||
|
;;
|
||||||
|
# -*)
|
||||||
|
# __gitcomp \"-( -) -c\"
|
||||||
|
# ;;
|
||||||
|
*)
|
||||||
|
case \"$subcommand\" in
|
||||||
|
# subcommands with PATH (currently outputs wrongly \"uninit\",
|
||||||
|
# and not \"reinject\")
|
||||||
|
# $ tr ' ' '|' <<< $(git annex 2>&1 |sed '1,6d '|grep -v '^$' | \
|
||||||
|
# grep -v 'commands:$'|grep PATH |cut -c1-12)
|
||||||
|
add|copy|drop|edit|get|import|lock|mirror|move|unlock|fix| \
|
||||||
|
fsck|find|list|log|status|whereis|migrate|unannex| \
|
||||||
|
fromkey|pre-commit|rekey|reinject)
|
||||||
|
COMPREPLY=() # complete with paths
|
||||||
|
;;
|
||||||
|
addurl|importfeed|rmurl) # URL commands
|
||||||
|
COMPREPLY=() # at least works with file://...
|
||||||
|
;;
|
||||||
|
init|uninit|unused|merge|status|map|upgrade|version|assistant| \
|
||||||
|
watch|webapp|direct|indirect|vicfg|forget|help) # | plumbing...
|
||||||
|
COMPREPLY= # no more args expected
|
||||||
|
# is 'COMPREPLY=' correct? (seems not standard practice...)
|
||||||
|
;;
|
||||||
|
describe|trust|untrust|semitrust|sync|content|dead|group|ungroup)
|
||||||
|
__gitcomp \"here $(__git_remotes)\"
|
||||||
|
# TODO: handle git-annex special remotes
|
||||||
|
;;
|
||||||
|
initremote|enableremote)
|
||||||
|
case \"$cur\" in
|
||||||
|
type=*)
|
||||||
|
__gitcomp \"S3 bup directory rsync gcrypt webdav\" \"\" \"${cur##type=}\"
|
||||||
|
;;
|
||||||
|
encryption=*)
|
||||||
|
__gitcomp \"none hybrid shared pubkey\" \"\" \"${cur##encryption=}\"
|
||||||
|
;;
|
||||||
|
|
||||||
|
buprepo=|directory=|rsyncurl=)
|
||||||
|
COMPREPLY=()
|
||||||
|
# use COMPREPLY (and compgen below) directly because
|
||||||
|
# __gitcomp does not handle '*=*' pattern, only '--*=*'
|
||||||
|
# Writing a __gitannexcomp function may be worth it.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
local initremoteopts=\"
|
||||||
|
type= encryption= buprepo= directory= rsyncurl= \"
|
||||||
|
COMPREPLY=($(compgen -W \"$initremoteopts \" -- \"$cur\"))
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
"""]]
|
|
@ -0,0 +1,10 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="RaspberryPie"
|
||||||
|
ip="213.61.149.100"
|
||||||
|
subject="comment 5"
|
||||||
|
date="2013-10-13T06:33:24Z"
|
||||||
|
content="""
|
||||||
|
I use v4.20130909 and get the same error when running `git-annex status`. Does it matter that my filename in question is shown to have two dashes (--) at the end, just as in OP's case? Other files in .git/annex/tmp only have one dash at the end.
|
||||||
|
|
||||||
|
Joey, I straced the command and sent the output to your kitenet e-mail address. Hope it helps.
|
||||||
|
"""]]
|
|
@ -0,0 +1,11 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="http://joeyh.name/"
|
||||||
|
ip="4.154.4.22"
|
||||||
|
subject="comment 6"
|
||||||
|
date="2013-10-13T17:35:20Z"
|
||||||
|
content="""
|
||||||
|
What is the last line printed before this error message?
|
||||||
|
|
||||||
|
My preliminary analysis is that it is checking the sizes of stale files in .git/annex/tmp, and could fail if a temp file was deleted just as it was running.
|
||||||
|
But if so it would be unlikely to happen every time `git annex status` is run. Or even if it did happen every time (perhaps because you appear to be running the git-annex assistant and it might be adding a lot of files in the background), the filename in the error message would be different every time. I have just committed a fix for that problem to git, but am not 100% sure it's really the problem that you're seeing.
|
||||||
|
"""]]
|
|
@ -0,0 +1,8 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://id.koumbit.net/anarcat"
|
||||||
|
ip="72.0.72.144"
|
||||||
|
subject="still a bug, filed separately!"
|
||||||
|
date="2013-10-11T18:49:06Z"
|
||||||
|
content="""
|
||||||
|
Aaah, of course, sorry for the noise here. It turns out that this is *not* because the filesize (or even the checksum, for that matter) are different, so there's clearly a bug there, and i filed it in [[bugs/addurl_fails_on_the_internet_archive]]. Thanks!
|
||||||
|
"""]]
|
|
@ -68,7 +68,7 @@ number takes that many paths from the end.
|
||||||
|
|
||||||
## videos
|
## videos
|
||||||
|
|
||||||
<a name=quvi />
|
<a name=quvi></a>
|
||||||
|
|
||||||
There's support for downloading videos from sites like YouTube, Vimeo,
|
There's support for downloading videos from sites like YouTube, Vimeo,
|
||||||
and many more. This relies on [quvi](http://quvi.sourceforge.net/) to find
|
and many more. This relies on [quvi](http://quvi.sourceforge.net/) to find
|
||||||
|
|
|
@ -114,7 +114,7 @@ $(GIT_ANNEX_ANDROID_SOURCETREE)/rsync/build-stamp: rsync.patch
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
$(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg/build-stamp:
|
$(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg/build-stamp:
|
||||||
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && git checkout gnupg-1.4.13
|
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && git checkout gnupg-1.4.15
|
||||||
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && ./autogen.sh
|
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && ./autogen.sh
|
||||||
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && ./configure --host=arm-linux-androideabi --disable-gnupg-iconv --disable-card-support --disable-agent-support --disable-photo-viewers --disable-keyserver-helpers --disable-nls
|
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg && ./configure --host=arm-linux-androideabi --disable-gnupg-iconv --disable-card-support --disable-agent-support --disable-photo-viewers --disable-keyserver-helpers --disable-nls
|
||||||
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg; $(MAKE) || true # expected failure in doc build
|
cd $(GIT_ANNEX_ANDROID_SOURCETREE)/gnupg; $(MAKE) || true # expected failure in doc build
|
||||||
|
|
Loading…
Reference in a new issue