Revision History for Git::Server

0.038  2026-03-21 04:00:00
 - More consistent messaging and logging.
 - Fix ref RegExp to allow more valid characters.
 - Move logging from pre-* to post-* hook.
 - Only show push-notifications to pusher if DEBUG.
 - Add {server_git_duration} to webhook hash info.
 - Show {server_git_duration} in log.logfile.
 - Show push / pull / deploy branches in log.logfile.
 - Show git-deploy / git-client version in log.
 - Handle [git { -v | --version | version }] and
   report $VERSION if properly overrode via git-client.
 - And git-deploy --version also reports $VERSION too.
 - Make git-client honor {-C|--chdir} properly so
   "git -C <dir> config --descent --list" works now
   and allows multiple "-C" to behave like real git.
 - Allow multiple git-deploy running on the same
   machine if they are pinned to different branches.
   (Deploying the same branch will kill the first.)
 - Use consistent {server_git_*} has for webhook info.
 - Don't use deprecated {git_client_connected} anymore.
 - Properly log "cloned" for "git clone" command.
 - Suppress that huge {refs} log for "git clone".
 - Backward compatibility patches for older versions
   * Perl 5.8.8
   * File::Temp 0.16
   * IO::Trace 0.23
   * strace 4.5.18

0.037  2026-02-14 19:00:00
 - Add SCP-style support for proxy.url.
 - Add git-verify config sanity checker.
 - Deprecate use of $ENV{KEY}.
 - Instead use REMOTE_USER to be more like HTTP.
 - & REMOTE_ADDR REMOTE_PORT SERVER_ADDR SERVER_PORT
   instead of SSH_CLIENT or SSH_CONNECTION.
 - Change colon to newline as git-client delimiter.
 - Don't require IO::Trace if strace is available.
 - Use default "main" instead of "master" branch.

0.036  2026-02-02 23:30:00
 - Minor typo in doc.
 - Fix path in spec for cron ENV.

0.035  2025-10-22 22:00:00
 - Pull out iotrace into its own IO::Trace module.
 - Make iotrace be preferred over strace.
 - Fix warn spewage: Duplicate specification "C=s"
 - Allow fixin for spec.

0.034  2025-10-11 22:00:00
 - Make git-deploy always honor GIT_SSH_COMMAND.
 - SECURITY: Fix acl.restrictip functionality.
 - Fix Git-Server.spec.PL generator
 - Several git-client improvements:
 * Fix "{-o|-O} <OPTION>" parsing.
 * Always honor all --global and --system settings.
 * Fallback to include all .gitconfig descent files.
 * Nifty add fake "scope": git config [--descent]
 * Add GIT_CLIENT_OVERRIDE* env

0.033  2025-09-16 16:00:00
 - Update install recipe back to github
   to avoid CPAN's anti-bot blocker.

0.032  2025-09-16 05:00:00
 - Migrate to real module Git::Server
 - Allow dangerous non-bare repositories again.
 - But prevent cloning proxy workingdir.
 - Ensure octal trace chars are below 0400.
 - Allow git-deploy to follow updated branch.
 - Split out test suites.
 - Show installation from CPAN instead of github.
 - Other package distribution modifications.

0.031  2025-07-17 21:00:00
 - Only support bare repositories on the server.
 - Package distribution modifications.

0.030  2025-06-14 15:00:00
 - Clear old tmpdir entries from DEBUG sessions.
 - Make exact branch match stronger than RegEx or
   "*" branch for restrictedbranch.pushers and
   restrictedbranch.forcers directives.
 - Allow repo names to have single quotes.
 - Honor GIT_SSH_COMMAND in git-client.

0.029  2025-01-23 13:00:00
 - Fix git-deploy --chdir option
   (Broken since 0.025)

0.028  2025-01-20 03:00:00
 - Handle "git ls-remote" as a remote operation.
 - Initial add of proxy.url feature to do Two-Way
   sync with external repo from the server side.
 - Repair --fix-nasty to all host key types.
   (Broken since 0.018)
 - Forward compatibility fixes for ssh-keyscan
   under the new OpenSSH 9.x.
 - Update docs to handle new ed25519 algorithm.
 - Split up git-server logic into proxy/git-server.
 - Combine INSTALL.md docs into single file.
 - Got rid of confusing contrib/ folder.
 - Make git-client pass DEBUG env to server.
 - Automatically configure repo hooks and acl.writers
   settings upon the first git operation.

0.027  2025-01-13 18:00:00
 - Backwards compatible fix for git 1.8.x and older.

0.026  2025-01-04 23:00:00
 - Include commit {time} epoch stamp in webhook details.
 - And push/pull {git_client_connected} stamp.
 - And git clone commits list.
 - Fixed log.rotate logic to ensure rotation.
 - Make log.rotate "0" mean unlimited rotating log files.
 - Add restrictedfile.pushers feature to restrict pushing changes
   to specified file(s) by only allowing certain users.
 - Add acl.restrictemail feature to whitelist commit Author email.
 - Add acl.restrictip feature to whitelist IPs.

0.025  2025-01-01 23:00:00
 - SECURITY: Prevent concurrent --build executions.
 - Recover from duplicate rebase conflict.
 - Populate GIT_DIR for convention.
 - Include git comment line in webhook post.
 - Add log rotation support:
   * git config log.logfile logs/access_log
   * git config log.compress true
   * git config log.daily true
   * git config log.weekly false
   * git config log.rotate 365
 - Include more commit details to webhook post:
   Date,Subject,Author,Files

0.024  2024-07-22 12:00:00
 - SECURITY: git-client wrapper skips calling others again
 - Remove {old} and {new} elements from webhook data.
 - Remove rare empty elements in webhook data.
 - Include {commit} key for {backward} and {forward} lists.

0.023  2024-07-08 19:00:00
 - Optimize clone case info.
 - Optimize failed push case info.
 - Try to only return each branch once for pull requests.
 - Handle case when commits have two parents.
 - Include {forward} list in case pushing more than one commit.
 - Provide {backward} list of reverted commits, if any.
 - Calculate {forward} list for pull operations.

0.022  2024-06-30 12:00:00
 - Use GIT_CONFIG_GLOBAL instead of monkeying HOME.
 - Restore %ENV even when the "pre" hook fails.
 - Escape and Unescape ENV values properly.
 - Canonize JSON output.
 - Fix SIGPIPE crashing in DEBUG mode.
 - Parse -o "options" properly for DEBUG mode.
 - Provide {git_client_options} to webhook instead
   of the cryptic {xmodifiers} string.
 - Security Optimization: Use block eval instead of
   more dangerous slower stringy eval cheese method.
 - Release git client as soon as log files are read
   so the processing of webhooks can be backgrounded.

0.021  2024-06-26 12:00:00
 - Fix race condition when backgrounding "post" hook.
 - Fix proctitle mapping when --chdir is used.
 - Honor umask setting instead of hard-code 0002.
 - Add --umask option to override umask.
 - Remove annoying git-client invocation hint.

0.020  2024-06-20 23:00:00
 - Hint fix if git-client was invoked unexpectedly.
 - Add -O <OPTION> for git-client and git-deploy.
 - Add server support for push-options by fixing:
   ERR: receiving end does not support push options
 - Continue git-deploy process when local changes.
 - More compatible "ps" sniffer on non-linux
   Operating Systems running "git deploy".

0.019  2024-06-16 20:00:00
 - Populate GIT_OPTION_* environment variables for
   "pre" hooks on server when "-o" option is
   used with the git-client wrapper.
 - Set env DEBUG when in DEBUG mode.
 - Keep IPC folder if DEBUG mode is enabled.
 - OPTIMIZATION: Use exec in "post" hooks.
 - OPTIMIZATION: Background "post" hook.
 - Add hooks/git-server-override feature to debug.

0.018  2024-06-16 15:00:00
 - SECURITY FIX: Prevent client from bypassing
   restrictedbranch.forcers ACLs.
 - Fixed strace log octal binary decoding.
 - Provive IPC ENV for pre hooks as well.
 - Always run post-* hook, even if pre-* hook fails.
 - Extract WebHook HTTP Status for post-action.
 - Fix rebase --abort syntax.
 - Reduce max processes by losing the "sh -c ..."
   intermediary middle sandwich process.
 - Add "git deploy --branch" option.
 - Add "git deploy --chdir" feature.
 - Add "git deploy --max-delay" feature.
 - Add "git deploy --background" option.
 - Provide push branch info for IPC parser.
 - Include old and new commit IDs and branch in webhook.
 - Provide the {common} commit ID where the new
   git branch was forked from.
 - Honor GIT_EXIT_STATUS when replaying ipc-parse.
 - Fixed git agent version sniffer regex.
 - Update documentation.

0.017  2024-06-07 09:00:00
 - Allow multiple git-deploy to run in parallel.
 - Allow git-server to override git-shell.
 - Let git-deploy work with branch containing "-".
 - Implement hooks/git-shell wrapper feature.
 - SECURITY: Block unrecognized git operations.
 - Pass XMODIFIERS env for extended functionality.
 - Allow git client to choose to enable DEBUG mode.
 - Let git client choose the deploy timeout.
 - Updated MANIFEST to include required files.
 - Client can now pass XMODIFIERS to git-server
   for extended functionalities.
 - Create IPC folder to facilitate communications
   among different processes.
 - Extract client "want" and "have" packets.
 - Add [webhook] callback with following features:
   * Supports unlimited multiple callback URLs.
   * Any HTTP or HTTPS URLs.
   * Allows for insecure HTTPS certificate.
   * [webhook.__.method] POST method.
   * [webhook.__.transport] JSON Hash.
   * Support for IPv4 and IPv6.
 - Now [webhook] will POST the following information:
   * Git Operation (clone, pull, push)
   * Repo SSH URL
   * Server Git version
   * Client Git version
   * Client IP/Port
   * Client SSH Key used

0.016  2024-05-25 22:00:00
 - Update TODO wishlist.
 - Use "git remote rm" instead of "--unset" hack.
 - Backward compatibility fixes for git 1.7.1
 - Auto-Respawn git-deploy after update.
 - Handle git-deploy detached case earlier.
 - Never default to 'master' branch anymore.

0.015  2024-05-10 01:00:00
 - Cosmetic adjustments to some messages.
 - Fix more ID Message format [$KEY@$IP]
 - Fix syntax of BAK tag suggestion.
 - Try harder to steal notification lock.
 - Fix git-deploy to properly deploy changes
   that got reverted using "push --force"
   to break out of the rebase detached loop.

0.014  2024-04-21 22:00:00
 - Consistent ID Message format [$KEY@$IP]
 - Fix perl path for installing helper scripts
 - Fix '\' escaping in pushers & forcers syntax
 - Require backup tag or branch before history
   can be destroyed.
 - Add hint that [forcers] can delete a branch.

0.013  2024-04-07 12:00:00
 - Update INSTALL recipe
 - Initial add of [forcers] feature to prevent
   unauthorized users from rewriting git history,
   such as: git push --force
 - Include more examples in hooks/INSTALL_ACL.md
 - Fix Git-Deploy to handle reverted chokes:
   CRASH: Your branch and origin have
   diverged and have different commits.

0.012  2019-07-11 14:00:00
 - Fix "git clone" .gitconfig override

0.011  2019-05-13 12:00:00
 - Add --fix-nasty option
 - Use external sleep for easy bypass
 - Handle special detached commit
 - Add sample [log] config
 - Add [restrictedbranch] support
 - Recover from "fatal: File exists" crash

0.010  2016-04-08 10:00:00
 - Make "git deploy" default to current branch.
 - Minor INSTALL doc fixes.

0.009  2016-03-31 12:00:00
 - Add "git deploy" feature.
 - Add git-client convenience wrapper.
 - Add optional log.logfile support.

0.008  2016-02-03 17:00:00
 - Notify client when quick pulling.

0.007  2016-01-30 22:00:00
 - Allow git client to checkout repo.git too

0.006  2015-07-27 12:00:00
 - Fix instant push
 - Handle case where repo URL starts with tilde ("~")
 - Handle SSH repo URL with relative path

0.005  2015-07-01 20:00:00
 - Minor cosmetic changes

0.004  2015-06-27 09:00:00
 - Include example ACL configuration.
 - Add automatic deployment instructions (instant push notification)

0.003  2015-06-16 15:15:00
 - Documental Fixes

0.002  2015-06-16 15:00:00
 - Documental Fixes Only

0.001  2015-06-16 14:00:00
 - Original release of git-server
