Repository: syncthing/syncthing (language: go)

Issue:
Conflicts created on Android on files modified by other devices
As reported in a ot of places:

https://github.com/syncthing/syncthing/issues/8604#issuecomment-1306112744

https://forum.syncthing.net/t/keep-getting-conflicts-generated-on-android-device-for-files-modified-only-on-a-desktop-pc/19060/24

https://forum.syncthing.net/t/file-conflict-for-every-modification-on-android/19272


Discussion / hints:

Fix patch:
diff --git a/lib/protocol/bep_extensions.go b/lib/protocol/bep_extensions.go
index 3d3eb437c36..2290f2cce9a 100644
--- a/lib/protocol/bep_extensions.go
+++ b/lib/protocol/bep_extensions.go
@@ -244,9 +244,9 @@ func (f FileInfo) isEquivalent(other FileInfo, comp FileInfoComparison) bool {
 		return false
 	}
 
-	// If we are recording inode change times and it changed, they are not
-	// equal.
-	if (f.InodeChangeNs != 0 && other.InodeChangeNs != 0) && f.InodeChangeNs != other.InodeChangeNs {
+	// If we care about either ownership or xattrs, are recording inode change
+	// times and it changed, they are not equal.
+	if !(comp.IgnoreOwnership && comp.IgnoreXattrs) && f.InodeChangeNs != 0 && other.InodeChangeNs != 0 && f.InodeChangeNs != other.InodeChangeNs {
 		return false
 	}
 


Test patch: