lib/protocol: Invalid files should always lose (#4747)

This commit is contained in:
Simon Frei
2018-02-10 19:40:57 +01:00
committed by GitHub
parent 6d3f9d5154
commit 4955297bf6
3 changed files with 10 additions and 0 deletions

View File

@@ -95,6 +95,11 @@ func (f FileInfo) SequenceNo() int64 {
// WinsConflict returns true if "f" is the one to choose when it is in
// conflict with "other".
func (f FileInfo) WinsConflict(other FileInfo) bool {
// If only one of the files is invalid, that one loses
if f.IsInvalid() != other.IsInvalid() {
return !f.IsInvalid()
}
// If a modification is in conflict with a delete, we pick the
// modification.
if !f.IsDeleted() && other.IsDeleted() {

View File

@@ -9,6 +9,7 @@ func TestWinsConflict(t *testing.T) {
// The first should always win over the second
{{ModifiedS: 42}, {ModifiedS: 41}},
{{ModifiedS: 41}, {ModifiedS: 42, Deleted: true}},
{{Deleted: true}, {ModifiedS: 10, Invalid: true}},
{{ModifiedS: 41, Version: Vector{[]Counter{{42, 2}, {43, 1}}}}, {ModifiedS: 41, Version: Vector{[]Counter{{42, 1}, {43, 2}}}}},
}