[v0.8.16] Override changes from master repo

An annoying situation can pop up in a master repo config, when a file is changed on another node. Because the change won’t be accepted by the master repo it will get stuck in “out of sync”. At the same time, the change is propagated to all other nodes. Previously this could only be fixed by making a small change on the master repo, so that it’s version again becomes the newest. With the “Override Changes” button, the master repo will override any changes that have happened on other nodes.

The button is only shown on a master repo that has out of sync files.

I think that overriding as default setting for the “Master mode” is more logical.

That would mean immediately swatting all changes as they happen out in the cluster. I think that would be something else, some “keep this repo in sync with the cluster at every cost” option that should be set on the “slave” nodes. It would be somewhat surprising if a file was restored to the old version every time you edited it.

Can it be achieved “simply” by setting a read-only flag on slave files ? It would make it clear to the user and their software that modification is impossible and unwanted.

+1 I have assumed this would be the current behavior anyway.

Maybe “DO NOT keep this repo in sync with the Master”? )

I think you guys might be misunderstanding. This button is on the master repo. It forces all other nodes to resync.

This would be something weird, and something that would be applied on the receiving end, so not what this is about.

“Master repo” sounds like “rsync --delete master/ slave/”, but not like “rsync --update master/ slave/” if “rsync terminology” is clear to you.

1 Like

That’s not really the thing with master repos; syncthing is always --delete in that manner.

I want to say that “Master repo” is associated with one-directional mirror without any confirmation button. Now it’s more like “Immutable repo”.

This is what you get if you set up two nodes, check “master repo” on the side that is supposed to be the source, and don’t change the files manually on the destination.


This current “master repo” doesn’t really sence to me, if changes will not automatic overwritten. It will end in a complete mess, isn’t it?

Is this current “master repo” implementation a little confusing?

I think it would be more helpfully to have a checkbox on every “shared with node” like: “ignore changes from this node”. Use-case e.g.: sync your DSLR pictures with these nodes:

  • Your PC at home
  • Your Laptop
  • A Friend or a other family member.

You would like to change the pictures on PC and on your Laptop. But you friend/family member should not change anything.

In the current implementation you can only mark one node as the “master repo”… But then you can only edit you files on your PC or on you Laptop, but not on both…

What you’re looking for is a node that is not allowed to publish changes into the cluster - https://github.com/calmh/syncthing/issues/62

This is more complicated than a checkbox on each node to do right. Presumably you don’t want changes made by your friend to propagate to your family member either (“son, why’s there porn among the family images?”). You also don’t want to add friend#2, forget to check the “ignore this node” on your laptop and then have the bad changes sync friend#1 -> friend#2 -> laptop -> parent etc. So this needs some cluster wide consensus on which nodes are to be trusted and not and if everyone isn’t in agreement it’s an error…

Similarly to Override (or Push/Commit?), a “Pull changes” functionality (optionally with a dialog showing a utorrent/qbittorrent-like direcory tree with checkboxes selecting which folders/files to pull) would be neat

In a slave node I would expect it to be overwritten with any changes on the Master, and not require user intervention. Or at least, this behaviour should be configurable. Great to see Syncthing mature!

This might be a valid behavior in some cases. But as it is now, you don’t set up a slave node. You might not even know that you are a slave node. I don’t think that all your local changes should be silently and immediately overwritten just because someone else has checked the “master” checkbox, so that’s why it is the way it is currently.

I wish there was an option to automatically override changes. I’m not sure why, but this constantly happens to me - while there is no reason to. I’m probably hitting some kind of bug (e.g. I’m sure the change times are compared in UTC? Maybe the timing is off by a couple minutes on some of the servers?). But what matters is that my read only repos are repeatedly out of sync and I repeatedly have to use the manual override. I’m a bit worried, too, now that old files are accidently overwriting newer files for shares which are not write protected… (using syncthing v. 0.11.3.)

If there is android involved it’s understandable.

May I add “for now”? As far as I understand, https://github.com/syncthing/syncthing/pull/1804 will fix this…