diff --git a/README.md b/README.md index a483165..6bf44d5 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ ``` sudo pip3 install asciitree ansicolors simple-term-menu ``` +After which `stacky` can be directly run with `./stacky`. We would recommend symlinking `stacky` into your path so you can use it anywhere ## Usage `stacky` stores all information locally, within your git repository @@ -19,12 +20,14 @@ Syntax is as follows: - `stacky branch down` (`stacky b d`): move down the stack (towards `master`) - `stacky branch new `: create a new branch on top of the current one - `stacky commit [-m ] [--amend] [--allow-empty]`: wrapper around `git commit` that syncs everything upstack + - `stacky amend`: will amend currently tracked changes to top commit - Based on the first argument (`stack` vs `upstack` vs `downstack`), the following commands operate on the entire current stack, everything upstack from the current PR (inclusive), or everything downstack from the current PR: - `stacky stack info [--pr]` - `stacky stack sync`: sync (rebase) branches in the stack on top of their parents - `stacky stack push [--no-pr]`: push to origin, optionally not creating PRs if they don’t exist - `stacky upstack onto `: restack the current branch (and everything upstack from it) on top of another branch (like `gt us onto`), useful if you’ve made a separate PR that you want to include in your stack - `stacky continue`: continue an interrupted stacky sync command (because of conflicts) +- `stacky update`: will pull changes from github and update master The indicators (`*`, `~`, `!`) mean: - `*` — this is the current branch @@ -49,7 +52,6 @@ positional arguments: upstack (us) Operations on the current upstack downstack (ds) Operations on the current downstack update Update repo - import Import Graphite stack adopt Adopt one branch land Land bottom-most PR on current stack push Alias for downstack push @@ -61,4 +63,96 @@ optional arguments: -h, --help show this help message and exit --color {always,auto,never} Colorize output and error -``` \ No newline at end of file +``` + +### Sample Workflow +1. Create a new working branch with `stacky branch new `. +2. Update files and add files to git tracking like normal (`git add`) +3. Commit updates with `stacky commit -m ` +4. Create a stacked branch with `stacky branch new ` +5. Update files and add files in downstack branch (`git add`) +6. `stacky push` will create 2 PRs. Top branch will have a PR against master and bottom branch will have a PR against the top branch. +7. Update the upstack branch and run `stacky commit`. This will rebase changes in the upstack branch to the downstack branch +8. `stacky push` will update both the PRs. + +``` +$> stacky branch new change_part_1 +branch 'change_part_1' set up to track 'master'. +$> touch adding_new_file +$> git add adding_new_file +$> stacky commit -m "Added new file" +[change_part_1 23b102a] Added new file + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 adding_new_file +~* change_part_1 +✓ Not syncing branch change_part_1, already synced with parent master +$> stacky branch new change_part_2 +branch 'change_part_2' set up to track 'change_part_1'. +$> touch second_file +$> git add second_file +$> stacky commit -m "Added second file" +[change_part_2 0805f57] Added second file + 1 file changed, 0 insertions(+), 0 deletions(-) + create mode 100644 second_file +~* change_part_2 +✓ Not syncing branch change_part_2, already synced with parent change_part_1 +$> stacky info + │ ┌── ~* change_part_2 + ├── ~ change_part_1 +master +$> stacky push + ┌── ~* change_part_2 + ┌── ~ change_part_1 +master +✓ Not pushing base branch master +- Will push branch change_part_1 to origin/change_part_1 +- Will create PR for branch change_part_1 +- Will push branch change_part_2 to origin/change_part_2 +- Will create PR for branch change_part_2 + +Proceed? [yes/no] yes +Pushing change_part_1 +Creating PR for change_part_1 +? Title change part 1 +? Body +? What's next? Submit as draft +https://github.com/rockset/stacky/pull/2 +Pushing change_part_2 +Creating PR for change_part_2 +? Title Added second file +? Body +? What's next? Submit as draft +https://github.com/rockset/stacky/pull/3 +$> git co change_part_1 +$> vim adding_new_file +$> git add adding_new_file +$> stacky commit -m "updated new file" +[change_part_1 aa06f71] updated new file + 1 file changed, 1 insertion(+) + ┌── !~ change_part_2 +~* change_part_1 +✓ Not syncing branch change_part_1, already synced with parent master +- Will sync branch change_part_2 on top of change_part_1 +``` + +## License +MIT License + +Copyright (c) 2023 Rockset +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the “Software”), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.