summary refs log tree commit diff
path: root/gnu/services/version-control.scm
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2018-09-29 21:18:45 -0400
committerMark H Weaver <mhw@netris.org>2018-09-29 21:18:45 -0400
commit17bea1803cf706d8db053d8d73302a4455684d29 (patch)
tree073d30a8ff065d4e08cc4901f7e97e72a9de68a6 /gnu/services/version-control.scm
parente72ca4111fce4b05bf2a685e451f26e06680e36c (diff)
downloadguix-17bea1803cf706d8db053d8d73302a4455684d29.tar.gz
Revert "services: Add Gitolite."
This reverts commit 258a6d944ed891fa92fa87a16731e5dfe0bac477.
Diffstat (limited to 'gnu/services/version-control.scm')
-rw-r--r--gnu/services/version-control.scm179
1 files changed, 1 insertions, 178 deletions
diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm
index cc8cd22021..58274c8bee 100644
--- a/gnu/services/version-control.scm
+++ b/gnu/services/version-control.scm
@@ -3,7 +3,6 @@
 ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -41,23 +40,7 @@
 
             git-http-configuration
             git-http-configuration?
-            git-http-nginx-location-configuration
-
-            <gitolite-configuration>
-            gitolite-configuration
-            gitolite-configuration-package
-            gitolite-configuration-user
-            gitolite-configuration-rc-file
-            gitolite-configuration-admin-pubkey
-
-            <gitolite-rc-file>
-            gitolite-rc-file
-            gitolite-rc-file-umask
-            gitolite-rc-file-git-config-keys
-            gitolite-rc-file-roles
-            gitolite-rc-file-enable
-
-            gitolite-service-type))
+            git-http-nginx-location-configuration))
 
 ;;; Commentary:
 ;;;
@@ -214,163 +197,3 @@ access to exported repositories under @file{/srv/git}."
             "")
         (list "fastcgi_param GIT_PROJECT_ROOT " git-root ";")
         "fastcgi_param PATH_INFO $1;"))))))
-
-
-;;;
-;;; Gitolite
-;;;
-
-(define-record-type* <gitolite-rc-file>
-  gitolite-rc-file make-gitolite-rc-file
-  gitolite-rc-file?
-  (umask           gitolite-rc-file-umask
-                   (default #o0077))
-  (git-config-keys gitolite-rc-file-git-config-keys
-                   (default ""))
-  (roles           gitolite-rc-file-roles
-                   (default '(("READERS" . 1)
-                              ("WRITERS" . 1))))
-  (enable          gitolite-rc-file-enable
-                   (default '("help"
-                              "desc"
-                              "info"
-                              "perms"
-                              "writable"
-                              "ssh-authkeys"
-                              "git-config"
-                              "daemon"
-                              "gitweb"))))
-
-(define-gexp-compiler (gitolite-rc-file-compiler
-                       (file <gitolite-rc-file>) system target)
-  (match file
-    (($ <gitolite-rc-file> umask git-config-keys roles enable)
-     (apply text-file* "gitolite.rc"
-      `("%RC = (\n"
-        "    UMASK => " ,(format #f "~4,'0o" umask) ",\n"
-        "    GIT_CONFIG_KEYS => '" ,git-config-keys "',\n"
-        "    ROLES => {\n"
-        ,@(map (match-lambda
-                 ((role . value)
-                  (simple-format #f "        ~A => ~A,\n" role value)))
-               roles)
-        "    },\n"
-        "\n"
-        "    ENABLE => [\n"
-        ,@(map (lambda (value)
-                 (simple-format #f "        '~A',\n" value))
-               enable)
-        "    ],\n"
-        ");\n"
-        "\n"
-        "1;\n")))))
-
-(define-record-type* <gitolite-configuration>
-  gitolite-configuration make-gitolite-configuration
-  gitolite-configuration?
-  (package        gitolite-configuration-package
-                  (default gitolite))
-  (user           gitolite-configuration-user
-                  (default "git"))
-  (group          gitolite-configuration-group
-                  (default "git"))
-  (home-directory gitolite-configuration-home-directory
-                  (default "/var/lib/gitolite"))
-  (rc-file        gitolite-configuration-rc-file
-                  (default (gitolite-rc-file)))
-  (admin-pubkey   gitolite-configuration-admin-pubkey))
-
-(define gitolite-accounts
-  (match-lambda
-    (($ <gitolite-configuration> package user group home-directory
-                                 rc-file admin-pubkey)
-     ;; User group and account to run Gitolite.
-     (list (user-group (name user) (system? #t))
-           (user-account
-            (name user)
-            (group group)
-            (system? #t)
-            (comment "Gitolite user")
-            (home-directory home-directory))))))
-
-(define gitolite-activation
-  (match-lambda
-    (($ <gitolite-configuration> package user group home
-                                 rc-file admin-pubkey)
-     #~(begin
-         (use-modules (ice-9 match)
-                      (guix build utils))
-
-         (let* ((user-info (getpwnam #$user))
-                (admin-pubkey #$admin-pubkey)
-                (pubkey-file (string-append
-                              #$home "/"
-                              (basename
-                               (strip-store-file-name admin-pubkey)))))
-
-           (simple-format #t "guix: gitolite: installing ~A\n" #$rc-file)
-           (copy-file #$rc-file #$(string-append home "/.gitolite.rc"))
-
-           ;; The key must be writable, so copy it from the store
-           (copy-file admin-pubkey pubkey-file)
-
-           (chmod pubkey-file #o500)
-           (chown pubkey-file
-                  (passwd:uid user-info)
-                  (passwd:gid user-info))
-
-           ;; Set the git configuration, to avoid gitolite trying to use
-           ;; the hostname command, as the network might not be up yet
-           (with-output-to-file #$(string-append home "/.gitconfig")
-             (lambda ()
-               (display "[user]
-        name = GNU Guix
-        email = guix@localhost
-")))
-           ;; Run Gitolite setup, as this updates the hooks and include the
-           ;; admin pubkey if specified. The admin pubkey is required for
-           ;; initial setup, and will replace the previous key if run after
-           ;; initial setup
-           (match (primitive-fork)
-             (0
-              ;; Exit with a non-zero status code if an exception is thrown.
-              (dynamic-wind
-                (const #t)
-                (lambda ()
-                  (setenv "HOME" (passwd:dir user-info))
-                  (setenv "USER" #$user)
-                  (setgid (passwd:gid user-info))
-                  (setuid (passwd:uid user-info))
-                  (primitive-exit
-                   (system* #$(file-append package "/bin/gitolite")
-                            "setup"
-                            "-m" "gitolite setup by GNU Guix"
-                            "-pk" pubkey-file)))
-                (lambda ()
-                  (primitive-exit 1))))
-             (pid (waitpid pid)))
-
-           (when (file-exists? pubkey-file)
-             (delete-file pubkey-file)))))))
-
-(define gitolite-service-type
-  (service-type
-   (name 'gitolite)
-   (extensions
-    (list (service-extension activation-service-type
-                             gitolite-activation)
-          (service-extension account-service-type
-                             gitolite-accounts)
-          (service-extension profile-service-type
-                             ;; The Gitolite package in Guix uses
-                             ;; gitolite-shell in the authorized_keys file, so
-                             ;; gitolite-shell needs to be on the PATH for
-                             ;; gitolite to work.
-                             (lambda (config)
-                               (list
-                                (gitolite-configuration-package config))))))
-   (description
-    "Setup @command{gitolite}, a Git hosting tool providing access over SSH..
-By default, the @code{git} user is used, but this is configurable.
-Additionally, Gitolite can integrate with with tools like gitweb or cgit to
-provide a web interface to view selected repositories.")))