Custom git shell to type less and commit more.
Project description
gitbetter
Custom git shell. Type less, commit more.
Installation
Install with:
pip install gitbetter
Usage
Launch from a terminal by entering gitbetter.
Type help or ? for a list of commands.
Type help {command} for detailed help with a specific command.
By default, If you enter a command that isn't built into gitbetter, it will be executed directly with os.system(),
allowing you to perform any command not defined by gitbetter that your shell supports without having to exit.
To toggle this behavior, run the toggle_unrecognized_command_behavior
(gitbetter uses tab for autocomplete, so you can type "tog"+tab instead of typing out the whole command name).
When toggled to off, an unrecognized syntax message will be printed if you type in a command gitbetter doesn't recognize.
The current state of this setting is printed at the bottom when running the help command.
You can still execute a command in the shell regardless of this setting with the sys command.
C:\gitbetter>gitbetter
Starting gitbetter...
Enter 'help' or '?' for command help.
gitbetter::C:\gitbetter>help
Built in Git commands (type '{command} -h' or '{command} --help'):
==================================================================
add filter_branch rebase version
am format_patch reflog whatchanged
annotate fsck remote worktree
archive gc repack
bisect git replace
blame gitk request_pull
branch gitweb rerere
bugreport grep reset
bundle gui restore
cd help revert
checkout init rm
cherry_pick instaweb scalar
citool log shortlog
clean maintenance show
clone merge show_branch
commit merge_tree sparse_checkout
config mergetool stash
count_objects mv status
describe notes submodule
diagnose pack_refs switch
diff prune sys
difftool pull tag
fast_export push toggle_unrecognized_command_behavior
fast_import quit verify_commit
fetch range_diff verify_tag
Convenience commands (type 'help {command}'):
=============================================
add_url commitall delete_gh_repo loggy new_branch push_new
amend commitf ignore make_private new_gh_remote undo
branches delete_branch initcommit make_public new_repo
Unrecognized command behavior: Execute in shell with os.system()
^Essentially makes this shell function as a super-shell of whatever shell you launched gitbetter from.^
gitbetter::C:\gitbetter>help commitf
Stage and commit a list of files.
Parser help for commitf:
usage: gitbetter [-h] -m MESSAGE [files ...]
positional arguments:
files List of files to stage and commit.
options:
-h, --help show this help message and exit
-m MESSAGE, --message MESSAGE
The commit message to use.
gitbetter::C:\gitbetter>help loggy
>>> git --oneline --name-only --abbrev-commit --graph
gitbetter::C:\gitbetter>loggy
* 3e780ec (HEAD -> main, tag: v1.0.0) Merge branch 'my-feature'
|\
| * b4478a3 feat: new print statement
| | test.py
* | eb89c2e docs: update readme
|/
| README.md
* fc6b7ac (origin/main) docs: update readme
| README.md
* 2a75c0c docs: added a comment
| test.py
* d22129a feat: new print statement
| gitbetter_test.py
* 1a002d7 chore: add items to ignore
| .gitignore
* 92cb7e7 Initial commit
.gitignore
LICENSE.txt
README.md
gitbetter_test.py
test.py
test.txt
Bindings can be accessed programmatically through the Git class.
>>> from gitbetter import Git >>> git = Git() >>> git.loggy() * 3e780ec (HEAD -> main, tag: v1.0.0) Merge branch 'my-feature' |\ | * b4478a3 feat: new print statement | | test.py * | eb89c2e docs: update readme |/ | README.md * fc6b7ac (origin/main) docs: update readme | README.md * 2a75c0c docs: added a comment | test.py * d22129a feat: new print statement | gitbetter_test.py * 1a002d7 chore: add items to ignore | .gitignore * 92cb7e7 Initial commit .gitignore LICENSE.txt README.md gitbetter_test.py test.py test.txt >>> git.list_branches() * main 3e780ec [origin/main: ahead 3] Merge branch 'my-feature' remotes/origin/main fc6b7ac docs: update readme
The stdout of Git functions can be returned as a string rather than being printed to the terminal
by passing True to the Git constructor or setting the member variable capture_stdout to True.
>>> from gitbetter import Git >>> git = Git(True) # or >>> git.capture_stdout = True >>> log = git.loggy() >>> print(log) * 3e780ec (HEAD -> main, tag: v1.0.0) Merge branch 'my-feature' |\ | * b4478a3 feat: new print statement | | test.py * | eb89c2e docs: update readme |/ | README.md * fc6b7ac (origin/main) docs: update readme | README.md * 2a75c0c docs: added a comment | test.py * d22129a feat: new print statement | gitbetter_test.py * 1a002d7 chore: add items to ignore | .gitignore * 92cb7e7 Initial commit .gitignore LICENSE.txt README.md gitbetter_test.py test.py test.txt >>> git.list_branches() * main 3e780ec [origin/main: ahead 3] Merge branch 'my-feature' remotes/origin/main fc6b7ac docs: update readme
If capturing stdout is only desired for a set of functions,
the capture_output function can be used as a context manager.
Upon entering the context, the capture_stdout property is set to True
and then set back to False upon exiting the context.
>>> git = Git()
>>> with git.capture_output():
... status = git.status()
...
>>> print(status)
On branch stdout-context-manager
Your branch is up to date with 'main'.
Changes not staged for commit:
(use "git add <\file>..." to update what will be committed)
(use "git restore <\file>..." to discard changes in working directory)
modified: src/gitbetter/git.py
no changes added to commit (use "git add" and/or "git commit -a")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gitbetter-4.0.1.tar.gz.
File metadata
- Download URL: gitbetter-4.0.1.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79170353a94e850e8b9adcbc9a8235e4f9b57924ed51e34aaac11ec8e05e67a3
|
|
| MD5 |
3cdda814b9ddab97f922c91dcd461734
|
|
| BLAKE2b-256 |
e356028471311e8f1980be6c4daa0584b5be17091d7cef59047094bb6fe8f93f
|
File details
Details for the file gitbetter-4.0.1-py3-none-any.whl.
File metadata
- Download URL: gitbetter-4.0.1-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c68fce74a96dec0286b290ed979f2e6ce81c4d0797d1fe7f7ca41529ef94e729
|
|
| MD5 |
ee31c442d6176b5d9836b645c396d497
|
|
| BLAKE2b-256 |
92f05788db45161b789175175b966f42fb4fa2ee393a450eda6d69bbc4dec1d0
|