Philipp Benner wrote: >> I keep my home directory in version control, as a means of sharing it >> across systems, keeping it backed up, and tracking changes to it. One >> of the biggest problems I run into relates to applications that always >> write out their entire preferences, rather than only changed >> preferences. This makes it much harder to track changes and share >> files across machines. Could transmission please write out only its >> changed preferences, rather than all preferences? > > I don't see the point here why it is necessary to only write changes. A > good revision control system should recognize what changed anyway. I > just tested it with git. After commiting all files in ~/.transmission I > changed one option: > $ git diff > diff --git a/gtk/prefs.ini b/gtk/prefs.ini > index b733d78..7f023f0 100644 > --- a/gtk/prefs.ini > +++ b/gtk/prefs.ini > @@ -4,7 +4,7 @@ download-limit-enabled=false > download-limit=100 > upload-limit-enabled=true > upload-limit=50 > -prompt-for-download-directory=false > +prompt-for-download-directory=true > default-download-directory=/home/philipp/tmp > listening-port=9090 > nat-traversal-enabled=true > > As you see, the diff shows only the one option that I changed. Anyway, it > is _much_ easier to write the whole preferences file. At the moment I tend > to close this bug if you don't have any objections.
The problems with writing out all preferences do not arise in that simple case; you only had one version of transmission and one machine. To elaborate on the problems I've encountered with other applications that write out all preferences: * If I have two different versions of the application on two different machines, each will want to write out its entire set of preferences, which may differ. Thus, the file will become changed on all machines not running the same version as the one which generated the file I checked in. Furthermore, if the new version writes out new preferences and the old version does not ignore preferences it does not understand, this could lead to breakage. * Similarly, sometimes GUI applications write out their preferences in inconsistent orders, and these orders may change between versions. (This may or may not apply to transmission, depending on what future versions do.) * A new version may change the default for a preference. If you write out only changed preferences, then you allow a distinction between preferences the user specifically wanted a certain way and preferences the user left at the default, and can decide to update only the latter to new defaults; this avoids overriding a user's desired configuration. * Preferences like default-download-directory contain my home directory path. On all my personal machines I have the username "josh", but on some other machines I have different usernames, or occasionally non-standard home directory paths. If transmission avoided writing this preference out unless I change it, I could leave it at the default of my home directory. (As another solution, transmission could abbreviate my home directory to ~, and expand that when reading in the file.) * Some applications automatically change preferences based on system configuration and available features. For example, what if transmission decided to turn off the system tray icon when I run it in an environment that has no system tray (such as a minimalistic window manager)? It should not write out this preference, because I did not explicitly change it. * Some applications record their window position and size, even if explicitly told not to *use* the last window position and size. Fortunately transmission does not do this (yet). - Josh Triplett
signature.asc
Description: OpenPGP digital signature