On 2/21/06, Arlie Davis <firstname.lastname@example.org> wrote:
> I have edited my proposal, to incorporate feedback from the list. Please
> review and give feedback.
> -- arlie
> Windows Service Support for svnserve
> This is a proposal for adding support to svnserve for
> running as a Windows Service. This proposal was written by
> Arlie Davis (email@example.com).
> Request for Comments
> If you are interested in this feature, please read through
> this proposal, and provide your (constructive) comments,
> either to the SVN development list (firstname.lastname@example.org)
> or privately to me, at email@example.com.
Good idea, you can depend on me for reviewing and commiting your
patches for this feature.
> Spec Change Log
> 0.0 - 2/20/2006
> Posted first version to dev list
> 0.1 - 2/21/2006
> Incorporated list feedback
> Changed parameters for --create-service
> Added new --update-service
> Added new --list-service
> svnserve would be modified to add support for running "natively"
> as a Windows service. This allows svnserve to be managed like
> any other Windows service (start / stop from "Services"
> management tool, see status, manage it remotely, etc.), to be
> reliably started when the system boots, and to be reliably
> stopped when the system shuts down.
> Support will be provided for installing, enumerating, and
> uninstalling instances of svnserve services. The
> implementation would support any number of svnserve
> repositories; there will not be any limitation on the
> number of installed services.
> Command-line Changes
> svnserve would be modified to support these new command-line
> Causes the process to run as a Windows service. Users do
> not specify this switch; this switch will only be present
> when the service is launched by the Windows Service Control
> Manager (SCM). This flag is mutually exclusive with the
> other start-mode flags, such as --inetd, --tunnel, --daemon,
> and so on. Does not require any parameters.
> --create-service <name> [parameters]
> Installs a new Windows Service for a given Subversion
> repository. The service is created, but is intentionally
> not started. The usual Windows procedures for starting
> and stopping the service apply ("net start <name>" and
> "net stop <name>", or using the standard Windows service
> management GUI). The following parameters may be specified:
> --root <root>
> Specifies the root directory of the repository.
> This parameter is required.
> --service-start [auto|manual]
> Specifies whether the service should automatically be
> started when the system boots. "auto" means that the
> service should be started. "manual" means that the
> service should not be started, but can be started
> later by an administrator. This parameter is optional;
> if omitted, the "auto" value is the default.
> --listen-host <host>
> Specifies the hostname or IP address on which to listen.
> This parameter is optional; if omitted, then the service
> will listen on all installed IP interfaces.
> --listen-port <port>
> Specifies the TCP port on which to listen. This
> parameter is optional; if omitted, then the service
> will listen on the default port.
> --update-service <name> [create-parameters] [--restart]
> Changes the parameters of an existing service instance.
> The parameters are the same as for the --create-service
> option, in addition to the --restart parameter.
> This command will also check to see if the service is
> currently running. If the service is running, and the
> user has specified the --restart parameter, then the
> command will stop the service, update the configuration,
> and restart the service.
> If the service is running, and the user has not specified
> the --restart parameter, then the command will display
> a warning, indicating that the service needs to be stopped
> and started.
> If the service is not running, then the command will
> display a message indicating that the service is not
> running, and will not take any other actions; the --restart
> parameter is ignored.
Looks good, but why reinventing wheel? Might be use apache httpd
command line interface? Many Windows Subversion administrators already
knows apache command line.
Usage: C:\\Program Files\\Apache2\\bin\\Apache.exe [-D name] [-d
directory] [-f file]
[-C "directive"] [-c "directive"]
install|config|uninstall] [-n service_name]
[-v] [-V] [-h] [-l]
[-L] [-t] [-S]
-n name : set service name and use its ServerConfigFile
-k start : tell Apache to start
-k restart : tell running Apache to do a graceful restart
-k stop|shutdown : tell running Apache to shutdown
-k install : install an Apache service
-k config : change startup Options of an Apache service
-k uninstall : uninstall an Apache service
Looks acceptable for me.
> Configuration Data
> svnserve would be modified to store and read startup parameters
> in the registry key associated with the service. This includes
> the repository root path, listen host, and listen port. This
> allows svnserve to start without requiring that these parameters
> be specified on a command-line.
I really don't understand what is the reason for storing this options
in registry. Why not specify it on command line for service?
> No other values would be stored in the registry. Specifically,
> there is no overlap with values stored in the registry and
> values stored in the SVN "conf" directory.
> Installer GUI
> In addition to the command-line support for creating and managing
> service instances, I will contribute a GUI app for doing the same
I consider this overkill. Windows already have GUI for managing services.
Received on Wed Feb 22 17:48:24 2006