Add simple hook management
Introduces a new user configuration variable `hook-alist', which specifies which hooks to link to which executables, for example: ,---- | (set! hook-alist '(("commit-msg" . "/path/to/my/commit/msg/hook"))) `---- With this setting the command `config hooks' will install `/path/to/my/commit/msg/hook' to the `commit-msg' hook of each repository not in the `config-exclusion-list' setting.
This commit is contained in:
parent
8b3f0d16d3
commit
439a262ec4
2 changed files with 19 additions and 1 deletions
|
@ -21,12 +21,24 @@
|
||||||
#:use-module (ice-9 format)
|
#:use-module (ice-9 format)
|
||||||
#:use-module (ice-9 rdelim)
|
#:use-module (ice-9 rdelim)
|
||||||
#:export (global-config
|
#:export (global-config
|
||||||
|
hook-alist
|
||||||
|
|
||||||
|
install-hooks
|
||||||
merge-config
|
merge-config
|
||||||
read-config
|
read-config
|
||||||
write-config))
|
write-config))
|
||||||
|
|
||||||
(define global-config '())
|
(define global-config '())
|
||||||
|
(define hook-alist '())
|
||||||
|
|
||||||
|
(define (install-hooks repo-location)
|
||||||
|
(for-each
|
||||||
|
(lambda (hook)
|
||||||
|
(let ((new-name (string-append repo-location "/.git/hooks/"
|
||||||
|
(car hook))))
|
||||||
|
(unless (file-exists? new-name)
|
||||||
|
(symlink (cdr hook) new-name))))
|
||||||
|
hook-alist))
|
||||||
|
|
||||||
(define (merge-config repo-name x y)
|
(define (merge-config repo-name x y)
|
||||||
(let ((lst (if x (list-copy x) '())))
|
(let ((lst (if x (list-copy x) '())))
|
||||||
|
|
|
@ -65,6 +65,7 @@ gitto [command [arguments ...]]
|
||||||
config global Show template configuration
|
config global Show template configuration
|
||||||
config update Merge template configuration with each
|
config update Merge template configuration with each
|
||||||
repository's configuration
|
repository's configuration
|
||||||
|
config hooks Install configured hooks for repositories
|
||||||
version Display version
|
version Display version
|
||||||
help Display this help
|
help Display this help
|
||||||
"))
|
"))
|
||||||
|
@ -180,7 +181,12 @@ gitto [command [arguments ...]]
|
||||||
(newline))
|
(newline))
|
||||||
repositories))
|
repositories))
|
||||||
((equal? (car args) "global") (show-global-config))
|
((equal? (car args) "global") (show-global-config))
|
||||||
((equal? (car args) "update") (update-config))))
|
((equal? (car args) "update") (update-config))
|
||||||
|
((equal? (car args) "hooks")
|
||||||
|
(for-each (lambda (r)
|
||||||
|
(unless (member (repo-name r) config-exclusion-list)
|
||||||
|
(install-hooks (repo-location r))))
|
||||||
|
repositories))))
|
||||||
(set! command-list (append command-list `(("config" . ,show-config))))
|
(set! command-list (append command-list `(("config" . ,show-config))))
|
||||||
|
|
||||||
(define (update-repo-config repo)
|
(define (update-repo-config repo)
|
||||||
|
|
Loading…
Reference in a new issue