README.md 8.3 KB

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

Installation

Can use provided install.sh to install

TODO - Features:

  • Warn about upstream updates
  • Add color support

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