SVN is smart. It will only download the files that have been changed or added to the repository since the last update. It will also delete files that have been removed from the repository, or rename files that have been renamed in the repository. In fact, for text files, it doesn't download entire changed files, it downloads a diff of the changes made, and applies those.eferz wrote:Still think checking for individual updates and downloads is the better solution than one big file, especially for bandwidth concerns. Instead of checking the RDFs per use, it could check the entire repository once per day, per start up, per user intervention, or whatever. Individual updates will then be offered with a check list system so the user can decide to download all or specific RDFs.
So in that sense the downloads will be much more efficient. Before actually updating, we can show a list of the files that will be impacted.
While it would technically be possible (fairly easy, even) to allow the user to select which files (s)he wants to update, I'm not sure we want to go down that path, as unwitting users might think they only need to update the RDFs for the remotes they actually use, when we know it is essential that they have up to date RDFs for any remote that might be used by a KM or RM device upgrade file they download, or even an RMIR file if people start sharing those.
Dealing with files that are modified by the user is a little more complicated. SVN will try to merge the changes from the repository into the modified file. This usually works very well, unless the user has made changes in the same parts of the file that were changed in the repository. That is called a conflict, which must be resolved and the user is asked to resolve the conflict. I think we can reasonably offer to
- keep the user's version, ignoring the changes from the repository,
- discard the user's version and use the version from the repository,
- tell the user to resolve the conflict outside of RM.