# simply-git
Project to abstract some of the weirder git operations or things that I forget. Should always be able to be used alongside git, as opposed to trying to replace it outright.
Mainly writing to learn more about Git and Perl, unlikely to be widely useful.
```
simply-git
Usage:
--view
Display git status of files and other information
--dump-config
Dump .git/config to STDOUT. Not really useful but exposed for testing of reading config into internal data structure
--push-all [--commit-msg]
Push all untracked and modified files
* Can be used with interactive mode
* Can provide a commit msg with --commit-msg (otherwise a generic will be provided)
--interactive
Enable interactive mode with supported opts
--reset-from-master
Reset all current changes so that the file tree matches origin master
--reset-from-upstream [ --upstream-url ]
If upstream is defined will reset local branch to match upstream ( does not push changes to origin )
* Assumes you have an upstream configured
* Pass SSH/HTTPS URL to --upstream-url to add an upstream
--configure-local-user [--user,--email]
Configure local git user
* Can be used with interactive mode
--config-file
Default is ~/.sg/sg.config, can use this opt to use another file
* See example.config
--knock
Will try and knock the defined git server at the defined ports before any operation
* See example.config
* Can pass this by itself to perform a knock and exit
--knock-clone
Will try and knock the defined git server and clone the provided repo
* Will not check if you're in a git dir
--knock-pull
Will try and knock the defined git server and git pull
```
## Deps
* perl, Log4Perl, which, git, nmap
* Shellex.pm perl module: https://spwbk.site/git/projects/perl-shellex.git/index.html
## Installation
Can use provided install.sh to install
## TODO - Features:
* Warn about upstream updates
## TODO - Stuff to fix:
* Problems with `--push-all` when running from a relative path in the git dir (as opposed to the root)
* multipule TODO:'s in various files
* Code is getting messy, see TODOs
* Added basic color support, should really be moved somewhere else so the Git.pm module can make proper use of it
* Won't recognize as a git dir unless in the top level of the repo