| ... | ... |
@@ -7,6 +7,70 @@ host. |
| 7 | 7 |
[Git]: https://en.wikipedia.org/wiki/Git |
| 8 | 8 |
[gitolite]: https://gitolite.com |
| 9 | 9 |
|
| 10 |
+## Usage |
|
| 11 |
+ |
|
| 12 |
+`git-gitolite --help`: |
|
| 13 |
+ |
|
| 14 |
+``` |
|
| 15 |
+git-gitolite 1.0 |
|
| 16 |
+ |
|
| 17 |
+Manage the counterpart of a local Git repository on a remote gitolite |
|
| 18 |
+host. |
|
| 19 |
+ |
|
| 20 |
+usage: |
|
| 21 |
+ git-gitolite help |
|
| 22 |
+ git-gitolite info |
|
| 23 |
+ git-gitolite init <license> [<description> [<references>]] |
|
| 24 |
+ git-gitolite remote |
|
| 25 |
+ git-gitolite head |
|
| 26 |
+ git-gitolite publish |
|
| 27 |
+ git-gitolite unpublish |
|
| 28 |
+ git-gitolite rm |
|
| 29 |
+ git-gitolite <command> [<args>...] |
|
| 30 |
+ git-gitolite --help|-h |
|
| 31 |
+ git-gitolite --version |
|
| 32 |
+ |
|
| 33 |
+commands: |
|
| 34 |
+ help |
|
| 35 |
+ Runs the gitolite 'help' command. |
|
| 36 |
+ info |
|
| 37 |
+ Runs the gitolite 'info' command. |
|
| 38 |
+ init |
|
| 39 |
+ Creates and commits, separately, readme and license files. |
|
| 40 |
+ A note about the <license> (which should be an SPDX identifier), as |
|
| 41 |
+ well as <description> and <references> if given, is inserted into the |
|
| 42 |
+ readme. The readme is opened in the editor configured for git |
|
| 43 |
+ for review before each commit. This command then (re)sets the remote |
|
| 44 |
+ URL, creates the remote repository and pushes. |
|
| 45 |
+ remote |
|
| 46 |
+ (Re)sets the remote URL. |
|
| 47 |
+ head |
|
| 48 |
+ Resets the remote HEAD to point to the same ref as the local HEAD, |
|
| 49 |
+ making it the default view on a web server. |
|
| 50 |
+ publish |
|
| 51 |
+ Grants read permissions to 'gitweb', making it viewable through a |
|
| 52 |
+ web server. |
|
| 53 |
+ unpublish |
|
| 54 |
+ Revokes read permissions from 'gitweb', preventing it from being |
|
| 55 |
+ viewable through a web server. |
|
| 56 |
+ rm |
|
| 57 |
+ (Unlocks and) removes the remote repository. |
|
| 58 |
+ <command> |
|
| 59 |
+ Perform a gitolite command, filling in the host and repository name |
|
| 60 |
+ automatically. See `git-gitolite help` for a list of commands. |
|
| 61 |
+ |
|
| 62 |
+environment variables: |
|
| 63 |
+ GIT_GITOLITE_USER |
|
| 64 |
+ The gitolite user under which repositories are found. |
|
| 65 |
+ [default: $USER] |
|
| 66 |
+ GIT_GITOLITE_HOST |
|
| 67 |
+ The host to connect to. |
|
| 68 |
+ [default: git.$(dnsdomainname)] |
|
| 69 |
+ GIT_GITOLITE_REMOTE |
|
| 70 |
+ The git remote used to identify the gitolite server. |
|
| 71 |
+ [default: origin] |
|
| 72 |
+``` |
|
| 73 |
+ |
|
| 10 | 74 |
## License |
| 11 | 75 |
|
| 12 | 76 |
Licensed under the [ISC License][] unless otherwise noted, see the |
| 13 | 77 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,107 @@ |
| 1 |
+#!/bin/sh |
|
| 2 |
+set -euC |
|
| 3 |
+ |
|
| 4 |
+##/// git-gitolite 1.0 |
|
| 5 |
+#//// |
|
| 6 |
+#//// Manage the counterpart of a local Git repository on a remote gitolite |
|
| 7 |
+#//// host. |
|
| 8 |
+#//// |
|
| 9 |
+###// usage: |
|
| 10 |
+#//// git-gitolite help |
|
| 11 |
+#//// git-gitolite info |
|
| 12 |
+#//// git-gitolite init <license> [<description> [<references>]] |
|
| 13 |
+#//// git-gitolite remote |
|
| 14 |
+#//// git-gitolite head |
|
| 15 |
+#//// git-gitolite publish |
|
| 16 |
+#//// git-gitolite unpublish |
|
| 17 |
+#//// git-gitolite rm |
|
| 18 |
+#//// git-gitolite <command> [<args>...] |
|
| 19 |
+#//// git-gitolite --help|-h |
|
| 20 |
+#//// git-gitolite --version |
|
| 21 |
+#//// |
|
| 22 |
+###// commands: |
|
| 23 |
+####/ help |
|
| 24 |
+#//// Runs the gitolite 'help' command. |
|
| 25 |
+####/ info |
|
| 26 |
+#//// Runs the gitolite 'info' command. |
|
| 27 |
+####/ init |
|
| 28 |
+#//// Creates and commits, separately, readme and license files. |
|
| 29 |
+#//// A note about the <license> (which should be an SPDX identifier), as |
|
| 30 |
+#//// well as <description> and <references> if given, is inserted into the |
|
| 31 |
+#//// readme. The readme is opened in the editor configured for git |
|
| 32 |
+#//// for review before each commit. This command then (re)sets the remote |
|
| 33 |
+#//// URL, creates the remote repository and pushes. |
|
| 34 |
+####/ remote |
|
| 35 |
+#//// (Re)sets the remote URL. |
|
| 36 |
+####/ head |
|
| 37 |
+#//// Resets the remote HEAD to point to the same ref as the local HEAD, |
|
| 38 |
+#//// making it the default view on a web server. |
|
| 39 |
+####/ publish |
|
| 40 |
+#//// Grants read permissions to 'gitweb', making it viewable through a |
|
| 41 |
+#//// web server. |
|
| 42 |
+####/ unpublish |
|
| 43 |
+#//// Revokes read permissions from 'gitweb', preventing it from being |
|
| 44 |
+#//// viewable through a web server. |
|
| 45 |
+####/ rm |
|
| 46 |
+#//// (Unlocks and) removes the remote repository. |
|
| 47 |
+####/ <command> |
|
| 48 |
+#//// Perform a gitolite command, filling in the host and repository name |
|
| 49 |
+#//// automatically. See `git-gitolite help` for a list of commands. |
|
| 50 |
+#//// |
|
| 51 |
+###// environment variables: |
|
| 52 |
+####/ GIT_GITOLITE_USER |
|
| 53 |
+#//// The gitolite user under which repositories are found. |
|
| 54 |
+#//// [default: $USER] |
|
| 55 |
+####/ GIT_GITOLITE_HOST |
|
| 56 |
+#//// The host to connect to. |
|
| 57 |
+#//// [default: git.$(dnsdomainname)] |
|
| 58 |
+####/ GIT_GITOLITE_REMOTE |
|
| 59 |
+#//// The git remote used to identify the gitolite server. |
|
| 60 |
+#//// [default: origin] |
|
| 61 |
+ |
|
| 62 |
+## Messages |
|
| 63 |
+prog="$(basename "$0")" |
|
| 64 |
+help() { sed -n 's|^#[#/]*/ \?||p' "$0"; exit 0; }
|
|
| 65 |
+version() { help | awk '/^$/{++p;next}p==0'; exit 0; }
|
|
| 66 |
+usage() { help | awk '/^$/{++p;next}p==2'; exit 0; }
|
|
| 67 |
+parse() { printf '%s: error: %s\n' "$prog" "$1"; usage; exit 1; } >&2
|
|
| 68 |
+error() { printf '%s: error: %s\n' "$prog" "$1"; exit 1; } >&2
|
|
| 69 |
+warning() { printf '%s: warning: %s\n' "$prog" "$1"; } >&2
|
|
| 70 |
+opt() { [ $# -gt 1 ] || parse "option '$1' value not provided"; }
|
|
| 71 |
+arg() { [ $# -gt 1 ] || parse "argument '$1' not provided"; }
|
|
| 72 |
+argend() { [ $# -eq 0 ] || parse "unrecognized argument '$1'"; }
|
|
| 73 |
+ |
|
| 74 |
+## Parse special options |
|
| 75 |
+case "${1:-}"
|
|
| 76 |
+in |
|
| 77 |
+ '-h'|'--help') help; ;; |
|
| 78 |
+ '--version') version; ;; |
|
| 79 |
+esac |
|
| 80 |
+ |
|
| 81 |
+## Parse required arguments |
|
| 82 |
+arg 'command' "$@"; command="$1"; shift; |
|
| 83 |
+ |
|
| 84 |
+case "$command" in |
|
| 85 |
+ 'init') |
|
| 86 |
+ ## Parse required arguments |
|
| 87 |
+ arg 'license' "$@"; license="$1"; shift; |
|
| 88 |
+ |
|
| 89 |
+ ## Parse optional arguments |
|
| 90 |
+ description='<DESCRIPTION>' |
|
| 91 |
+ references='' |
|
| 92 |
+ [ $# -eq 0 ] || { description="$1"; shift; }
|
|
| 93 |
+ [ $# -eq 0 ] || { references="$1"; shift; }
|
|
| 94 |
+ ;; |
|
| 95 |
+esac |
|
| 96 |
+ |
|
| 97 |
+## Parse unrecognized arguments |
|
| 98 |
+case "$command" in |
|
| 99 |
+ 'help'|'info'|'init'|'remote'|'head'|'publish'|'unpublish'|'rm') |
|
| 100 |
+ argend |
|
| 101 |
+ ;; |
|
| 102 |
+esac |
|
| 103 |
+ |
|
| 104 |
+## Parse environment variables |
|
| 105 |
+user="${GIT_GITOLITE_USER:-"$USER"}"
|
|
| 106 |
+host="${GIT_GITOLITE_HOST:-"git.$(dnsdomainname)"}"
|
|
| 107 |
+remote="${GIT_GITOLITE_REMOTE:-"origin"}"
|