Kowainik Git Workflow Helper Tool.
You can find the description of the workflow here:
hit-on
provides the hit
binary with a convenient command-line interface to improve the interaction with git
in a compatible way with the described working methods. It saves time for people who use this workflow on a daily basis, helps beginners expand their insight of the core VCS processes and makes collaboration between team members easier during development.
To start using hit
make sure that you have the following tools installed on your machine:
-
git
—hit
is a wrapper aroundgit
There are several methods to install the hit
tool. You can choose the one that you are most comfortable with.
You can download the hit
binary directly from the GitHub releases:
After downloading, make it executable and copy it to a convenient location, for example:
chmod +x hit-linux
mv hit-linux ~/.local/bin/hit
NOTE: the project is written in Haskell, so you need to have one of the Haskell build tools installed. See this blog post for installation and usage instructions.
You need to follow these steps:
-
Clone the repository from GitHub
git clone https://github.com/kowainik/hit-on.git
-
Step into the directory
cd hit-on
-
Install the project with one of the build tools
- Cabal
Note: make sure you have
cabal new-install hit-on
~/.cabal/bin
in your $PATH - Stack
stack install hit-on
-
Make sure that
hit
is installed:hit --version
Currently, this method of installation is not supported. See this issue for more details or if you want to help.
Currently, this method of installation is not supported. See this issue for more details or if you want to help.
Follow the steps below to configure hit
:
- Specify your GitHub login in the global
.gitconfig
git config --global user.login <your_login>
- This step is only required if you want to use
hit
with private repositories.- Create OAuth token on GitHub.
- Copy the generated token.
- Export token as an environment variable
export GITHUB_TOKEN=<paste_generated_token_here>
The best way to demonstrate the power of the hit
tool on a day-to-day basis with our workflow is to go through the entire workflow step by step, solving an ordinary problem of the typical git
user.
Here we assume that you work with
origin
remote with the main branch set tomaster
.
When you want to start working on a new issue, you usually want to make sure you're using the latest version of your project. As a git
user you may use the following commands:
git checkout master
git pull --rebase --prune
With hit
you can just:
hit hop
Now you need to decide which issue you want to work on. You can use the hit issue
command to see the full list of all open issues. After choosing the number of the issue, let's say 42, call hit issue 42
to see the details of that issue.
Start your work in a new branch. According to our workflow, branch names should have the following form:
<user_login>/<issue_number>-<short_issue_description>
With git
you can create a branch using the following command:
git checkout -b my-login/42-short-desc
hit
allows you to accomplish this task in an easier manner:
hit new 42
It uses the issue title to generate a short description.
After finishing your work on that issue, you need to commit your changes. With git
you would do the following:
git add .
git commit -m "[#42] Implement my feature
Resolves #42"
With hit
you need only to specify the text of the commit to get the same result:
hit commit "Implement my feature"
Note that you don't need to keep in mind the current issue number. However, if you want to refresh the context about the issue, use the hit current
command.
After committing your changes locally, you need to push them to the remote repository. It's usually a good practice to push only the current branch.
The git
command for this is a little bit verbose:
git push -u origin my-login/42-short-desc
hit
allows you to save several keystrokes:
hit push
After opening the pull request, some of the reviewers suggested changes that you applied as commits to the remote branch via GitHub interface. Now you need to sync your local branch with the remote one.
With git
you can do the following:
git pull --rebase origin my-login/42-short-desc
However, with hit
you can just:
hit sync
While you were waiting for the second round of reviews, another pull request was merged to the master
branch. Now you need to apply the new master
changes to your local branch.
With git
you can do the following:
git fetch origin master
git rebase origin/master
Again, with hit
you can do better:
hit fresh
Now you need to make changes to your work locally according to the code review and push them to the remote repository.
git
requires from you to do several steps to accomplish this simple task:
git add .
git commit -m "Fix after review"
git push origin my-login/42-short-desc
hit
helps you with this as well:
hit fix
Oops, you've just realised that you have made a typo in your work! So you fixed the typo. But now you want to update the remote branch without creating a new unnecessary commit.
With git
you can do the following:
git commit -a --amend --no-edit
git push origin my-login/42-short-desc --force
With hit
you can simply:
hit amend
Hooray, your PR just got merged! It's time to clean your local repository and start working on a new issue!
With git
you would do the following:
git checkout master
git pull --rebase --prune
git branch -D my-login/42-short-desc
With hit
you can finish your work faster:
hit resolve