A new UI for git.
- To provide a more human user interface for git
- Interoperate with existing git tooling
- Enable the community to use modern ways to contribute
- 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
- 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
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
- Everything is undoable
- Checking in work is akin to loading it on a truck for delivery
- Be centralized (use git if you want to be distributed)
- No work should ever be lost
- Be consistent in how data is added, removed, and renamed
- There is no need to be upset
Trying to get this out of my head and on...paper?
Command | Explanation |
---|---|
shp help <command> |
Gives help! |
shp --help <command> |
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. |
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. |
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 |
- 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?
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 |