Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bhacaz/gostacking
Git stacking using merge.
https://github.com/bhacaz/gostacking
Last synced: 11 days ago
JSON representation
Git stacking using merge.
- Host: GitHub
- URL: https://github.com/bhacaz/gostacking
- Owner: Bhacaz
- License: mit
- Created: 2024-01-02T20:12:54.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-07-02T13:53:20.000Z (4 months ago)
- Last Synced: 2024-10-10T03:02:43.806Z (28 days ago)
- Language: Go
- Homepage:
- Size: 103 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gostacking
To know more about the [Stacking workflow](https://stacking.dev/).
Allow to simply links branches together to create a stack of branches.
This tool use **merges** instead of rebases like other tools to be less "destructive" and maybe easier to understand
what is going on.With the command `sync`,
allow to update all branches to merge it one into the other.The `sync` command will do:
1. Checkout the branch.
2. Pull the latest changes.
3. Merge the previous branch into the current one.
4. _Optionally_ push the changes (with the `--push` flag).## Installation
Only **MacOS** is supported for now via Homebrew.
```bash
brew tap Bhacaz/tap
brew install gostacking
brew link gostacking# Update
brew update && brew upgrade gostacking
```## Usage
```bash
$ gostacking [command]
```### Available Commands
```
add Add a branch to the current stack
checkout Checkout a branch from a stack
delete Delete a gostacking by is name
help Help about any command
list List all stacks
new Create a new gostacking
publish Publish the current branch of the current stack and show a create pull request link
remove Remove a branch from the current stack
status Get current stack
switch Change the current stack
sync Merge all branches into the others
tree Show the stack tree without merged commits, starting from the default branch.
```## Example
```bash
git checkout -b feature/1gostacking new my-stack
gostacking list
# Current stack: my-stack
# 1. my-stackgostacking add
# Branch feature/1 added to stack my-stackgostacking status
# my-stack
# 1. feature/1git checkout -b feature/2
gostacking add feature/2
# Branch feature/2 added to stack my-stackgostacking status
# my-stack
# 1. feature/1
# 2. feature/2gostacking checkout 1
touch file1.txt
git add file1.txt && git commit -m "Add file1.txt"gostacking status
# my-stack
# 1. feature/1
# 2. feature/2 *gostacking sync
# Syncing my-stack
# Fetching ...
# Branch: feature/1
# Checkout ...
# Pull ...
# Branch: feature/2
# Checkout ...
# Pull ...
# Merging feature/1gostacking status --log
# my-stack
# 1. feature/1
# Add file1.txt - 21e656719d - 3 minute ago
# 2. feature/2
# Merge feature/1 into feature/2 (gostacking) - f8178d7384 - 1 minute ago
```## Release
1. Update the version in file `VERSION`
2. `zsh scripts/release.zsh`## Notes
https://cobra.dev/
```bash
~/go/bin/cobra-cli add new
go mod tidy
go build -ldflags="-s -w" -o dist# Test the release
goreleaser release --snapshot --clean
```## TODOs
- [ ] Add completion suggestion list of branches (with a max) to `add` **command**.
- [ ] Highlight the current branch in the `status` command.