fullfledged design for moving location tracking info into branches
This commit is contained in:
parent
09da0da02f
commit
3a5efc54d0
1 changed files with 38 additions and 0 deletions
|
@ -34,3 +34,41 @@ get keys in that branch.
|
||||||
Would have to be careful about conflicts when deleting and bringing back
|
Would have to be careful about conflicts when deleting and bringing back
|
||||||
files with the same name. And would need to avoid expensive searching thru
|
files with the same name. And would need to avoid expensive searching thru
|
||||||
all history to try to find an old log file.
|
all history to try to find an old log file.
|
||||||
|
|
||||||
|
## fleshed out proposal
|
||||||
|
|
||||||
|
Let's use one branch per uuid, named git-annex/$UUID.
|
||||||
|
|
||||||
|
- I came to realize this would be a good idea when thinking about how
|
||||||
|
to upgrade. Each individual annex will be upgraded independantly,
|
||||||
|
so each will want to make a branch, and if the branches aren't distinct,
|
||||||
|
they will merge conflict for sure.
|
||||||
|
- TODO: What will need to be done to git to make it push/pull these new
|
||||||
|
branches?
|
||||||
|
- A given repo only ever writes to its UUID branch. So no conflicts.
|
||||||
|
- (BTW, UUIDs probably don't compress well, and this reduces the bloat of having
|
||||||
|
them repeated lots of times in the tree.)
|
||||||
|
- Per UUID branches mean that if it wants to find a file's location
|
||||||
|
amoung configured remotes, it can examine only their branches, if
|
||||||
|
desired.
|
||||||
|
|
||||||
|
In the branch, only one file is needed. Call it locationlog. git-annex
|
||||||
|
can cache location log changes and write them all to locationlog in
|
||||||
|
a single git operation on shutdown.
|
||||||
|
|
||||||
|
- TODO: what if it's ctrl-c'd with changes pending? Perhaps it should
|
||||||
|
collect them to ,git/annex/locationlog, and inject that file on shutdown?
|
||||||
|
- This will be less overhead than the current staging of all the log files.
|
||||||
|
|
||||||
|
The log is not appended to, so in git we have a series of commits each of
|
||||||
|
which replaces the log's entire contens.
|
||||||
|
|
||||||
|
To find locations of a key, all (or all relevant) branches need to be
|
||||||
|
examined, looking backward through the history of each until a log
|
||||||
|
with a indication of the presense/absense of the key is found.
|
||||||
|
|
||||||
|
- This will be less expensive for files that have recently been added
|
||||||
|
or transfered.
|
||||||
|
- It could get pretty slow when digging deeper.
|
||||||
|
- Only 3 places in git-annex will be affected by any slowdown: move --from,
|
||||||
|
get and drop.
|
||||||
|
|
Loading…
Add table
Reference in a new issue