blog for the day
This commit is contained in:
parent
74aa310ad6
commit
c156675797
3 changed files with 45 additions and 0 deletions
45
doc/design/assistant/blog/day_7__bugfixes.mdwn
Normal file
45
doc/design/assistant/blog/day_7__bugfixes.mdwn
Normal file
|
@ -0,0 +1,45 @@
|
|||
Kickstarter is over. Yay!
|
||||
|
||||
Today I worked on the bug where `git annex watch` turned regular files
|
||||
that were already checked into git into symlinks. So I made it check
|
||||
if a file is already in git before trying to add it to the annex.
|
||||
|
||||
The tricky part was doing this check quickly. Unless I want to write my
|
||||
own git index parser (or use one from Hackage), this check requires running
|
||||
`git ls-files`, once per file to be added. That won't fly if a huge
|
||||
tree of files is being moved or unpacked into the watched directory.
|
||||
|
||||
Instead, I made it only do the check during `git annex watch`'s initial
|
||||
scan of the tree. This should be ok, because once it's running, you
|
||||
won't be adding new files to git anyway, since it'll automatically annex
|
||||
new files. This is good enough for now, but there are at least two problems
|
||||
with it:
|
||||
|
||||
* Someone might `git merge` in a branch that has some regular files,
|
||||
and it would add the merged in files to the annex.
|
||||
* Once `git annex watch` is running, if you modify a file that was
|
||||
checked into git as a regular file, the new version will be added
|
||||
to the annex.
|
||||
|
||||
I'll probably come back to this issue, and may well find myself directly
|
||||
querying git's index.
|
||||
|
||||
---
|
||||
|
||||
I've started work to fix the memory leak I see when running `git annex
|
||||
watch` in a large repository (40 thousand files). As always with a Haskell
|
||||
memory leak, I crack open [Real World Haskell's chapter on profiling](http://book.realworldhaskell.org/read/profiling-and-optimization.html).
|
||||
|
||||
Eventually this yields a nice graph of the problem:
|
||||
|
||||
[[!img profile.png alt="memory profile"]]
|
||||
|
||||
So, looks like a few minor memory leaks, and one huge leak. Stared
|
||||
at this for a while and trying a few things, and got a much better result:
|
||||
|
||||
[[!img profile2.png alt="memory profile"]]
|
||||
|
||||
I may come back later and try to improve this further, but it's not bad memory
|
||||
usage. But, it's still rather slow to start up in such a large repository,
|
||||
and its initial scan is still doing too much work. I need to optimize
|
||||
more..
|
BIN
doc/design/assistant/blog/day_7__bugfixes/profile.png
Normal file
BIN
doc/design/assistant/blog/day_7__bugfixes/profile.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
BIN
doc/design/assistant/blog/day_7__bugfixes/profile2.png
Normal file
BIN
doc/design/assistant/blog/day_7__bugfixes/profile2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 226 KiB |
Loading…
Add table
Reference in a new issue