Merge branch 'master' into smudge
This commit is contained in:
commit
3d936fdb59
11 changed files with 196 additions and 0 deletions
|
@ -37,6 +37,12 @@ buildFlags = filter (not . null)
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_S3
|
#ifdef WITH_S3
|
||||||
, "S3"
|
, "S3"
|
||||||
|
#if MIN_VERSION_aws(0,10,6)
|
||||||
|
++ "(multipartupload)"
|
||||||
|
#endif
|
||||||
|
#if MIN_VERSION_aws(0,13,0)
|
||||||
|
++ "(storageclasses)"
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
#warning Building without S3.
|
#warning Building without S3.
|
||||||
#endif
|
#endif
|
||||||
|
|
6
debian/changelog
vendored
6
debian/changelog
vendored
|
@ -12,6 +12,12 @@ git-annex (6.20151225) unstable; urgency=medium
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Tue, 08 Dec 2015 11:14:03 -0400
|
-- Joey Hess <id@joeyh.name> Tue, 08 Dec 2015 11:14:03 -0400
|
||||||
|
|
||||||
|
git-annex (5.20151209) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* Add S3 features to git-annex version output.
|
||||||
|
|
||||||
|
-- Joey Hess <id@joeyh.name> Thu, 10 Dec 2015 11:39:34 -0400
|
||||||
|
|
||||||
git-annex (5.20151208) unstable; urgency=medium
|
git-annex (5.20151208) unstable; urgency=medium
|
||||||
|
|
||||||
* Build with -j1 again to get reproducible build.
|
* Build with -j1 again to get reproducible build.
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
### Please describe the problem.
|
||||||
|
|
||||||
|
I have a README file in my repository, which is an ordinary text file added with `git add` (not `git annex add`). This seems fine with all the Linux machines, including ones running the assistant. However, when I start the assistant on Android, it converts it to an annexed file. I don't have any other direct mode repositories to check if it's a direct mode problem or an Android problem.
|
||||||
|
|
||||||
|
My setup is basically a star tolopogy with a Debian GNU/Linux (jessie) box in the middle. All the clients are Debian as well, mostly testing, except for an Android tablet.
|
||||||
|
|
||||||
|
### What steps will reproduce the problem?
|
||||||
|
|
||||||
|
On a Linux box:
|
||||||
|
|
||||||
|
git add README
|
||||||
|
git commit -m 'README'
|
||||||
|
git annex sync --content
|
||||||
|
|
||||||
|
then on Android, start git-annex and let the assistant sync.
|
||||||
|
|
||||||
|
You'll get a commit like this:
|
||||||
|
|
||||||
|
$ git show 4f1c76374c75a11702c14ea6a5dbe82c99c6dd08
|
||||||
|
commit 4f1c76374c75a11702c14ea6a5dbe82c99c6dd08
|
||||||
|
Author: android <git-annex@android>
|
||||||
|
Date: Wed Dec 9 15:49:01 2015 -0500
|
||||||
|
|
||||||
|
git-annex in Smoot /sdcard/Westerley-Board
|
||||||
|
|
||||||
|
diff --git a/Contracts/Archive/README b/Contracts/Archive/README
|
||||||
|
deleted file mode 100644
|
||||||
|
index 8fe1349..0000000
|
||||||
|
--- a/Contracts/Archive/README
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,3 +0,0 @@
|
||||||
|
-These are old, no longer active contracts. The year is the year of
|
||||||
|
-archival (typically when the contract ended, or the last year covered by
|
||||||
|
-the contract).
|
||||||
|
diff --git a/Contracts/Archive/README b/Contracts/Archive/README
|
||||||
|
new file mode 120000
|
||||||
|
index 0000000..38ba43f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/Contracts/Archive/README
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+../../.git/annex/objects/0v/9K/SHA256E-s155--d0e49ec7e493366a5afea5bc12629ba579fd8407162795c22a6346c25bafbb6e/SHA256E-s155--d0e49ec7e493366a5afea5bc12629ba579fd8407162795c22a6346c25bafbb6e
|
||||||
|
\ No newline at end of file
|
||||||
|
|
||||||
|
### What version of git-annex are you using? On what operating system?
|
||||||
|
|
||||||
|
Android is fairly recent, unfortunately the battery is currently dead
|
||||||
|
making it hard to check :-( Must be at least 5.20151019, but probably
|
||||||
|
20151116.
|
||||||
|
|
||||||
|
### Please provide any additional information below.
|
||||||
|
|
||||||
|
If needed, I'll grab the assistant log from the tablet once the battery
|
||||||
|
is charged.
|
||||||
|
|
||||||
|
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
|
||||||
|
|
||||||
|
Yes! I've been using git-annex quite a bit over the past year, for everything from my music collection to my personal files. Using it for a not-for-profit too. Even trying to get some Mac and Windows users to use it for our HOA's files. I'm looking forward to smudge mode to make direct mode work better.
|
|
@ -0,0 +1,16 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 4"""
|
||||||
|
date="2015-12-10T15:23:12Z"
|
||||||
|
content="""
|
||||||
|
I've added something to `git annex version` about this today:
|
||||||
|
"S3(storageclasses)"
|
||||||
|
|
||||||
|
The prebuilt linux builds currently use package versions from Debian
|
||||||
|
unstable, so we have to wait for the aws package to get updated there.
|
||||||
|
(I could hand-hack it, but that would make the build break later.)
|
||||||
|
|
||||||
|
The Windows and OSX builds have already been updated; the latter only just
|
||||||
|
now, so it'll be in the next daily build. Updating the Android build
|
||||||
|
environment is a massive pain and I try to only do that bi-anually.
|
||||||
|
"""]]
|
|
@ -0,0 +1,13 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://openid.stackexchange.com/user/27ceb3c5-0762-42b8-8f8a-ed21c284748f"
|
||||||
|
nickname="g"
|
||||||
|
subject="The downside"
|
||||||
|
date="2015-12-10T03:45:09Z"
|
||||||
|
content="""
|
||||||
|
If I'm understanding correctly, that one downside (requiring all checkouts to have all files be direct if any filesystems require it) seems to be a fairly major limitation, no? Changing the concept of locked/unlocked files from being a local, per-repo concern to a global one seems like quite a major change.
|
||||||
|
|
||||||
|
For instance, would mean that any public repo using git annex for distributing a set of data files would either have to have all files be unlocked, or else no one would be able clone onto a FAT32-formatted external hdd?
|
||||||
|
|
||||||
|
|
||||||
|
FWIW, the particular use case I'm concerned about personally is having my annexes on my android device.
|
||||||
|
"""]]
|
|
@ -0,0 +1,30 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 5"""
|
||||||
|
date="2015-12-10T15:00:52Z"
|
||||||
|
content="""
|
||||||
|
I'm concerned about that too. But it may be possible to finesse it,
|
||||||
|
when git-annex is running on a crippled filesystem, it may be able to
|
||||||
|
unlock all files as it gets content for them, producing a local fork.
|
||||||
|
|
||||||
|
The first difficulty would be avoiding or autoresolving conflicts
|
||||||
|
between locked and unlocked when merging changes into that fork. I think
|
||||||
|
this is very tractable; such a conflict comes down mostly to the symlink
|
||||||
|
bit in the tree object.
|
||||||
|
|
||||||
|
The real difficulty would be that any pushes from that fork would include
|
||||||
|
its change converting all files to unlocked. Although it's fairly mechanical
|
||||||
|
to convert such a commit into one that doesn't unlock files, so perhaps
|
||||||
|
that could be automated somehow on push or merge.
|
||||||
|
|
||||||
|
There's also a small and probably easy to implement git change that
|
||||||
|
would avoid all this complexity: If git's smudge filters were optionally
|
||||||
|
able to run on the link-text of symlinks, then a file could be unlocked
|
||||||
|
locally without changing what's in the repo and all the smudge stuff
|
||||||
|
would still work on it.
|
||||||
|
|
||||||
|
Crippled filesystems aside, I think there's value in being able to unlock
|
||||||
|
files across clones of a repo. For example, a repo could have a workflow
|
||||||
|
where the files for the current episiode/experiment/whatever start out
|
||||||
|
unlocked and are locked once it's complete.
|
||||||
|
"""]]
|
26
doc/devblog/day_343__get_and_drop_for_smudge.mdwn
Normal file
26
doc/devblog/day_343__get_and_drop_for_smudge.mdwn
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
Well, another day working on smudge filters, or unlocked files as the
|
||||||
|
feature will be known when it's ready. Got both `git annex get` and `git
|
||||||
|
annex drop` working for these files today.
|
||||||
|
|
||||||
|
Get was the easy part; it just has to hard link or copy the object to the
|
||||||
|
work tree file(s) that point to it.
|
||||||
|
|
||||||
|
Handling dropping was hard. If the user drops a file, but it's unlocked and
|
||||||
|
modified, it shouldn't reset it to the pointer file. For this, I reused the
|
||||||
|
InodeCache stuff that was built for direct mode. So the sqlite database
|
||||||
|
tracks the InodeCaches of unlocked files, and when a key is dropped it can
|
||||||
|
check if the file is modified.
|
||||||
|
|
||||||
|
But that's not a complete solution, because when git uses a clean filter,
|
||||||
|
it will write the file itself, and git-annex won't have an InodeCache for
|
||||||
|
it. To handle this case, git-annex will fall back to verifying the content
|
||||||
|
of the file when dropping it if its InodeCache isn't known.
|
||||||
|
Bit of a shame to need an expensive checksum to drop an unlocked file;
|
||||||
|
maybe the git clean filter interface will eventually be improved to let
|
||||||
|
git-annex use it more efficiently.
|
||||||
|
|
||||||
|
Anyway, smudged aka unlocked files are working now well enough to be a
|
||||||
|
proof of concept. I have several missing safety checks that need to be
|
||||||
|
added to get the implementation to be really correct, and quite a lot
|
||||||
|
of polishing still to do, including making `unlock`, `lock`, `fsck`,
|
||||||
|
and `merge` handle them, and finishing repository upgrade code.
|
|
@ -0,0 +1,9 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 21"""
|
||||||
|
date="2015-12-10T15:20:43Z"
|
||||||
|
content="""
|
||||||
|
@cantora with a recent enough version of git-annex, `git annex info
|
||||||
|
$theremotename` will show quite a lot of information about a special
|
||||||
|
remote, including encryption details.
|
||||||
|
"""]]
|
|
@ -0,0 +1,7 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="https://me.yahoo.com/a/EbvxpTI_xP9Aod7Mg4cwGhgjrCrdM5s-#7c0f4"
|
||||||
|
subject="anyone saw/worked on backend for watchdox service? (not free one but needed :-/)"
|
||||||
|
date="2015-12-08T19:45:02Z"
|
||||||
|
content="""
|
||||||
|
subject
|
||||||
|
"""]]
|
|
@ -0,0 +1,7 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="openmedi"
|
||||||
|
subject="comment 31"
|
||||||
|
date="2015-12-09T20:18:48Z"
|
||||||
|
content="""
|
||||||
|
How does git-annex handle space issues with special remotes? For example my Owncloud instance has 100 GB space. What happens if I run out of space on that remote? Does git-annex handle that gracefully? Do I have to do something? Can I set a sort of \"quota\"?
|
||||||
|
"""]]
|
|
@ -0,0 +1,19 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 32"""
|
||||||
|
date="2015-12-10T15:15:42Z"
|
||||||
|
content="""
|
||||||
|
@openmedi git-annex doesn't currently keep track of how much space it's
|
||||||
|
using on a special remote. It's actually quite a difficult problem to do
|
||||||
|
that in general, since multiple distributed clones of a repository can be
|
||||||
|
uploading to the same special remote at the same time.
|
||||||
|
|
||||||
|
If it runs out of space and transfers fail, git-annex will handle the
|
||||||
|
failures semi-gracefully, which is to say nothing will stop it from trying
|
||||||
|
again or trying to send other data, but it will certianly be aware that
|
||||||
|
files are not reaching the special remote.
|
||||||
|
|
||||||
|
If a particular storage service has a way to check free space, it would not
|
||||||
|
be hard to make git-annex's special remote implementation check it and
|
||||||
|
avoid trying transfers when it's full.
|
||||||
|
"""]]
|
Loading…
Reference in a new issue