| 'hooks.d/indefero_post_push.conf.in',␊ |
| 'hooks.d/indefero_post_push.lua',␊ |
| );␊ |
| if (!$project->private) {␊ |
| // this is linked and not copied to be able to update␊ |
| // the list of read-only commands on upgrades␊ |
| $confdir_contents[] = 'hooks.d/indefero_authorize_remote_automate.conf';␊ |
| }␊ |
| ␊ |
| // check whether we should handle additional files in the config directory␊ |
| $confdir_extra_contents = Pluf::f('mtn_confdir_extra', false);␊ |
| if ($confdir_extra_contents !== false) {␊ |
|
| __('Could not write read-permissions file "%s"'), $rcfile␊ |
| ));␊ |
| }␊ |
| ␊ |
| // link / unlink the read-only automate permissions for the project␊ |
| $confdir = Pluf::f('mtn_confdir', false);␊ |
| if ($confdir === false) {␊ |
| $confdir = dirname(__FILE__).'/SyncMonotone/';␊ |
| }␊ |
| $file = 'hooks.d/indefero_authorize_remote_automate.conf';␊ |
| $projectfile = $projectpath.'/'.$file;␊ |
| $templatefile = $confdir.'/'.$file;␊ |
| ␊ |
| $serverRestartRequired = false;␊ |
| if ($project->private && file_exists($projectfile) && is_link($projectfile)) {␊ |
| if (!unlink($projectfile)) {␊ |
| IDF_Scm_Exception(sprintf(␊ |
| __('Could not remove symlink "%s"'), $projectfile␊ |
| ));␊ |
| }␊ |
| $serverRestartRequired = true;␊ |
| } else␊ |
| if (!$project->private && !file_exists($projectfile)) {␊ |
| if (!symlink($templatefile, $projectfile)) {␊ |
| throw new IDF_Scm_Exception(sprintf(␊ |
| __('Could not create symlink "%s"'), $projectfile␊ |
| ));␊ |
| }␊ |
| $serverRestartRequired = true;␊ |
| }␊ |
| ␊ |
| if ($serverRestartRequired) {␊ |
| // FIXME: we should actually use stopServer() here, but this␊ |
| // seems to be ignored when the server should be started␊ |
| // again immediately afterwards␊ |
| IDF_Scm_Monotone_Usher::killServer($project->shortname);␊ |
| IDF_Scm_Monotone_Usher::startServer($project->shortname);␊ |
| }␊ |
| }␊ |
| ␊ |
| /**␊ |