The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

git-server - Secure Git Server with more granular hooks capabilities than default git.

SYNOPSIS

  Standard Method:
  With SHELL=/bin/bash, use the following format in ~/.ssh/authorized_keys:
  command="git-server KEY=USER1" ssh-rsa AAAA___blah_pub__ user1@workstation

   -- OR --

  Advanced Method:
  Set SHELL=/usr/bin/git-server (in etc/passwd) and
  Set "PermitUserEnvironment yes" (in etc/ssh/sshd_config)
  Then use the following format in ~/.ssh/authorized_keys:
  environment="KEY=USER1" ssh-rsa AAAA___blah_pub__ user1@workstation

ENV

You can set as many %ENV variables as you want within the authorized_keys configuration.

INSTALL

This can be used with any existing git repositories or as a drop-in replacement for git-shell or you can create a fresh repo on the git host:

  git init --bare project

Then add whatever hooks you want:

  vi project/.git/hooks/pre-read

Each hook can read the ENV settings defined in authorized_keys.

See contrib/* or hooks/* for some working "hooks" examples.

HOOKS

All the normal git hooks will continue to work, plus the following:

hooks/pre-read

Executed before any repository read operation, such as "git clone" or "git pull". If the pre-read exit status is non-zero, then the read operation will be aborted.

hooks/post-read

Executed after the git operation completes even if it was successful. There will be one argument "exit=$EXIT" passed to post-read, which is the exit status of the git operation. The post-read hook can parse this parameter if it needs to determine if the git operation was successful or not.

hooks/pre-write

Executed before any repository modification attempt, such as "git push". Unlike the hooks/update hook, this hooks/pre-write will always be triggered for write operations, even if there are no actual changes that need to be made.

hooks/post-write

Same as hooks/post-read except for write operations.

SEE ALSO

Similar functionality to the following:

  gitlab-shell, gitolite, git-shell

AUTHOR

Rob Brown <bbb@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2015 by Rob Brown <bbb@cpan.org>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.