2007-02-09  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/sources.py: Adding logging for when there's
	no 'source' key (read: I mis-spelled it as 'src').

2007-02-05  Maurits van Rees  <maurits@vanrees.org>

	* src/instancemanager/sources.py (BaseSource.__init__): only split
	a url when that url is not None.

2007-02-01  Maurits van Rees  <maurits@vanrees.org>

	* src/instancemanager/actionutils.py (logInfoAboutCtl): Return a
	better string for the zopectl info.

2006-02-01  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* Merged Ians branch work to trunk. We now have basic windows
	support And on linux Zope 3 support. ( Not tested on windows yet).

2007-01-06  Ian F. Hood <pythonhack@gmail.com>

	* src/instancemanager/configuration.py: added
	configData['is_windows']

	* src/instancemanager/actionutils.py: added windowsService() to
	control the zope instance via zopeservice.py (instead of zopectl)

	* src/instancemanager/actionutils.py: in createInstance() if
	running on windows install zope as a windowsService() in
	'automatic startup' mode (and/or remove if instance is being
	recreated)

	* src/instancemanager/actionutils.py: if is_windows, all calls to
	zopectl are intercepted and redirected to windowsService(),
	without otherwise touching the existing code.

	* src/instancemanager/mainprogram.py: Eliminated redundant builds
	of the configuration information by building the configData in
	main() and passing the configData object instead of
	'project' (name).

	* src/instancemanager/sources.py: Changed symlink to 'copy' when
	rebuilding /Products on Windows OS (symlinks not supported)

	* src/instancemanager/actionutils.py: refactored parsing of
	zope.conf to better find and edit <xxx-server> directives while
	maintaining compatibility with existing version of im (no changes
	to config.py).  Note: this is a partial improvement and could be
	much better, but the full version would require changes to
	configurations (see #21)

	* src/instancemanager/actionutils.py: use .conf parsing to
	properly change the port number for the http-server on windows
	versions.

	* src/instancemanager/actionutils.py: use .conf parsing to find
	and disable the extra http-server that windows installers add on
	port 80

	* src/instancemanager/actionutils.py: use .conf parsing to find
	and repair the windows installer's $PRODUCTS
	bug (mkzopeinstance.py)

	* src/instancemanager/actionutils.py: if is_windows skip the
	'debug-mode' in CONFIGCHANGES to avoid the duplicate entry bug

	* documentation and various minor tweaks to comments/logging

	ToDo: this provides a minimal level of support for Enfold's win32
	installer release of Plone2.5.1-Zope2.9.5, does not yet support
	zeo.

2007-01-31  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: Improved the plone and
	atct upgrade detection.

2007-01-30 Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/instancemanager/sources.py: Made 'source' attribute optional
	When no source is given the sourceName is extracted from the URL.
	Currently this only works for archive sources. When omitting the
	source of a symlink it will checkout the source in the wrong foler
	e.g. trunk or 3.0 in case of a branch name

2007-01-28 Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/instancemanager/sources.py: Added a pylib attribute to the
	BaseSource, and used that to check wether the target should be
	Products or lib/python. Works for both singles and bundles.

2007-01-24  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py (OmnipotentUser): Make
	sure our OmnipotentUser has all permissions and all roles.

2007-01-24  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: Switched off all our
	own FakeRequest() stuff and moved to use Zope's
	Testing/makerequest.py instead. There was some code that enabled
	that, but we didn't use it yet. This gets rid of some reinstall
	problems.

2007-01-23  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/quickreinstaller.py: Made portal migration
	work for SVN versions (they don't match the exact version strings,
	which borks portal_migration).

2007-01-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py (PackAction.run): When zeo is not
	used, the current pack script fails as it cannot connect.  So
	simply use wget then.  That could also be used for the zeo server.
	Or we could call <zopesource>/bin/zeopack.py

2007-01-21  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py (ArchiveSource._attemptDownload):
	If the download url ends with a slash, append the name of the
	archive source and download that.  This avoids errors where the
	user (read: me) changes the name and forgets to change the url as
	well.

2007-01-16  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py (AddProductsAction.run): In case
	of multiple zeo clients, simply copy the Products dir from the
	first client.  This at least gains us time when the Products dir
	is built with an svn export.
	
2007-01-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actionutils.py (runZopectl): a zopectl test
	is only useful for one zeo client, so only run that once, on the
	first client.  Hm, same for 'run'.

2007-01-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actionutils.py (handleZopeConf):
	zopeconf_template now uses the on-the-fly generated 'clientname'
	by default instead of 'project'.  Without zeo these have the same
	value.  With multiple zeo clients this gives the option to have a
	premade zope.conf file per client.

2007-01-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actionutils.py (handleZopeConf): Added
	config option use_zeo_client_caches (default False).  When True
	this adds a client name in the zeo section of zope.conf for
	clients.  This results in persistent caching.

	* src/instancemanager/actionutils.py (runZeoctl): When the zeo
	command is 'status' we do not wait ten seconds and if there is a
	zeo monitor we query it for info.

2007-01-10  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actionutils.py (createInstance): Add config
	option to specify a zeo monitor-port.

2007-01-09  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/compat.py (sorted): Added compatibility
	file, as sorted() was added in python 2.4 and throws a NameError
	in python 2.3 and earlier.  Code taken from Trac, thanks.

2007-01-09  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* For multiple zeo clients, we now get sane port numbers in the
	config files.  You get a client at e.g. 8000, server at 8001, and
	then more clients from 8002 upwards.

2007-01-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* Start of support for multiple zeo clients.  Creating instances
	and adding products seems okay.  Currently they all use the same
	port though, so I will look at that tomorrow.  /Should/ be usable
	with the default number_of_zeo_clients = 1.

2007-01-08  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/actionutils.py: Added cleanup to the backup
	action, by setting the number_of_backups variable (default is
	2). All backups older than the full backup that pointed out by
	number_of_backups will be deleted. If number_of_backups is set to
	0, no backups will be deleted.
	
	* src/instancemanager/defaults.py: Added number_of_backups
	variable
	
	* src/intancemanager/configuration.py: Added numberOfBackups
	method to the configuration class.

2007-01-02  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py (BaseSource.addProduct): First
	check if product can be safely installed, then try to add it,
	otherwise you can get unneeded warnings about non-available
	products that are not getting installed anyway.

2006-12-06  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* Added two example strings for the GenericSetup config option.

2006-12-05  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actionutils.py: Revert last change, as
	backup_basedir_template takes care of this nicely already. :)

2006-12-04  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/instancemanager/configuration.py: Added absolutePath
	argument, so sitedefaults.py doesn't get sitedefaults.py.py.
	
	* src/instancemanager/actionutils.py: When using multiple projects
	it makes more sense to backup each project into a subfolder of
	backup_basedir_template. I updated the restore method likewise.

2006-12-04  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* setup.py: Releasing 1.0rc.

2006-12-04  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* src/instancemanager/configuration.py: Added support for a
	site-wide defaults file in
	/etc/instancemanager/sitedefaults.py. Also quieted down the
	messages about the "secret" files possibility. Removed abuse of
	exception handling for returning log messages. And PEP8-ified some
	of the code. (var=value without spaces around the '=', the
	horror!) :-)

2006-11-21  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/actions.py: refactored the upgradezope
	action, it now also supports zeo enabled projects.

	* src/instancemanager/actionutils.py: Added a createInstance
	method that is reused for both the createInstance and upgradeZope
	action.

2006-11-13  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: In case Plone-2.0.5
	with ATContentTypes installed needs to be upgraded, ATCT needs to
	be reinstalled first.

2006-11-10  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/actions.py: Upgrade Zope now also updates
	the binaries by reomving them first and then run mkzopeinstance.py
	again.

2006-11-09  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/actions.py: Moved HandleZopeConf to
	actionutils and added UpdateZopeConfAction (--upgradezope) which
	allows you to upgrade your instance to a new zope version with one
	command after updating your project.py

	* src/instancemanager/actionutils.py: Added HandleZopeConf method
	from actions, so we can reuse it in the --upgradezope action.

2006-11-08  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/actions.py: Added UninstallAction which
	allows you to uninstall products from your instance.
    
	* src/instancemanager/uninstaller.py: Added script for
	uninstalling products.

2006-11-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/defaults.py: Changed ftp_port to None, so it
	gets commented out by default; the previous setting of 8021 was
	giving problems while parsing the zope.conf file.  Also made
	copy_defaults_to_userdefaults.py give a clear warning and used
	that to generate a new skeleton/userdefaults.py file.

2006-11-07  Jean-Paul Ladage  <j.ladage@zestsoftware.nl>

	* src/instancemanager/config.py: Added ftp_port to the list of
	configurable items in CONFIGCHANGES.

	* src/instancemanager/defaults.py: Added default config for
	ftp_port to 8021.

	* src/instancemanager/actions.py: Added logic for commenting out
	address in case a port number is set to None.

2006-11-06  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py (FakeRequest.__init__):
	Added self.maybe_webdav_client = False

2006-10-25  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/quickreinstaller.py: Added zope 2.7 backward
	compatibility ("import transaction" gave an import error). Hey,
	I'm doing software archeology at the moment: resurrecting an old
	2.7 application :-)

2006-10-25  Russ Ferriday  <russf@topia.com>

	* src/instancemanager/sources.py: Made droplist Warning more
	informative.

	* src/instancemanager/actions.py: Completed the task of notifying
	copy *before* the copy, not afterwards.

2006-10-25  Russ Ferriday  <russf@topia.com>

	* src/instancemanager/actions.py: reordered the log INFO line to
	BEFORE the copy over. So that, if it's taking a while, you KNOW
	it's because of the copy.

2006-10-24  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py (QuickreinstallAction.run): The
	config option main_products is now also 'dict-aware': if you mark
	a product here with 'develop', then it will not be a main_product
	if the machine is not a development machine.

	* src/instancemanager/actionutils.py: Added functions
	isPureDevelopmentItem and adaptListForDevelopment, to make the
	above possible.
	
2006-10-24  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/sources.py: Added a 'url' option for sources
	(like 'drop') that enables automatic downloading of an archive or
	automatic checkout of an svn source.

2006-10-24  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/sources.py: Added possibility to specify an
	'internalBundles' list for an archive bundle (it works the same
	way as 'drop' and so). This is handy for extracting the cachefu
	products from a 2.5 plone tgz: that includes cachefu's products
	inside a subdirectory...

2006-10-24  Russ Ferriday  <russf@topia.com>
   
	* src/instancemanager/mainprogram.py: prevented config files
	starting with "stub." from being considered.

2006-10-24  Russ Ferriday  <russf@topia.com>

	* src/instancemanager/config.py: added SECRET_PREFIX const
	
	* src/instancemanager/configuration.py: enabled additional local
	config files that start with "local-" and can be excluded with svn
	propset svn:ignore.
	
	* src/instancemanager/mainprogram.py: made getProjects() ignore
	SECRET_PREFIX files, and refactored searching of the config
	directory.
 
2006-10-20  Russ Ferriday <russf@topia.com>

	* src/instancemanager/sources.py: added an optional droplist item
	to allow dropping Products from bundles.

2006-10-11  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: Added more aggressive
	FakeRequest and FakeResponse removing (they are by necessity
	stored in the zope database; a stray FakeResponse hosed my normal
	zope management views like /manage).

2006-10-10  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/instancemanager/sources.py: Adding check for svn .OLD files
	in symlink bundles.  We're issuing a warning if we encounter them
	and we won't link to them.

2006-10-09  Maurits van Rees  <maurits@localhost.localdomain>

	* src/instancemanager/defaults.py, src/instancemanager/sources.py:
	Added config option development_machine.  When False (the
	default), the products marked as 'develop' will not be installed.
	When True, all products will be installed.

2006-09-22  Reinout van Rees  <reinout@isengrim.local>

	* src/instancemanager/config.py: Added a --rewriterule that
	outputs some hints on how to configure apache+squid.

2006-09-11  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py: Add option to specify a source
	as a dict instead of a string.  This enables you to specify a
	different name for a symlink, which helps when working on multiple
	versions of the same product.

	* src/instancemanager/skeleton/userdefaults.py: Ran the
	copy_defaults_to_userdefaults.py script, which we should do more
	often.  I manually removed the multi-actions there, as those are
	not handled correctly by the copy script.

	* src/instancemanager/quickreinstaller.py: Added
	getPresentationSkin() to FakeRequest so
	/opt/zope/zope2.8.8/lib/python/zope/component/presentation.py
	doesn't give an AttributeError in queryView.

2006-09-04  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py: Correctly determine the Zope
	version (28, 29) when running tests.  Also add instance dir to the
	--libdir option for 2.7/2.8 tests.

	* INSTALL.txt, src/instancemanager/defaults.py: Minor documentary
	changes.
	
2006-09-04  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/defaults.py: bugfix, the "soft" multi-action
	was missing the update of the Products/ directory.

2006-09-04  Reinout van Rees  <reinout@vanrees.org>

	* INSTALL.txt: Updated for the change from 'create' to '--create'.

2006-08-16  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py (FakeRequest.__init__):
	Add cookies to the FakeRequest as I need that to properly install
	a product for a client.  Cookies! Jummy!

2006-08-05  Maurits van Rees  <maurits@mauritsvanrees.xs4all.nl>

	* src/instancemanager/changeownership.py,
	src/instancemanager/actions.py, src/instancemanager/config.py:
	Added option --changeown to change the ownership of all content
	owned by 'all_powerful_Oz' (see below) to the defined admin user.
	Not completely functioning yet and it needs a small change in
	PloneTool.py, though that may be a good change anyway.  If you
	give it to a different user, that change is not necessary.

	* src/instancemanager/quickreinstaller.py,
	src/instancemanager/actions.py: Created our own version of
	OmnipotentUser, as until now we would create a new plone site that
	was owned by 'all_powerful_Oz'.  This at least gave an error when
	going to the sharing tab on the front page.  Plus it's a rather
	strange name to have as the owner of your site. :) I added
	https://dev.plone.org/plone/ticket/5727 for this, but found that
	the real cause was instancemanager, thanks to alecm and
	davcontent.
	
2006-08-01  Russ Ferriday <russf@topia.com>

	* src/instancemanager/mainprogram.py: Added --manifest option to
	print the results of a --products installation, including
	versions, source directories or bundles, and conflicts. Use
	--manifest at the same time as --products. Maurits points out that
	the manifest listing is wide. Some folding is already in place,
	and IMHO one line per product is clearer than multiline entries,
	but I'm sure there's potential for improvement.
    
	* src/instancemanager/actions.py: added the _printManifest
	functionality under the --products action.

	* src/instancemanager/sources.py: improved the warning when
	removing a target. Added build of a manifest as products are
	added. Restructured so that addProduct on the superclass is
	called, which delegates to implementation methods on the
	subclasses. (This made passing manifest slightly easier, and makes
	enforcing common behaviour simpler)

	* README.txt: noted that the doc was out of date.
    
2006-07-20  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/actions.py: Added --test action to easily
	test products.

2006-07-19  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/pack.py: Added --pack option.

2006-07-18  Reinout van Rees  <reinout@zestsoftware.nl>

	* src/instancemanager/utils.py: Added svn export support.

	* setup.cfg: Released 0.3.

2006-07-18  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/defaults.py: Fixed missing comma and wrong
	order of actions in fresh and soft multiaction.

2006-07-17  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py,
	src/instancemanager/actionutils.py: Refactor use of
	InvokedInVolatileDir Exception: move it to actionutils and also
	use it in class CreateInstanceAction.

2006-07-17  Russ Ferriday <russf@topia.com>

	* src/instancemanager/actions.py: renamed
	avoidUsageWithinProductsDir() to trapUsageWithinVolatileDir and
	raise exception. More generic approach can be used with similar
	tests in ZEO handing. Ref. email with Mauritz.

2006-07-17  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py: Added forced full backup,
	snapshot backup, snapshot restore and sync options to a new
	--repozo action.

	* src/instancemanager/actionutils.py: Refactored the backup and
	restore actions in preparation for a more diverse repozo action.

	* src/instancemanager/actions.py: Large-scale restructuring of the
	way instancemanager handles options. I'm using python's optparse
	module now. See "instancemanager -h" for a usage message.

	Big change also: multi-actions. You can provide per-project
	collections of actions grouped together under a single name. By
	default, fresh and soft are provided.

2006-07-17  Russ Ferriday <russf@topia.com>

	* src/instancemanager/actions.py: added
	avoidUsageWithinProductsDir() to prevent occurrence of current dir
	being deleted and raising unexplained IOError. Currently warns in
	the case the post execution directory will be invalid.
	
	* src/instancemanager/sources.py: trivial logging and comment
	change
	
2006-07-12  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py (CreateInstanceAction.run): Fixed
	old TODO: Also check for current working dir being *below* the
	instance dir before creating a new instance.

2006-07-12  Reinout van Rees  <reinout@vanrees.org>

	* src/instancemanager/actions.py: Added support for a zeo
	server+client setup. If you add a use_zeo=True option to your
	config, instancemanager will create a zeo server and a zeo client
	for you. Copying an existing database will copy it to the zeo
	server's var/ directory, then. There's an extra startzeo/stopzeo
	command, also.

2006-07-10  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py: Added FakeResponse as
	this was needed by a product. That product still gives other
	errors, but those should be unrelated.

2006-07-09  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/quickreinstaller.py,
	src/instancemanager/actions.py, src/instancemanager/defaults.py :
	Added config option 'generic_setup_profiles' to apply site
	customizations with GenericSetup.  Please test.
	
2006-07-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py: First check if target is symlink
	before removing it.  Previous implementation would remove the
	contents of a symlink to a directory and then fail.

2006-07-06  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/actions.py: check for existence of
	bin/zopectl.

	* src/instancemanager/mainprogram.py: add performActionOnProject
	function to remove some code duplication.
	
2006-07-02  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/defaults.py: Changed double archive_sources
	and archive_basedir_template to their bundle variants.
	
2006-06-27  Russ Ferriday <russf@topia.com>

	* replaced "tgz" with "archive" in config attribute names, while
	maintaining compatibility with attribute names in existing config
	files.  Allowed non-gzipped archives, and refactored archive
	expansion into one utility function.

2006-06-26  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/instancemanager/configuration.py: Patch by Russ Ferriday to
	prevent copying of .pyc files to the .instancemanager config dir.

2006-06-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/sources.py: warn before removing a product
	when switching to another version (e.g. symlink instead of tgz).
	Also use removeTargetIfExists() when adding a tgz or symlink
	source.

	* src/instancemanager/configuration.py: sort the sources so the
	order of product installation is clear: bundles first, then
	singles.

2006-06-21  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* bash_completion, src/instancemanager/actions.py: Added fg action
	to put the zope instance in the foreground.  You first need to
	stop it manually (e.g. with the stop action).

2006-06-21  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/instancemanager/mainprogram.py: loglevels in lowercase are
	allowed now.

2006-06-20  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/mainprogram.py, src/sources.py: Added command line option to
	set the log level for the log that is printed to standard out.
	With help from Joris Slob.

2006-06-20  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* bash_completion: pretty functional now.

2006-06-19  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/instancemanager/mainprogram.py: Added project alias ALL that
	performs the action (like 'stop') for all projects.

2006-06-08  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/quickreinstaller.py: Use request for making a new plone
	site, which makes this work again.  Also check if ATContentTypes
	needs to be updated.

	* src/sources.py: If a tgz source ends with 'zip' unzip it instead
	of using tar.

2006-06-06  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* src/mainprogram.py: Corrected error on first startup: the config
	dir is now being created.

	* setup.py: Large-scale moving: putting instancemanager as a
	directory inside src/ instead of having the files directly in
	src. Also switched to using setuptools.

	* setup.py: instancemanager is now easy-installable using
	"easy_install instancemanager"!

2006-06-04  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/actions.py: Added restore action, which restores the last
	available backup from the backup repository directory. This action
	will also remove the temporary files: Data.fs.tmp, Data.fs.index
	and Data.fs.lock.

	* Refactored backup and restore action. For each project a
	subdirectory is created inside the BackupsBaseDir.

2006-06-02  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/actions.py: Refactored the backup action, it now checks if
	the target folder exists and will created it if missing. Also set
	the PYTHONPATH using os.environ.

	* refactored ParseArguments. you can now use either:
	instancemanager <action> <project> or instancemanager <project>
	<action> Also invalid projects or actions will be detected and
	will throw a warning.

2006-06-01  Jean-Paul Ladage <j.ladage@zestsoftware.nl>

	* src/actions.py: Added backupDatabase action which uses repozo.py
	to make an online backup of the instance Data.fs

	* src/configuration.py: Added a backupBaseDir method which returns
	the backup_basedir_template variable from config. Also added
	databasePath method which returns the full path to the instance
	Data.fs

	* src/defaults.py: Added the backup_basedir_template variable for
	storing backups

2006-06-01  Reinout van Rees  <reinout@vanrees.org>

	* src/actions.py: Added loads more documentation.

	* src/quickreinstaller.py: Removed the fake request and the not
	quite elegant passing-along of REQUEST. Copied some boilerplate
	code Daniel Nouri showed me yesterday (makerequest). Much
	neater. Less code! :-)

	* src/quickreinstaller.py: Re-added the fake request later on
	because cmflinkchecker ruins later reinstalls otherwise. But I
	re-added it just inside the actual product reinstall part, so the
	code stays cleaner than it was before.

2006-05-01  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* src/quickreinstaller.py: Create a plone site with the name of
	the config option plone_site_name if it does not exist yet.  Needs
	more eyeballs though.

	* src/action.py, src/sources.py: addProduct() now checks if the
	source for that product exists and for now just gives a warning if
	it doesn't.
	
2006-05-29  Reinout van Rees  <reinout@vanrees.org>

	* src/quickreinstaller.py: Moved the fake request so that the
	reinstall method also uses it. Needed for (at least) textindexng3.
	
2006-05-29  Maurits van Rees  <m.van.rees@zestsoftware.nl>

	* bash_completion: Beginning of command completion in bash.
	
2006-05-25  Reinout van Rees  <reinout@vanrees.org>

	* setup.py: Fixed setup to support python 2.3.

	* setup.py: Released as 0.2.

2006-05-24  Maurits van Rees  <m.van.rees@zestsoftware.nl>
	
	* src/actions.py: Added a printconfig action that prints the
	sorted configuration, with variables expanded.

	* src/configuration.py: Handle exception in expandTemplate when
	the template is not a string.
	
2006-05-24  Reinout van Rees  <reinout@vanrees.org>

	* src/actions.py: Calling our quickreinstall script instead of
	depending on a custom made script inside the Data.fs. Updated the
	'soft' and 'fresh' targets for this.

	* src/quickreinstaller.py: Added script that gets fed to "zopectl
	run" to quickreinstall the products.

	* src/utils.py: Logfile now gets saved to the ~/.instancemanager
	directory instead of being littered all over the place into every
	directory from which you run the instancemanager.

2006-05-22  Maurits van Rees  <m.van.rees@zestsoftware.nl>
	
	* In the Create action instancemanager now exits with an error
	when the current dir is the instance dir, as mkzopeinstance would
	fail in that case.
	
2006-05-22  Reinout van Rees  <reinout@vanrees.org>

	* Added support for pre-made zope.conf files (for when
	instancemanager's handling just doesn't cut it).

2006-05-18  Reinout van Rees  <reinout@isengrim.ddns.hightechcampus.nl>

	* src/actions.py: Added info-logging of zope port when starting
	up (handy when juggling some 20 instances and so). :-)

	* src/sources.py: Bundle sources now overwrite files or
	directories if they already exist. Needed for README.txt files or
	so that are included in bundles.

2006-05-15  Reinout van Rees  <reinout@vanrees.org>

	* MANIFEST.in: Added the src/skeleton directory to the generated
	.tgz and uploaded a new 0.1 .tgz to plone.org.

2006-05-11  Reinout van Rees  <r.van.rees@zestsoftware.nl>

	* 0.1 release!
	
	* actions.py: On creation, the zope config is changed for port
	number, verbose security and debug mode.
	
	* setup.py: Added distutils installation (including extra
	instruction for moving the executable to /usr/local/bin in
	INSTALL.txt).

	* copy_defaults_to_userdefaults.py: Added utility script to
	prepare an up-to-date userdefaults.py for the skeleton directory.

	* defaults.py: Added full documentation for all options.

	* actions.py: Made quickreinstall call optional.

2006-05-10  Reinout van Rees  <reinout@vanrees.org>

	* sources.py: Added symlinkbundle source. (Handy for svn bundle
	checkouts of plone2.5, for instance).

2006-05-09  Reinout van Rees  <reinout@vanrees.org>

	* all: Started the project. Base sources, instance creation,
	documentation, reinstalling, product install, etc. Works for one
	of my projects already.
