xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
Commit 37b6e035a5027c99a8b21672cef5431673320892

Only texts changes.
Author: Catalin(ux) M. BOIE
Author date (UTC): 2015-11-17 17:58
Committer name: Catalin(ux) M. BOIE
Committer date (UTC): 2015-11-17 17:58
Parent(s): 422d74f1cd4133e73ceb3edbb7a7da6d48c102f2
Signing key:
Tree: 69c13f81230019a46148a705890f03a824fd7d55
File Lines added Lines deleted
TODO 2 0
inc/repo.inc.php 2 2
inc/rights.inc.php 2 2
root/themes/default/admin/plans/add_ok.html 1 1
root/themes/default/donate.html 1 1
root/themes/default/download-vm.html 55 93
root/themes/default/download.html 4 4
root/themes/default/features.html 14 13
root/themes/default/mail/user/key/new.body.txt 1 1
root/themes/default/mail/user/repo/bug/new.body.txt 2 2
root/themes/default/mail/user/repo/bug/new_note.body.txt 2 2
root/themes/default/mail/user/repo/del.body.txt 1 1
root/themes/default/mail/user/repo/del.subj.txt 1 1
root/themes/default/mail/user/repo/new.body.txt 1 1
root/themes/default/mail/user/repo/new.subj.txt 1 1
root/themes/default/mail/user/repo/update.body.txt 1 1
root/themes/default/mail/user/repo/update.subj.txt 1 1
root/themes/default/mail/user/welcome.body.txt 9 7
root/themes/default/repo/bug/deleted.html 1 1
root/themes/default/repo/create_ok.html 1 1
root/themes/default/repo/edit_ok.html 1 1
root/themes/default/repo/no_git_dir.html 1 1
root/themes/default/tos.html 23 16
root/themes/default/user/create_ok.html 1 1
root/themes/default/user/edit_ok.html 1 1
root/themes/default/user/login.html 2 2
root/themes/default/user/pass_changed.html 1 1
root/themes/default/user/repo/delete/done.html 1 1
scripts/cache.php 1 1
scripts/remote.php 1 1
tests/hook_update.sh 2 2
tests/http_bug.php 1 1
tests/http_create_account.php 1 1
tests/http_settings.php 7 7
tests/pr_anon.php 1 1
tests/user.php 3 3
tests/wh.php 2 2
File TODO changed (mode: 100644) (index 573f6ff..abb88af)
2 2 [ ] [ ]
3 3
4 4 == BEFORE NEXT RELEASE == == BEFORE NEXT RELEASE ==
5 [ ] css: #profiling still used?
6 [ ] Obsolete 'suggestions' and replace them with a link to the bug tracker.
5 7 [ ] wh: operation ('event') is not present in the post request! [ ] wh: operation ('event') is not present in the post request!
6 8 [ ] Alert admin on any problems (for example if authorized_keys is not [ ] Alert admin on any problems (for example if authorized_keys is not
7 9 updated)? updated)?
File inc/repo.inc.php changed (mode: 100644) (index c59a3ce..0b62a2d)
... ... function rg_repo_edit($db, $login_ui, &$new)
1019 1019 if ($new['repo_id'] == 0) { if ($new['repo_id'] == 0) {
1020 1020 $cat = 3000; $cat = 3000;
1021 1021 $hcat = REPO_CAT_CREATE; $hcat = REPO_CAT_CREATE;
1022 $hmess = "Repository was created";
1022 $hmess = "Repository has been created";
1023 1023 $notification = "repo_create-" . $login_ui['uid'] $notification = "repo_create-" . $login_ui['uid']
1024 1024 . "-" . $row['repo_id']; . "-" . $row['repo_id'];
1025 1025 $old_description = ""; $old_description = "";
 
... ... function rg_repo_edit($db, $login_ui, &$new)
1027 1027 } else { } else {
1028 1028 $cat = 3002; $cat = 3002;
1029 1029 $hcat = REPO_CAT_UPDATE; $hcat = REPO_CAT_UPDATE;
1030 $hmess = "Repository was updated";
1030 $hmess = "Repository has been updated";
1031 1031 $notification = ""; $notification = "";
1032 1032 $old_description = $ri['description']; $old_description = $ri['description'];
1033 1033 // TODO: we should log what changed // TODO: we should log what changed
File inc/rights.inc.php changed (mode: 100644) (index d9a4d32..954ffe7)
... ... function rg_rights_test_ip($list, $ip)
597 597 { {
598 598 $r = rg_rights_split_ip($ip); $r = rg_rights_split_ip($ip);
599 599 if ($r === FALSE) { if ($r === FALSE) {
600 rg_log("An invalid IP was specified [$ip]. Ignore it.");
600 rg_log("An invalid IP has been specified [$ip]. Ignore it.");
601 601 return FALSE; return FALSE;
602 602 } }
603 603
 
... ... function rg_rights_test_ip($list, $ip)
611 611
612 612 $r0 = rg_rights_split_ip($ip0); $r0 = rg_rights_split_ip($ip0);
613 613 if ($r0 === FALSE) { if ($r0 === FALSE) {
614 rg_log("An invalid IP was specified [$ip0]. Ignore it.");
614 rg_log("An invalid IP has been specified [$ip0]. Ignore it.");
615 615 continue; continue;
616 616 } }
617 617
File root/themes/default/admin/plans/add_ok.html changed (mode: 100644) (index b84a9a0..81ed927)
1 1 <div class="mess ok"> <div class="mess ok">
2 Plan was added/edited with success.
2 Plan has been successfully added/edited.
3 3 </div> </div>
File root/themes/default/donate.html changed (mode: 100644) (index 5dec535..243e1ca)
6 6 <div class="island"> <div class="island">
7 7 <div class="island_title">Donate time</div> <div class="island_title">Donate time</div>
8 8 To contribute to RocketGit you do not need money. You can donate a To contribute to RocketGit you do not need money. You can donate a
9 part of your time.
9 small amount of your time.
10 10 You can help by reporting bugs, sending suggestions, come with ideas You can help by reporting bugs, sending suggestions, come with ideas
11 11 to improve this project or by writing code. to improve this project or by writing code.
12 12 Thank you! Thank you!
File root/themes/default/download-vm.html changed (mode: 100644) (index d8d49f8..b75fcd8)
8 8
9 9 On this page you will find instructions on how to deploy On this page you will find instructions on how to deploy
10 10 RocketGit using a virtualization solution:<br /> RocketGit using a virtualization solution:<br />
11 - <a href="#qemu">qemu/KVM/libvirt</a><br />
12 - <a href="#vmware_esxi">VMware ESXi</a><br />
13 - <a href="#vmware_player">VMware Player</a><br />
14 - <a href="#virtualbox">VirtualBox</a>
11 * <a href="#qemu">qemu/KVM/libvirt</a><br />
12 * <a href="#vmware_esxi">VMware ESXi</a><br />
13 * <a href="#vmware_player">VMware Player</a><br />
14 * <a href="#virtualbox">VirtualBox</a><br />
15 * <a href="#common">common section</a>
15 16 </div> </div>
16 17 </div> </div>
17 18 </div> </div>
 
23 24 <div class="island_title">qemu based virtualization</div> <div class="island_title">qemu based virtualization</div>
24 25
25 26 Steps to follow:<br /> Steps to follow:<br />
26 - make sure libvirtd is started:<br />
27 * make sure libvirtd is started:<br />
27 28 <div class="xcode"> <div class="xcode">
28 29 systemctl enable libvirtd<br /> systemctl enable libvirtd<br />
29 30 systemctl start libvirtd systemctl start libvirtd
30 31 </div> </div>
31 32 <br /> <br />
32 33
33 - download qemu image (109 MiB):<br />
34 * download qemu image (109 MiB):<br />
34 35 <div class="xcode"> <div class="xcode">
35 36 wget -c -O /var/lib/libvirt/images/rocketgit1-master.qcow2.xz wget -c -O /var/lib/libvirt/images/rocketgit1-master.qcow2.xz
36 37 http://downloads.rocketgit.com/vm/v2/rocketgit1.qcow2.xz http://downloads.rocketgit.com/vm/v2/rocketgit1.qcow2.xz
37 38 </div> </div>
38 39 <br /> <br />
39 40
40 - download libvirt vm description file (4 KiB):<br />
41 * download libvirt vm description file (4 KiB):<br />
41 42 <div class="xcode"> <div class="xcode">
42 43 wget -c -O /var/lib/libvirt/images/rocketgit.xml wget -c -O /var/lib/libvirt/images/rocketgit.xml
43 44 http://downloads.rocketgit.com/vm/rocketgit.xml http://downloads.rocketgit.com/vm/rocketgit.xml
44 45 </div> </div>
45 46 <br /> <br />
46 47
47 - decompress qemu image:<br />
48 * decompress qemu image:<br />
48 49 <div class="xcode"> <div class="xcode">
49 50 cd /var/lib/libvirt/images/<br /> cd /var/lib/libvirt/images/<br />
50 51 xz -v -d rocketgit1-master.qcow2.xz xz -v -d rocketgit1-master.qcow2.xz
51 52 </div> </div>
52 53 <br /> <br />
53 54
54 - create a clone of the image to be able to start over or to make
55 * create a clone of the image to be able to start over or to make
55 56 multiple instances:<br /> multiple instances:<br />
56 57 <div class="xcode"> <div class="xcode">
57 58 qemu-img create -f qcow2 -b rocketgit1-master.qcow2 rocketgit1.qcow2 qemu-img create -f qcow2 -b rocketgit1-master.qcow2 rocketgit1.qcow2
58 59 </div> </div>
59 60 <br /> <br />
60 61
61 - add the rocketgit1 virtual machine:<br />
62 * add the rocketgit1 virtual machine:<br />
62 63 <div class="xcode"> <div class="xcode">
63 64 virsh define --file /var/lib/libvirt/images/rocketgit.xml virsh define --file /var/lib/libvirt/images/rocketgit.xml
64 65 </div> </div>
65 66 <br /> <br />
66 67
67 - make it start at boot:<br />
68 * make it start at boot:<br />
68 69 <div class="xcode"> <div class="xcode">
69 70 virsh autostart rocketgit1 virsh autostart rocketgit1
70 71 </div> </div>
71 72 <br /> <br />
72 73
73 - now, you may want to change some virtual machine parameters using
74 * now, you may want to change some virtual machine parameters using
74 75 virt-manager or 'virsh edit rocketgit1' command; pay attention to virt-manager or 'virsh edit rocketgit1' command; pay attention to
75 76 the network definition<br /> the network definition<br />
76 77 <br /> <br />
77 78
78 - make sure no other virtualization system is running (like VirtualBox)<br />
79 * make sure no other virtualization system is running (like VirtualBox)<br />
79 80 <br /> <br />
80 81
81 - start the virtual machine:<br />
82 * start the virtual machine:<br />
82 83 <div class="xcode"> <div class="xcode">
83 84 virsh start rocketgit1 virsh start rocketgit1
84 85 </div> </div>
85 86 <br /> <br />
86 87
87 - attach to the console to find out the ip address:<br />
88 * attach to the console to find out the ip address:<br />
88 89 <div class="xcode"> <div class="xcode">
89 90 virsh console rocketgit1</br /> virsh console rocketgit1</br />
90 91 # login as root with password 'aaaa'<br /> # login as root with password 'aaaa'<br />
 
92 93 </div> </div>
93 94 <br /> <br />
94 95
95 - now, point your browser to the ip address found, using http or
96 * now, point your browser to the found ip address, using http or
96 97 https and create an admin account<br /> https and create an admin account<br />
97 98 <br /> <br />
98 99
 
111 112 </div> </div>
112 113 <br /> <br />
113 114
114 Now, please follow the <a href="#common">common section<a/> below to
115 finish the installation.<br />
116
115 Now, please follow the <a href="#common">common section</a> below to
116 finish the installation.
117 117 </div> </div>
118 118 </div> </div>
119 119 </div> </div>
 
126 126
127 127 Steps to follow:<br /> Steps to follow:<br />
128 128
129 - download VMX config file (2 KiB) from
129 * download VMX config file (2 KiB) from
130 130 <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmx">http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386-esx.vmx</a><br /> <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmx">http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386-esx.vmx</a><br />
131 <br />
132 131
133 - download VMDK image (164 MiB) from
132 * download VMDK image (164 MiB) from
134 133 <a href="http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip">http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip</a> <a href="http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip">http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip</a>
135 in the same folder as previous file<br />
136 <br />
134 in the same folder as the previous file<br />
137 135
138 - decompress the image and move both files to a ESX datastore<br />
139 <br />
136 * decompress the image and move both files to an ESX datastore<br />
140 137
141 - in VMware Client, browse the datastore, right click on .vmx file,
138 * in VMware Client, browse the datastore, right click on .vmx file,
142 139 and choose "Add to inventory"<br /> and choose "Add to inventory"<br />
143 <br />
144 140
145 - now, you may want to change some virtual machine parameters;
141 * now, you may want to change some virtual machine parameters;
146 142 pay attention to the network definition<br /> pay attention to the network definition<br />
147 <br />
148 143
149 - start the virtual machine<br />
150 <br />
144 * start the virtual machine<br />
151 145
152 - attach to the console to find out the ip address (ip ad li)<br />
153 <br />
146 * attach to the console to find out the ip address (ip ad li)<br />
154 147
155 - point your browser to the ip address found, using http or
148 * point your browser to the found ip address, using http or
156 149 https and create an admin account<br /> https and create an admin account<br />
157 <br />
158
159 Now, please follow the <a href="#common">common section<a/> below to
160 finish the installation.<br />
161 150
151 Now, please follow the <a href="#common">common section</a> below to
152 finish the installation.
162 153 </div> </div>
163 154 </div> </div>
164 155 </div> </div>
 
171 162
172 163 Steps to follow:<br /> Steps to follow:<br />
173 164
174 - if you do not have a VMware virtualization solution, go to
165 * if you do not have a VMware virtualization solution, go to
175 166 <a href="http://www.vmware.com/player" target="_blank">VMware site</a> <a href="http://www.vmware.com/player" target="_blank">VMware site</a>
176 167 and download VMware Player. Choose try for free. It is around 75 MiB. and download VMware Player. Choose try for free. It is around 75 MiB.
177 168 And then, install it<br /> And then, install it<br />
178 <br />
179 169
180 - download VMX config file (2 KiB) from
170 * download VMX config file (2 KiB) from
181 171 <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmx">http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmx</a><br /> <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmx">http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmx</a><br />
182 <br />
183 172
184 - download VMDK image (164 MiB) from
173 * download VMDK image (164 MiB) from
185 174 <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmdk.zip">http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip</a><br /> <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmdk.zip">http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip</a><br />
186 <br />
187 175
188 - decompress the image<br />
189 <br />
176 * decompress the image<br />
190 177
191 - start VMware Player<br />
192 <br />
178 * start VMware Player<br />
193 179
194 - choose "Open a Virtual Machine", select the .vmx file and press
180 * choose "Open a Virtual Machine", select the .vmx file and press
195 181 "Open"<br /> "Open"<br />
196 <br />
197 182
198 - now, you may want to change some virtual machine parameters;
183 * now, you may want to change some virtual machine parameters;
199 184 pay attention to the network definition<br /> pay attention to the network definition<br />
200 <br />
201 185
202 - start the virtual machine, using "Play virtual machine";
186 * start the virtual machine, using "Play virtual machine";
203 187 choose "I copied it" if asked<br /> choose "I copied it" if asked<br />
204 <br />
205 188
206 - attach to the console to find out the ip address (ip ad li)<br />
207 <br />
189 * attach to the console to find out the ip address (ip ad li)<br />
208 190
209 - point your browser to the ip address found, using http or
191 * point your browser to the found ip address, using http or
210 192 https and create an admin account<br /> https and create an admin account<br />
211 <br />
212
213 Now, please follow the <a href="#common">common section<a/> below to
214 finish the installation.<br />
215 193
194 Now, please follow the <a href="#common">common section</a> below to
195 finish the installation.
216 196 </div> </div>
217 197 </div> </div>
218 198 </div> </div>
 
225 205
226 206 Steps to follow:<br /> Steps to follow:<br />
227 207
228 - if you do not have VirtualBox installed, go to
208 * if you do not have VirtualBox installed, go to
229 209 <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">VirtualBox site</a>, <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">VirtualBox site</a>,
230 210 download a proper executable (around 106 MiB) and install it<br /> download a proper executable (around 106 MiB) and install it<br />
231 <br />
232 211
233 - download the OVF file (12 KiB) from
212 * download the OVF file (12 KiB) from
234 213 <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.ovf">http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.ovf</a><br /> <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.ovf">http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.ovf</a><br />
235 <br />
236 214
237 - download the compressed VMDK image (164 MiB) from
215 * download the compressed VMDK image (164 MiB) from
238 216 <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmdk.zip">http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip</a><br /> <a href="http://downloads.rocketgit.com/vm/rocketgit1-fedora-21-i386.vmdk.zip">http://downloads.rocketgit.com/vm/v2/rocketgit1-fedora-21-i386.vmdk.zip</a><br />
239 <br />
240 217
241 - decompress the image<br />
242 <br />
218 * decompress the image<br />
243 219
244 - start VirtualBox, choose "File" menu, then "Import Appliance...";
220 * start VirtualBox, choose "File" menu, then "Import Appliance...";
245 221 select the .ovf file just downloaded and press "Next"<br /> select the .ovf file just downloaded and press "Next"<br />
246 <br />
247 222
248 - you may want to change some virtual machine parameters and
223 * you may want to change some virtual machine parameters and
249 224 then press "Import"<br /> then press "Import"<br />
250 <br />
251 225
252 - when asked about the license, choose "Agree"<br />
253 <br />
226 * when asked about the license, choose "Agree"<br />
254 227
255 - start the virtual machine by pressing "Start" button; login into the
228 * start the virtual machine by pressing "Start" button; login into the
256 229 virtual machine to find out the ip address (ip ad li)<br /> virtual machine to find out the ip address (ip ad li)<br />
257 <br />
258 230
259 - point your browser to the ip address found, using http or
231 * point your browser to the found ip address, using http or
260 232 https and create an admin account<br /> https and create an admin account<br />
261 <br />
262
263 Now, please follow the <a href="#common">common section<a/> below to
264 finish the installation.<br />
265 233
234 Now, please follow the <a href="#common">common section</a> below to
235 finish the installation.
266 236 </div> </div>
267 237 </div> </div>
268 238 </div> </div>
 
278 248 * add the vm in the update plan (periodic 'yum update')<br /> * add the vm in the update plan (periodic 'yum update')<br />
279 249 * run timedatectl set-timezone 'Continent/City' to set the timezone * run timedatectl set-timezone 'Continent/City' to set the timezone
280 250 (needs a restart of some services or reboot)<br /> (needs a restart of some services or reboot)<br />
281 * change root password: run 'passwd' (initial password is 'aaaa')<br />
251 * change the root password: run 'passwd' (initial password is 'aaaa')<br />
282 252 * allow this virtual machine to send mail (add it to the relay allow list)<br /> * allow this virtual machine to send mail (add it to the relay allow list)<br />
283 253 * set a static IP address instead of DHCP<br /> * set a static IP address instead of DHCP<br />
284 254 * add it to the DNS server to be able to access it by name<br /> * add it to the DNS server to be able to access it by name<br />
285 255 * adjust logrotate times<br /> * adjust logrotate times<br />
286 256 * customize /etc/rocketgit/config.php<br /> * customize /etc/rocketgit/config.php<br />
257 <br />
287 258 Enjoy your new RocketGit instance!<br /> Enjoy your new RocketGit instance!<br />
288 259 </div> </div>
289 260 </div> </div>
290 261 </div> </div>
291 262
292 <div class="island_row">
293 <div class="island_cell">
294 <div class="island">
295 <div class="island_title">Soon for other virtualization solutions</div>
296 Stay tuned!
297 </div>
298 </div>
299 </div>
300
301 263 </div> </div>
File root/themes/default/download.html changed (mode: 100644) (index c4a21ed..d790ab3)
5 5 <div class="island_cell"> <div class="island_cell">
6 6 <div class="island"> <div class="island">
7 7 <div class="island_title">By cloning</div> <div class="island_title">By cloning</div>
8 You can just clone the RocketGit project and install it from sources.
9 Just follow this
8 You can just clone the RocketGit project and install it from sources,
9 by following this
10 10 <a href="http://rocketgit.com/user/catalinux/rocketgit">link</a>. <a href="http://rocketgit.com/user/catalinux/rocketgit">link</a>.
11 11 </div> </div>
12 12 </div> </div>
 
20 20 yum install http://kernel.embedromix.ro/dinorepo-0.0.10-1.noarch.rpm<br /> yum install http://kernel.embedromix.ro/dinorepo-0.0.10-1.noarch.rpm<br />
21 21 yum install rocketgit yum install rocketgit
22 22 </div> </div>
23 Now, follow the install section from the README file from
23 Then, follow the install section from the README file from
24 24 /usr/share/doc/rocketgit. /usr/share/doc/rocketgit.
25 25 </div> </div>
26 26 </div> </div>
 
32 32 <div class="island_title">Other distributions</div> <div class="island_title">Other distributions</div>
33 33 In the near future, we will provide packages that are ready for In the near future, we will provide packages that are ready for
34 34 installation for all major distributions. If you need a package for the installation for all major distributions. If you need a package for the
35 distribution that you are using and you know how to do a package,
35 distribution you are using and you know how to make a package,
36 36 you are welcome to contribute. Thank you! you are welcome to contribute. Thank you!
37 37 </div> </div>
38 38 </div> </div>
File root/themes/default/features.html changed (mode: 100644) (index 205c13e..079ec24)
58 58 <div class="island_cell"> <div class="island_cell">
59 59 <div class="island"> <div class="island">
60 60 <div class="island_title">Corporate friendly</div> <div class="island_title">Corporate friendly</div>
61 RocketGit is SELinux protected (we wrote the policy),
62 therefore you can keep your system secure when
63 using RocketGit. Also, we implemented two-factor authentication.
61 RocketGit is SELinux protected,
62 therefore you can keep your system secure while using it.
63 Also, for an increased level of security,
64 you can use the two-factor authentication system provided by RocketGit.
64 65 </div> </div>
65 66 </div> </div>
66 67 </div> </div>
 
79 80 <div class="island_cell"> <div class="island_cell">
80 81 <div class="island"> <div class="island">
81 82 <div class="island_title">Integrated bug tracker</div> <div class="island_title">Integrated bug tracker</div>
82 We built the simplest and the most powerful bug tracker:
83 minimal input fields, flexible label based tagging,
83 RocketGit provides the simplest and the most powerful bug tracker:
84 minimal input fields, flexible label based tagging
84 85 and custom searches. and custom searches.
85 86 </div> </div>
86 87 </div> </div>
 
99 100 <div class="island_cell"> <div class="island_cell">
100 101 <div class="island"> <div class="island">
101 102 <div class="island_title">Powerful rights management</div> <div class="island_title">Powerful rights management</div>
102 You have many possibilities to block access to a repository.
103 You have a wide range of possibilities to block access to a repository.
103 104 You can filter by IPv4/IPv6 addresses (including prefix length), You can filter by IPv4/IPv6 addresses (including prefix length),
104 by reference path (regex) or by path (regex). You can reject commits
105 based on size, bad whitespace or operation (create/update/delete) of
106 branches/tags. You can control the non fast-forwards pushes and the
107 merges.
105 by reference path (regex) or by path (also regex).
106 You can reject commits based on size, bad whitespace or
107 operation (create/update/delete) of branches/tags.
108 You can control the non fast-forwards pushes and the merges.
108 109 </div> </div>
109 110 </div> </div>
110 111
111 112 <div class="island_cell"> <div class="island_cell">
112 113 <div class="island"> <div class="island">
113 114 <div class="island_title">Built on top of top software</div> <div class="island_title">Built on top of top software</div>
114 We use the best products to build upon: Linux, Git, PostgreSQL,
115 Apache, PHP and SELinux.
115 RocketGit has been created by using the best products to build upon:
116 Linux, Git, OpenSSH, PostgreSQL, Apache, PHP and SELinux.
116 117 </div> </div>
117 118 </div> </div>
118 119 </div> </div>
 
120 121 <div class="island_row"> <div class="island_row">
121 122 <div class="island_cell"> <div class="island_cell">
122 123 <div class="island"> <div class="island">
123 <div class="island_title">The features that you need are not here?</div>
124 <div class="island_title">Are there features that you need and they are not here?</div>
124 125 Do not worry! Let us know by leaving a Do not worry! Let us know by leaving a
125 126 <a href="/op/suggestion">suggestion</a> (you must be logged in) <a href="/op/suggestion">suggestion</a> (you must be logged in)
126 127 or by writing an e-mail at or by writing an e-mail at
File root/themes/default/mail/user/key/new.body.txt changed (mode: 100644) (index 18f6a8c..f4c1073)
1 1 Hello! Hello!
2 2
3 A new SSH key was added to your account:
3 A new SSH key has been added to your account:
4 4 Type: @@ki::type@@ Type: @@ki::type@@
5 5 Comment: @@ki::comment@@ Comment: @@ki::comment@@
6 6 Fingerprint(md5): @@ki::fingerprint_md5@@ Fingerprint(md5): @@ki::fingerprint_md5@@
File root/themes/default/mail/user/repo/bug/new.body.txt changed (mode: 100644) (index b0d851d..dedfd75)
1 1 Hello! Hello!
2 2
3 A new bug was added to repo '@@ri::name@@':
3 A new bug has been added to repo '@@ri::name@@':
4 4 '@@bug::title@@'. '@@bug::title@@'.
5 5
6 6 Description: Description:
7 7 @@bug::body@@ @@bug::body@@
8 8
9 The bug was added by '@@bug::who_added_text@@'.
9 The bug has been added by '@@bug::who_added_text@@'.
10 10 It is assigned to '@@bug::assigned_to_text@@'. It is assigned to '@@bug::assigned_to_text@@'.
11 11 State: @@bug::state_text@@ State: @@bug::state_text@@
12 12
File root/themes/default/mail/user/repo/bug/new_note.body.txt changed (mode: 100644) (index ac74db2..70b5283)
1 1 Hello! Hello!
2 2
3 A new note was added to bug
3 A new note has been added to bug
4 4 '@@bug::title@@', '@@bug::title@@',
5 5 repo '@@ri::name@@'. repo '@@ri::name@@'.
6 The note was added by '@@note::who_added_text@@'.
6 The note has been added by '@@note::who_added_text@@'.
7 7
8 8 @@note::body@@ @@note::body@@
9 9
File root/themes/default/mail/user/repo/del.body.txt changed (mode: 100644) (index c991698..a29013b)
1 1 Hello! Hello!
2 2
3 Repository '@@ri::name@@' was deleted.
3 Repository '@@ri::name@@' has been deleted.
4 4
5 5 IP: @@ip@@ IP: @@ip@@
6 6
File root/themes/default/mail/user/repo/del.subj.txt changed (mode: 100644) (index 9f483cb..8b06054)
1 '@@ri::name@@' repo was deleted
1 '@@ri::name@@' repo has been deleted
File root/themes/default/mail/user/repo/new.body.txt changed (mode: 100644) (index 3ab3601..64295cf)
1 1 Hello! Hello!
2 2
3 @@if(@@ri::public@@ == 1){{Public}}{{Private}} repository '@@ri::name@@' was created.
3 @@if(@@ri::public@@ == 1){{Public}}{{Private}} repository '@@ri::name@@' has been created.
4 4
5 5 Description: Description:
6 6 @@ri::description@@ @@ri::description@@
File root/themes/default/mail/user/repo/new.subj.txt changed (mode: 100644) (index 2cc45c3..d472317)
1 '@@ri::name@@' repo was created
1 '@@ri::name@@' repo has been created
File root/themes/default/mail/user/repo/update.body.txt changed (mode: 100644) (index ef18b73..4208690)
1 1 Hello! Hello!
2 2
3 @@if(@@ri::renamed@@ == 1){{Repository '@@ri_old::name@@' was renamed to '@@ri::name@@.}}
3 @@if(@@ri::renamed@@ == 1){{Repository '@@ri_old::name@@' has been renamed to '@@ri::name@@.}}
4 4 @@if(@@ri_old::description_md5@@ != @@ri::description_md5@@){{ @@if(@@ri_old::description_md5@@ != @@ri::description_md5@@){{
5 5 Description changed to: Description changed to:
6 6 @@ri::description@@ @@ri::description@@
File root/themes/default/mail/user/repo/update.subj.txt changed (mode: 100644) (index feacbc4..29f143e)
1 '@@ri_old::name@@' repo was changed
1 '@@ri_old::name@@' repo has been changed
File root/themes/default/mail/user/welcome.body.txt changed (mode: 100644) (index ab1074d..922225f)
1 Hello!
2
3 Welcome to RocketGit!
1 Dear @@if("@@name@@" == ""){{@@name@@}}{{@@username@@}},
4 2
3 Thank you for choosing RocketGit as your hosting solution.
5 4 We are happy to host your projects. We are happy to host your projects.
6 Enjoy your stay!
5
7 6 @@if(@@rg_account_email_confirm@@ == 1){{ @@if(@@rg_account_email_confirm@@ == 1){{
8 You must confirm your e-mail address before you can use your account,
9 by clicking the link below:
7 You can start using your account immediately after you confirm
8 your e-mail address, by clicking the link below:
10 9 }}{{ }}{{
11 You may want to confirm your e-mail address by clicking the link below:
10 In order to be able to receive notifications and to recover a lost password,
11 please confirm your e-mail address, by clicking the link below:
12 12 }} }}
13 13 @@url@@/op/confirm/@@ui::confirm_token@@ @@url@@/op/confirm/@@ui::confirm_token@@
14 14
15 Enjoy your stay!
16
15 17 Thank you! Thank you!
16 18
17 19 -- --
File root/themes/default/repo/bug/deleted.html changed (mode: 100644) (index cf4b8f4..aaee88e)
1 1 <div class="mess error"> <div class="mess error">
2 This bug was deleted.
2 This bug has been deleted.
3 3 </div> </div>
File root/themes/default/repo/create_ok.html changed (mode: 100644) (index 716e39d..48f8161)
1 1 <div class="mess ok"> <div class="mess ok">
2 Repository was created with success.
2 Repository has been successfully created.
3 3 Click <a href="@@ri::home@@">here</a> to go to the repository home. Click <a href="@@ri::home@@">here</a> to go to the repository home.
4 4 </div> </div>
File root/themes/default/repo/edit_ok.html changed (mode: 100644) (index 1872486..4eb9385)
1 1 <div class="mess ok"> <div class="mess ok">
2 Repository was updated with success.
2 Repository has been successfully updated.
3 3 @@if(@@ri::renamed@@ == 1){{Go to new home <a href="@@ri::home@@">here</a>}}{{}} @@if(@@ri::renamed@@ == 1){{Go to new home <a href="@@ri::home@@">here</a>}}{{}}
4 4 </div> </div>
File root/themes/default/repo/no_git_dir.html changed (mode: 100644) (index 09ff921..0dfedb6)
1 1 <div class="mess warning"> <div class="mess warning">
2 The git dir for this repo was not yet created. Please retry.
2 The git dir for this repo has not been created yet. Please retry.
3 3 </div> </div>
File root/themes/default/tos.html changed (mode: 100644) (index 0f87fcc..9dc8c77)
11 11 license.<br /> license.<br />
12 12 <br /> <br />
13 13
14 The services offered by the rocketgit.com site are covered by the
14 The services offered by the rocketgit.com site are governed by the
15 15 terms below. If you do not agree with these terms, please do not use terms below. If you do not agree with these terms, please do not use
16 16 this site or any of the services provided by it. By continuing to this site or any of the services provided by it. By continuing to
17 use them, you agree to be bound by this terms.<br />
18 <br >
17 use them, you agree to be bound by these terms.<br />
18 <br />
19 19
20 - You must understand that we cannot review all content hosted here,
21 therefore you agree to be exposed to any type of content.
20 - You must acknowledge that we cannot review all the content hosted
21 here, therefore you agree to be exposed to any type of content.
22 22 Do note that we do not endorse any illegal content hosted on our Do note that we do not endorse any illegal content hosted on our
23 servers and we encourage you to report it to us.<br />
23 servers, therefore in case you are exposed to such content here,
24 we encourage you to report it to us.<br />
24 25
25 - There is no warranty for this service to the extent permitted by
26 applicable law. Except when otherwise stated in writing we provide
26 - There is no warranty provided for this service to the extent
27 permitted by applicable law.
28 Except when otherwise stated in writing we provide
27 29 the service "as is" without warranty of any kind, either expressed the service "as is" without warranty of any kind, either expressed
28 30 or implied, including but not limited to, the implied warranties of or implied, including but not limited to, the implied warranties of
29 31 merchantability and fitness for a particular purpose. The entire merchantability and fitness for a particular purpose. The entire
 
45 47
46 48 - Code uploaded by you does not become the property of us.<br /> - Code uploaded by you does not become the property of us.<br />
47 49
48 - Configuring your repository as public you agree that others
49 may view and fork it.<br />
50 - By configuring your repository as public, you agree that others
51 may view it and fork it.<br />
50 52
51 53 - You are not allowed to use an automatic method to create accounts.<br /> - You are not allowed to use an automatic method to create accounts.<br />
52 54
53 - You must not abuse RocketGit servers.<br />
55 - You are not allowed to abuse the RocketGit servers.<br />
54 56
55 - You must not abuse other's servers using RocketGit as a proxy.<br />
57 - You are not allowed to abuse the other's servers using RocketGit as
58 a proxy.<br />
56 59
57 - You must not upload illegal content.<br />
60 - You are not allowed to upload illegal content.<br />
58 61
59 - You must not harass or bully other users.<br />
62 - You are not allowed to harass or bully other users.<br />
60 63
61 64 - Note that our site may be visited also by children, therefore - Note that our site may be visited also by children, therefore
62 65 you must adapt your attitude and language.<br /> you must adapt your attitude and language.<br />
 
64 67 - You must keep your account secure; you are fully responsible for - You must keep your account secure; you are fully responsible for
65 68 all the activities made under your account.<br /> all the activities made under your account.<br />
66 69
67 - You must respect the law regarding the content you upload here
70 - You must respect the law regarding the content that you upload here
68 71 and the usage of the service.<br /> and the usage of the service.<br />
69 72
70 73 - We reserve the right to change the service at any time, - We reserve the right to change the service at any time,
71 without notice.<br />
74 without prior notice. In addition, we may stop (permanently or
75 temporary) providing the services and may not be able to provide
76 you with prior notice.
77 We also reserve the right to create limits on use and storage at any
78 time without prior notice.<br />
72 79
73 80 - We may modify this document at any time. You are responsible to - We may modify this document at any time. You are responsible to
74 81 check this document from time to time for changes.<br /> check this document from time to time for changes.<br />
File root/themes/default/user/create_ok.html changed (mode: 100644) (index d443be1..b0d512d)
1 1 <div class="mess ok"> <div class="mess ok">
2 Your account was created.
2 Your account has been successfully created.
3 3 @@if(@@rg_account_email_confirm@@ == 1){{ @@if(@@rg_account_email_confirm@@ == 1){{
4 4 <br />You must confirm the account before you can login. <br />You must confirm the account before you can login.
5 5 <br />Check you e-mail for instructions. <br />Check you e-mail for instructions.
File root/themes/default/user/edit_ok.html changed (mode: 100644) (index 22b3311..c0181ae)
1 1 <div class="mess ok"> <div class="mess ok">
2 Information was updated with success.
2 Information has been successfully updated.
3 3 </div> </div>
File root/themes/default/user/login.html changed (mode: 100644) (index 18b25d6..e25bc66)
19 19 </p> </p>
20 20
21 21 <p> <p>
22 <label for="login_token">Login token / scratch code (leave empty if you did not enrolled)</label><br />
22 <label for="login_token">Login token / scratch code (leave it empty if you did not enroll)</label><br />
23 23 <input type="text" name="login_token" id="login_token" value="@@login_token@@" autocomplete="off" /> <input type="text" name="login_token" id="login_token" value="@@login_token@@" autocomplete="off" />
24 24 </p> </p>
25 25
26 26 <fieldset> <fieldset>
27 <legend>Lock login from current IP</legend>
27 <legend>Lock login on current IP</legend>
28 28 <input type="radio" name="lock_ip" id="lock_ip_yes" value="1" checked="checked" /> <input type="radio" name="lock_ip" id="lock_ip_yes" value="1" checked="checked" />
29 29 <label for="lock_ip_yes">Yes (more secure)</label> <label for="lock_ip_yes">Yes (more secure)</label>
30 30 <br /> <br />
File root/themes/default/user/pass_changed.html changed (mode: 100644) (index ec8f8ed..def7f09)
1 1 <div class="mess ok"> <div class="mess ok">
2 Password was updated with success.
2 Password has been successfully updated.
3 3 </div> </div>
File root/themes/default/user/repo/delete/done.html changed (mode: 100644) (index 778dd45..1dabfe6)
1 1 <div class="mess ok"> <div class="mess ok">
2 The repository was deleted.
2 The repository has been deleted.
3 3 </div> </div>
File scripts/cache.php changed (mode: 100644) (index 21ba6b5..c84af51)
... ... function rg_handle_idle(&$conn_table)
288 288 continue; continue;
289 289 } }
290 290 if ($info['close_at'] < $now) { if ($info['close_at'] < $now) {
291 rg_log("Destroy $key because was too much time idle.");
291 rg_log("Destroy $key because has been too much time idle.");
292 292 rg_destroy($key, $conn_table); rg_destroy($key, $conn_table);
293 293 } }
294 294 } }
File scripts/remote.php changed (mode: 100644) (index bc9fae5..7820736)
... ... if ($ri['ok'] != 1)
199 199 if ($ri['exists'] != 1) if ($ri['exists'] != 1)
200 200 fatal("Repo does not exists."); fatal("Repo does not exists.");
201 201 if ($ri['deleted'] == 1) if ($ri['deleted'] == 1)
202 fatal("Repo was deleted!");
202 fatal("Repo has been deleted!");
203 203
204 204 $repo_path = rg_repo_path_by_id($owner_ui['uid'], $ri['repo_id']); $repo_path = rg_repo_path_by_id($owner_ui['uid'], $ri['repo_id']);
205 205 rg_log("repo_path=$repo_path."); rg_log("repo_path=$repo_path.");
File tests/hook_update.sh changed (mode: 100755) (index 45a3e65..7561080)
... ... if [ "${?}" != "0" ]; then
243 243 echo "Should work!" echo "Should work!"
244 244 exit 1 exit 1
245 245 fi fi
246 # Test if the namespace was updated instead of main namespace
246 # Test if the namespace has been updated instead of main namespace
247 247 A=`diff ../hook_update_dest.git/refs/namespaces/${GIT_NAMESPACE}/refs/heads/master \ A=`diff ../hook_update_dest.git/refs/namespaces/${GIT_NAMESPACE}/refs/heads/master \
248 248 .git/refs/heads/master` .git/refs/heads/master`
249 249 if [ "${?}" != 0 ]; then if [ "${?}" != 0 ]; then
 
... ... if [ "${?}" != "0" ]; then
283 283 echo "Should work!" echo "Should work!"
284 284 exit 1 exit 1
285 285 fi fi
286 # Test if the namespace was updated instead of the namespace
286 # Test if the namespace has been updated instead of the namespace
287 287 if [ "${?}" != 0 ]; then if [ "${?}" != 0 ]; then
288 288 echo "Cannot do the diff for anonymous push" echo "Cannot do the diff for anonymous push"
289 289 exit 1 exit 1
File tests/http_bug.php changed (mode: 100644) (index fc08ebc..16e5693)
... ... for ($i = 0; $i <= 1; $i++) {
216 216 exit(1); exit(1);
217 217 } }
218 218 if ($row['deleted_who'] != $u1['uid']) { if ($row['deleted_who'] != $u1['uid']) {
219 rg_log('i=' . $i . ': Seems the deleted_who was not updated;'
219 rg_log('i=' . $i . ': Seems the deleted_who has not been updated;'
220 220 . ' deleted_who=[' . $row['deleted_who'] . ']!'); . ' deleted_who=[' . $row['deleted_who'] . ']!');
221 221 exit(1); exit(1);
222 222 } }
File tests/http_create_account.php changed (mode: 100644) (index 4036138..afeb93d)
... ... $data['token'] = $r['tokens']['user_edit_hl'];
53 53 $data['tos'] = 1; $data['tos'] = 1;
54 54 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
55 55 $r = do_req($test_url . "/op/create_account?t=create_account", $data, $headers); $r = do_req($test_url . "/op/create_account?t=create_account", $data, $headers);
56 if (!strstr($r['body'], "Your account was created")) {
56 if (!strstr($r['body'], "Your account has been created")) {
57 57 rg_log("Cannot create account"); rg_log("Cannot create account");
58 58 exit(1); exit(1);
59 59 } }
File tests/http_settings.php changed (mode: 100644) (index 6aad8b0..3bc0787)
... ... $data = array(
70 70 ); );
71 71 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
72 72 $r = do_req($test_url . "/op/settings/change_pass?t=post_change_pass_form", $data, $headers); $r = do_req($test_url . "/op/settings/change_pass?t=post_change_pass_form", $data, $headers);
73 if (!strstr($r['body'], "Password was updated with success")) {
73 if (!strstr($r['body'], "Password has been updated with success")) {
74 74 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
75 75 rg_log("Cannot change pass!"); rg_log("Cannot change pass!");
76 76 exit(1); exit(1);
 
... ... $data = array(
141 141 ); );
142 142 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
143 143 $r = do_req($test_url . "/op/settings/edit_info?t=post_edit_info_form", $data, $headers); $r = do_req($test_url . "/op/settings/edit_info?t=post_edit_info_form", $data, $headers);
144 if (!strstr($r['body'], "Information was updated with success")) {
144 if (!strstr($r['body'], "Information has been updated with success")) {
145 145 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
146 146 rg_log("Cannot change back the pass to aaaa!"); rg_log("Cannot change back the pass to aaaa!");
147 147 exit(1); exit(1);
 
... ... $row = rg_sql_fetch_array($res);
155 155 rg_sql_free_result($res); rg_sql_free_result($res);
156 156 if (strcmp($rg_ui['realname'], $row['realname']) != 0) { if (strcmp($rg_ui['realname'], $row['realname']) != 0) {
157 157 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
158 rg_log_ml("realname was not changed: " . print_r($row, TRUE));
158 rg_log_ml("realname has not been changed: " . print_r($row, TRUE));
159 159 exit(1); exit(1);
160 160 } }
161 161 if ($row['plan_id'] != 5) { if ($row['plan_id'] != 5) {
162 162 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
163 rg_log_ml("plan_id was not changed: " . print_r($row, TRUE));
163 rg_log_ml("plan_id has not been changed: " . print_r($row, TRUE));
164 164 exit(1); exit(1);
165 165 } }
166 166 if ($row['session_time'] != $session_time) { if ($row['session_time'] != $session_time) {
167 167 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
168 rg_log_ml("session_time was not changed: " . print_r($row, TRUE));
168 rg_log_ml("session_time has not been changed: " . print_r($row, TRUE));
169 169 exit(1); exit(1);
170 170 } }
171 171
 
... ... if ($rows > 0)
205 205 rg_sql_free_result($res); rg_sql_free_result($res);
206 206 if ($rows == 0) { if ($rows == 0) {
207 207 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
208 rg_log("Key was not uploaded!");
208 rg_log("Key has not been uploaded!");
209 209 exit(1); exit(1);
210 210 } }
211 211 $key_id = $row['key_id']; $key_id = $row['key_id'];
 
... ... $rows = rg_sql_num_rows($res);
236 236 rg_sql_free_result($res); rg_sql_free_result($res);
237 237 if ($rows == 1) { if ($rows == 1) {
238 238 rg_log_ml('r: ' . print_r($r, TRUE)); rg_log_ml('r: ' . print_r($r, TRUE));
239 rg_log("key $key_id was not deleted!");
239 rg_log("key $key_id has not been deleted!");
240 240 exit(1); exit(1);
241 241 } }
242 242
File tests/pr_anon.php changed (mode: 100644) (index 84a7586..796444b)
... ... system('cd pr_anon.git; git push origin master');
73 73
74 74
75 75 rg_log(''); rg_log('');
76 rg_log('Check if the pull request was done...');
76 rg_log('Check if the pull request has been done...');
77 77 $tries = 10; $tries = 10;
78 78 while ($tries > 0) { while ($tries > 0) {
79 79 $sql = 'SELECT * FROM merge_requests WHERE repo_id = ' . $repo['repo_id']; $sql = 'SELECT * FROM merge_requests WHERE repo_id = ' . $repo['repo_id'];
File tests/user.php changed (mode: 100644) (index 0144349..2989569)
... ... if ($_ui['exists'] != 1) {
100 100 exit(1); exit(1);
101 101 } }
102 102 if (strcmp($pass, $_ui['pass']) != 0) { if (strcmp($pass, $_ui['pass']) != 0) {
103 rg_log("Password was changed! Bad!");
103 rg_log("Password has been changed! Bad!");
104 104 exit(1); exit(1);
105 105 } }
106 106
 
... ... if ($_ui['exists'] != 1) {
120 120 exit(1); exit(1);
121 121 } }
122 122 if (strcmp($salt, $_ui['salt']) == 0) { if (strcmp($salt, $_ui['salt']) == 0) {
123 rg_log("Salt was not changed ($salt)!");
123 rg_log("Salt has not been changed ($salt)!");
124 124 exit(1); exit(1);
125 125 } }
126 126 if (strcmp($pass, $_ui['pass']) == 0) { if (strcmp($pass, $_ui['pass']) == 0) {
127 rg_log("Password was not changed!");
127 rg_log("Password has not been changed!");
128 128 exit(1); exit(1);
129 129 } }
130 130
File tests/wh.php changed (mode: 100644) (index 64ffa4c..cc5443e)
... ... $list = array('flags' => 'I', 'events' => 'CB', 'type' => '1',
229 229 foreach ($list as $k => $v) { foreach ($list as $k => $v) {
230 230 if (strcmp($row[$k], $v) != 0) { if (strcmp($row[$k], $v) != 0) {
231 231 rg_log_ml('row: ' . print_r($row, TRUE)); rg_log_ml('row: ' . print_r($row, TRUE));
232 rg_log("db: Seems that [$k] was not updated [" . $row[$k] . "] != " . $v);
232 rg_log("db: Seems that [$k] has not been updated [" . $row[$k] . "] != " . $v);
233 233 exit(1); exit(1);
234 234 } }
235 235
236 236 if (strcmp($c[$k], $v) != 0) { if (strcmp($c[$k], $v) != 0) {
237 237 rg_log_ml('c: ' . print_r($c, TRUE)); rg_log_ml('c: ' . print_r($c, TRUE));
238 rg_log("cache: Seems that [$k] was not updated [" . $c[$k] . "] != " . $v);
238 rg_log("cache: Seems that [$k] has not been updated [" . $c[$k] . "] != " . $v);
239 239 exit(1); exit(1);
240 240 } }
241 241 } }
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://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

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