summaryrefslogtreecommitdiff
path: root/upgrading/4.0.0.txt
blob: fd04c44dc08081bb452daa523e987668006e4d7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
WARNING! Following these upgrade instructions will reset all packages! If you
want to keep the package contents, please create a backup before starting the
upgrade process and import the source tarballs into the Git repositories
afterwards.

1. Add a field for the SSH public key to the Users table:

----
ALTER TABLE Users ADD COLUMN SSHPubKey VARCHAR(4096) NULL DEFAULT NULL;
----

2. Create a new user and configure Git/SSH as described in INSTALL.

3. Reset the packager field of all package bases:

----
UPDATE PackageBases SET PackagerUID = NULL;
----

4. Create a new table for package base co-maintainers:

----
CREATE TABLE PackageComaintainers (
	UsersID INTEGER UNSIGNED NOT NULL,
	PackageBaseID INTEGER UNSIGNED NOT NULL,
	Priority INTEGER UNSIGNED NOT NULL,
	INDEX (UsersID),
	INDEX (PackageBaseID),
	FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
	FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
) ENGINE = InnoDB;
----

5. Add a field for the package base popularity to the PackageBases table:

----
ALTER TABLE PackageBases
	ADD COLUMN Popularity DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 0;
----

6. Drop the category ID foreign key from the PackageBases table:

`ALTER TABLE PackageBases DROP FOREIGN KEY PackageBases_ibfk_1;` should
work in most cases. Otherwise, check the output of `SHOW CREATE TABLE
PackageBases;` and use the foreign key name shown there.

7. Replace the package base categories with keywords:

----
ALTER TABLE PackageBases DROP COLUMN CategoryID;
DROP TABLE PackageCategories;

CREATE TABLE PackageKeywords (
	PackageBaseID INTEGER UNSIGNED NOT NULL,
	Keyword VARCHAR(255) NOT NULL DEFAULT '',
	PRIMARY KEY (PackageBaseID, Keyword),
	FOREIGN KEY (PackageBaseID) REFERENCES PackageBases(ID) ON DELETE CASCADE
) ENGINE = InnoDB;
----

8. (optional) Setup cgit to browse the Git repositories via HTTP.