https://github.com/qrush/shp
A new UI for git. This doesn't work yet.
https://github.com/qrush/shp
Last synced: about 1 year ago
JSON representation
A new UI for git. This doesn't work yet.
- Host: GitHub
- URL: https://github.com/qrush/shp
- Owner: qrush
- Created: 2015-01-14T05:09:53.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2021-07-26T16:05:56.000Z (almost 5 years ago)
- Last Synced: 2025-03-26T09:22:11.185Z (about 1 year ago)
- Language: Rust
- Homepage:
- Size: 27.3 KB
- Stars: 28
- Watchers: 4
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# shp

A new UI for git.
## Goals
1. To provide a more human user interface for git
2. Interoperate with existing git tooling
3. Enable the community to use modern ways to contribute
## UI Ideas
* Break the `git` command up
* Stop the command line flag overload
* Provide undo for *all* destructive commands
* Smart defaults and aliases out of the box
* Banish the use of SHAs (not human!)
* Keep the index but use the loading dock metaphor
## Implementation Ideas
* Use Rust and libgit2 bindings for CLI
* Test suite in Ruby - because why not
* Provide binaries for Win/OSX/Linux
* Figure out what the best docs are
* Use revision numbers like `hg` does
## Banned git jargon
All of this is "under the hood" stuff. We don't need to worry about it.
* SHA
* commit
* tree(ish)
* "ref"
* blob
* staging area
* index
* remote
* repo
## Essential concepts
1. Everything is undoable
2. Checking in work is akin to loading it on a truck for delivery
3. Be centralized (use git if you want to be distributed)
4. No work should ever be lost
5. Be consistent in how data is added, removed, and renamed
6. There is no need to be upset
## Commands
Trying to get this out of my head and on...paper?
### General commands
| Command | Explanation |
| ------- | ----------- |
| `shp help ` | Gives help! |
| `shp --help ` | Also gives help as we are too used to Unixy commands |
| `shp setup` | Asks for and stores user name and email |
| `shp undo` | Undo the last constructive/destructive command. Can also undo an undo. |
### Write commands
| Command | Explanation |
| ------- | ----------- |
| `shp start [URL, directory, default = .]` | Starts a port off |
| `shp [un]load [file, directory, default = .]` | Loads/unload the pallet with a file/directory |
| `shp pack [message, open $EDITOR]` | Pack up this pallet for shipping. |
| `shp repack` | Modify your last pack |
| `shp dock [add, remove, rename, switch] [name]` | Add/remove/rename current dock |
| `shp port [add, remove, rename, switch] [name] [address]` | Add/remove/rename a port to ship to |
| `shp send [port] [dock, mark]` | Send your unshipped pallets off. Ship shipping ship ships! |
| `shp rec[eive] [port] [dock]` | Haul pallets in from a port (or the default port) |
| `shp mark [add, remove, rename] [name] [message]` | Marks the pallet with a message or for release. |
### Read commands
| Command | Explanation |
| ------- | ----------- |
| `shp pallet` | See what's on your pallet. |
| `shp dock` | Show current dock (branch) |
| `shp what [address1] [address2?]` | What is different between the two addresses or your current pallet? |
| `shp log [type]` | See a log of pallets. Log types: graph, patches, lines |
| `shp summary` | Get a mini log of everything in this port |
| `shp view [address]` | See the changes from the pallet at address. |
| `shp ports` | List ports we can ship to |
# What's missing
* How to query ports for docks, remove them
* Merge/rebasing, we need to figure that out.
* Server, daemon, etc. Use git for now.
* Patches, patch workflow.
* Ignoring?
# Undo
Every command that changes things must have an undo.
| Last Command Ran | Explanation |
| ---------------- | ----------- |
| `shp start` | Offers to remove the port |
| `shp undo` | Undo the last undo |
| `shp load` | Removes that file from the pallet |
| `shp unload` | Puts that file back on the pallet |
| `shp pack` | Unwrap the pallet and stop it from being shipped |
| `shp send` | Reverts to the last shipped pallet |
| `shp repack` | Roll back last changed pallet |