Skip to content

Latest commit

 

History

History
776 lines (538 loc) · 41.5 KB

.CHANGELOG.md

File metadata and controls

776 lines (538 loc) · 41.5 KB

Graphite CLI Changelog

0.20.19 2023-05-11

  • When editing a PR description, the temporary file is now named GRAPHITE_PR_DESCRIPTION.md. This allows for Markdown syntax highlighting, and also adding additional editor config by specifically targeting this file name.

0.20.18 2023-4-28

  • Fixed a bug where gt changelog was broken for the binary version of the CLI (e.g. installed via brew).
  • Fixed a bug where gt branch edit was accidentally removed from the CLI. Thank you @vampire!
  • Added fish completion support via gt fish >> ~/.config/fish/completions/gt.fish! Thank you @szamanr!

0.20.17 2023-4-24

  • This should fix the npm install issues!

0.20.16 2023-4-21

  • Fixed a bug where repo sync attempts to delete branches that were never associated with a PR.

0.20.15 2023-3-22

  • Add setting trunk to remote version if it cannot be fast-forwarded.

0.20.14 2023-2-10

  • Add --always flag to submit to always push updates, even if the branch has not changed.

0.20.13 2022-1-20

  • Tweaked git passthrough copy to make it clear that a command was run.
  • Fixed a bug where test commands didn't support multiple separators in a branch name.
  • Replaced individual gt ls-remote calls on submit with a single one, which should speed up submission significantly!
  • Fixed a bug where PR data was not being synced in the background.

0.20.12 2022-11-25

  • gt stack submit now prompts for submission info inline after each individual branch, instead of after all branches.

  • The --edit/-e flag on submit commands now allows updating the PR title and body.

  • The --reviewers/-r flag on submit commands can now update existing PRs.

  • The --reviewers/-r flag on submit commands now accepts a string of comma separated reviewers (e.g. user1, user2).

  • gt commit amend no longer requires staged changes.

  • gt commit amend no longer allowed on empty branches.

  • gt commit create/amend no longer allowed during a rebase.

  • Improved suggested messages when encountering errors during a rebase.

  • Improved error messaging by showing error code and number when available.

  • Improved error reporting when running test commands.

0.20.11 2022-09-26

  • Changed many error messages to be more actionable, and changed some tips to always-visible messages.
  • Improved accuracy of checking whether a branch is up to date on submit.
  • The --edit/-e flag on submit now opens an editor for each PR without prompting first. Passing no flag still prompts the user whether they'd like to open an editor, and --no-edit still skips the prompt,
  • The --select/-s flag of submit now prompts about which branches to include in the submit as the first step so that it can validate that the correct dependencies are included in the submit scope.
  • Fixed a bug preventing creation of a debug context within a large repository.
  • Fixed a bug logging output for gt branch test on branches with a slash in the name.
  • Running git commands no longer opens another terminal on Windows.

0.20.10 2022-08-02

  • Addressed one remaining gap in pager parity with git: set the environment variables LESS=FRX and LV=-c if unset.

0.20.9 2022-08-02

  • Fixed remaining issues with pager by switching from a temp file to a pipe.
  • Fixed a bug where gt log short wouldn't show the filled-in circle for branches needing a restack.
  • Fixed a bug where gt branch split untracked children of the branch being split if the last branch in the split kept its name.

0.20.8 2022-07-29

  • Improved error mesaging around failed pager execution.

0.20.7 2022-07-29

  • gt log, gt changelog, and gt branch info now display in a pager. The pager defaults to your git pager, but can be overridden with (for example) gt user pager --set 'less -FRX'.

  • Fixed a bug where --no-edit on submit would automatically open new PRs in draft mode (it now prompts unless --draft, --publish, or --no-interactive is set).

  • Fixed a bug where killing the CLI during submit could result in being unable to submit again (due to a temporary filename clash).

  • Fixed colors for gt branch info --patch.

  • Fixed a bug related to buffer size for certain git commands.

  • Fixed the error displayed when attempting to install Graphite on old Node.js versions.

0.20.6 2022-07-25

  • submit after an aborted submit now asks the user whether they'd like to use their cached PR body instead of always using it.
  • gt branch split now tracks untracked branches automatically before splitting.
  • gt branch untrack now untracks the current branch if no branch name is provided.
  • Fixed an issue where gt branch create would fail instead of creating a branch with no commit in certain cases.
  • Fixed gt branch edit.

0.20.5 2022-07-22

  • Fixed gt changelog.
  • Fixed submit, downstack edit for editor commands containing spaces.
  • Fixed git push errors being swallowed on submit.

0.20.4 2022-07-21

  • Added gt changelog and gt docs. You probably want to pipe the changelog to a pager or file :).
  • Fixed a bug where a git rebase --abort after a restack conflict would result in Graphite being wrong about the current branch.
  • Improved test command output.
  • Internal improvements.

0.20.3 2022-07-21

  • Minor internal fix.

0.20.2 2022-07-19

  • Fixed an issue preventing installation.

0.20.1 2022-07-19

  • Fixed an issue preventing installation.

0.20.0 2022-07-19

  • Added a new command gt branch split that allows the user to interactive split a branch into multiple dependent branches. There are two styles of operation:

    • --by-commit mode (aliases --commit, -c) prompts the user to select the commits within the branch that they'd like to have branches at.
    • --by-hunk mode (aliases --hunk, -h) prompts the user to create a series of single-commit branches from the changes of the branch using the git add --patch interface.
  • Greatly improved gt log short readability. Give it a try!

  • gt branch create, gt commit create, and gt commit amend now support the -p/--patch option (like git commit --patch). Please note that this won't be the most useful option until autostashing is implemented, planned soon.

  • Branch navigation commands now notify the user if the branch being checked out is either

    • behind its parent (needs restacking)
    • upstack of a branch that is behind its parent
    • untracked
  • gt log and gt log short now show untracked branches when --show-untracked/-u is passed in.

  • gt branch checkout now includes untracked branches in the selector when --show-untracked/-u is passed in.

  • Added -n as an alias for --no-edit for submit. Try out gt ss -np to quickly publish your changes!

  • Added --select/-s option for submit to select which branches to push.

  • Added --force/-f option submit to do a force-push, i.e. git push -f, instead of the default git push --force-with-lease.

  • Added a non-blocking note if the user submits a branch that is not restacked on trunk.

  • On trying to submit branches with PRs already closed/merged, instead of failing immediately users will be prompted to choose either to abort or create new PRs.

  • submit now correctly sets the upstream of the pushed branch.

  • You can now configure whether you'd like commit messages in PR bodies by default behind the configuration gt user submit-body --include-commit-messages. Disabled by default. Use gt user submit-body --no-include-commit-messages to disable.

  • Added --force/-f for gt downstack get to always overwrite local branches.

  • gt downstack track can now take a positional branch name argument (like gt branch track).

  • Added --diff/-d for gt branch info to show the diff of the whole branch (unlike --patch/-p which shows the diff of each commit).

  • Interactive prompts autocomplete is now case-insensitive.

  • gt --help now includes a link to the CLI documention.

  • Improved gt repo init copy.

  • Improved error messaging for when an internal git command fails.

  • Improved error messaging for when a submit command fails due to a GitHub API error.

  • Improved test command output.

  • Improved clarity of positional arguments for all commands with them in --help

  • Improved performance of internal cache.

  • Improved telemetry.

  • Fixed a bug where test commands were completely broken.

  • Fixed a bug where upstack onto autocomplete did not work if uso shortcut was used.

  • Fixed a bug where --no-interactive and --no-edit were not handled properly for submit

  • Fixed a bug where gt log would break on the initial commit of a repository.

  • Fixed a bug where trunk would be in the list of branches to track in gt repo init

  • Fixed a bug where the error message for old versions of Node.js wouldn't show up.

  • Added cycle detection for parent pointers.

0.19.6 2022-07-07

  • Fixed a bug where continue state could be corrupted by running a gt command before running gt continue.
  • Fixed a bug where upstack onto could target untracked branches, resulting in corrupted state.
  • Fixed a bug where renaming a branch to its current name resulted in corrupted state.
  • Added dstr as an alias for downstack track.
  • Slightly improved rebase conflict printout.

0.19.5 2022-07-06

  • Added a new command gt downstack track that, from an untracked branch, allows you to track recursively by choosing the parent until you reach a tracked branch. Use --force/-f to automatically select the nearest ancestor of each branch, which should give behavior similar to gt stack fix --regen of old.

  • Added a new command gt branch fold that folds the changes of the current branch into the parent branch. Uses the parent branch's name for the new branch with default; pass in --keep/-k to use the current branch's name instead.

  • Added a new command gt branch squash that turns a branch of multiple commits into a single-commit branch. Takes --message/-m and --no-edit/-n arguments just like gt commit amend, and defaults to using the message of the first commit on the branch.

  • Fixed a bug where if neither --draft nor --submit was passed, updated PRs would always be published if previously drafts, and new PRs would be published instead of being created as draft.

  • Fixed a bug where gt branch track --force wouldn't always select the nearest ancestor.

  • Fixed a bug where gt with no command would throw an uncaught exception instead of displaying the help message.

  • Fixed a bug where cancelling certain interactive prompts would result in undefined behavior.

0.19.4 2022-07-05

  • Based on a user survey, we've slightly changed the defaults for PR title and description on submit commands.

    • PR Title defaults to the title of the first (or only) commit on the branch.
    • PR Description defaults to a list of commit messages followed by a PR template, if one exists.
  • branch info and log now show the commit hash of trunk.

  • Added a repo init --reset which clears all Graphite metadata.

  • Added a new user-scoped configuration enabled by gt user restack-date --use-author-date which when enabled passes --committer-date-is-author-date to the internal git rebase of restack operations. To return to the default, use gt user restack-date --no-use-author-date.

  • Added autocompletion for the branch up disambiguation prompt.

  • Added gt dpr as a shortcut for gt dash pr

  • Renamed the --no-draft option for submit commands to --publish/-p. There are three modes of operation for the command:

    • By default, leave existing PRs in the same state and create new PRs in draft mode.
    • When --draft/-d is passed, all PRs in the submit scope will be marked as draft.
    • When --publish/-p is passed, all PRs in the submit scope will be marked ready for review.
  • Added an interactive prompt for gt branch rename when no new name is passed in.

  • Added a --force/-f option for gt branch track that skips the interactive prompt by picking the nearest tracked ancestor.

  • Fixed a bug where branch submit and downstack submit base validation would fail incorrectly on certain operating systems.

  • Fixed a bug where leftover cached metadata across CLI versions could result in inconsistent state.

0.19.3 2022-06-28

  • Changed the flow of gt branch track. Now, it tracks the current branch by default, unless another branch is specified. By default, prompts the user to select a branch to be its parent if there are multiple possibilities, or you can pass in a --parent.

  • Updated the new log short view to be more comprehensible (uses diagram symbols from log).

  • Fixed a bug where --restack wouldn't restack all branches as expected if gt repo sync was run from trunk.

  • Fixed a bug where gt ss would fail if run from trunk.

  • Fixed a bug where gt downstack get would fail to get branches that existed locally but were untracked by gt.

  • Fixed a bug where after a git rebase, Graphite metadata could end up in a broken state.

  • Fixed a bug that prevented gt feedback --with-debug-context from working as expected.

  • Fixed a bug where gt upstack onto interactive selection could appear wonky.

  • Fixed some copy in v0.19 newly added features.

0.19.2 2022-06-15

  • Fixed an issue where downstack get was completely broken.
  • Replaced the emoji for Pushing to remote and creating/updating PRs... step of submit
  • Fixed an issue where gt branch edit would only work if the branch was not in need of restacking.
  • Added support to rebase local changes on top of remote for downstack get
  • Fixed a bug where choosing to cancel submit because of an empty branch did not abort correctly.

0.19.1 2022-06-14

  • Removed some development tooling as a workaround to unblock Homebrew release. Sorry for the delay!
  • Fixed a shebang issue that resulted from trying to clean up Node.js v18 warnings. Added a different fix to prevent Node.js warnings from showing up in CLI output.
  • Fixed a bug with Node.js v14 support.
  • Changed the Homebrew Node.js dependency to v16, which is the same as we use for development.

0.19.0 2022-06-13

  • Ensured every commonly used command has an alias and changed a few names. A current list of commands will be included in the Community Slack with this release.

    • gt branch show is now gt branch info. As this command is relatively new, we are not leaving show as an alias.
    • gt branch create --restack is now gt branch create --insert. This was the originally intended name, and it does something different than gt repo sync --restack
    • gt downstack sync is now gt downstack get. It was confusing to have two sync commands do entirely different things!
    • The old names gt branch prev and gt branch next for down and up are now fully deprecated.
  • Updated a significant portion of the info and error messages spanning almost every command.

  • Ensured every command has up-to-date and helpful --help.

  • Added a number of tips to various commands.

  • Greatly improved autcompletion — now every command has autocomplete for nouns, verbs, flags, and branch names when applicable.

  • gt branch checkout, gt upstack onto, and gt branch track now all have substring autocompletion for interactive branch selection. Enjoy! :D

  • gt auth and gt user commands can now be run outside of a Git repository.

  • Removed the concept of "ignored branches" from gt repo init, and the user config.Removed the gt repo ignored-branches command.

  • Removed gt <scope> fix. fix is now an alias for restack.

  • Removed gt <scope> validate

  • Removed gt branch parent, gt branch children, and gt branch pr-info. All of this information is now found in gt branch info. gt branch rename is now the only way to reset PR info for a branch, as PR info is now synced by branch name for the open PR with that name.

  • Removed gt repo fix.

  • Removed gt repo trunk. You can change the trunk branch by running gt repo init --trunk <trunkName> .

  • Removed exec functionality of gt downstack edit — we recommend using gt stack test for running a command on each branch in your stack.

  • Added a new command gt branch track. In order to track an existing git branch <branchName>, ensure that it is based on a Graphite branch <parentBranchName>, and then with <parentBranchName> checked out, run gt branch track <branchName> to start tracking it as a Graphite branch.

    • You can also specify a --parent in gt branch track instead of checking out the desired parent before running the command.
    • If run without a branch to track gt branch track suggests branches that have the current branch/specified parent in their history.
  • Added gt branch untrack to remove Graphite metadata for a branch.

  • Added a new flow to gt repo init for letting users new to Graphite convert an existing "stack" of branches into a Graphite stack. Essentially calls gt branch track in a loop.

  • Added a new verb gt <scope> restack for the branch, upstack, downstack, and stack nouns. For each branch in the scope, this command checks if the branch is based on its parent, and rebases it if necessary. gt upstack fix and gt stack fix will alias to restack for a couple versions.

  • Improved gt log short - the view now essentially a single-line-per-branch version of gt log. The old style can still be accessed with gt log short --classic.

  • Added a --reverse option to gt log and gt log short. Helpful for big stacks!

  • Added --stack option for gt log and gt log short. Only displays the current stack (i.e. what gt stack submit would submit).

  • Added --steps <n> option for gt log and gt log short. Implies --stack and only shows n levels above and below the current branch.

  • Rebase conflict message now shows a gt log short --steps 3 centered at the branch being resolved.

  • Interactive selection for gt branch checkout and gt upstack onto now uses the new gt log short view. Much easier to see what you're doing with long branch names!

  • gt dash can now open the PR page for the current branch or a specified one: gt dash pr [numberOrBranchName]

  • gt branch info can now show the current PR description with --description.

  • Added upstack and downstack counterparts of gt branch test.

  • gt branch delete now restacks the deleted branch's children onto its parent.

  • Removed the --resubmit flow from repo sync — we may add it back in the future.

  • Added a --restack option to repo sync, which restacks the current branch and any branches in stacks with cleaned up branches. We imagine a common flow if you know that you don't have conflicts with trunk will be gt rs -rf. Or even gt rs -rf && gt ss.

  • Fixed a bug where --draft and --no-draft on submit commands would unnecessarily submit unchanged PRs.

  • Fixed bugs related to rebases not being performed properly that often resulted in confusing state and messaging.

  • Now fails gracefully if running on an unsupported Node.js version (requires Node.js version 14 or higher)

  • The Graphite CLI experience survey is no longer shown when commands are run in non-interactive mode.

Note from the maintainers:

Thanks for trying out the new version of the Graphite CLI! Please let us know if you see any issues with this new version, or have any suggestions for improvements related to functionality, flow, or transparency/simplicity.

New documentation for the CLI is coming soon! We love hearing your feedback about what documentation would be helpful — keep it coming!

Rebasing on gt downstack get has been outscoped for this release in order to get it to you sooner! We're still excited to put it out soon.

0.18.7 2022-05-31

  • Fixed a pervasive bug that prevented using gt on Windows at all — there are likely still remaining issues to work out before we have full support, and we still recommend using WSL for the most stable Graphite experience. Thanks to our community for helping out here!
  • Fixed a bug where git push error messages would not be displayed on submit, resulting in confusion around whether pushes were failing because of e.g. pre-push hooks or--force-with-lease errors.
  • Added better support for multiple checkouts (i.e. git worktree). We consider our support experimental, see the new section of the docs for details.

0.18.6 2022-05-20

  • Fixed a bug where running gt branch rename on submitted branches would result in gt becoming largely unusable.
  • Added a new --force/-f option to gt branch rename that is required for already-submitted branches.
  • gt branch rename now respects character replacement settings.

0.18.5 2022-05-19

  • . and / are no longer replaced in branch names.
  • Fixed a regression where the current branch wouldn't be selected by default in gt branch checkout interactive mode.
  • Upgraded node and yarn dependencies, please let us know if you see any weirdness!

0.18.4 2022-05-16

  • gt downstack sync no longer requires turning on a configuration option to use (for real this time)

0.18.3 2022-05-13

  • Rewrote gt downstack sync using a different mechanism for fetching remote stack dependencies.
  • gt downstack sync no longer requires turning on a configuration option to use.
  • Fixed an issue in submit where in-progress PR title wouldn't be saved if the user cancelled while writing the body.

0.18.2 2022-05-12

  • Fixed certain cases of an issue where restacking after stack edit and commit create would use an incorrect upstream. A broader fix is coming in v0.19.0.
  • Fixed an issue where after certain downstack edit or upstack onto flows, branches would be pushed to GitHub in an order that caused them to be closed prematurely.
  • Added gt branch-prefix --reset to turn off the user prefix for automatically generated branch names.
  • Cleaned up copy in submit commands.

0.18.1 2022-05-10

  • gt repo sync and gt repo fix now prompt to delete closed branches in addition to merged ones.
  • Added more customization for auto-generated branch name prefixes. Check out gt user branch-date and gt user branch-replacement.
  • Config files are now written with 600 permissions instead of 644.
  • Fixed an issue where downstack sync would overwrite the local copy of a branch even if the user chose not to.
  • Fixed an issue where a misconfigured trunk wouldn't be brought to the user's attention.
  • Fixed an issue where Graphite would fail to parse repository owner/name.
  • Removed deprecation warning for gt stacks - it's been long enough.
  • Cleaned up interactive mode copy for submit.

0.18.0 2022-05-04

New functionality

  • Added an experimental command gt downstack sync to pull down the remote copy of a branch and its downstack dependencies from remote. This feature is gated behind a configuration by default, and we are still working on the documentation. If you would like to try it out and help us iterate on the feature, please join the #experimental channel in the Graphite community Slack server!
  • Added additional functionality to submit to support the experimental collaboration features. Gated by default.
  • Added additional functionality to gt repo sync to support the experimental collaboration features. Gated by default.

New commands

  • Added a new command gt branch edit that runs a native git rebase --interactive over the commits on the current branch. This command is intended for advanced Git users who want to make use of the commit structure within a branch while working with Graphite.
  • Added a new command gt branch show that runs a native git log over the commits on the current branch. Includes a --patch/-p option to view the diffs.

New ways to use existing commands

  • Added an --insert option to gt branch create which restacks all children of the parent of the new branch onto the new branch itself.

  • Added interactive branch selection for gt upstack onto (similar to gt branch checkout). No longer requires a positional argument.

  • gt repo sync now handles --no-interactive correctly.

  • gt commit amend --no-edit now fails and warns the user when there are no staged changes, just like gt commmit create.

  • --no-edit is now aliased to -n for gt continue and gt commit amend.

  • gt continue now supports --all/-a to stage all changes.

  • submit --no-interactive no longer un-publishes submitted PRs (unless --draft is specified).

  • gt downstack edit now supports an exec/x option to execute arbitrary shell commands in between branch restacks (based on git rebase --interactive).

  • gt branch delete now supports deleting the current branch. It checks out the parent (or trunk if Graphite cannot find a parent).

Fixes

  • Fixed a bug where submit --no-interactive could prompt the user for reviewers.
  • Fixed a bug where gt repo owner would set the remote as well, breaking sync and resulting in having to manually edit the configuration file to get Graphite working again.
  • Fixed a bug where submit would fail for certain classes of branch name.
  • Fixed a bug where comments in the gt downstack edit file were not respected.
  • Fixed a bug where p as an alias for pick in gt downstack edit did not work properly.
  • Fixed a bug where fix could swallow a rebase exception and leave the repository in a bad state.
  • Fixed a bug where gt branch checkout interactive selection would fail if executed from an untracked branch.
  • Fixed a bug where gt branch delete could fail to delete the branch but leave it in a corrupt state.

Improvements

  • Improved the speed of gt downstack edit and gt upstack onto by being smarter about when a rebase is actually necessary.
  • Improved the speed of stack validation for some commands.
  • Cleaned up output of various commands and added more --debug logging.

Under the hood

  • Added infra to backfill the SHA of branch parent in metadata globally wherever it is safe to do so to prepare for an upcoming update to the stack validation algorithm that we expect to improve performance and reduce hangs.
  • Added plenty of tests and refactored code core to many commands for stability and future extensibility.

0.17.11 2022-04-23

  • Fix an issue introduced in the previous version where the async calls to fill in PR info on submit would not be awaited serially, resulting in a poor user experience.

0.17.10 2022-04-22

  • sync commands no longer allow pushing to branches associated with closed/merged PRs.
  • Rename gt branch sync to gt branch pr-info as its behavior is not aligned with the other sync commands.
  • Fix some output formatting for sync and submit commands.
  • Fix an issue where pr data could be overwritten on submit.
  • Decreased max branch name length slightly to support an upcoming feature.
  • Start tracking SHA of branch parent in metadata, a requirement for some upcoming features.
  • This version includes some initial changes to sync branch metadata with remote, gated by a hidden flag.

0.17.9 2022-04-14

  • Flipped gt log short view to match other log commands and up/down naming convention. !
  • Graphite now asks for confirmation if the user tries to submit an empty branch.
  • Graphite now displays an info message when it creates an empty commit on a new branch.
  • The empty commit copy in the commit editor now only appears when Graphite has created an empty commit.
  • Added support for remotes not named origin - use the new gt repo remote command to set the name of your remote.
  • Added support for branch names up to GitHub's max supported length (256 bytes including /refs/heads gives us room for 245 bytes).
  • Allowlisted many git commands for passthrough.
  • Added autocomplete support for gt branch delete.
  • Changed force option on gt branch delete from -D to -f.
  • Cleaned up output on gt branch delete failure.
  • Fixed an issue where a branch could not be submitted if its name matched a file in the repository.
  • Fixed an issue where gt repo max-branch-length wouldn't print the configured value.
  • Added more debug information for the --debug option.

0.17.8 2022-04-08

  • Happy Friday! This should fix many hangs that users are experiencing.

0.17.7 2022-04-08

  • Graphite no longer cleans up local branches that share a name with merged branches on remote unless they have been associated with the merged PR (via a submit command).
  • Fix bug where PR info wasn't being synced periodically.
  • Added a new command upstack fix, similar to stack fix that only runs upstack of the current branch.
  • commit create and commit amend now internally run an upstack fix instead of a stack fix.
  • Fix a hang related to git config diff.external being set.
  • Fix autocompletions for gt branch checkout.

0.17.6 2022-03-29

  • Support handling corrupted .graphite_merge_conflict files.

0.17.5 2022-03-23

  • Add deprecation warnings for gt branch next and gt branch prev in favor of gt branch up and gt branch down, respectively.
  • Add gt bu and gt bd shortcuts for gt branch up and gt branch down, respectively.
  • Change gt branch delete shortcut to gt bdl.
  • Support passing through gt stash as git stash.
  • Fix bug where fish users couldn't add backticks to commit message using the -m option.
  • Silence retype errors.
  • Minor copy updates.

0.17.4 2022-02-25

  • Refactored config loading to reduce race conditions.
  • Add quotes around commit message in ammend command.
  • Minor copy updates.

0.17.3 2022-02-25

  • Fix bug regarding repository config file reading from repository subdirs.

0.17.2 2022-02-16

  • Support numbers when generating a branch name from a commit message through gt bc -m <message>
  • Prompt for a commit message when autogenerating an empty commit when running branch create with no staged changes.

0.17.1 2022-02-15

  • Support creating new branches with no staged changes, by automatically creating an empty commit.

0.17.0 2022-02-15

  • Enable changing existing PRs' draft status using the --draft flag on submit.
  • Add a new command, gt downstack edit which enables interactive reordering of stack branches.
  • Update implementation of gt stack submit to avoid GitHub rate limitted when submitting large stacks.

0.16.8 2022-02-02

  • Enable manually setting reviewers on submit with the -r flag.

0.16.7 2022-02-01

  • Allow Graphite to run when there are untracked files.

0.16.6 2022-01-27

  • Fix issue with detecting downstack/upstack branches on submit

0.16.5 2022-01-07

  • Fix issue with detecting some PR templates

0.16.4 2021-12-13

  • Wildcard matching for ignored branches (gt repo ignored-branches --set) now accepts glob-patterns
  • Option to remove a branch from ignored list (gt repo ignored-branches --unset)
  • Submit now supports --update-only option which will only update-existing PRs and not create new ones.
  • Bugfix: Submit to honor the --no-verify flag
  • Better logging and documentation to clarify behavior

0.16.3 2021-12-3

  • Support up and down aliases for gt branch next/prev respectively.
  • Fix issue where gt tips could not be disabled.
  • Inherit shell editor preference for user from env ($GIT_EDITOR/$EDITOR) and prompt user to set shell editor preference on submit if env not set.
  • Allow user to change editor preference using gt user editor

0.16.2 2021-10-25

  • Support for gt continue to continue the previous Graphite command when interrupted by a rebase.

0.16.1 2021-10-14

  • Fix issue with gt repo sync deleting metadata for existing branches.
  • Reduce merge conflicts caused by gt commit amend.

0.16.0 2021-10-12

  • Support for branch autocomplete functionality on gt branch-related commands. Enable this functionality by running gt completion and adding the ouputted bash script to your relevant bash profile (e.g. ~/.bashrc, ~/.zshrc).
  • Added functionality to query users for feedback on the Graphite CLI.
  • Refactor the suite of gt submit commands to make them more easily cancellable; re-ordered submit to edit all PRs locally before doing any writes and cancelling mid-submit will save any previously entered data (e.g. title and body).
  • Submit also now includes a --dry-run flag to show the user what will be submitted in the invocation.
  • Submit queries GitHub for PRs before submitting, resolving an issue where submit would sometimes try to create a new PR though one already existed for that head branch/base branch combo on GitHub (Graphite just didn't know about it).

0.15.1 2021-10-4

  • Fix gt commit create -m multi-word commit messages.

0.15.0 2021-10-4

  • Support for gt stack top and gt stack bottom.
  • Adjusted logic for cleaning metadata in gt repo sync.

0.14.4 2021-10-1

  • Improve performance of stack logic on repos with a high number of local branches.
  • Allow gt commit create to be used without -m, launching the system editor.
  • Infer the body of a PR from the commit message body (if it exists).
  • Add gt repo trunk --set.

0.14.3 2021-09-30

  • Improved gt repo sync performance when repos have a high number of stale branches. gt repo sync now deletes branches more eagerly and has an optional flag to show progress (--show-delete-progress).
  • New command gt repo fix searches for common problems that cause degraded Graphite performance and suggests common remediations.

0.14.2 2021-09-29

  • Tacit support for merge-based workflows; merges no longer cause exponential branching in gt log and hang gt upstack onto.
  • Fixes to recreation of debug state in gt feedback debug-context --recreate.

0.14.1 2021-09-27

  • Assorted improvements to the gt repo sync merged branch deletion logic and options to fix dangling branches.
  • gt branch parent --reset resets Graphite's recorded parent for a branch (to undefined).
  • gt branch sync --reset resets Graphite's recorded PR info a branch (to undefined).

0.14.0 2021-09-16

  • gt debug-context captures debug metadata from your repository and can send that to Screenplay to help troubleshoot issues.
  • gt repo sync now pulls in PR information for all local branches from GitHub to link any PRs Graphite doesn't know about/better remove already-merged branches.
  • Re-enable metadata deletion from repo sync.
  • Re-enable pull request base pushing from repo sync.
  • gt branch create -m now has -a flag to include staged changes in the commit.

0.13.1 2021-09-01

  • Disable metadata deletion from repo sync
  • Disable pull request base pushing from repo sync

0.13.0 2021-08-31

  • stack submit now checks if update is needed for each branch.
  • Support upstack submit and branch submit
  • Fixed bug which was preventing upstack from having the alias us
  • Added a command branch rename to rename branches and correctly update metadata.
  • Better support cancelling out of prompts.
  • Rename stack clean to repo sync and update to be able to be run from any branch.
  • Update repo sync to delete old branch metadata refs.
  • Update repo sync to update PR merge bases if necessary.
  • Support passing through commands to git which aren't supported by Graphite.
  • Add experimental command stack test.
  • Fix bug causing branches to show up twice in log commands.
  • Show PR and commit info in log command
  • Add tip advising against creating branches without commits.

0.12.3 2021-08-23

  • Fix outdated copy reference to gp.
  • Print error stack trace when --debug flag is used.
  • Flag midstack untracked branches in gt ls output.
  • Improve submit to correctly support gt stack submit and gt downstack submit
  • Reduce unnecessary git ref calls to improve performance in large repos.
  • Support graceful handling of sigint.

0.12.2 2021-08-23

  • Fix bug in gt ls stack traversal.

0.12.1 2021-08-23

  • Fix bug resulting in always showing tips for gt ls.

0.12.0 2021-08-23

  • Disallow branching off an ignored branch.
  • Disallow sibling branches on top of trunk branch.
  • Establish pattern of toggleable CLI tips.
  • Rewrite gt ls to improve speed and output formatting.
  • Optimize git ref traversal and memoization.

0.11.0 2021-08-18

  • Support PR templates in stack submit command.
  • Update stack submit to support interactive title and description setting.
  • Update stack submit to support creating draft PRs.
  • Allow max branch length to be configured (from the default of 50).
  • Fix a crash in logging that happened in a edge case involving trailing trunk branches.
  • Hide remote branches in log long output.

0.10.0 2021-08-17

  • Fix case where commands fail if a branch's stack parent had been deleted.
  • Fix copy across CLI to use gt rather than the old gp.
  • Add more shortcut aliases for commands such as s for submit
  • Fix copy around repo-config to repo
  • Add command branch checkout
  • Refactor stacks command into log short
  • Update log command to support log, log short and log long
  • Support dropping the space on double-alias shortcuts. Eg branch next = b n = bn, stack submit = ss etc
  • Throw actionable errors if two branches point at the same commit.
  • Add top level graphite alias such that the CLI can be called using both gt and graphite.

0.9.1 2021-08-15

  • Fix gp alias deprecation warning for homebrew installations.

0.9.0 2021-08-15

  • Rename graphite CLI alias to gt from gp per feedback.

0.8.2 2021-08-13

  • Improved performance of gp stacks command, particularly in repositories with a large number of stale branches.
  • Changed search-space limiting settings to live at the top level and apply to both stacks and log. (gp repo max-stacks-behind-trunk, gp repo max-days-behind-trunk).

0.8.1 2021-08-10

  • Improved performance of gp log command, particularly in repositories with a large number of stale branches.
  • Users can now set the maximum number of stacks to show behind trunk in gp log (gp repo log max-stacks-behind-trunk) as well as the maximum age of stacks to show (gp repo log max-days-behind-trunk).
  • gp log also now has --on-trunk and --behind-trunk options.
  • Improved CLI documentation and copy.

0.8.0 2021-08-07

  • Autogenerated branch name date format change.
  • stack fix command now has stack f alias.
  • branch create command now has branch c alias.
  • branch create command now has branch c alias.
  • stack regen is deprecated, and is now a flag for stack fix --regen.
  • stack fix now shows an interactive prompt by default.

0.7.1 2021-08-06

  • Dont zero count months when generating branch names.
  • Improve help text for amend.
  • Improve help auth print out.

0.7.0 2021-08-05

  • Refactor gp log command, while supporting old behavior with gp log --commits/-c
  • Check for updates in orphaned child process, making all commands faster.
  • More helpful validation error messaging.
  • gp branch next/prev now support interactive choices and stepping multiple branches.
  • gp branch create [-m] now doesn't commit by default. It can also autogenerate branch names from commit messages.
  • Added gp commit create -m for creating commits and fixing upstack.
  • Added gp commit amend -m for amending commits and fixing upstack.
  • Added gp user branch-prefix [--set] reading and setting your branch prefix.
  • Added gp branch parent [--set] plumbing command for reading and setting a branch parent.
  • Added gp branch children plumbing command for reading the children of a branch.

0.6.3 2021-08-02

  • Better telemetry for measuring cli performance.
  • gp l alias for log command.

0.6.2 2021-08-02

  • stack fix now works for a individual stack. (Upstack inclusive for now)

0.6.1 2021-08-02

  • Fix homebrew release to not include a dev dependency on chai.

0.6.0 2021-08-02

  • Support --no-verify flag when running branch create to skip precommit hooks.
  • Validation passes when a branch points to the same commit as trunk HEAD.
  • Add repo init command.
  • Self heal .graphite_repo_config file.
  • Always track trunk branch and ignored branches.
  • Update stack regen to always set stack foundations to trunk.
  • Update stack regen such that, when from from trunk, regenerates all stacks.
  • branch next/prev now traverses based on Graphite's stack metadata.
  • Refactor gp stacks print output.

0.5.4 2021-07-30

  • Update stack regen to operate across entire stack rather than just upstack.
  • stack submit infers PR title from single-commit branches.
  • Using trunk branch inference, ignore trunk parents such as trailing prod branches.

0.5.3 2021-07-29

  • Begin infering trunk branch from .git config.
  • Ignore trunk parent branches during validation and other operations.

0.5.2 2021-07-28

  • upstack onto can now move branches with no parent branches.
  • validate now passes cases where branches point to the same commit.
  • stack fix now prints better messaging during rebase conflicts.
  • Removed unused args from stack submit and stack fix.
  • Updated copy

0.5.1 2021-07-28

  • Dont automatically create repository config file.

0.5.0 2021-07-27

  • Improved stack submit command and promoted command out of expermental status.

0.4.3 2021-07-27

  • Update all copy to match new termonology from the 4.0.0 refactor.

0.4.2 2021-07-27

  • Update branch create command to accept optional positional argument for branch name.

0.4.1 2021-07-27

  • Fix demo command and downstack string.

0.4.0 2021-07-27

  • Refactor all command names into a noun-verb subcommand pattern.
  • Introduce concept of upstack and downstack.
  • Simplify documentation.
  • Minor bugfixes.

0.3.4 2021-07-25

  • Fix bug in checking for uncommitted changes.

0.3.3 2021-07-25

  • Self heal if branch metadata parent somehow becomes self.
  • Diff rolls back changes if commit hook fails.
  • Fix bug in metadata stack traversal used by fix command.
  • Restack fails fast if there are uncommitted changes.

0.3.2 2021-07-24

  • Slim down size of homebrew artifact.

0.3.1 2021-07-24

  • Diff now only commits staged changes.

0.3.0 2021-07-24

  • Support resolving merge conflicts during a recursive restack.
  • Update sync command to be visable in --help.

0.2.0 2021-07-22

  • Update unlisted gp sync command to support trunk argument.
  • Update unlisted gp sync command to prompt before deleting branches.