File compare.csv changed (mode: 100644) (index a672579..0dc83ff) |
... |
... |
Developers keep copyright when contributing (see 1),Yes,No,No,Yes,Yes,? |
5 |
5 |
GNU Ethical Repository Criteria Evaluations (see 4),"A (-A4, +A+0, +A+1, +A+2, +A+5)/#0f0",C/#f00,F/#f00,?,A?/#0f0,? |
GNU Ethical Repository Criteria Evaluations (see 4),"A (-A4, +A+0, +A+1, +A+2, +A+5)/#0f0",C/#f00,F/#f00,?,A?/#0f0,? |
6 |
6 |
,,,,,, |
,,,,,, |
7 |
7 |
[Features],,,,,, |
[Features],,,,,, |
8 |
|
Easy installation,Yes,No,Yes?,Yes,Yes,Yes |
|
9 |
|
SELinux policy,Yes,No,?,not needed/#0f0,?,? |
|
10 |
|
Distro friendly,Yes,No (see 2),No (see 2),Yes,Yes?,Yes? |
|
|
8 |
|
Easy installation{How easy can you install the software on your server?},Yes,No?,Yes?,Yes,Yes,Yes |
|
9 |
|
SELinux policy{SELinux is an application firewall used to improve the security},Yes,No,?,not needed/#0f0,?,? |
|
10 |
|
Distro friendly {Is a 'yum/dnf/apt-get/etc. update' is enough to update the software? Is it free of a inner package manager?},Yes,No (see 2),No (see 2),Yes,Yes?,Yes? |
11 |
11 |
Bug tracker,Yes,Yes,Yes,No,Yes,? |
Bug tracker,Yes,Yes,Yes,No,Yes,? |
12 |
|
CLI commands (SSH),Yes,No,?,?,?,? |
|
|
12 |
|
CLI commands (SSH) {Allow SSH commands to show the list of repositories show a repo status etc.},Yes,No,?,?,?,? |
13 |
13 |
API,Yes,Yes,Yes,?,Yes,? |
API,Yes,Yes,Yes,?,Yes,? |
14 |
|
Anonymous push,Yes,No,No,No?,No,? |
|
|
14 |
|
Anonymous push{With no user created| clone| make changes| push will result in a merge request, making it super easy to contribute to a project},Yes,No,No,No?,No,? |
15 |
15 |
Languages available (i18n),1,?,?,1,?,14 |
Languages available (i18n),1,?,?,1,?,14 |
16 |
16 |
IPv6,Yes,Yes,?,Yes,Yes,? |
IPv6,Yes,Yes,?,Yes,Yes,? |
17 |
|
Submodules,?,?,?,?,?,? |
|
|
17 |
|
Submodules{Are Git submodules supported?},?,?,?,?,?,? |
18 |
18 |
Usable with lynx,Yes,Yes,Yes,n/a,Yes,Yes |
Usable with lynx,Yes,Yes,Yes,n/a,Yes,Yes |
19 |
19 |
2fa (two-factor authentication),Yes,Yes,Yes (see 3),Yes,No,? |
2fa (two-factor authentication),Yes,Yes,Yes (see 3),Yes,No,? |
20 |
20 |
Web Hooks,Yes,Yes,Yes,No,Yes,Yes |
Web Hooks,Yes,Yes,Yes,No,Yes,Yes |
|
... |
... |
Lock repo with a message,Yes,?,?,?,?,? |
30 |
30 |
Continuous integration,Yes,Yes,?,?,?,? |
Continuous integration,Yes,Yes,?,?,?,? |
31 |
31 |
Code review,No,Yes,Yes,?,?,? |
Code review,No,Yes,Yes,?,?,? |
32 |
32 |
Wiki,No,Yes,Yes,n/a,?,? |
Wiki,No,Yes,Yes,n/a,?,? |
|
33 |
|
Resource usage {Is it light on CPU/memory/disk?},Yes,?,?,Yes,?,? |
33 |
34 |
,,,,,, |
,,,,,, |
34 |
35 |
[Rights],,,,,, |
[Rights],,,,,, |
35 |
|
Path control,Yes,No,?,Yes,Yes,? |
|
36 |
|
Refs control,Yes,Yes,?,?,Yes,? |
|
37 |
|
IP control,Yes,No,?,?,Yes?,? |
|
|
36 |
|
Path control{Can it control which files are pushed with some regex?},Yes,No,?,Yes,Yes,? |
|
37 |
|
Refs control{Can it control with a regex what branches you fetch/push?},Yes,Yes,?,?,Yes,? |
|
38 |
|
IP control{Can it control from what IPs you can fetch/push?},Yes,No,?,?,Yes?,? |
38 |
39 |
,,,,,, |
,,,,,, |
39 |
40 |
[Details],,,,,, |
[Details],,,,,, |
40 |
41 |
Language,PHP,Ruby+Perl,Ruby,Perl,Python,Go |
Language,PHP,Ruby+Perl,Ruby,Perl,Python,Go |
41 |
42 |
Cache,Custom,Redis,memcache,n/a,Redis,Custom/Redis/memcache |
Cache,Custom,Redis,memcache,n/a,Redis,Custom/Redis/memcache |
42 |
43 |
Database,PostgreSQL,My/PostgresSQL,MySQL,?,MySQL/MariaDB/PostgreSQL/SQLite,PostgreSQL/MySQL/SQLite |
Database,PostgreSQL,My/PostgresSQL,MySQL,?,MySQL/MariaDB/PostgreSQL/SQLite,PostgreSQL/MySQL/SQLite |
43 |
|
Webserver,Apache,apache/nginx,?,?,n/a,Apache/nginx/lighttpd |
|
|
44 |
|
Webserver,apache,apache/nginx,?,?,n/a,apache/nginx/lighttpd |
44 |
45 |
Size of the rpm package,380KiB/#0f0,287MiB/#f00,?,170KiB/#0f0,?,? |
Size of the rpm package,380KiB/#0f0,287MiB/#f00,?,170KiB/#0f0,?,? |
45 |
46 |
Page speed: Mobile (speed/user experience),90/96,32/90,67/96,n/a,54/67,32/72 |
Page speed: Mobile (speed/user experience),90/96,32/90,67/96,n/a,54/67,32/72 |
46 |
47 |
Page speed: Desktop,96,?,81,n/a,64,26 |
Page speed: Desktop,96,?,81,n/a,64,26 |
File misc/compare.php changed (mode: 100644) (index 57ef52f..f1a68b2) |
... |
... |
require_once($INC . '/util.inc.php'); |
8 |
8 |
|
|
9 |
9 |
$h = fopen($_SERVER['argv'][1], 'r'); |
$h = fopen($_SERVER['argv'][1], 'r'); |
10 |
10 |
if (!$h) |
if (!$h) |
11 |
|
die('Cannot open incput file!' . "\n"); |
|
|
11 |
|
die('Cannot open input file!' . "\n"); |
12 |
12 |
|
|
13 |
13 |
$out = fopen($_SERVER['argv'][2], 'w'); |
$out = fopen($_SERVER['argv'][2], 'w'); |
14 |
14 |
if (!$out) |
if (!$out) |
15 |
15 |
die('Cannot open out file!' . "\n"); |
die('Cannot open out file!' . "\n"); |
16 |
16 |
|
|
17 |
17 |
fwrite($out, '<div class="main_title">Git hosting solutions comparison</div>' . "\n"); |
fwrite($out, '<div class="main_title">Git hosting solutions comparison</div>' . "\n"); |
|
18 |
|
fwrite($out, '<div>' |
|
19 |
|
. 'Notes:<br />' |
|
20 |
|
. '- To contribute to this document, just e-mail us to' |
|
21 |
|
. ' in@rocketgit.com or clone the RocketGit' |
|
22 |
|
. ' <a href="https://rocketgit.com/user/catalinux/rocketgit">repository</a>' |
|
23 |
|
. ', make changes and push them.<br />' |
|
24 |
|
. '- Move mouse over features field for more information.' |
|
25 |
|
. '</div>' . "\n"); |
18 |
26 |
fwrite($out, '<table class="compare">' . "\n"); |
fwrite($out, '<table class="compare">' . "\n"); |
19 |
27 |
|
|
20 |
28 |
$lineno = 1; |
$lineno = 1; |
|
... |
... |
while (($line = fgetcsv($h, 4000, ',')) !== FALSE) { |
59 |
67 |
foreach ($line as $i => $f) { |
foreach ($line as $i => $f) { |
60 |
68 |
if ($i == 0) { |
if ($i == 0) { |
61 |
69 |
$color = ''; |
$color = ''; |
|
70 |
|
|
|
71 |
|
// Do we have a {...} - used for baloons |
|
72 |
|
$p = strpos($f, '{'); |
|
73 |
|
if ($p) { |
|
74 |
|
$q = strpos($f, '}'); |
|
75 |
|
$baloon = trim(substr($f, $p + 1, $q - $p - 1)); |
|
76 |
|
$newf = trim(substr($f, 0, $p)); |
|
77 |
|
$f = '<span title="' . rg_xss_safe($baloon) . '">' |
|
78 |
|
. $newf . '</span>'; |
|
79 |
|
} |
62 |
80 |
} else if (strstr($f, '/#')) { |
} else if (strstr($f, '/#')) { |
63 |
81 |
$t = explode('/#', $f); |
$t = explode('/#', $f); |
64 |
82 |
$color = ' bgcolor="#' . $t[1] . '"'; |
$color = ' bgcolor="#' . $t[1] . '"'; |
65 |
|
$f = $t[0]; |
|
|
83 |
|
$f = rg_xss_safe($t[0]); |
66 |
84 |
} else if (stristr($f, 'no')) { |
} else if (stristr($f, 'no')) { |
67 |
85 |
$color = ' bgcolor="#f00"'; |
$color = ' bgcolor="#f00"'; |
|
86 |
|
$f = rg_xss_safe($f); |
68 |
87 |
} else if (stristr($f, 'yes')) { |
} else if (stristr($f, 'yes')) { |
69 |
88 |
$color = ' bgcolor="#0f0"'; |
$color = ' bgcolor="#0f0"'; |
|
89 |
|
$f = rg_xss_safe($f); |
70 |
90 |
} else { |
} else { |
71 |
91 |
$color = ''; |
$color = ''; |
|
92 |
|
$f = rg_xss_safe($f); |
72 |
93 |
} |
} |
73 |
94 |
|
|
74 |
|
fwrite($out, |
|
75 |
|
'<' . $td . $color . '>' |
|
76 |
|
. rg_xss_safe($f) |
|
77 |
|
. '</' . $td . '>'); |
|
|
95 |
|
fwrite($out, '<' . $td . $color . '>' . $f . '</' . $td . '>'); |
78 |
96 |
} |
} |
79 |
97 |
fwrite($out, '</tr>' . "\n"); |
fwrite($out, '</tr>' . "\n"); |
80 |
98 |
$lineno++; |
$lineno++; |