xaizek / uncov (License: AGPLv3+) (since 2018-12-07)
Uncov(er) is a tool that collects and processes code coverage reports.
Commit 3ee3a3b6366e178575ad0a08b9c8b97e3ae8812c

Squash database versions
Author: xaizek
Author date (UTC): 2017-01-09 14:17
Committer name: xaizek
Committer date (UTC): 2017-01-09 14:17
Parent(s): 7d3ab8d762c04ddace6bdef430205d01188b120b
Signing key: 99DC5E4DB05F6BE2
Tree: 50ad1ca2bc630f0be0a51f4dc138632b0257f51c
File Lines added Lines deleted
src/BuildHistory.cpp 5 58
tests/test-repo/_git/uncov.sqlite 0 0
File src/BuildHistory.cpp changed (mode: 100644) (index 2097bea..e1a9110)
... ... static void updateDBSchema(DB &db, int fromVersion);
37 37 /** /**
38 38 * @brief Current database scheme version. * @brief Current database scheme version.
39 39 */ */
40 const int AppDBVersion = 3;
40 const int AppDBVersion = 1;
41 41
42 42 File::File(std::string path, std::string hash, std::vector<int> coverage) File::File(std::string path, std::string hash, std::vector<int> coverage)
43 43 : path(std::move(path)), hash(std::move(hash)), : path(std::move(path)), hash(std::move(hash)),
 
... ... updateDBSchema(DB &db, int fromVersion)
310 310 buildid INTEGER, buildid INTEGER,
311 311 vcsref TEXT NOT NULL, vcsref TEXT NOT NULL,
312 312 vcsrefname TEXT NOT NULL, vcsrefname TEXT NOT NULL,
313 covered INTEGER,
314 uncovered INTEGER,
313 covered INTEGER NOT NULL,
314 missed INTEGER NOT NULL,
315 timestamp INTEGER NOT NULL
316 DEFAULT (CAST(strftime('%s', 'now') AS INT)),
315 317
316 318 PRIMARY KEY (buildid) PRIMARY KEY (buildid)
317 319 ) )
 
... ... updateDBSchema(DB &db, int fromVersion)
337 339 ) )
338 340 )"); )");
339 341 // Fall through. // Fall through.
340 case 1:
341 db.execute(R"(
342 CREATE TABLE builds_new (
343 buildid INTEGER,
344 vcsref TEXT NOT NULL,
345 vcsrefname TEXT NOT NULL,
346 covered INTEGER NOT NULL,
347 uncovered INTEGER NOT NULL,
348 timestamp INTEGER NOT NULL
349 DEFAULT (CAST(strftime('%s', 'now') AS INT)),
350
351 PRIMARY KEY (buildid)
352 )
353 )");
354
355 for (std::tuple<int, std::string, std::string, int, int> vals :
356 db.queryAll("SELECT buildid, vcsref, vcsrefname, "
357 "covered, uncovered "
358 "FROM builds")) {
359 db.execute("INSERT INTO builds_new (buildid, vcsref, "
360 "vcsrefname, covered, "
361 "uncovered) "
362 "VALUES (:buildid, :ref, :refname, :covered, "
363 ":uncovered)",
364 { ":buildid"_b = std::get<0>(vals),
365 ":ref"_b = std::get<1>(vals),
366 ":refname"_b = std::get<2>(vals),
367 ":covered"_b = std::get<3>(vals),
368 ":uncovered"_b = std::get<4>(vals) });
369 }
370
371 db.execute("DROP TABLE builds");
372 db.execute("ALTER TABLE builds_new RENAME TO builds");
373 // Fall through.
374 case 2:
375 db.execute(R"(
376 CREATE TABLE builds_new (
377 buildid INTEGER,
378 vcsref TEXT NOT NULL,
379 vcsrefname TEXT NOT NULL,
380 covered INTEGER NOT NULL,
381 missed INTEGER NOT NULL,
382 timestamp INTEGER NOT NULL
383 DEFAULT (CAST(strftime('%s', 'now') AS INT)),
384
385 PRIMARY KEY (buildid)
386 )
387 )");
388 db.execute("INSERT INTO builds_new (buildid, vcsref, vcsrefname, "
389 "covered, missed) "
390 "SELECT buildid, vcsref, vcsrefname, covered, uncovered "
391 "FROM builds");
392 db.execute("DROP TABLE builds");
393 db.execute("ALTER TABLE builds_new RENAME TO builds");
394 // Fall through.
395 342 case AppDBVersion: case AppDBVersion:
396 343 break; break;
397 344 } }
File tests/test-repo/_git/uncov.sqlite changed (mode: 100644) (index 07a0aee..8d5198d)
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/uncov

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

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