List of commits:
Subject Hash Author Date (UTC)
More bulk updates 6dc2b24ebde74bbb64ef2893e2ddb8b7b9456219 Catalin(ux) M. BOIE 2011-07-01 03:16:01
Bulk changes e3771b115feb49698383730893ced1bac5670cac Catalin(ux) M. BOIE 2011-06-29 21:50:03
Ignore Changelog-last file. 32260f93743a577cbaf7cefd335517e4a42edcf0 Catalin(ux) M. BOIE 2011-06-27 21:20:53
Ignore *.out files. 265ba83a2df891cdcc7b35801a46cfc2583983ee Catalin(ux) M. BOIE 2011-06-27 21:20:23
Added shadow-utils as dependency fot user/groupadd. f5816c0bd992881439706041986a3a178eaf69bd Catalin(ux) M. BOIE 2011-06-27 21:08:32
More rpm fixes. 701daf680d15dc69a2a8709f6de5167b55ce02c2 Catalin(ux) M. BOIE 2011-06-27 21:01:24
Add rocketgit user and group. 1b2f9e1e16ed98d5eadd575a87bf0ff738d710c4 Catalin(ux) M. BOIE 2011-06-27 20:59:59
Other bulk stuff. 6cbfef4abe177ad8dad6bdc5ba3fb1d0e2270a9b Catalin(ux) M. BOIE 2011-06-27 19:50:32
Ignore *.log files. a87bc5c123478e429f430684a0962c8301e7cf90 Catalin(ux) M. BOIE 2011-06-27 19:49:58
Exclude from tar some bogus files. 77766d5276226ab0d6a03985a462daef3c91856a Catalin(ux) M. BOIE 2011-06-27 19:49:26
Lots of stuff. c1778920e66c4561f63632030fff66bff71d4395 Catalin(ux) M. BOIE 2011-06-27 17:33:14
Another round of fixes. 3c6df6f5a6053d322f93814b3a8ccc8555951d9f Catalin(ux) M. BOIE 2011-05-04 03:22:27
Another round of fixes. 0d841811babba24b643404169b645379377a92f9 Catalin(ux) M. BOIE 2011-05-03 03:29:10
Bulk updates. 31a2d477a86a3a408c44720bb8c8e280fc4894d2 Catalin(ux) M. BOIE 2011-04-06 20:37:51
Bulk update. 852d93d3bf7995ca427982f4ec1aa2bd1bf75063 Catalin(ux) M. BOIE 2011-04-06 15:22:02
Do not log IP. For IPv6 is eating a whole line. Session is enough. aae5180a3eed608170972b9a49bf19be37353141 Catalin(ux) M. BOIE 2011-03-18 04:07:53
Another bulk update. 9578a66fd047f044525e37469e6fc1db052ad486 Catalin(ux) M. BOIE 2011-03-16 04:27:24
Another bulk commit. 2ad8a84b27b80b66efa680f778dbf562d08da099 Catalin(ux) M. BOIE 2011-03-15 04:10:24
Bulk changes. 71ffd566d62b019302ffaeebaae0ab5edddc93d3 Catalin(ux) M. BOIE 2011-03-05 23:42:55
Bulk changes. 4a55c6d1cbe7d70e3982412d93c451d1f22e9448 Catalin(ux) M. BOIE 2011-03-04 21:57:58
Commit 6dc2b24ebde74bbb64ef2893e2ddb8b7b9456219 - More bulk updates
Author: Catalin(ux) M. BOIE
Author date (UTC): 2011-07-01 03:16
Committer name: Catalin(ux) M. BOIE
Committer date (UTC): 2011-07-01 03:16
Parent(s): e3771b115feb49698383730893ced1bac5670cac
Signing key:
Tree: 95c3c44cdb1d3e9084257a529e14b3ce98c95e0f
File Lines added Lines deleted
Makefile.in 4 0
TODO 3 9
admin/init.php 12 0
hooks/pre-commit 1 1
hooks/update 1 1
inc/db/struct.inc.php 49 48
inc/git.inc.php 6 6
inc/keys.inc.php 10 0
inc/log.inc.php 1 1
inc/repo/repo_page.php 1 1
rocketgit.spec.in 1 0
root/index.php 1 1
scripts/cron.php 3 3
scripts/q.php 1 1
scripts/ssh.php 2 2
File Makefile.in changed (mode: 100644) (index 0e44ee9..c754b46)
... ... install: all
24 24 cp -vd samples/config.php $(I_ETC)/rocketgit/config.php.sample cp -vd samples/config.php $(I_ETC)/rocketgit/config.php.sample
25 25 @mkdir -p $(I_VAR_LOG)/$(PRJ) @mkdir -p $(I_VAR_LOG)/$(PRJ)
26 26 @chown rocketgit:rocketgit $(I_VAR_LOG)/$(PRJ) @chown rocketgit:rocketgit $(I_VAR_LOG)/$(PRJ)
27 @chmod 0700 $(I_VAR_LOG)/$(PRJ)
28 @mkdir -p $(I_VAR_LOG)/$(PRJ)-web
29 @chown apache:apache $(I_VAR_LOG)/$(PRJ)-web
30 @chmod 0700 $(I_VAR_LOG)/$(PRJ)-web
27 31 @mkdir -p $(I_VAR_RUN)/$(PRJ) @mkdir -p $(I_VAR_RUN)/$(PRJ)
28 32 @chown rocketgit:rocketgit $(I_VAR_RUN)/$(PRJ) @chown rocketgit:rocketgit $(I_VAR_RUN)/$(PRJ)
File TODO changed (mode: 100644) (index 15b3ab0..a330e13)
3 3 [ ] You cannot admin rights of a repository if is not yours. [ ] You cannot admin rights of a repository if is not yours.
4 4 [ ] Check XSRF attacks and other types. [ ] Check XSRF attacks and other types.
5 5 [ ] Edit repo (rights) does not work. [ ] Edit repo (rights) does not work.
6 [ ] Shard by project name not by id!
7 6 [ ] [ ]
8 7
9 8 == Low priority == == Low priority ==
10 [ ] Make rights generic (both for repo, users etc.).
11 9 [ ] We should make a repo dirty ony if user pushed something with success. [ ] We should make a repo dirty ony if user pushed something with success.
12 10 [ ] <link rel="icon" type="image/png" id="favicon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACGFjVEwAAAASAAAAAJNtBPIAAAAaZmNUTAAAAAAAAAAQAAAAEAAAAAAAAAAALuAD6AABhIDeugAAALhJREFUOI2Nk8sNxCAMRDlGohauXFOMpfTiAlxICqAELltHLqlgctg1InzMRhpFAc%2BLGWTnmoeZYamt78zXdZmaQtQMADlnU0OIAlbmJUBEcO4bRKQY2rUXIPmAGnDuG%2FBx3%2FfvOPVaDUg%2BoAPUf1PArIMCSD5glMEsUGaG%2BkyAFWIBaCsKuA%2BHGCNijLgP133XgOEtaPFMy2vUolEGJoCIzBmoRUR9%2B7rxj16DZaW%2FmgtmxnJ8V3oAnApQwNS5zpcAAAAaZmNUTAAAAAEAAAAQAAAAEAAAAAAAAAAAAB4D6AIB52fclgAAACpmZEFUAAAAAjiNY2AYBVhBc3Pzf2LEcGreqcbwH1kDNjHauWAUjAJyAADymxf9WF%2Bu8QAAABpmY1RMAAAAAwAAABAAAAAQAAAAAAAAAAAAHgPoAgEK8Q9%2FAAAAFmZkQVQAAAAEOI1jYBgFo2AUjAIIAAAEEAAB0xIn4wAAABpmY1RMAAAABQAAABAAAAAQAAAAAAAAAAAAHgPoAgHnO30FAAAAQGZkQVQAAAAGOI1jYBieYKcaw39ixHCC%2F6cwFWMTw2rz%2F1MM%2F6Vu%2Ff%2F%2F%2FxTD%2F51qEIwuRjsXILuEGLFRMApgAADhNCsVfozYcAAAABpmY1RMAAAABwAAABAAAAAQAAAAAAAAAAAAHgPoAgEKra7sAAAAFmZkQVQAAAAIOI1jYBgFo2AUjAIIAAAEEAABM9s3hAAAABpmY1RMAAAACQAAABAAAAAQAAAAAAAAAAAAHgPoAgHn3p%2BwAAAAKmZkQVQAAAAKOI1jYBgFWEFzc%2FN%2FYsRwat6pxvAfWQM2Mdq5YBSMAnIAAPKbF%2F1BhPl6AAAAGmZjVEwAAAALAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAQpITFkAAAAWZmRBVAAAAAw4jWNrgAWjYBSMArgAAAQQAAHaszpmAAAAGmZjVEwAAAANAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAeeCPiMAAABAZmRBVAAAAA44jWNrgJ5gpxrDf2LEcIL%2FpzAVYxPDavP%2FUwz%2FpW79%2F%2F%2F%2FFMP%2FnWoQjC5GOxcgu4QYsVEwCmAAAOE0KxUmBL0KAAAAGmZjVEwAAAAPAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAQoU7coAAAAWZmRBVAAAABA4jWNrgAWjYBSMArgAAAQQAAEpOBELAAAAGmZjVEwAAAARAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAeYVWtoAAAAqZmRBVAAAABI4jWNrgAVYQXNz839ixHBq3qnG8B9ZAzYx2rlgFIwCcgAA8psX%2FWvpAecAAAAaZmNUTAAAABMAAAAQAAAAEAAAAAAAAAAAAB4D6AIBC4OJMwAAABZmZEFUAAAAFDiNY2AYBaNgFIwCCAAABBAAAcBQHOkAAAAaZmNUTAAAABUAAAAQAAAAEAAAAAAAAAAAAB4D6AIB5kn7SQAAAEBmZEFUAAAAFjiNY2AYnmCnGsN%2FYsRwgv%2BnMBVjE8Nq8%2F9TDP%2Blbv3%2F%2F%2F8Uw%2F%2BdahCMLkY7FyC7hBixUTAKYAAA4TQrFc%2BcEoQAAAAaZmNUTAAAABcAAAAQAAAAEAAAAAAAAAAAAB4D6AIBC98ooAAAABZmZEFUAAAAGDiNY2AYBaNgFIwCCAAABBAAASCZDI4AAAAaZmNUTAAAABkAAAAQAAAAEAAAAAAAAAAAAB4D6AIB5qwZ%2FAAAACpmZEFUAAAAGjiNY2AYBVhBc3Pzf2LEcGreqcbwH1kDNjHauWAUjAJyAADymxf9cjJWbAAAABpmY1RMAAAAGwAAABAAAAAQAAAAAAAAAAAAHgPoAgELOsoVAAAAFmZkQVQAAAAcOI1jYBgFo2AUjAIIAAAEEAAByfEBbAAAABpmY1RMAAAAHQAAABAAAAAQAAAAAAAAAAAAHgPoAgHm8LhvAAAAQGZkQVQAAAAeOI1jYBieYKcaw39ixHCC%2F6cwFWMTw2rz%2F1MM%2F6Vu%2Ff%2F%2F%2FxTD%2F51qEIwuRjsXILuEGLFRMApgAADhNCsVlxR3%2FgAAABpmY1RMAAAAHwAAABAAAAAQAAAAAAAAAAAAHgPoAgELZmuGAAAAFmZkQVQAAAAgOI1jYBgFo2AUjAIIAAAEEAABHP5cFQAAABpmY1RMAAAAIQAAABAAAAAQAAAAAAAAAAAAHgPoAgHlgtAOAAAAKmZkQVQAAAAiOI1jYBgFWEFzc%2FN%2FYsRwat6pxvAfWQM2Mdq5YBSMAnIAAPKbF%2F0%2FMvDdAAAAAElFTkSuQmCC"/> [ ] <link rel="icon" type="image/png" id="favicon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACGFjVEwAAAASAAAAAJNtBPIAAAAaZmNUTAAAAAAAAAAQAAAAEAAAAAAAAAAALuAD6AABhIDeugAAALhJREFUOI2Nk8sNxCAMRDlGohauXFOMpfTiAlxICqAELltHLqlgctg1InzMRhpFAc%2BLGWTnmoeZYamt78zXdZmaQtQMADlnU0OIAlbmJUBEcO4bRKQY2rUXIPmAGnDuG%2FBx3%2FfvOPVaDUg%2BoAPUf1PArIMCSD5glMEsUGaG%2BkyAFWIBaCsKuA%2BHGCNijLgP133XgOEtaPFMy2vUolEGJoCIzBmoRUR9%2B7rxj16DZaW%2FmgtmxnJ8V3oAnApQwNS5zpcAAAAaZmNUTAAAAAEAAAAQAAAAEAAAAAAAAAAAAB4D6AIB52fclgAAACpmZEFUAAAAAjiNY2AYBVhBc3Pzf2LEcGreqcbwH1kDNjHauWAUjAJyAADymxf9WF%2Bu8QAAABpmY1RMAAAAAwAAABAAAAAQAAAAAAAAAAAAHgPoAgEK8Q9%2FAAAAFmZkQVQAAAAEOI1jYBgFo2AUjAIIAAAEEAAB0xIn4wAAABpmY1RMAAAABQAAABAAAAAQAAAAAAAAAAAAHgPoAgHnO30FAAAAQGZkQVQAAAAGOI1jYBieYKcaw39ixHCC%2F6cwFWMTw2rz%2F1MM%2F6Vu%2Ff%2F%2F%2FxTD%2F51qEIwuRjsXILuEGLFRMApgAADhNCsVfozYcAAAABpmY1RMAAAABwAAABAAAAAQAAAAAAAAAAAAHgPoAgEKra7sAAAAFmZkQVQAAAAIOI1jYBgFo2AUjAIIAAAEEAABM9s3hAAAABpmY1RMAAAACQAAABAAAAAQAAAAAAAAAAAAHgPoAgHn3p%2BwAAAAKmZkQVQAAAAKOI1jYBgFWEFzc%2FN%2FYsRwat6pxvAfWQM2Mdq5YBSMAnIAAPKbF%2F1BhPl6AAAAGmZjVEwAAAALAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAQpITFkAAAAWZmRBVAAAAAw4jWNrgAWjYBSMArgAAAQQAAHaszpmAAAAGmZjVEwAAAANAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAeeCPiMAAABAZmRBVAAAAA44jWNrgJ5gpxrDf2LEcIL%2FpzAVYxPDavP%2FUwz%2FpW79%2F%2F%2F%2FFMP%2FnWoQjC5GOxcgu4QYsVEwCmAAAOE0KxUmBL0KAAAAGmZjVEwAAAAPAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAQoU7coAAAAWZmRBVAAAABA4jWNrgAWjYBSMArgAAAQQAAEpOBELAAAAGmZjVEwAAAARAAAAEAAAABAAAAAAAAAAAAAeA%2BgCAeYVWtoAAAAqZmRBVAAAABI4jWNrgAVYQXNz839ixHBq3qnG8B9ZAzYx2rlgFIwCcgAA8psX%2FWvpAecAAAAaZmNUTAAAABMAAAAQAAAAEAAAAAAAAAAAAB4D6AIBC4OJMwAAABZmZEFUAAAAFDiNY2AYBaNgFIwCCAAABBAAAcBQHOkAAAAaZmNUTAAAABUAAAAQAAAAEAAAAAAAAAAAAB4D6AIB5kn7SQAAAEBmZEFUAAAAFjiNY2AYnmCnGsN%2FYsRwgv%2BnMBVjE8Nq8%2F9TDP%2Blbv3%2F%2F%2F8Uw%2F%2BdahCMLkY7FyC7hBixUTAKYAAA4TQrFc%2BcEoQAAAAaZmNUTAAAABcAAAAQAAAAEAAAAAAAAAAAAB4D6AIBC98ooAAAABZmZEFUAAAAGDiNY2AYBaNgFIwCCAAABBAAASCZDI4AAAAaZmNUTAAAABkAAAAQAAAAEAAAAAAAAAAAAB4D6AIB5qwZ%2FAAAACpmZEFUAAAAGjiNY2AYBVhBc3Pzf2LEcGreqcbwH1kDNjHauWAUjAJyAADymxf9cjJWbAAAABpmY1RMAAAAGwAAABAAAAAQAAAAAAAAAAAAHgPoAgELOsoVAAAAFmZkQVQAAAAcOI1jYBgFo2AUjAIIAAAEEAAByfEBbAAAABpmY1RMAAAAHQAAABAAAAAQAAAAAAAAAAAAHgPoAgHm8LhvAAAAQGZkQVQAAAAeOI1jYBieYKcaw39ixHCC%2F6cwFWMTw2rz%2F1MM%2F6Vu%2Ff%2F%2F%2FxTD%2F51qEIwuRjsXILuEGLFRMApgAADhNCsVlxR3%2FgAAABpmY1RMAAAAHwAAABAAAAAQAAAAAAAAAAAAHgPoAgELZmuGAAAAFmZkQVQAAAAgOI1jYBgFo2AUjAIIAAAEEAABHP5cFQAAABpmY1RMAAAAIQAAABAAAAAQAAAAAAAAAAAAHgPoAgHlgtAOAAAAKmZkQVQAAAAiOI1jYBgFWEFzc%2FN%2FYsRwat6pxvAfWQM2Mdq5YBSMAnIAAPKbF%2F0%2FMvDdAAAAAElFTkSuQmCC"/>
13 11 [ ] Add key form may be joined with list keys command! [ ] Add key form may be joined with list keys command!
 
24 22 return OK, in the background we will do the removing. Do not forget to also remove clones. Hm. return OK, in the background we will do the removing. Do not forget to also remove clones. Hm.
25 23 [ ] E-mail aliases section. [ ] E-mail aliases section.
26 24 [ ] User details section (full name, e-mail, blog, avatar, mail notifications). [ ] User details section (full name, e-mail, blog, avatar, mail notifications).
27 [ ] Change password section.
28 25 [ ] Check if user is over-quota on push. [ ] Check if user is over-quota on push.
29 26 [ ] The cron will have to: [ ] The cron will have to:
30 27 [ ] Compute disk usage, ignoring hard links. Hm. Probably we will add [ ] Compute disk usage, ignoring hard links. Hm. Probably we will add
 
38 35 [ ] Timeout for connections (ssh/git-daemon/etc.)! [ ] Timeout for connections (ssh/git-daemon/etc.)!
39 36 [ ] Check if we have to respect 4HEXA also on SSH. I think not. [ ] Check if we have to respect 4HEXA also on SSH. I think not.
40 37 [ ] Limit number of simultaneously connection per repo and per user. Maybe also the time! [ ] Limit number of simultaneously connection per repo and per user. Maybe also the time!
41 [ ] Add /var/run/rg to spec file, to be created at instalation.
42 [ ] We should add a dependency on php-process?
43 38 [ ] Make everywhere present a "Make a sugestion" area. [ ] Make everywhere present a "Make a sugestion" area.
44 39 [ ] On rocketgit website, add "Feedback" area. [ ] On rocketgit website, add "Feedback" area.
45 [ ] Do not forget to pack /etc/httpd/conf.d/rg.conf.
46 40 [ ] Allow multiple virtual hosts, with different configurations. [ ] Allow multiple virtual hosts, with different configurations.
47 41 [ ] session_time should be set at login time? And/or default s_t should be set from database? [ ] session_time should be set at login time? And/or default s_t should be set from database?
48 42 [ ] Do not let user upload an already uploaded key. [ ] Do not let user upload an already uploaded key.
49 43 [ ] Do not permit more than X auth attempts per second. [ ] Do not permit more than X auth attempts per second.
50 [ ] See HTTP Only to prevent scripts to access the session cookie.
51 [ ] Set correct group in spec file.
52 44 [ ] See prepare-commit-msg.sample - we can auto add a line to every commit. [ ] See prepare-commit-msg.sample - we can auto add a line to every commit.
53 45 [ ] Check http://plathrop.tertiusfamily.net/blog/2010/05/11/git-hooks-branch-acls-and-more/ to block updates that have not pull - a la SVN [ ] Check http://plathrop.tertiusfamily.net/blog/2010/05/11/git-hooks-branch-acls-and-more/ to block updates that have not pull - a la SVN
54 46 [ ] Maybe we should mark the repository as dirty, only in the post-receive hook? Or update is the best place? [ ] Maybe we should mark the repository as dirty, only in the post-receive hook? Or update is the best place?
55 [ ]
47 [ ] Limit number of commits per push.
48 [ ] logrotate
49 [ ]
File admin/init.php changed (mode: 100644) (index a11ba03..53c015c)
... ... require_once($INC . "/db.inc.php");
12 12 require_once($INC . "/db/struct.inc.php"); require_once($INC . "/db/struct.inc.php");
13 13 require_once($INC . "/repo.inc.php"); require_once($INC . "/repo.inc.php");
14 14
15 rg_log_set_file("init.log");
16
15 17 $db = rg_sql_open($rg_db); $db = rg_sql_open($rg_db);
16 18 if ($db === FALSE) { if ($db === FALSE) {
17 19 echo "Internal error (" . rg_sql_error() . ")!"; echo "Internal error (" . rg_sql_error() . ")!";
 
... ... while (1) {
47 49 break; break;
48 50 } }
49 51
52 $r = rg_user_info($db, $uid, $user, "" /* email */);
53 if ($r['ok'] != 1) {
54 echo "Error looking up user $user (" . rg_user_error() . ")!\n";
55 exit(1);
56 }
57 if ($r['exists'] == 1) {
58 echo "User $user already exists. Try another one!\n";
59 continue;
60 }
61
50 62 $r = rg_user_edit($db, $uid, $user, $email, $pass, $is_admin, $r = rg_user_edit($db, $uid, $user, $email, $pass, $is_admin,
51 63 $disk_quota_mb, $rights); $disk_quota_mb, $rights);
52 64 if ($r !== TRUE) { if ($r !== TRUE) {
File hooks/pre-commit changed (mode: 100755) (index 804285b..486f370)
... ... require_once($INC . "/log.inc.php");
15 15 require_once($INC . "/db.inc.php"); require_once($INC . "/db.inc.php");
16 16 require_once($INC . "/repo.inc.php"); require_once($INC . "/repo.inc.php");
17 17
18 rg_log_set_file("/tmp/rg_hook_pre-commit.log");
18 rg_log_set_file("/var/log/rocketgit/hook_pre-commit.log");
19 19
20 20 rg_log("Start: euid=" . posix_geteuid() . "..."); rg_log("Start: euid=" . posix_geteuid() . "...");
21 21 rg_log("_SERVER: " . print_r($_SERVER, TRUE)); rg_log("_SERVER: " . print_r($_SERVER, TRUE));
File hooks/update changed (mode: 100755) (index 0de5d4d..e86a3d8)
... ... require_once($INC . "/log.inc.php");
15 15 require_once($INC . "/db.inc.php"); require_once($INC . "/db.inc.php");
16 16 require_once($INC . "/repo.inc.php"); require_once($INC . "/repo.inc.php");
17 17
18 rg_log_set_file("/tmp/rg_hook_update.log");
18 rg_log_set_file("/var/log/rocketgit/hook_update.log");
19 19
20 20 rg_log("Start: euid=" . posix_geteuid() . "..."); rg_log("Start: euid=" . posix_geteuid() . "...");
21 21 rg_log("_SERVER: " . print_r($_SERVER, TRUE)); rg_log("_SERVER: " . print_r($_SERVER, TRUE));
File inc/db/struct.inc.php changed (mode: 100644) (index 2f2d9c8..a5dc4bd)
1 1 <?php <?php
2 error_reporting(E_ALL);
3
4 2 $rg_db_struct = array(); $rg_db_struct = array();
5 3
6 4 $rg_db_struct[0] = array( $rg_db_struct[0] = array(
7 5 "repos" => "CREATE TABLE repos" "repos" => "CREATE TABLE repos"
8 6 . " (repo_id SERIAL PRIMARY KEY" . " (repo_id SERIAL PRIMARY KEY"
9 . ", name TEXT"
10 . ", uid INTEGER"
11 . ", itime INTEGER"
12 . ", disk_quota_mb INTEGER"
13 . ", max_commit_size INTEGER"
14 . ", master INTEGER"
15 . ", description TEXT"
16 . ", git_dir_done INTEGER"
17 . ", default_rights TEXT"
18 . ", deleted INTEGER"
19 . ", max_users INTEGER"
7 . ", name TEXT UNIQUE NOT NULL"
8 . ", uid INTEGER NOT NULL"
9 . ", itime INTEGER NOT NULL"
10 . ", disk_quota_mb INTEGER NOT NULL"
11 . ", max_commit_size INTEGER NOT NULL"
12 . ", master INTEGER NOT NULL"
13 . ", description TEXT NOT NULL"
14 . ", git_dir_done INTEGER NOT NULL"
15 . ", default_rights TEXT NOT NULL"
16 . ", deleted INTEGER NOT NULL"
17 . ", max_users INTEGER NOT NULL"
20 18 . ")", . ")",
21 19 "rights" => "CREATE TABLE rights" "rights" => "CREATE TABLE rights"
22 . " (type TEXT"
23 . ", obj_id INTEGER"
24 . ", uid INTEGER"
25 . ", rights TEXT"
26 . ", itime INTEGER)",
20 . " (type TEXT NOT NULL"
21 . ", obj_id INTEGER NOT NULL"
22 . ", uid INTEGER NOT NULL"
23 . ", rights TEXT NOT NULL"
24 . ", itime INTEGER NOT NULL)",
27 25 "state" => "CREATE TABLE state" "state" => "CREATE TABLE state"
28 26 . " (var TEXT PRIMARY KEY" . " (var TEXT PRIMARY KEY"
29 . ", value TEXT)",
27 . ", value TEXT NOT NULL)",
30 28 "keys" => "CREATE TABLE keys" "keys" => "CREATE TABLE keys"
31 29 . " (key_id SERIAL PRIMARY KEY" . " (key_id SERIAL PRIMARY KEY"
32 . ", itime INTEGER"
33 . ", uid INTEGER"
34 . ", key TEXT)",
30 . ", itime INTEGER NOT NULL"
31 . ", uid INTEGER NOT NULL"
32 . ", key TEXT NOT NULL)",
35 33 "users" => "CREATE TABLE users" "users" => "CREATE TABLE users"
36 34 . " (uid SERIAL PRIMARY KEY" . " (uid SERIAL PRIMARY KEY"
37 . ", username TEXT"
38 . ", salt TEXT"
39 . ", pass TEXT"
40 . ", email TEXT"
41 . ", itime INTEGER"
42 . ", suspended INTEGER"
43 . ", session_time INTEGER DEFAULT 3600"
44 . ", last_seen INTEGER"
45 . ", is_admin INTEGER"
46 . ", disk_quota_mb INTEGER"
47 . ", disk_mb INTEGER"
48 . ", rights TEXT"
35 . ", username TEXT UNIQUE NOT NULL"
36 . ", salt TEXT NOT NULL"
37 . ", pass TEXT NOT NULL"
38 . ", email TEXT NOT NULL"
39 . ", itime INTEGER NOT NULL"
40 . ", suspended INTEGER NOT NULL"
41 . ", session_time INTEGER DEFAULT 3600 NOT NULL"
42 . ", last_seen INTEGER NOT NULL"
43 . ", is_admin INTEGER NOT NULL"
44 . ", disk_quota_mb INTEGER NOT NULL"
45 . ", disk_mb INTEGER NOT NULL"
46 . ", rights TEXT NOT NULL"
49 47 . ")", . ")",
50 48 "sess" => "CREATE TABLE sess" "sess" => "CREATE TABLE sess"
51 49 . " (sid TEXT PRIMARY KEY" . " (sid TEXT PRIMARY KEY"
52 . ", uid INTEGER"
53 . ", expire INTEGER"
54 . ", session_time INTEGER"
55 . ", ip TEXT)",
50 . ", uid INTEGER NOT NULL"
51 . ", expire INTEGER NOT NULL"
52 . ", session_time INTEGER NOT NULL"
53 . ", ip TEXT NOT NULL)",
56 54 "forgot_pass" => "CREATE TABLE forgot_pass" "forgot_pass" => "CREATE TABLE forgot_pass"
57 55 . " (token TEXT PRIMARY KEY" . " (token TEXT PRIMARY KEY"
58 . ", uid INTEGER"
59 . ", expire INTEGER)",
56 . ", uid INTEGER NOT NULL"
57 . ", expire INTEGER NOT NULL)",
60 58 "tokens" => "CREATE TABLE tokens" "tokens" => "CREATE TABLE tokens"
61 59 . " (token TEXT PRIMARY KEY" . " (token TEXT PRIMARY KEY"
62 . ", sid TEXT"
63 . ", expire INTEGER)"
60 . ", sid TEXT NOT NULL"
61 . ", expire INTEGER NOT NULL)"
64 62 ); );
65 63
66 64 /* /*
 
... ... function rg_db_struct_run($db, $ignore_errors, $drop_tables)
72 70
73 71 foreach ($rg_db_struct as $index => $sqls) { foreach ($rg_db_struct as $index => $sqls) {
74 72 foreach ($sqls as $table => $sql) { foreach ($sqls as $table => $sql) {
75 echo "Drop & create table [$table]...\n";
76
77 $sql2 = "DROP TABLE IF EXISTS $table";
78 $res = rg_sql_query($db, $sql2);
79 rg_sql_free_result($res);
73 if ($drop_tables == 1) {
74 echo "Dropping table [$table]...\n";
75 $sql2 = "DROP TABLE IF EXISTS $table";
76 $res = rg_sql_query($db, $sql2);
77 rg_sql_free_result($res);
78 }
80 79
80 echo "Creating table [$table]...\n";
81 81 $res = rg_sql_query($db, $sql); $res = rg_sql_query($db, $sql);
82 82 if ($res === FALSE) { if ($res === FALSE) {
83 83 echo "WARN: Cannot create '$table' table ($sql) (" . rg_sql_error() . ")!\n"; echo "WARN: Cannot create '$table' table ($sql) (" . rg_sql_error() . ")!\n";
84 84 if (!$ignore_errors) if (!$ignore_errors)
85 85 return FALSE; return FALSE;
86 } else {
87 rg_sql_free_result($res);
86 88 } }
87 rg_sql_free_result($res);
88 89 } }
89 90 } }
90 91
File inc/git.inc.php changed (mode: 100644) (index e711d13..d5e14df)
... ... function rg_git_init($dst)
39 39 } }
40 40 } }
41 41
42 if (file_exists($dst . "/rg")) {
42 if (file_exists($dst . "/rocketgit")) {
43 43 rg_log("\tGit repo was created OK. Skip cloning."); rg_log("\tGit repo was created OK. Skip cloning.");
44 44 } else { } else {
45 45 $cmd = "git init --bare '" . escapeshellcmd($dst) . "'"; $cmd = "git init --bare '" . escapeshellcmd($dst) . "'";
 
... ... function rg_git_init($dst)
50 50 return FALSE; return FALSE;
51 51 } }
52 52
53 if (!@mkdir($dst . "/rg")) {
54 rg_log("\tCannot create rg dir ($php_errormsg)!");
53 if (!@mkdir($dst . "/rocketgit")) {
54 rg_log("\tCannot create '$dst/rocketgit' dir ($php_errormsg)!");
55 55 return FALSE; return FALSE;
56 56 } }
57 57 } }
 
... ... function rg_git_clone($src, $dst)
75 75 } }
76 76 } }
77 77
78 if (file_exists($dst . "/rg")) {
78 if (file_exists($dst . "/rocketgit")) {
79 79 rg_log("\tGit repo was created OK. Skip cloning."); rg_log("\tGit repo was created OK. Skip cloning.");
80 80 } else { } else {
81 81 $cmd = "git clone --bare '" . escapeshellcmd($src) . "'" $cmd = "git clone --bare '" . escapeshellcmd($src) . "'"
 
... ... function rg_git_clone($src, $dst)
87 87 return FALSE; return FALSE;
88 88 } }
89 89
90 if (!@mkdir($dst . "/rg")) {
91 rg_log("\tCannot create rg dir ($php_errormsg)!");
90 if (!@mkdir($dst . "/rocketgit")) {
91 rg_log("\tCannot create '$dst/rocketgit' dir ($php_errormsg)!");
92 92 return FALSE; return FALSE;
93 93 } }
94 94 } }
File inc/keys.inc.php changed (mode: 100644) (index 0c13e62..eea7b98)
... ... function rg_keys_regen($db)
128 128 return TRUE; return TRUE;
129 129 } }
130 130
131 // create .ssh folder if does not exists
132 $dir = dirname($rg_keys_file);
133 if (!file_exists($dir)) {
134 rg_log("dir [$dir] does not exists. Creating it...");
135 if (!@mkdir($dir, 0700, TRUE)) {
136 rg_keys_set_error("cannot create dir $dir ($php_errormsg)");
137 return FALSE;
138 }
139 }
140
131 141 $tmp = $rg_keys_file . ".tmp"; $tmp = $rg_keys_file . ".tmp";
132 142 $f = @fopen($tmp, "w"); $f = @fopen($tmp, "w");
133 143 if ($f === FALSE) { if ($f === FALSE) {
File inc/log.inc.php changed (mode: 100644) (index 11c8ca3..4ecc45a)
1 1 <?php <?php
2 2 require_once($INC . "/util.inc.php"); require_once($INC . "/util.inc.php");
3 3
4 $rg_log_file = "/tmp/rg.log";
4 $rg_log_file = "/var/log/rocketgit/fallback.log";
5 5 $rg_log_fd = FALSE; $rg_log_fd = FALSE;
6 6 $rg_log_sid = rg_id(6); $rg_log_sid = rg_id(6);
7 7
File inc/repo/repo_page.php changed (mode: 100644) (index 9f286dd..7ddfab8)
... ... if ($show_repo_info == 1) {
162 162 $_rt .= "Maxim number of users: " . $ri['max_users'] . "<br />\n"; $_rt .= "Maxim number of users: " . $ri['max_users'] . "<br />\n";
163 163 $_url = "git://" . $_SERVER['HTTP_HOST'] . "/" . $ri['name'] . ".git"; $_url = "git://" . $_SERVER['HTTP_HOST'] . "/" . $ri['name'] . ".git";
164 164 $_rt .= "Git URL: <a href=\"$_url\">$_url</a><br />\n"; $_rt .= "Git URL: <a href=\"$_url\">$_url</a><br />\n";
165 $_url = "ssh://rg@" . $_SERVER['HTTP_HOST'] . "/" . $ri['name'] . ".git";
165 $_url = "ssh://rocketgit@" . $_SERVER['HTTP_HOST'] . "/" . $ri['name'] . ".git";
166 166 $_rt .= "Git over SSH URL: <a href=\"$_url\">$_url</a><br />\n"; $_rt .= "Git over SSH URL: <a href=\"$_url\">$_url</a><br />\n";
167 167 $_rt .= "<br />\n"; $_rt .= "<br />\n";
168 168 } }
File rocketgit.spec.in changed (mode: 100644) (index d78fb9d..b3c7399)
... ... rm -rf ${RPM_BUILD_ROOT}
55 55 %config(noreplace) /etc/httpd/conf.d/rocketgit.conf %config(noreplace) /etc/httpd/conf.d/rocketgit.conf
56 56 %attr(0700,rocketgit,rocketgit) %dir /var/run/@PRJ@ %attr(0700,rocketgit,rocketgit) %dir /var/run/@PRJ@
57 57 %attr(0700,rocketgit,rocketgit) %dir /var/log/@PRJ@ %attr(0700,rocketgit,rocketgit) %dir /var/log/@PRJ@
58 %attr(0700,apache,apache) %dir /var/log/@PRJ@-web
58 59
59 60 %changelog %changelog
60 61 * Mon Jun 27 2011 Catalin(ux) M. BOIE <catab at embedromix dot ro> 0.2 * Mon Jun 27 2011 Catalin(ux) M. BOIE <catab at embedromix dot ro> 0.2
File root/index.php changed (mode: 100644) (index e91a2da..54189af)
... ... include_once($INC . "/repo.inc.php");
17 17 include_once($INC . "/keys.inc.php"); include_once($INC . "/keys.inc.php");
18 18 include_once($INC . "/token.inc.php"); include_once($INC . "/token.inc.php");
19 19
20 rg_log_set_file("/tmp/rg_web.log");
20 rg_log_set_file("/var/log/rocketgit-web/main.log");
21 21
22 22 $rg_sql_debug = $rg_db_debug; $rg_sql_debug = $rg_db_debug;
23 23
File scripts/cron.php changed (mode: 100644) (index 1af7ead..ecbfc7f)
... ... require_once($INC . "/db.inc.php");
13 13 require_once($INC . "/repo.inc.php"); require_once($INC . "/repo.inc.php");
14 14 require_once($INC . "/keys.inc.php"); require_once($INC . "/keys.inc.php");
15 15
16 rg_log_set_file("/tmp/rg_cron.log");
16 rg_log_set_file("/var/log/rocketgit/cron.log");
17 17
18 18 // locking // locking
19 19 $lock = "/var/run/rocketgit/cron.lock"; $lock = "/var/run/rocketgit/cron.lock";
 
... ... if (date("H") == 0) {
48 48 if ($res2 === FALSE) { if ($res2 === FALSE) {
49 49 rg_log("Cannot run query!"); rg_log("Cannot run query!");
50 50 } else { } else {
51 @unlink($repo_path . "/rg/dirty");
51 @unlink($repo_path . "/rocketgit/dirty");
52 52 rg_sql_free_result($res2); rg_sql_free_result($res2);
53 53 } }
54 54 } }
 
... ... if (date("H") == 23) {
91 91 //TODO: rg_log("Delete repositories..."); //TODO: rg_log("Delete repositories...");
92 92 } }
93 93
94 // this has to be the last thing that touches the database
94 // This has to be the last thing that touches the database
95 95 if (date("H") == 0) { if (date("H") == 0) {
96 96 rg_log("Run VACUUM on database..."); rg_log("Run VACUUM on database...");
97 97 $sql = "VACUUM"; $sql = "VACUUM";
File scripts/q.php changed (mode: 100644) (index 25336fb..8ec6388)
... ... require_once($INC . "/log.inc.php");
14 14 require_once($INC . "/db.inc.php"); require_once($INC . "/db.inc.php");
15 15 require_once($INC . "/repo.inc.php"); require_once($INC . "/repo.inc.php");
16 16
17 rg_log_set_file("/tmp/rg_q.log");
17 rg_log_set_file("/var/log/rocketgit/q.log");
18 18
19 19 // locking // locking
20 20 $lock = "/var/run/rocketgit/q.lock"; $lock = "/var/run/rocketgit/q.lock";
File scripts/ssh.php changed (mode: 100644) (index 4ce8b50..9f9e45d)
... ... require_once($INC . "/log.inc.php");
13 13 require_once($INC . "/db.inc.php"); require_once($INC . "/db.inc.php");
14 14 require_once($INC . "/repo.inc.php"); require_once($INC . "/repo.inc.php");
15 15
16 rg_log_set_file("/tmp/rg_ssh.log");
16 rg_log_set_file("/var/log/rocketgit/ssh.log");
17 17
18 18 $rg_sql_debug = $rg_db_debug; $rg_sql_debug = $rg_db_debug;
19 19
 
... ... rg_log("[$run] returned $ret.");
140 140 $diff = sprintf("%u", (microtime(TRUE) - $_start) * 1000); $diff = sprintf("%u", (microtime(TRUE) - $_start) * 1000);
141 141 rg_log("Took " . $diff . "ms."); rg_log("Took " . $diff . "ms.");
142 142
143 @file_put_contents($repo_path . "/rg/last_access",
143 @file_put_contents($repo_path . "/rocketgit/last_access",
144 144 "repo: " . $repo . " ($repo_path)" "repo: " . $repo . " ($repo_path)"
145 145 . "\nat: " . sprintf("%u", $_start) . "\nat: " . sprintf("%u", $_start)
146 146 . "\nuid: " . $uid . "\nuid: " . $uid
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/catalinux/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/catalinux/rocketgit

Clone this repository using git:
git clone git://git.rocketgit.com/user/catalinux/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main