{"id":43260388,"url":"https://github.com/humlab-sead/sead_change_control","last_synced_at":"2026-04-02T23:35:56.947Z","repository":{"id":37432044,"uuid":"180590708","full_name":"humlab-sead/sead_change_control","owner":"humlab-sead","description":"Sane SEAD change control using Sqitch.","archived":false,"fork":false,"pushed_at":"2026-01-20T14:39:30.000Z","size":122054,"stargazers_count":1,"open_issues_count":86,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-20T22:56:45.042Z","etag":null,"topics":["database","schema-changes","sead","sqitch","visead"],"latest_commit_sha":null,"homepage":null,"language":"PLpgSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/humlab-sead.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"security/archive/deploy/20200107_DML_ADD_USER.sql","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2019-04-10T13:44:01.000Z","updated_at":"2026-01-20T14:41:12.000Z","dependencies_parsed_at":"2023-01-24T14:01:17.594Z","dependency_job_id":"aee8186e-116a-45f9-b9a1-4f82b13ba1c8","html_url":"https://github.com/humlab-sead/sead_change_control","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/humlab-sead/sead_change_control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/humlab-sead%2Fsead_change_control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/humlab-sead%2Fsead_change_control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/humlab-sead%2Fsead_change_control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/humlab-sead%2Fsead_change_control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/humlab-sead","download_url":"https://codeload.github.com/humlab-sead/sead_change_control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/humlab-sead%2Fsead_change_control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28980159,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T13:38:33.235Z","status":"ssl_error","status_checked_at":"2026-02-01T13:38:32.912Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","schema-changes","sead","sqitch","visead"],"created_at":"2026-02-01T14:04:52.822Z","updated_at":"2026-04-02T23:35:56.933Z","avatar_url":"https://github.com/humlab-sead.png","language":"PLpgSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SEAD Change Control System\n\nSensible SEAD change control system (CCS) using [Sqitch](https://sqitch.org/). Issues for data and lookup data here.\n\n## Install (or update) Sqitch\n\n```bash\ndocker pull sqitch/sqitch\nmkdir -p ~/bin \u0026\u0026 curl -L https://git.io/fAX6Z -o ~/bin/sqitch \u0026\u0026 chmod +x ~/bin/sqitch\n```\n\nSample `sqitch.conf`:\n\n```bash\n[core]\n    engine = pg\n\n[engine \"pg\"]\n    client = psql\n\n[user]\n    name = Your Name\n    email = your.name@umu.se\n\n[target \"staging\"]\n    uri = db:pg://user@server/sead_staging\n\n[target \"staging-ch\"]\n    uri = db:pg://user@server/sead_staging_clearinghouse\n\n[target \"staging-bugs\"]\n    uri = db:pg://user@server/sead_staging_bugs\n```\n\nLocations of `sqitch.conf`:\n\n- Project: ./sqitch.conf\n- User: `~/.sqitch/sqitch.conf`\n- Global: `sqitch --etc-path/sqitch.conf`\n\n## Projects\n\n| Project       | Description   |\n| ------------- | ------------- |\n| ./bugs        | CRs related to Bugs data type |\n| ./archaeobotany | CRs related to archaeobotany data type (and MAL data) |\n| ./isotope | CRs related to isotope data type |\n| ./ceramics | CRs related to ceramics data type |\n| ./dendrochronology | CRs related to dendrochronology data type |\n| ./general     | Main repository for schema and data change requests (CR) |\n| ./sead_api    | Repository for CR related to external API |\n| ./security    | Changes related to roles and privileges |\n| ./submissions | Deprecated: Commited Clearinghouse submissions |\n| ./subsystem   | Changes related to subsystems |\n| ./utility     | Repository for generic utility objects |\n| (./report)    | Report related CRs (e.g. Clearinghouse, SuperSEAD) |\n\nUse `sqitch init` to create a new project:\n\n```bash\nsqitch init xyz --uri https://github.com/humlab-sead/xyz --engine pg -C xyz\n```\n\nEach projects must also be added to `projects.txt`,\n\n## Add a New SEAD CCS Task\n\nUse `bin/add-change-request` to add new CRs:\n\n```man\nUsage: bin/add-change-request --change|-c \u003cchange\u003e --project|-f|-C|--plan-file \u003cproject\u003e --note|-n \u003cnote\u003e [--issue-id \u003cissue-id\u003e]\n\nAdd new change-request to sqitch plan file, and optionally create a new Github issue.\n\n  --change|-c \u003cchange\u003e                   Name of change to add to sqitch plan file.\n  --project|-f|-C|--plan-file \u003cproject\u003e  Path to sqitch project directory.\n  --note|-n \u003cnote\u003e                       Note to add to change.\n  --issue-id \u003cissue-id\u003e                  Add URL to issue in CR's comment in plan files.\n  --create-issue                         Create a new Github issue.\n  --help|-h                              Show this help.\n\nMost of sqitch options can also be used.\n```\n\nExample:\n\n```man\nbin/add-change-request --project dendrochronolgy --change 20231206_DDL_UPDATE_OF_DENDRO_RELATED_LOOKUPS --note \"Lookup data related to the dendrochronological project needs updating.\" --issue-id 153\nbin/add-change-request --project bugs --change 20231211_DML_SUBMISSION_BUGS_20230705_COMMIT --update-plan --create-issue --note \"Full (inital) non-incremental import of BugsCEP data version 20230705.\"\nbin/add-change-request --project bugs --change 20231211_DML_SUBMISSION_BUGS_20230705_COMMIT --create-issue --note \"Full (inital) non-incremental import of BugsCEP data version 20230705.\"\nbin/add-change-request --project bugs --change 20231212_DML_BUGS_ADD_ANALYSIS_ENTITY_AGES --note \"Add modelled \"official\" ages for 889 bugs samples\" --create-issue\n ```\n\nTask templates locations:\n\n```man\nsqitch --etc-path\ncat `sqitch --etc-path`/templates/deploy/pg.tmpl\n```\n\nPlease use the naming convention `yyyymmdd_[DML|DDL]_ENTITY_DESCRIPTION`\n\n## Add a New SEAD CCS Tag\n\nAdd a new (release) tag to a specific plan file:\n\n```man\nusage: tag-projects OPTIONS...\n\n    --ignore-git             Continue even if sqitch tag is missing in git.\n    --tag TAG                Add TAG to end of each plan.\n    --note NOTE              Add NOTE to sqitch tag.\n\nExamples:\n\nbin/tag-projects --tag \"@2023.12\" --note \"2023 December release\"\nbin/tag-projects --tag \"@2023.12\" --note \"2023 December release\" --ignore-git\nbin/tag-projects--help\n```\n\n## Deploy Tasks up to Tag or Change\n\n```man\nusage: deploy-staging OPTIONS...\n\n    --host SERVERNAME               Target server DEFAULT_SERVER\n    --user USERNAME                 User on target server (USERNAME)\n    --target-db-name DBNAME         Target database name. Mandatory.\n    --create-database               Create a fresh database from given source.\n    --create-snapshot               Create snapshot of database.\n    --dry-run                       Create snapshot of database.\n    --sync-sequences                Sync all sequences when deploy is done.\n    --ignore-git-tags               Continue even if sqitch tag is missing in git.\n    --source-type [db|dump]         Source type i.e. a database name or a dump filename.\n                                    Mandatory if \"--create\" is specified, else ignored.\n    --source [DBNAME|FILE]          Name of source database or dump file depending on source type\n                                    Optional if \"--create\" is specified, else ignored.\n                                    Default \"sead_master_9\" if \"source_type\" is \"db\"\n                                    Default \"./starting_point/sead_master_9_public.sql.gz\" if \"source_type\" is \"dump\"\n    --on-conflict [drop|rename]     What to do if target database exists (rename)\n                                    Optional if \"--create\" is specified, else ignored. Default rename.\n    --deploy-to-tag TAG             Sqitch deploy to tag. Optional. Set tag to \"latest\" for full deploy.\n    --deploy-chain-to-tag TAG       Sqitch deploy entire chain of databases up to tag. Optional. Set tag to \"latest\" for full deploy.\n    --sqitch-project PROJECT        Sqitch project to deploy\n\nexamples\n\nDeploy changes to a new database based on sead_production_202401 and to tag @2024.03:\n\nλ ./bin/deploy-staging --create-database --source-type db --source sead_production_202401 --deploy-to-tag @2024.03\n\nDeploy changes to a new database from starting point (sead_master_9) to tag @2024.03:\n\nλ ./bin/deploy-staging --create-database --source-type dump --target-db-name sead_test_202403 --deploy-to-tag @2024.03\n\n\nDeploy entire sequence of monthly databases starting from sead_master_9 equal du (--source ./starting_point/sead_master_9_public.sql.gz ) and ending at tag @2022.12.\nThe databases will be named sead_test_yyymmm based on tag. I a database already exists then it will be renamed to sead_test_yyymmm_YYYYMMDDHHMMSS.\n\nλ ./bin/deploy-staging --create-database --source-type dump --target-db-name sead_test --deploy-chain-to-tag @2022.12\n```\n\n## Move a change between projects\n\n```man\nusage: rm-cr OPTIONS...\n\nMove a change from one project to another project. \nIf change is not found, no action is taken.\n\n    --change                Change to remove.\n    --from-project NAME     Project change belongs to.\n    --to-project NAME       Project change should be moved to.\n    --tag TAG               Move change to TAG in destination plan.\n    --no-update-plan        Do not update Sqitch plans.\n\nExample:\n\nbin/mv-cr --from-project general --to-project bugs --change \"20231201_XYZ\" --tag @2023.12\n```\n\n# Add and relate a Github issue to a CR\n\n```man\nusage: add-issue --change CR --body BODY OPTIONS...\n\nUses Github CLI tool \"gh\" to a add new issue to Github. The issue will be named after the change and will have a text BODY added to it.\nYou can optionally add a label (defaults to \"change-request\") and assignee (defaults to \"@me\").\nA URL link to the Github issue will be added to the Sqitch project plan.\nA URL link to the CRs SQL deploy file will be added to the issue body.\n\nIf an existing issue is specified (--issue-id), then this issue will be related to the CR instead of creating a new one.\n\nIf change is not found, no action is taken.\n\n    --change CR             Change that new issue will belong to.\n    --project NAME          Project change belongs to.\n    --body BODY             Text that will be added to issue.\n    --label LABEL           Labels (comma seperated) that will added to issue.\n    --assignee USER         Github user issue will be assigned to (default @me).\n    --issue-id ISSUE        Use issue ISSUE instead of creating a new one.\n    --no-update-plan        Do not add URL link to ISSUE in Sqitch project plan.\n    --use-plan-co           Add CR's comment in Sqitch plan to issue body.\n    --close-issue           Close issue when done.\n\nExample:\n\nbin/add-issue --change YYYYMMDD_XYZ --project general --label bugs --body \"Some text\" --close-issue\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhumlab-sead%2Fsead_change_control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhumlab-sead%2Fsead_change_control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhumlab-sead%2Fsead_change_control/lists"}