Skip to content

Commit d8d6c75

Browse files
committed
Merge branch 'master' of github.com:mvriel/phpCodeControl
2 parents 42adbea + 93e09a2 commit d8d6c75

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

data/sql/schema.sql

100644100755
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
CREATE TABLE commit (id BIGINT AUTO_INCREMENT, revision VARCHAR(200) NOT NULL, scm_id BIGINT NOT NULL, author VARCHAR(100) NOT NULL, timestamp DATETIME NOT NULL, message TEXT NOT NULL, INDEX revision_idx (revision), INDEX scm_id_idx (scm_id), PRIMARY KEY(id)) ENGINE = INNODB;
1+
CREATE TABLE commit (id BIGINT AUTO_INCREMENT, revision VARCHAR(200) NOT NULL, scm_id BIGINT NOT NULL, author VARCHAR(100) NOT NULL, timestamp DATETIME NOT NULL, message TEXT NOT NULL, UNIQUE INDEX revision_idx (revision, scm_id), INDEX scm_id_idx (scm_id), PRIMARY KEY(id)) ENGINE = INNODB;
22
CREATE TABLE file_change (id BIGINT AUTO_INCREMENT, commit_revision VARCHAR(200) NOT NULL, file_path TEXT NOT NULL, file_change_type_id BIGINT NOT NULL, insertions BIGINT, deletions BIGINT, INDEX commit_revision_idx (commit_revision), INDEX file_change_type_id_idx (file_change_type_id), PRIMARY KEY(id)) ENGINE = INNODB;
33
CREATE TABLE file_change_type (id BIGINT AUTO_INCREMENT, name VARCHAR(50) NOT NULL, icon VARCHAR(50) NOT NULL, PRIMARY KEY(id)) ENGINE = INNODB;
4-
CREATE TABLE project (id BIGINT AUTO_INCREMENT, name TEXT, scm_id BIGINT, INDEX scm_id_idx (scm_id), PRIMARY KEY(id)) ENGINE = INNODB;
5-
CREATE TABLE scm (id BIGINT AUTO_INCREMENT, scm_type_id BIGINT NOT NULL, host TEXT NOT NULL, port BIGINT, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, path TEXT NOT NULL, INDEX scm_type_id_idx (scm_type_id), PRIMARY KEY(id)) ENGINE = INNODB;
4+
CREATE TABLE scm (id BIGINT AUTO_INCREMENT, name VARCHAR(100) NOT NULL, scm_type_id BIGINT NOT NULL, host TEXT NOT NULL, port BIGINT, username VARCHAR(255), password VARCHAR(255), path TEXT NOT NULL, INDEX scm_type_id_idx (scm_type_id), PRIMARY KEY(id)) ENGINE = INNODB;
65
CREATE TABLE scm_type (id BIGINT AUTO_INCREMENT, name VARCHAR(50) NOT NULL, default_port BIGINT NOT NULL, PRIMARY KEY(id)) ENGINE = INNODB;
76
ALTER TABLE commit ADD CONSTRAINT commit_scm_id_scm_id FOREIGN KEY (scm_id) REFERENCES scm(id);
87
ALTER TABLE file_change ADD CONSTRAINT file_change_file_change_type_id_file_change_type_id FOREIGN KEY (file_change_type_id) REFERENCES file_change_type(id);
98
ALTER TABLE file_change ADD CONSTRAINT file_change_commit_revision_commit_revision FOREIGN KEY (commit_revision) REFERENCES commit(revision);
10-
ALTER TABLE project ADD CONSTRAINT project_scm_id_scm_id FOREIGN KEY (scm_id) REFERENCES scm(id);
119
ALTER TABLE scm ADD CONSTRAINT scm_scm_type_id_scm_type_id FOREIGN KEY (scm_type_id) REFERENCES scm_type(id);

lib/scm/PccScmAdapterGit.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ protected function pull()
156156
$local_repo = $this->getLocalRepoPath();
157157
if (!is_dir($local_repo))
158158
{
159+
if(!mkdir($local_repo, 0777, true))
160+
{
161+
throw new Exception('Could not create directory '.$local_repo);
162+
}
159163
$this->execute('clone', array($this->getRemoteScmUrl(), $local_repo));
160164
}
161165
else

lib/task/phpccUpdateTask.class.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ protected function configure()
66
{
77
// add your own arguments here
88
$this->addArguments(array(
9-
new sfCommandArgument('scm', sfCommandArgument::REQUIRED, 'The id of the scm definition to update'),
9+
new sfCommandArgument('scm', sfCommandArgument::OPTIONAL, 'The id of the scm definition to update'),
1010
));
1111

1212
$this->addOptions(array(
@@ -48,13 +48,28 @@ protected function execute($arguments = array(), $options = array())
4848
$databaseManager = new sfDatabaseManager($this->configuration);
4949
$connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection();
5050

51-
$scm = Doctrine::getTable('Scm')->findOneById($arguments['scm']);
51+
if ($arguments['scm'])
52+
{
53+
$scms = Doctrine::getTable('Scm')->findById($arguments['scm']);
54+
}
55+
else
56+
{
57+
$scms = Doctrine::getTable('Scm')->findAll();
58+
}
5259

60+
foreach($scms as $scm)
61+
{
62+
$this->updateForScm($scm);
63+
}
64+
}
65+
66+
protected function updateForScm(Scm $scm)
67+
{
5368
$scm_object = $scm->getAdapter();
5469

55-
$this->logSection('info', 'Determining latest revision number');
70+
$this->logSection('info', 'Determining latest revision number for '.$scm->getName());
5671
$last_commit_id = $scm_object->getLastRevisionId();
57-
$last_commit_id_db = $this->getLastCommitIdFromDatabase($arguments['scm']);
72+
$last_commit_id_db = $this->getLastCommitIdFromDatabase($scm->getId());
5873

5974
if ($last_commit_id == $last_commit_id_db)
6075
{

0 commit comments

Comments
 (0)