<div dir="ltr">this is not a suggestion, just an idea that I once read about<div>what about storing <span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">UserPreferences in a single sqlite db file? I heard that would be better than a lot of text files (if they are a lot)</span></div>
<div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">u don&#39;t have to reply to my message, as I said I&#39;m not trying to really suggest something<br>
</span></font><br><div class="gmail_quote">On Fri, Jan 22, 2010 at 7:25 AM, Michael Hutchinson <span dir="ltr">&lt;<a href="mailto:m.j.hutchinson@gmail.com">m.j.hutchinson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all,<br>
<br>
I&#39;m seeking feedback on a proposal to change the locations in which<br>
MonoDevelop stores data. This affects all users, so please have your<br>
say!<br>
<br>
Historically MonoDevelop has stored all data, cache, settings, etc. in<br>
a subdirectory of<br>
Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData).<br>
Typically on Linux/Mac this is /home/$USER/.config/MonoDevelop/ and on<br>
Windows Vista/7 it&#39;s C:\Users\$USER\AppData\Roaming\MonoDevelop\. The<br>
path has been accessible via PropertyService.ConfigPath, for addins to<br>
determine where to store their own data.<br>
<br>
There are a few problems here. Firstly, it&#39;s not clear to the user<br>
which data need to be backed up and which can be regenerated. It&#39;s not<br>
particularly well-structured if one ever needs to look in the<br>
directory and find things. On Windows, all data is in the roaming<br>
profile, which is inefficient with network logins. And on Mac, this<br>
doesn&#39;t match the standard ~/Library subdirectories for caches, prefs,<br>
etc.<br>
<br>
I therefore propose that we add more granular locations for different<br>
types of data. Since the migration will be a pain and we will have to<br>
review and set up migrations for all current uses, we may as well get<br>
it *right* first time so it only needs to be done once.<br>
<br>
* UserPreferencesPath: current preferences/settings<br>
  Lin: ~/.config/MonoDevelop/Preferences<br>
  Mac: ~/Library/Preferences/MonoDevelop/<br>
  Win: ~\AppData\Roaming\MonoDevelop\ Preferences<br>
<br>
* UserDataRoot: Root location for data files created or modifiable by<br>
the user, such as templates, snippets and color schemes.<br>
  Lin: ~/.config/MonoDevelop/<br>
  Mac: ~/Library/MonoDevelop/<br>
  Win: ~\AppData\Roaming\MonoDevelop\<br>
<br>
* UserCachePath: cached data that can be regenerated<br>
  Lin: ~/.share/local/MonoDevelop/Cache<br>
  Mac: ~/Library/Cache/MonoDevelop/<br>
  Win: ~\AppData\Local\MonoDevelop\Cache<br>
<br>
* UserLogsPath: MD log output and anything similar from addins<br>
  Lin: ~/.share/local/MonoDevelop/Logs<br>
  Mac: ~/Library/Logs/MonoDevelop/<br>
  Win: ~\AppData\Local\MonoDevelop\Logs<br>
<br>
* UserAddinsPath: addin registry and user-installed addins<br>
  Lin: ~/.share/local/MonoDevelop/Addins<br>
  Mac: ~/Library/Application Support/MonoDevelop/<br>
  Win: ~\AppData\Local\MonoDevelop\Addins<br>
<br>
In summary, the contents of UserPreferencesPath and UserDataRoot<br>
should be backed up.<br>
<br>
I also intend to add FileService.MigratePath (string<br>
oldRelativeConfigPath, string newFullPath, bool removeEmpty) call that<br>
can be used to migrate files and folders from an old path to a new<br>
path. This can be used to move files and directories to the new<br>
locations.<br>
<br>
There is also the question of whether some of these directories should<br>
be versioned so that multiple MD versions can be used in parallel on<br>
one user profile. I don&#39;t think it&#39;s worth the maintenance burden; in<br>
general we&#39;ve only ever supported forward migrations properly. Perhaps<br>
we should have an error message if you try to run MD with too-new<br>
settings/data formats, or alter all the location properties to point<br>
to some dummy temp location so you can run the older version without<br>
corrupting your newer settings.<br>
<br>
You can see the current patch at <a href="http://monobin.com/__d215cffd5" target="_blank">http://monobin.com/__d215cffd5</a> if<br>
you&#39;re curious.<br>
<font color="#888888"><br>
--<br>
Michael Hutchinson<br>
<a href="http://mjhutchinson.com" target="_blank">http://mjhutchinson.com</a><br>
_______________________________________________<br>
Monodevelop-list mailing list<br>
<a href="mailto:Monodevelop-list@lists.ximian.com">Monodevelop-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/monodevelop-list" target="_blank">http://lists.ximian.com/mailman/listinfo/monodevelop-list</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>A.M. Abdelaziz<br>
</div></div>