0.624   2018-10-30 (PERLANCAR)

	- Tweak Sah schema to allow --min-repo-access-time 0.

0.623   2018-09-27 (PERLANCAR)

	- [bugfix] Fix conditional ordering 'needs merging' before 'needs

0.622   2018-01-17 (PERLANCAR)

	- sync: Add action 'list-source-repos'.

0.621   2017-11-24 (PERLANCAR)

	- Add -M as shortcut for --skip-mtime-check.

0.620   2017-10-19 (PERLANCAR)

	- When syncing file/nongit-dir under dry-run, run rsync with
	  --dry-run so we can see what files/dirs would be updated.

0.61    2017-06-21 (PERLANCAR)

	- No functional changes.

	- Switch from Log::Any to Log::ger.

0.60    2016-12-20 (PERLANCAR)

	- Skip testing when rsync-new2old is not available in PATH

0.59    2016-12-15 (PERLANCAR)

	- [refactor] Extract check-mtime functionality to a separate script

0.58    2016-11-29 (PERLANCAR)

        - No functional changes.

        - [build] Rebuild with fixed Pod::Weaver::Plugin::Rinci to eliminate
          subcommand with name '' which got accidentally added to Subcommands
          POD section.

0.57    2016-11-29 (PERLANCAR)

	- No functional changes.

	- [doc] Tweak/add documentation.

0.56    2016-11-29 (PERLANCAR)

        - Add protection against wrong direction of rsync by checking newest
          mtime. When rsync-ing non-repo file/dir, we now protect against wrong
          direction of rsync by first finding "the newest mtime" for source and
          target. "Newest mtime" is calculated by recursively traversing a dir
          and finding the file/subdir with the newest mtime. When target's
          "newest mtime" is greater than source's, the rsync for that non-repo
          file/dir is skipped, unless --skip-mtime-check is specified.

0.55    2016-06-18 (PERLANCAR)

        - [optimize] check_bunch(): To save one stat() call per dir, assume any
          dir that does not start with dot to be a repo instead of checking its

0.54    2016-06-16 (PERLANCAR)

	- No functional changes.

	- [test] Fix failing test reports due to 'git' not configured yet
	  (no user.name and user.email config) [CT].

0.53    2015-06-14 (PERLANCAR)

        - exec, sync: Add dry-run feature, sort repos by recentness when
          --min-repo-access-time is specified.

0.52    2015-06-14 (PERLANCAR)

        - [Incompatible change] Expect float(epoch) instead of DateTime object
          as date in --min-repo-access-time, since the new str_alami_en date
          coerce rule no longer requires use to coerce to DateTime object.

0.51    2015-06-14 (PERLANCAR)

        - [Removed] Remove --sort option from all subcommands except ls. Remove
          sorting by .git/commit-timestamp and stop updating those files because
          we are now exclusively using repos.db.

        - check: Add --dry-run to quickly show the order of repos to be
          processed without actually doing any 'git status'.

        - Add option --min-repo-access-time to select only "recent repos", using
          information from repos.db. This can cut down sync/check time
          significantly if you only care about recently accessed
          (committed/status-ed/pushed into or by repo mtime) and you happen to
          have hundreds/thousand+ repos in your bunch and you modify only a few
          of them daily. If you use 'gitbunch sync' daily, for example, you can
          use "--min-repo-access-time '1 day ago'".

        - [not yet] sync: Skip sync-ing special files like repos.db and
          .gitbunch-sync-timestamp, even when given --include-files.

        - Use App::reposdb to manipulate repos.db.

0.50    2015-11-05 (PERLANCAR)

	- [Incompatible change] sync: Now defaults to not using rsync --del
	  option for more safety, unless --rsync-del option is given.

0.49    2015-09-09 (PERLANCAR)

	- No functional changes.

	- [Bugfix] Increase prereq IPC::System::Locale version to 0.03
	  which groks -log [thanks Slaven Rezic] [RT#106728].

0.48    2015-09-03 (PERLANCAR)

	- No functional changes.

	- [dist] Move spec prereqs from RuntimeRequires to
	  DevelopRecommends to reduce deps but still allow indicating spec

0.47    2015-08-17 (PERLANCAR)

	- No functional changes.

	- Switch from Log::Any to Log::Any::IfLOG.

0.46    2015-07-25 (PERLANCAR)

	- [Bugfix] [Regression] Make 'gitbunch check' CLI output nothing by
	  default, like before.

0.45    2015-07-25 (PERLANCAR)

	- check: Also put detailed result in result metadata to avoid being
          blanked by Perinci::CmdLine.

        - Add sort choice: db-commit-timestamp (or -db-commit-timestamp). This
          method looks for commit timestamps in $source/repos.db, which can be
          cheaper compared to stat-ing hundreds of .git/commit-timestamp. Your
          post-commit script must update this SQLite database. I use gitbunch on
          a bunch dir containing ~850 repos. Using the older commit-timestamp
          sort (instead of this newer db-commit-timestamp sort), when
          synchronizing from an external USB harddisk there is an annoying delay
          of 10-30s before sync-ing the first repo. That is the time spent doing
          the sort. With the new db-commit-timestamp, sync-ing first repo starts

0.44    2015-01-22 (PERLANCAR)

	- Switch CLI to Perinci::CmdLine::Any (-prefer_lite) which now
	  already has progress bar feature too.

0.43    2015-01-04 (PERLANCAR)

	- Second attempt to force C locale, by using IPC::System::Locale

0.42    2015-01-03 (PERLANCAR)

	- No functional changes.

	- Pepper more LANG=C to force English output [RT#101263].

0.41    2015-01-03 (PERLANCAR)

	- No functional changes.

	- Rebuild (Generate TODO.md).

0.40    2014-08-23 (SHARYANTO)

        - No functional changes.

        - Typo, derp.

0.39    2014-08-23 (SHARYANTO)

        - No functional changes.

        - Adjust to Perinci::CmdLine 1.19.

0.38    2014-07-18 (SHARYANTO)

        - Add option --repo to only process a single repo in the bunch and not
          logging lots of skipped messages if we used --include-repos ONEREPO.


        - Remove option alias --repos for --include-repos because it's too
          similar to the new --repo.

0.37    2014-06-21 (SHARYANTO)


        - When doing sync, also touch .git/.commit-timestamp of dest repos, so
          they will sync earlier too as sources.

0.36    2014-06-19 (SHARYANTO)

        [BUG FIXES]

        - Fix sorting by commit-timestamp for sync_bunch() (cwd problem).

0.35    2014-06-02 (SHARYANTO)

        - Add new (and new default) sort order: -commit-timestamp. This lets
          gitbunch process recently committed repos first. Can save some time if
          you have many repos and want to interrupt the script in the middle.

0.34    2014-05-17 (SHARYANTO)

        - No functional changes.

        - Replace File::Slurp with File::Slurp::Tiny.

0.33    2014-03-15 (SHARYANTO)

        - No functional changes. Rebuild to fix POD documentation (function
          argument documentation was broken in Perinci-To-POD < 0.42).

0.32    2014-01-17 (SHARYANTO)

        - No functional changes. Add 'use experimental smartmatch' for Perl

0.31    2013-08-31 (SHARYANTO)

        - No functional changes.

        - sync_bunch(): Show message if a non-git file/dir is updated in target.

0.30    2013-08-23 (SHARYANTO)


        - sync_bunch(): Add option --backup.

0.29    2013-08-21 (SHARYANTO)


        - sync_bunch(): Add option --create-bare. This replaces --use-bare (the
          term 'create' is more apt here). Now allow creating non-bare git repos
          via --nocreate-bare instead of just rsync-ing the source.


        - Remove backup_bunch (deprecated since v0.22).

0.28    2013-05-18 (SHARYANTO)

        - No functional changes. Reupload due to missing some code update.

0.27    2013-05-18 (SHARYANTO)

        - No functional changes. Update to Perinci::CmdLine 0.79 (Progress::Any

0.26    2012-12-20 (SHARYANTO)

        - No functional changes. Tweak error message.

0.25    2012-11-20 (SHARYANTO)

        - No functional changes. Use progress indicator for 'sync_bunch'.

0.24    2012-10-24 (SHARYANTO)

        - No functional changes. Use progress indicator for 'sync_bunch'.

0.23    2012-07-24 (SHARYANTO)

        [BUG FIXES]

        - Fix getting exit code from $?.


        - Mention use cases for gitbunch, why/how I use it.

        - Mention that gitbunch can handle non-repo dirs/files.

        - Mention mr.

0.22    2012-07-04 (SHARYANTO)

        - Add `use_bare` option.

        - Declare `backup_bunch` deprecated.

0.21    2012-04-16 (SHARYANTO)

        - Check: detect repo needs merging.

0.20    2012-04-10 (SHARYANTO)

        - No functional change. Small update to metadata.

0.19    2012-03-08 (SHARYANTO)

        - Small update to regex. Update to Perinci::CmdLine 0.40.

0.18    2012-03-03 (SHARYANTO)

        - Add 'cmdline.result_importance' => 'low' to result metadata, to suppress
          verbose output.

0.17    2012-03-02 (SHARYANTO)

        - No functional changes. Replace Sub::Spec::CmdLine with Perinci::CmdLine.

0.16    2011-09-16 (SHARYANTO)


        - backup: Change default check from 1 to 0, to make backup more robust
          (I often forgot to add --nocheck while having some repos uncommitted,
          resulting in failure of backup).

0.15    2011-08-03 (SHARYANTO)

        - No functional changes. Add temporary dependencies to
          Sub::Spec::GetArgs::Array 0.02 so that string arg_greedy arg works
          (e.g. "gitbunch exec ~/repos -- ls -l -d" instead of "gitbunch exec
          ~/repos 'ls -l -d'".

0.14    2011-07-07 (SHARYANTO)


        - sync: By default now uses 'rsync -rlptD' (-a minus -go) instead of
          'rsync -a' when copying repo to target. This is because -a is
          problematic on sshfs-mounted filesystem. Old behaviour is available by
          setting rsync_opt_maintain_ownership to 1.

0.13    2011-06-08 (SHARYANTO)


        - Add --exclude-files and --exclude-non-git-dirs options.

        [BUG FIXES]

        - backup_bunch: Do not index excluded items.

0.12    2011-06-04 (SHARYANTO)

        - No functional changes.

        [BUG FIXES]

        - Fix spec for exec_bunch().

0.11    2011-06-04 (SHARYANTO)

        - No functional changes.

        [BUG FIXES]

        - Fix spec for exec_bunch().

0.10    2011-06-04 (SHARYANTO)

        [NEW FEATURES]

        - New function: exec_bunch() ("gitbunch exec").


        - Add --exclude_repos_pat and --include_repos_pat options.

        - Exclude/include repos options added to all functions.

0.09    2011-04-19 (SHARYANTO)

        - Add --exclude_repos to sync_bunch.

0.08    2011-03-04 (SHARYANTO)

        - Fix test when run as root.

0.07    2011-03-04 (SHARYANTO)

        - Sort repos in sorted order.

        - Fix: pass extra_rsync_opts to rsync.

        - Fix test (git co -> git checkout).

0.06    2011-02-28 (SHARYANTO)

        - Update to the latest Sub::Spec: 'depends' clause -> 'deps'. Add a few
          dependency clauses (e.g. to 'git' and 'rsync' binary).

        - For safety, bail out if given git repo dir instead of bunch dir as

        - Add tests.

0.05    2011-02-22 (SHARYANTO)

        - Update to the latest Sub::Spec (%SUBS -> %SPEC).

0.04    2011-02-16 (SHARYANTO)

        - Reduce startup overhead (avoid loading Log::Any::App) when invoked for
          bash completion.

0.03    2011-02-16 (SHARYANTO)

        - Add missing dependency (File::chdir). [CT]

0.02    2011-02-15 (SHARYANTO)

        - Change log levels.

0.01    2011-02-15 (SHARYANTO)

        - First release.