0.631   2024-10-22  Released-By: PERLANCAR; Urgency: low

        - No functional changes.

        - [ux] Add/tweak logging statements.


0.630   2023-07-16  Released-By: PERLANCAR; Urgency: medium

	- No functional changes.

        - Remove usage of smartmatch to avoid deprecation warning under
          perl 5.38.


0.629   2021-01-31  Released-By: PERLANCAR; Urgency: low

	- No functional changes.

	- [doc] Mention Git::Got, Group::Git.


0.628   2021-01-31  Released-By: PERLANCAR; Urgency: high

        - Merge two releases 0.627 & 0.627.1.


0.627.1 2021-01-31  Released-By: PERLANCAR; Urgency: medium

        - Add new subcommand: commit.

	- [subcommand exec] Add option: command_opts.

	- [ux] Add --recent & -r as shortcut for --min-repo-access-time='2 weeks
	  ago'.

        - UPDATE: Rename version to 0.627.1 due to duplicate.


0.627   2020-10-30  Released-By: PERLANCAR; Urgency: medium

        [subcommand check]

        - [ux] Exit non-zero when there is unclean repo.


0.626   2020-01-31  Released-By: PERLANCAR; Urgency: low

	- Avoid the use of From_str::alami date coercion for now as
	  DateTime::Format::Alami is flaky.


0.625   2019-11-29  Released-By: PERLANCAR; Urgency: medium

	- Update coerce rule names in Sah schemas.

	- Forgot why I added ENV{LOG}=1, remove it.


0.624   2018-10-30  Released-By: PERLANCAR

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


0.623   2018-09-27  Released-By: PERLANCAR

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


0.622   2018-01-17  Released-By: PERLANCAR

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


0.621   2017-11-24  Released-By: PERLANCAR

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


0.620   2017-10-19  Released-By: 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  Released-By: PERLANCAR

	- No functional changes.

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


0.60    2016-12-20  Released-By: PERLANCAR

	- Skip testing when rsync-new2old is not available in PATH
	  [RT#119318].


0.59    2016-12-15  Released-By: PERLANCAR

	- [refactor] Extract check-mtime functionality to a separate script
	  'rsync-new2old'.


0.58    2016-11-29  Released-By: 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  Released-By: PERLANCAR

	- No functional changes.

	- [doc] Tweak/add documentation.


0.56    2016-11-29  Released-By: 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  Released-By: 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
          .git/.


0.54    2016-06-16  Released-By: 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  Released-By: PERLANCAR

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


0.52    2015-06-14  Released-By: 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  Released-By: 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  Released-By: 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  Released-By: 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  Released-By: PERLANCAR

	- No functional changes.

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


0.47    2015-08-17  Released-By: PERLANCAR

	- No functional changes.

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


0.46    2015-07-25  Released-By: PERLANCAR

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


0.45    2015-07-25  Released-By: 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
          immediately.


0.44    2015-01-22  Released-By: PERLANCAR

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


0.43    2015-01-04  Released-By: PERLANCAR

	- Second attempt to force C locale, by using IPC::System::Locale
	  [RT#101263].


0.42    2015-01-03  Released-By: PERLANCAR

	- No functional changes.

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


0.41    2015-01-03  Released-By: PERLANCAR

	- No functional changes.

	- Rebuild (Generate TODO.md).


0.40    2014-08-23  Released-By: SHARYANTO

        - No functional changes.

        - Typo, derp.


0.39    2014-08-23  Released-By: SHARYANTO

        - No functional changes.

        - Adjust to Perinci::CmdLine 1.19.


0.38    2014-07-18  Released-By: 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.

        [REMOVED FEATURES]

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


0.37    2014-06-21  Released-By: SHARYANTO

        [ENHANCEMENTS]

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


0.36    2014-06-19  Released-By: SHARYANTO

        [BUG FIXES]

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


0.35    2014-06-02  Released-By: 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  Released-By: SHARYANTO

        - No functional changes.

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


0.33    2014-03-15  Released-By: 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  Released-By: SHARYANTO

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


0.31    2013-08-31  Released-By: SHARYANTO

        - No functional changes.

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


0.30    2013-08-23  Released-By: SHARYANTO

        [ENHANCEMENTS]

        - sync_bunch(): Add option --backup.


0.29    2013-08-21  Released-By: SHARYANTO

        [ENHANCEMENTS]

        - 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.

        [REMOVED FEATURES]

        - Remove backup_bunch (deprecated since v0.22).


0.28    2013-05-18  Released-By: SHARYANTO

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


0.27    2013-05-18  Released-By: SHARYANTO

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


0.26    2012-12-20  Released-By: SHARYANTO

        - No functional changes. Tweak error message.


0.25    2012-11-20  Released-By: SHARYANTO

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


0.24    2012-10-24  Released-By: SHARYANTO

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


0.23    2012-07-24  Released-By: SHARYANTO

        [BUG FIXES]

        - Fix getting exit code from $?.

        [DOCUMENTATION]

        - 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  Released-By: SHARYANTO

        - Add `use_bare` option.

        - Declare `backup_bunch` deprecated.


0.21    2012-04-16  Released-By: SHARYANTO

        - Check: detect repo needs merging.


0.20    2012-04-10  Released-By: SHARYANTO

        - No functional change. Small update to metadata.


0.19    2012-03-08  Released-By: SHARYANTO

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


0.18    2012-03-03  Released-By: SHARYANTO

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


0.17    2012-03-02  Released-By: SHARYANTO

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


0.16    2011-09-16  Released-By: SHARYANTO

        [INCOMPATIBLE CHANGES]

        - 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  Released-By: 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  Released-By: SHARYANTO

        [INCOMPATIBLE CHANGES]

        - 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  Released-By: SHARYANTO

        [ENHANCEMENTS]

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

        [BUG FIXES]

        - backup_bunch: Do not index excluded items.


0.12    2011-06-04  Released-By: SHARYANTO

        - No functional changes.

        [BUG FIXES]

        - Fix spec for exec_bunch().


0.11    2011-06-04  Released-By: SHARYANTO

        - No functional changes.

        [BUG FIXES]

        - Fix spec for exec_bunch().


0.10    2011-06-04  Released-By: SHARYANTO

        [NEW FEATURES]

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

        [ENHANCEMENTS]

        - Add --exclude_repos_pat and --include_repos_pat options.

        - Exclude/include repos options added to all functions.


0.09    2011-04-19  Released-By: SHARYANTO

        - Add --exclude_repos to sync_bunch.


0.08    2011-03-04  Released-By: SHARYANTO

        - Fix test when run as root.


0.07    2011-03-04  Released-By: SHARYANTO

        - Sort repos in sorted order.

        - Fix: pass extra_rsync_opts to rsync.

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


0.06    2011-02-28  Released-By: 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
          source/target.

        - Add tests.


0.05    2011-02-22  Released-By: SHARYANTO

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


0.04    2011-02-16  Released-By: SHARYANTO

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


0.03    2011-02-16  Released-By: SHARYANTO

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


0.02    2011-02-15  Released-By: SHARYANTO

        - Change log levels.


0.01    2011-02-15  Released-By: SHARYANTO

        - First release.