Merge branch 'master' into desymlink
Conflicts: Annex/CatFile.hs Annex/Content.hs Git/LsFiles.hs Git/LsTree.hs
This commit is contained in:
commit
b080a58b76
108 changed files with 2031 additions and 1615 deletions
|
@ -0,0 +1,16 @@
|
|||
[[!comment format=mdwn
|
||||
username="http://lj.rossia.org/users/imz/"
|
||||
ip="79.165.59.119"
|
||||
subject=""removing" vs drop"
|
||||
date="2012-12-12T13:20:42Z"
|
||||
content="""
|
||||
I don't understand the difference behind:
|
||||
|
||||
> Removing objects also works (and puts back a broken symlink)
|
||||
|
||||
and
|
||||
|
||||
> \"drop\" won't work because they rely on the symlink to map back to the key.
|
||||
|
||||
If a file is removed (its content, which is replaced by a symlink), then it's not present there, so effectively it should be counted as \"dropped\" at this place. So, removing a file without counting it as dropped is something inconsistent, isn't it? Do I misunderstand something?
|
||||
"""]]
|
|
@ -0,0 +1,8 @@
|
|||
[[!comment format=mdwn
|
||||
username="http://joeyh.name/"
|
||||
ip="4.153.8.117"
|
||||
subject="comment 2"
|
||||
date="2012-12-12T23:45:42Z"
|
||||
content="""
|
||||
`git annex drop` is a user-level operation built on top of lower-level object removal functions that are also used by other things.
|
||||
"""]]
|
15
doc/design/assistant/blog/day_149__rainy_day.mdwn
Normal file
15
doc/design/assistant/blog/day_149__rainy_day.mdwn
Normal file
|
@ -0,0 +1,15 @@
|
|||
Made `git annex sync` update the file mappings in direct mode.
|
||||
To do this efficiently, it uses `git diff-tree` to find files that are
|
||||
changed by the sync, and only updates those mappings. I'm rather happy
|
||||
with this, as a first step to fully supporting sync in direct mode.
|
||||
|
||||
Finished the overhaul of the OSX app's library handling. It seems to work
|
||||
well, and will fix a whole class of ways the OSX app could break.
|
||||
|
||||
Fixed a bug in the preferred content settings for backup repositories,
|
||||
introduced by some changes I made to preferred content handling 4 days ago.
|
||||
|
||||
Fixed the Debian package to build with WebDAV support, which I forgot to
|
||||
turn on before.
|
||||
|
||||
Planning a release tomorrow.
|
53
doc/design/assistant/blog/day_150__12:12.mdwn
Normal file
53
doc/design/assistant/blog/day_150__12:12.mdwn
Normal file
|
@ -0,0 +1,53 @@
|
|||
Yesterday I cut another release. However, getting an OSX build took until
|
||||
12:12 pm today because of a confusion about the location of lsof on OSX. The
|
||||
OSX build is now available, and I'm looking forward to hearing if it's working!
|
||||
|
||||
----
|
||||
|
||||
Today I've been working on making `git annex sync` commit in direct mode.
|
||||
|
||||
For this I needed to find all new, modified, and deleted files, and I also
|
||||
need the git SHA from the index for all non-new files. There's not really
|
||||
an ideal git command to use to query this. For now I'm using
|
||||
`git ls-files --others --stage`, which works but lists more files than I
|
||||
really need to look at. It might be worth using one of the Haskell libraries
|
||||
that can directly read git's index.. but for now I'll stick with `ls-files`.
|
||||
|
||||
It has to check all direct mode files whose content is present, which means
|
||||
one stat per file (on top of the stat that git already does), as well as one
|
||||
retrieval of the key per file (using the single `git cat-file` process that
|
||||
git-annex talks to).
|
||||
|
||||
This is about as efficient as I can make it, except that unmodified
|
||||
annexed files whose content is not present are listed due to --stage,
|
||||
and so it has to stat those too, and currently also feeds them into `git add`.
|
||||
|
||||
The assistant will be able to avoid all this work, except once at startup.
|
||||
|
||||
Anyway, direct mode committing is working!
|
||||
|
||||
For now, `git annex sync` in direct mode also adds new files. This because
|
||||
`git annex add` doesn't work yet in direct mode.
|
||||
|
||||
It's possible for a direct mode file to be changed during a commit,
|
||||
which would be a problem since committing involves things like calculating
|
||||
the key and caching the mtime/etc, that would be screwed up. I took
|
||||
care to handle that case; it checks the mtime/etc cache before and after
|
||||
generating a key for the file, and if it detects the file has changed,
|
||||
avoids committing anything. It could retry, but if the file is a VM disk
|
||||
image or something else that's constantly modified, commit retrying forever
|
||||
would not be good.
|
||||
|
||||
----
|
||||
|
||||
For `git annex sync` to be usable in direct mode, it still needs
|
||||
to handle merging. It looks like I may be able to just enhance the automatic
|
||||
conflict resolution code to know about typechanged direct mode files.
|
||||
|
||||
The other missing piece before this can really be used is that currently
|
||||
the key to file mapping is only maintained for files added locally, or
|
||||
that come in via `git annex sync`. Something needs to set up that mapping
|
||||
for files present when the repo is initally cloned. Maybe the thing
|
||||
to do is to have a `git annex directmode` command that enables/disables
|
||||
direct mode and can setup the the mapping, as well as any necessary unlocks
|
||||
and setting the trust level to untrusted.
|
|
@ -89,8 +89,8 @@ is converted to a real file when it becomes present.
|
|||
* `git annex sync` updates the key to files mappings for files changed,
|
||||
but needs much other work to handle direct mode:
|
||||
* Generate git commit, without running `git commit`, because it will
|
||||
want to stage the full files.
|
||||
* Update location logs for any files deleted by a commit.
|
||||
want to stage the full files. **done**
|
||||
* Update location logs for any files deleted by a commit. **done**
|
||||
* Generate a git merge, without running `git merge` (or possibly running
|
||||
it in a scratch repo?), because it will stumble over the direct files.
|
||||
* Drop contents of files deleted by a merge (including updating the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue