/**
  * Initialize an object wrapper for a Subversion subcommand.
  *
  * @return  mixed   object on success, false on failure
  * @access public
  */
 function init($command, $options)
 {
     // Check for shortcuts for commands
     $shortcuts = VersionControl_SVN::fetchShortcuts();
     if (isset($options['shortcuts']) && is_array($options['shortcuts'])) {
         foreach ($options['shortcuts'] as $key => $val) {
             $shortcuts[strtolower($key)] = $val;
         }
     }
     $cmd = isset($shortcuts[strtolower($command)]) ? $shortcuts[strtolower($command)] : $command;
     $lowercmd = strtolower($cmd);
     $cmd = ucfirst($lowercmd);
     $class = 'VersionControl_SVN_' . $cmd;
     if (include_once realpath(dirname(__FILE__)) . "/SVN/{$cmd}.php") {
         if (class_exists($class)) {
             $obj =& new $class();
             $obj->options = $options;
             $obj->_svn_cmd = $lowercmd;
             $obj->_stack =& PEAR_ErrorStack::singleton('VersionControl_SVN');
             $obj->_stack->setErrorMessageTemplate(VersionControl_SVN::declareErrorMessages());
             $obj->setOptions($options);
             return $obj;
         }
     }
     PEAR_ErrorStack::staticPush('VersionControl_SVN', VERSIONCONTROL_SVN_ERROR_UNKNOWN_CMD, 'error', array('command' => $command, 'options' => $options));
     return false;
 }