{"id":22340043,"url":"https://github.com/mandelsoft/mergetest","last_synced_at":"2026-01-06T15:04:01.771Z","repository":{"id":193768636,"uuid":"689444595","full_name":"mandelsoft/mergetest","owner":"mandelsoft","description":null,"archived":false,"fork":false,"pushed_at":"2023-09-10T10:21:21.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T10:30:40.862Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"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/mandelsoft.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-09T20:33:29.000Z","updated_at":"2023-09-09T20:33:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"ed57f90f-6a0d-4a06-aabd-d349df6695eb","html_url":"https://github.com/mandelsoft/mergetest","commit_stats":null,"previous_names":["mandelsoft/mergetest"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandelsoft%2Fmergetest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandelsoft%2Fmergetest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandelsoft%2Fmergetest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandelsoft%2Fmergetest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mandelsoft","download_url":"https://codeload.github.com/mandelsoft/mergetest/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245623078,"owners_count":20645680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-12-04T07:10:13.117Z","updated_at":"2026-01-06T15:03:56.746Z","avatar_url":"https://github.com/mandelsoft.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mergetest\n\nThis project is used to simulate the usage of multiple branches\nto handle 3-way merges for mutilple delivery branches combined in\none main GitOps branch hosting multiple installations\nfed by different delivery sources.\n\nThe goal is to feed in new updates for a set of delivery sources,\nwhich will be used to setup and update multiple installation\nconfigurations hosted in a single branch (main)\n\nWhenever a new version for a delivery source is availble it might\nbring a new version of the installation template initially used\nto setup the installation configuration in the main branch.\n\nThis installation configuration is stored here under the folder\n`installations/`\u0026lt;name\u003e. At these locations the local operator is\nable to change installation settings.\n\nInitially it is filled with a configuration template\nprovided by the software provider. This is then modified by\nthe operator to finalize the initial installation configuration\nand later on to tweak the installtion of the software product.\n\nWhenever a new version of this software product is delivered, it\nmight come with a new version of the installation template:\n\n- with new required configuration parameters\n- with changed default settings for existing parameters\n- with hints for configuration changes required for the new version.\n\nAn upgrade is then proposed by a pull-request to the main branch.\nHere, the new template versions must be merged with the modifications\ndone by the operator in the main branch for the installation\nconcered by the update. Hereby, the operator modification must be preserved\nas far as possible.\n\nTherefore the pull-request must carry the result of a 3-way kind of\nmerge for the configuration settings.\n\nThis can be achieved by using additional system-managed branches\nfor every installation exclusively hosting the sequence of version\nupdates for the delivery source.\nAn update then means:\n\n- to add the new delivery version of the configuration template of a\n  software product imported from the software provider to the appropriate\n  delivery branch. This template also specified the product version\n  to be deployed.\n- this branch can then be used to create a (temporary) pull-request branch\n  merging this delivery branch with the main branch content and committing\n  all the merge conflict markers.\n- by an additional special marker for required configuration changes a\n  github check action can then vote on the PR to notify the operator of\n  actions required to be done to finally finishing the update by merging\n  the PR.\n- the PR branch is then used by the operator to resolve the identified\n  problems\n- after a successful check the PR is finally merged into the main branch\n  and the update process is completed after the GitOps environment\n  has deployed the configuration changes found in the main branch.\n\nTo be able to do the described merges all involved branches must be based on \nthe same initial commit. This is the one containing this description\nand no more content.\n\nA processing setting up a new installtion the looks as follows:\n\n- setup a new delivery branch for the new installation with the\n  initial commit.\n- add the first configuration template from the actual version of the\n  product to be installed imported from the software provider.\n- create a (temporary) pull-request branch from the current version of\n  the main branch and merge-in the new delivery branch.\n- this merge should not provide any conflicts but the installation template\n  may request the setting of required configuration parameters\n  by use the marker described above.\n- the check action will vote on the new PR and notify the operator\n  on required actions.\n- the opertator finishes the initial installation configuration\n  by changing files in the the new installation folder, only.\n- after a successful check the PR is finally merged into the main branch\n  and the setup process is completed after the GitOps environment\n  has deployed the new configuration now found in the main branch.\n\nThis process is identical to the update processm only the steps\npreceeding are preceeded by the setup of the new delivery branch from the\ninitial base commit.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmandelsoft%2Fmergetest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmandelsoft%2Fmergetest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmandelsoft%2Fmergetest/lists"}