https://github.com/aposin/gem
ARCHIVED: Git Environment Manager (GEM)
https://github.com/aposin/gem
Last synced: 3 months ago
JSON representation
ARCHIVED: Git Environment Manager (GEM)
- Host: GitHub
- URL: https://github.com/aposin/gem
- Owner: aposin
- License: apache-2.0
- Archived: true
- Created: 2021-07-15T13:13:02.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-06-15T15:45:38.000Z (over 2 years ago)
- Last Synced: 2024-08-03T22:22:58.153Z (7 months ago)
- Language: Java
- Homepage:
- Size: 617 KB
- Stars: 1
- Watchers: 8
- Forks: 2
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- jimsghstars - aposin/gem - ARCHIVED: Git Environment Manager (GEM) (Java)
README
# Git Environment Manager (GEM)
[](https://github.com/aposin/gem/actions/workflows/build.yml?query=branch%3Amain+event%3Apush)
[](https://github.com/aposin/gem/actions/workflows/codeql-analysis.yml?query=branch%3Amain+event%3Apush)

[](https://cla-assistant.io/aposin/gem)
[](https://github.com/aposin/gem/blob/main/LICENSE)GEM (Git Environment Manager) is a git branch manager which:
* Defines environments based on one or several shared repositories for protected branches,
using worktrees to minimize number of clones.
* Enforces a feature-branch workflow to work with different providers of issues,
including branch creation, and local/remote handling.
* Is extensible by plug-ins.## Building
To build a released version, checkout the version tag beforehand.
To build the executables for Windows and Linux, run on the root folder:
```bash
mvn verify
```Both linux and windows distributions are located under `products\org.aposin.gem.product\target\products`.
This builds the `alpha_` version of the product and plug-ins on the repository.
Check the "Releasing" section for how to build a release.## Versioning
This project adheres to [Semantic Versioning (SemVer)](http://semver.org/).
Maintainers are in charge of updating the version and add to the [CHANGELOG.md](CHANGELOG.md) any relevant information.Currently, except the `org.aposin.gem.parent` project, the rest have the same SemVer (with different build number).
This ensures that a product with all `org.aposin.gem` plug-ins on the same version is fully functional.:information_source: As a configuration project, the `org.aposin.gem.parent` is in the same version unless required for the process to identify major changes.
To help updating project versions, the `tycho-versions-plugin` is included in the parent-pom.
Run `mvn -DnewVersion=${nextVersion}.qualifier tycho-versions:set-version` with `${newVersion}` being the new version.### Releasing a new version
For preparing a new release,:
* Update the version if relevant to the SemVer specs and it is not up-to-date.
If some changes are not included yet,
update also the [CHANGELOG.md](CHANGELOG.md) with them.
* Update the `Unreleased` header with the new version (maintaining this title)
and add the link to the (still not existing) release page at the bottom.
* Update the product file to point to a frozen version branch of the [gem-config] repository.
You should create the branch on that repository from the `main` version and set it as protected.
* Open a PR (or merge if you have permissions).
* Once it is merged, tag the version and publish the release on GitHub.To build the release version (and attach to the GitHub release if required),
you should add the `-Drelease` property to the build command.After this is done, no more PR should be accepted until the versions are updated to the next patch version.
In addition to update the version numbers, the product file should point again to the `main` [gem-config] branch to allow changes in the configuration format.[gem-config]: https://github.com/aposin/gem-config