blob: 7c02ff3f6177fc9f9af434e565e5208d46b8e3e4 (
plain) (
tree)
|
|
# git-difme
\[[repo][]\] \[[releases][]\]
[repo]: https://git.ricketyspace.net/git-difme
[releases]: https://ricketyspace.net/git-difme/releases
```
git clone git://git.ricketyspace.net/git-difme.git
```
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:
(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/")))
- 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 [guile][]. First [install guile][i], then do:
# make git-difme
That will install the `git-difme` script git-difme at
`/usr/local/bin`.
[guile]: https://gnu.org/s/guile
[i]: https://ricketyspace.net/git-difme/install-guile
### the config file
$ make config
That will install a sample config file at `~/.config/git-difme`.
## running
$ git-difme
will do it.
## license
GNU GPL version 3 or higher.
|