[evolvis-commits] r11124: KikoV: use cvs ci to make changes to loginfo. Add support for Plug?==?UTF-8?Q?in Hooks↵
mirabilos at evolvis.org
mirabilos at evolvis.org
Thu Feb 24 18:03:10 CET 2011
Author: mirabilos
Date: 2011-02-24 18:03:10 +0100 (Thu, 24 Feb 2011)
New Revision: 11124
Modified:
trunk/gforge_base/evolvisforge-5.1/gforge/cronjobs/cvs-cron/cvs.php
Log:
KikoV: use cvs ci to make changes to loginfo. Add support for Plugin Hooks
Modified: trunk/gforge_base/evolvisforge-5.1/gforge/cronjobs/cvs-cron/cvs.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/cronjobs/cvs-cron/cvs.php 2011-02-24 17:03:08 UTC (rev 11123)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/cronjobs/cvs-cron/cvs.php 2011-02-24 17:03:10 UTC (rev 11124)
@@ -29,8 +29,51 @@
require ('common/include/cron_utils.php');
$use_cvs_acl = false;
-$maincvsroot = "/cvsroot/";
+$maincvsroot = "/cvsroot";
+/**
+* Retrieve a file into a temporary directory from a CVS server
+*
+* @param String $repos Repository Name
+* @param String $file File Name
+*
+* return String the FileName in the working repository
+*/
+function getCvsFile($repos,$file) {
+ $actual_dir = getcwd();
+ $tempdirname = tempnam("/tmp","cvstracker");
+ if (!$tempdirname)
+ return false;
+ if (!unlink($tempdirname))
+ return false;
+
+ // Create the temporary directory and returns its name.
+ if (!mkdir($tempdirname))
+ return false;
+
+ if (!chdir($tempdirname))
+ return false;
+ system("cvs -d ".$repos." co ".$file);
+
+ chdir($actual_dir);
+ return $tempdirname."/".$file;
+}
+
+/**
+* putCvsFile commit a file to the repository
+*
+* @param String $repos Repository
+* @param String $file to commit
+* @param String $message to commit
+*/
+function putCvsFile($repos,$file,$message="Automatic updated by cvstracker") {
+ $actual_dir = getcwd();
+ chdir(dirname($file));
+ system("cvs -d ".$repos." ci -m \"".$message."\" ".basename($file));
+ // unlink (basename($file));
+ chdir($actual_dir);
+}
+
//the directory exists
if(is_dir($maincvsroot)) {
addProjectRepositories();
@@ -75,56 +118,36 @@
global $sys_lists_host;
global $maincvsroot;
- $loginfo = $maincvsroot.$unix_group_name.'/CVSROOT/loginfo';
-
- if (checkLoginfo($loginfo)) {
- $pathsyncmail = "ALL ".dirname(__FILE__)."/syncmail -u %1{sVv} ".$unix_group_name."-commits@".$sys_lists_host."\n";
- if(is_file($loginfo)){
- writeFile($loginfo, $pathsyncmail);
+ $loginfo_file=getCvsFile($maincvsroot."/".$unix_group_name,'CVSROOT/loginfo');
+ $pathsyncmail = "ALL ".
+ dirname(__FILE__)."/syncmail -u %p %{sVv} ".
+ $unix_group_name."-commits@".$sys_lists_host."\n";
+ $content = file_get_contents ($loginfo_file);
+ if ( strstr($content, "syncmail") == FALSE) {
+ echo $unix_group_name.":Syncmail not found in loginfo.Adding\n";
+ $content .= "\n#BEGIN Added by cvs.php script\n".
+ $pathsyncmail. "\n#END Added by cvs.php script\n";
+ if(is_file($loginfo_file)){
+ echo $unix_group_name.":About to write the lines\n";
+ writeFile($loginfo_file, $content);
}
+ putCvsFile($maincvsroot."/".$unix_group_name,$loginfo_file);
+ } else {
+ echo "Syncmail Found!\n";
}
+
}
-function addCvsTrackerToFile($path, $unix_group_name) {
- global $sys_plugins_path, $sys_users_host;
-
- $FOut = fopen($path, "a");
- if($FOut) {
- fwrite($FOut, "# BEGIN added by gforge-plugin-cvstracker\n");
- $Line = "ALL ( php -q -d include_path=".ini_get('include_path').
- " ".$sys_plugins_path."/cvstracker/bin/post.php".
- " $unix_group_name %{sVv} )\n";
- fwrite($FOut,$Line);
- fwrite($FOut, "# END added by gforge-plugin-cvstracker\n");
- fclose($FOut);
- }
-}
-function isCvsTrackerSet($path) {
- $LineFound=FALSE;
- $FIn = fopen($path,"r");
-
- if ($FIn) {
- while (!feof($FIn)) {
- $Line = fgets ($FIn);
- if(!preg_match("/^#/", $Line) &&
- preg_match("/cvstracker/",$Line)) {
- $LineFound = TRUE;
- }
- }
- }
- fclose($FIn);
- return $LineFound;
-}
function addProjectRepositories() {
global $maincvsroot;
global $use_cvs_acl;
- $res = db_query("select groups.group_id,groups.unix_group_name,groups.enable_anonscm,groups.enable_pserver
- FROM groups, plugins, group_plugin
- WHERE groups.status != 'P'
- AND groups.group_id=group_plugin.group_id
- AND group_plugin.plugin_id=plugins.plugin_id
- AND plugins.plugin_name='scmcvs'");
+ $res = db_query("select groups.group_id,groups.unix_group_name,groups.enable_anonscm,groups.enable_pserver".
+ " FROM groups, plugins, group_plugin".
+ " WHERE groups.status != 'P' ".
+ " AND groups.group_id=group_plugin.group_id ".
+ " AND group_plugin.plugin_id=plugins.plugin_id ".
+ " AND plugins.plugin_name='scmcvs'");
for($i = 0; $i < db_numrows($res); $i++) {
/*
@@ -149,29 +172,31 @@
writeFile($repositoryPath.'/CVSROOT/readers', $readersContent);
writeFile($repositoryPath.'/CVSROOT/passwd', $passwdContent);
addsyncmail(db_result($res,$i,'unix_group_name'));
- if (!isCvsTrackerSet($repositoryPath.'/CVSROOT/loginfo')) {
- $Group = group_get_object(db_result($res,$i,'group_id'));
- if ($Group->usesPlugin("cvstracker")) {
- addCvsTrackerToFile($repositoryPath.'/CVSROOT/loginfo', $Group->getUnixName());
- }
- }
+
+ $hookParams['group_id']=db_result($res,$i,'group_id');
+ $hookParams['file_name']=$repositoryPath;
+ plugin_hook("update_cvs_repository",$hookParams);
} elseif (is_file($repositoryPath)) {
$err .= $repositoryPath.' already exists as a file';
} else {
- system('./cvscreate.sh '.db_result($res,$i,'unix_group_name').' '.(db_result($res,$i,'group_id')+50000).' '.db_result($res,$i,'enable_anonscm').' '.db_result($res,$i,'enable_pserver'));
+ system('./cvscreate.sh '.
+ db_result($res,$i,'unix_group_name').
+ ' '.(db_result($res,$i,'group_id')+50000).
+ ' '.db_result($res,$i,'enable_anonscm').
+ ' '.db_result($res,$i,'enable_pserver'));
addsyncmail(db_result($res,$i,'unix_group_name'));
- if (!isCvsTrackerSet($repositoryPath.'/CVSROOT/loginfo')) {
- $Group = group_get_object(db_result($res,$i,'group_id'));
- if ($Group->usesPlugin("cvstracker")) {
- addCvsTrackerToFile($repositoryPath.'/CVSROOT/loginfo', $Group->getUnixName());
- }
+ $hookParams['group_id']=db_result($res,$i,'group_id');
+ $hookParams['file_name']=$repositoryPath;
+ plugin_hook("update_cvs_repository",$hookParams);
+ if ($use_cvs_acl == true) {
+ system ("cp ".dirname($_SERVER['_']).
+ "/aclconfig.default ".$repositoryPath.'/CVSROOT/aclconfig');
+ $res_admins = db_query("SELECT users.user_name FROM users,user_group ".
+ "WHERE users.user_id=user_group.user_id AND ".
+ "user_group.group_id='".db_result($res,$i,'group_id')."'");
+ $useradmin_group = db_result($res_admins,0,'user_name');
+ system("cvs -d ".$repositoryPath." racl ".$useradmin_group.":p -r ALL -d ALL");
}
- if ($use_cvs_acl == true) {
- system ("cp ".dirname($_SERVER['_'])."/aclconfig.default ".$repositoryPath.'/CVSROOT/aclconfig');
- $res_admins = db_query("SELECT users.user_name FROM users,user_group WHERE users.user_id=user_group.user_id AND user_group.group_id='".db_result($res,$i,'group_id')."'");
- $useradmin_group = db_result($res_admins,0,'user_name');
- system("cvs -d ".$repositoryPath." racl ".$useradmin_group.":p -r ALL -d ALL");
- }
}
}
}
More information about the evolvis-commits
mailing list