App-SCM-Digest

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

make install
```

Alternatively, run `cpanm .` from within the checkout directory.  This
will fetch and install module dependencies, if required.  See
https://cpanmin.us.

### Usage

```
scm-digest [ options ]
```

Options:

 * `--conf {config}`
    * Set configuration path (defaults to /etc/scm-digest.conf).
 * `--update`
    * Initialise and update local repositories.
 * `--get-email`
    * Print digest email to standard output.
 * `--from {time}`
    * Only include commits made after this time in digest.
 * `--to {time}`
    * Only include commits made before this time in digest.

Time format is `%Y-%m-%dT%H:%M:%S`, e.g. `2000-12-25T22:00:00`.

If `get-email` is used without `from` and `to` arguments, then `from`
will default to one day ago, and `to` will default to the current
time.  If only `from` is provided, then there will be no upper bound
on the commit date.  If only `to` is provided, then there will be no
lower bound on the commit date.

The configuration file must be in YAML format.  Options that may be
specified are as follows:

```
  db_path:          /path/to/db
  repository_path:  /path/to/local/repositories
  timezone:         UTC
  ignore_errors:    0
  headers:
    From: From Address <from@example.org>
    To:   To Address <to@example.org>
    ...
  repositories:
    - name: test
      url: http://example.org/path/to/repository
      type: [git|hg]
    - name: local-test
      url: file:///path/to/repository
      type: [git|hg]
      ...
```

`db_path`, `repository_path`, and `repositories` are the mandatory
configuration entries.  Paths must be absolute.

`timezone` is optional, and defaults to 'UTC'.  See
`DateTime::TimeZone::Catalog` for a list of valid timezones.

`ignore_errors` is an optional boolean, and defaults to false.  If
false, errors will cause the process to abort immediately.  If true,
errors will instead be printed to `stderr`, and the process will
continue onto the next repository.

Depending on what has happened to the remote repository, the updating
of the local repository may involve a merge.  That merge will prefer
the content from the remote repository, in the event of a conflict.

If an operation against a given repository fails, then this will
re-clone the repository and retry the operation.  If the operation
still fails, the original repository will be restored and the
operation will be skipped.

### Example

```
user@host:~$ cd /tmp
user@host:tmp$ mkdir db
user@host:tmp$ mkdir repos
user@host:tmp$ cat << EOF >> config.yml
> db_path: /tmp/db
> repository_path: /tmp/repos
> repositories:
>   - name: scm-digest
>     url: https://github.com/tomhrr/p5-App-SCM-Digest
>     type: git
> EOF
user@host:tmp$ scm-digest --conf /tmp/config.yml --update
user@host:tmp$ scm-digest --conf /tmp/config.yml --get-email | sendmail user@host
```

### Copyright and licence

Copyright (C) 2015-2024 Tom Harrison

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.8 or,
at your option, any later version of Perl 5 you may have available.



( run in 0.555 second using v1.01-cache-2.11-cpan-39bf76dae61 )