Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Siphalor/giup
Python script for automated, iterative git merges and publishing
https://github.com/Siphalor/giup
git git-merge pypi workflow
Last synced: about 2 months ago
JSON representation
Python script for automated, iterative git merges and publishing
- Host: GitHub
- URL: https://github.com/Siphalor/giup
- Owner: Siphalor
- License: apache-2.0
- Created: 2021-01-23T17:46:32.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-12-01T16:23:06.000Z (about 1 year ago)
- Last Synced: 2024-08-02T06:19:27.942Z (5 months ago)
- Topics: git, git-merge, pypi, workflow
- Language: Python
- Homepage:
- Size: 76.2 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-fabric - GIUP - Allows to maintain mods that are spread across branches for different MC versions. `Apache-2.0` (Uncategorized / Uncategorized)
README
# GIUP - Git Interactive Update and Publish
[![PyPI][pypi-image]][pypi-link]
[pypi-image]: https://img.shields.io/pypi/v/giup.svg
[pypi-link]: https://pypi.python.org/pypi/giupAllows to interactively perform hierarchical merges and run publishing commands in between.
When commands fail the user is given the chance to intervene by rerunning the current command, just continuing, running a custom shell command or stopping the project, or the current merge path.
## Example Workflow
Example workflow from one of my Minecraft modding projects:`.giup:`
```json
{
"merge-paths": [
"1.16",
"1.16->1.15->1.14",
"1.16->1.17"
],
"commands": [
{
"title": "Cleanup build directories",
"run": "rm -rf build .gradle",
"nt": "rmdir /S /Q build & rmdir /S /Q .gradle",
"ignore-errors": true
},
{
"title": "Build and publish",
"run": "./gradlew publish",
"nt": "gradlew publish"
},
"git push"
]
}
```This consecutively merges:
1. `1.16` to `1.15`
2. `1.15` to `1.14`
3. `1.16` to `1.17`After each merge GIUP cleans up, builds, publishes and pushes the code.
## Getting Started
To install this project run `pip install giup`.To use this for your project create a `.giup` file (as described below) in your project root and run `giup`.
## Project Specification
By default, the project specification will be read from the `.giup` file in the working directory. The specification should be defined in JSON and uses the following keys:### `merge-paths`
Here you can specify certain merge hierarchies. You can either specify a hierarchy as a string delimited by arrows (`->`) or as an array with all branches (`["1.16","1.15","1.14"]`).Specifying a single branch will just switch to that branch and run the commands.
### `commands`
In this array commands are specified.
Commands are specified as an object or a string, which is a short form for an object with the `run` key.The `run` entry should contain a string that will be run as a shell command. You can define overrides for Windows (`nt`) and POSIX (`posix`) shells.
The `title`entry is a string that optionally gets displayed when the command is run. If not defined, the command itself will be displayed before execution.
The `ignore-errors` entry is an optional boolean telling GIUP whether unsuccessful runs of the command should be treated as errors (on by default). This is useful e.g. when trying to delete a file with `rmdir` which might not exist.