Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dfithian/hit
A tool for managing multiple git repositories
https://github.com/dfithian/hit
git haskell
Last synced: 3 months ago
JSON representation
A tool for managing multiple git repositories
- Host: GitHub
- URL: https://github.com/dfithian/hit
- Owner: dfithian
- Created: 2020-03-08T21:54:27.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-11-15T16:15:30.000Z (about 3 years ago)
- Last Synced: 2023-02-26T08:41:45.835Z (almost 2 years ago)
- Topics: git, haskell
- Language: Haskell
- Homepage:
- Size: 25.4 KB
- Stars: 25
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Hit
Almost everyone I know stores their git repositories in a single folder on their local machine.
`hit` is a multi-repo-agnostic version of `git`, which will use its working directory to figure out how many git
repositories are directly under it. Invoke it like you would `git`, and it will invoke the correct version of `git`
under the hood. This means it can do things like:* Ensuring all your branches have the same name: `hit checkout -b `
* Listing files: `hit ls-files`
* Checking the status of a few repositories in a project: `hit backend status`## Quick start
```bash
curl -sSL https://get.haskellstack.org/ | sh
git clone https://github.com/dfithian/hit.git
cd hit
stack install # and add ~/.local/bin to your $PATH
hit ls-files
```That's it! Running `hit` in any directory will discover subdirectory git repositories.
## Projects
In order to manage groups of projects together, create a `~/.config/hit/config` file with the following schema:
```yaml
fullstack:
home: ~/work/git
dirs:
- frontend-repo
- backend-repo
```Now you can use `hit` on the project named `fullstack` from anywhere on your machine:
```bash
hit fullstack status
```## Supported commands
Anything that works with `git` works with `hit`. That said, these are the list of _tested_ commands.
* `ls-files`
* `status`
* `diff`
* `commit`
* `checkout`
* `branch`
* `pull`
* `push`