Closed Bug 408156 Opened 17 years ago Closed 11 years ago

Ability to split prefs into multiple files


(Core :: Preferences: Backend, enhancement)

Not set





(Reporter: josh, Unassigned)



User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20071128 Iceweasel/ (Debian-
Build Identifier: 

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.  I'd like to add some of my Firefox and Thunderbird configuration to version control as well.  However, prefs.js contains various types of preferences, some of which I want to version and some of which I do not.  For instance, in Firefox, I want to version prefs like dom.disable_window_move_resize, browser.startup.*, and browser.formfill.enable, but I do not want to version prefs like app.update.lastUpdateTime.*, print.*, or extensions.lastAppVersion.

user.js provides one possible solution to this problem.  I could certainly add some prefs to user.js and check that into version control, while leaving prefs.js untracked.  However, this has some major disadvantages: it overrides preferences set through the UI, it forces me to find new preferences for user.js manually, and it does not let me version machine-specific preferences separately.

I would propose a different solution: some way to specify different files for different sets of prefs.  This way, I could have the prefs I want to version written to prefs-global.js, machine-specific prefs written to prefs-local.js (or better yet, prefs-${hostname}.js), prefs I know I don't want to version written to prefs-ignore.js, and all other prefs written to prefs-new.js .  I could then check in prefs-global.js, version the machine-local prefs by checking in all the prefs-${hostname}.js files, ignore prefs-ignore.js, and check prefs-new.js for any new preferences to categorize.

This approach would simplify several use cases:

* Versioning a home directory.
* Otherwise distributing personal settings across many machines.  (For instance, by using synchronization tools such as unison.)
* Sharing preferences between OS partitions on the same machine.  This approach would allow splitting general preferences and OS-specific preferences into separate files, sharing the former, and keeping the latter separate.
* Applying policies to different classes of users, such as via tools like Sabayon.

Reproducible: Always
One further note: if the idea seems reasonable, I would willingly help implement it.
Related to Core bug 147344 and/or Core bug 252640?
Potentially related, though I wouldn't call this bug a duplicate of either of those.  The framework to solve this bug would solve *part* of each of those bugs.  Both of those bugs could reasonably depend on this one.
Blocks: 147344
Blocks: 252640
Marking as NEW, since this defines functionality necessary to solve two other bugs which have passed through NEW.
Ever confirmed: true
QA Contact: preferences → preferences-backend
Closed: 11 years ago
Resolution: --- → WONTFIX
> Status: NEW → RESOLVED
> Resolution: --- → WONTFIX

A comment would be nice...
Actually the easiest way to do what you are trying to do is via autoconfig:

You can even most the config files server side.
(In reply to Michael Kaply (mkaply) from comment #6)
> Actually the easiest way to do what you are trying to do is via autoconfig:
> You can even most the config files server side.

I'd love to use autoconfig, but as far as I can tell it only works at the system level with the default preferences file, rather than via a user's prefs.js or similar.  Does any means exist to trigger the autoconfig mechanism via a file in my profile or elsewhere in my home directory?  If not, then autoconfig doesn't fix this bug.
You need to log in before you can comment on or make changes to this bug.