* git-difme #+BEGIN_QUOTE git, do it for me #+END_QUOTE [[[https://git.ricketyspace.net/git-difme][repo]]] [[[https://ricketyspace.net/git-difme/releases][releases]]] #+BEGIN_SRC bash git clone git://git.ricketyspace.net/git-difme.git #+END_SRC stages files and makes commits on a list of git repositories based on some rules. it always does a =git push= on each repo that it visits. ** rules the rules specify what type of files to stage and commit. a rule can either be a regex that matches a file or a file mod type. the following file mod types are recognized: - =M= :: modified file. - =D= :: deleted file. - =?= :: untracked file. - =.= :: all files. the rules are defined per git repository in the config file. if git-difme finds already staged files, it'll commit them first before doing anything. ** config the config file must be at =~/.config/git-difme/config=. the config is simply a scheme file that defines the =difme-repos= function: #+BEGIN_SRC scheme (define (difme-repos) (list '("/path/to/git/repo/foo" "M" "D" "?") '("/path/to/git/repo/bar" "M") '("/path/to/git/repo/baz" ".") '("/path/to/git/repo/frb" "\\.txt" "personal/log.org" "?") '("/path/to/git/repo/dot" ".config/"))) #+END_SRC - for repo ~foo~, git-difme will stage and commit modified (M), deleted (D) and untracked (?) files. - for repo ~bar~, git-difme will only stage and commit modified (M) files. - for repo ~baz~, git-difme will stage and commit all files (.). - for repo ~frb~, git-difme will stage and commit all files that have '=.txt=' extension, file(s) whose path matches '=personal/log.org=', and all untracked files (?). - for repo ~dot~, git-difme will stage and commit all files under the '=.config=' directory. ** installing *** the script =git-difme= is written in [[https://gnu.org/s/guile][guile]]. first [[https://ricketyspace.net/git-difme/install-guile][install guile]], then do: #+BEGIN_SRC bash make git-difme #+END_SRC that will install the =git-difme= script at =~/.bin/git-difme=. add =~/.bin/= to =PATH=. *** the config file #+BEGIN_SRC bash make config #+END_SRC that will install a sample config file at =~/.config/git-difme=. ** running #+BEGIN_SRC bash git-difme #+END_SRC will do it. ** license gnu general public license version 3 or higher.