summaryrefslogtreecommitdiff
path: root/doc/bugs/uuid.log_trust.log_and_remote.log_merge_wackiness.mdwn
blob: a84d8cb568a3332183aae3582da235b4ee571157 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Since uuid.log, trust.log and remote.log are union merged, it's possible
for any given item in them to have multiple values after a merge.
This would happen, for example, if the value was changed in different ways
in two repos which were then merged. git-annex will use an arbitrary
one of the multiple values.

A workaround if this should happen to you is to use `git annex describe`
or other commands to re-set the value you want. The process of setting
the value will remove the multiple lines.

To fix this the file format needs to be changed to include a timestamp
as is done with the other log files, then git-annex can consistently
pick the newest value -- which is as close to the "right" value as can be
determined in this situation.

----

File format backwards-compatability is the issue. Ideally, old git-annex
would keep working, ignoring the timestamp.

- uuid.log: "uuid description timestamp" would work; old git-annex 
  would just treat the timestamp as part of the description which would be
  ok
  > update: converted! --[[Joey]] 
- trust.log: "uuid trustlevel timestamp" would work; old git-annex
  ignores trailing words
  > update: converted! --[[Joey]] 
- remote.log: "uuid key=value ... timestamp" is on the edge but does work
  (old git-annex will include the timestamp in the key/value map it builds,
  but that should not break anything really)
  > update: converted! --[[Joey]] 

Appending "timestamp=xxxxx" would be good for clarity, and make
it easier to parse the timestamp out from lines that have it.

> [[done]] --[[Joey]]