path: root/about
diff options
author <Richard_Maw@web>2017-02-12 12:36:11 +0000
committerDaniel Silverstone <>2017-02-12 12:36:11 +0000
commit0374501ad45a9eba5e861fa20eca3f2349d9af4c (patch)
treeea9597396ab3ca95b07ee373b941e3c78d811eff /about
parent715deeff25c310197e5343befebcf776db0ced44 (diff)
Describe how gitano works as a git server
Diffstat (limited to 'about')
1 files changed, 12 insertions, 0 deletions
diff --git a/about/what-is.mdwn b/about/what-is.mdwn
index 49a5e5e..b4bdeba 100644
--- a/about/what-is.mdwn
+++ b/about/what-is.mdwn
@@ -13,3 +13,15 @@ with additional server-side commands for easier administration
accessible over the git, http and ssh transport protocols.
<!-- More in-depth description of features -->
+NOTE: This section is a work in progress
+# Is a git server
+Git servers implement the `git-{receive,upload}-pack` commands when accessed over ssh, handle requests to `/info/refs?service=git-{upload,receive}-pack` when accessed over http, and the bespoke protocol of the git transport.
+Gitano implements the ssh interface by generating a `.ssh/authorized_keys` file for all the permitted ssh keys that runs a proxy command that determines which user the key belonged to and whether the user is permitted to run the requested command before running the git command.
+Gitano implements the http interface by providing `gitano-smart-http.cgi` which the system administrator configures their web server to run, which authenticates the user based on a generated htpasswd file then determines whether the authenticated user is permitted to run the requested service before handing it off to `git-http-backend`.
+Gitano implements the git interface by generating `git-daemon-export-ok` files for every repository that the anonymous user is permitted to read.