| Hash | Commit message | Author | Date | Files | + | - |
1 | commit 96ab0b12973c52cf5c6747552fc0e375faaef149 |
2 | Author: Connor Etherington <[email protected]> |
3 | Date: Thu Apr 11 23:10:53 2024 +0200 |
4 | |
5 | Auto-Commit Update - 20240411 |
6 | --- |
7 | BUILD/PKGBUILD | 36 + |
8 | BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst | Bin 0 -> 471311 bytes |
9 | ...oncise-installer-0.1.1-1-x86_64.pkg.tar.zst.sig | Bin 0 -> 566 bytes |
10 | BUILD/concise-installer/HEAD | 1 + |
11 | BUILD/concise-installer/config | 8 + |
12 | BUILD/concise-installer/description | 1 + |
13 | .../concise-installer/hooks/applypatch-msg.sample | 15 + |
14 | BUILD/concise-installer/hooks/commit-msg.sample | 24 + |
15 | .../hooks/fsmonitor-watchman.sample | 174 ++ |
16 | BUILD/concise-installer/hooks/post-update.sample | 8 + |
17 | .../concise-installer/hooks/pre-applypatch.sample | 14 + |
18 | BUILD/concise-installer/hooks/pre-commit.sample | 49 + |
19 | .../hooks/pre-merge-commit.sample | 13 + |
20 | BUILD/concise-installer/hooks/pre-push.sample | 53 + |
21 | BUILD/concise-installer/hooks/pre-rebase.sample | 169 ++ |
22 | BUILD/concise-installer/hooks/pre-receive.sample | 24 + |
23 | .../hooks/prepare-commit-msg.sample | 42 + |
24 | .../hooks/push-to-checkout.sample | 78 + |
25 | .../hooks/sendemail-validate.sample | 77 + |
26 | BUILD/concise-installer/hooks/update.sample | 128 + |
27 | BUILD/concise-installer/info/exclude | 6 + |
28 | ...ck-cba2d0f0274111a7e0f22d879de9ebdd466459f0.idx | Bin 0 -> 5244 bytes |
29 | ...k-cba2d0f0274111a7e0f22d879de9ebdd466459f0.pack | Bin 0 -> 485227 bytes |
30 | ...ck-cba2d0f0274111a7e0f22d879de9ebdd466459f0.rev | Bin 0 -> 648 bytes |
31 | BUILD/concise-installer/packed-refs | 2 + |
32 | BUILD/pkg/concise-installer/.BUILDINFO | 1700 +++++++++++ |
33 | BUILD/pkg/concise-installer/.MTREE | Bin 0 -> 3381 bytes |
34 | BUILD/pkg/concise-installer/.PKGINFO | 15 + |
35 | .../etc/skel/.local/AutoLinux/AutoLinux | Bin 0 -> 132248 bytes |
36 | .../etc/skel/.local/AutoLinux/AutoLinux.c | 2961 ++++++++++++++++++++ |
37 | .../etc/skel/.local/AutoLinux/AutoLinux.desktop | 6 + |
38 | .../etc/skel/.local/AutoLinux/AutoLinux.o | Bin 0 -> 132152 bytes |
39 | .../etc/skel/.local/AutoLinux/LICENSE | 39 + |
40 | .../etc/skel/.local/AutoLinux/Makefile | 53 + |
41 | .../etc/skel/.local/AutoLinux/PKGBUILD | 29 + |
42 | .../etc/skel/.local/AutoLinux/autostart.sh | 10 + |
43 | .../etc/skel/.local/AutoLinux/config.h | 593 ++++ |
44 | .../etc/skel/.local/AutoLinux/config.mk | 39 + |
45 | .../etc/skel/.local/AutoLinux/definitions.h | 13 + |
46 | .../etc/skel/.local/AutoLinux/drw.c | 424 +++ |
47 | .../etc/skel/.local/AutoLinux/drw.h | 57 + |
48 | .../etc/skel/.local/AutoLinux/drw.o | Bin 0 -> 10320 bytes |
49 | .../icons/hicolor/1024x1024/apps/AutoLinux.png | Bin 0 -> 162233 bytes |
50 | .../icons/hicolor/128x128/apps/AutoLinux.png | Bin 0 -> 15015 bytes |
51 | .../icons/hicolor/16x16/apps/AutoLinux.png | Bin 0 -> 1125 bytes |
52 | .../icons/hicolor/192x192/apps/AutoLinux.png | Bin 0 -> 23356 bytes |
53 | .../icons/hicolor/22x22/apps/AutoLinux.png | Bin 0 -> 1708 bytes |
54 | .../icons/hicolor/24x24/apps/AutoLinux.png | Bin 0 -> 1907 bytes |
55 | .../icons/hicolor/256x256/apps/AutoLinux.png | Bin 0 -> 33215 bytes |
56 | .../icons/hicolor/32x32/apps/AutoLinux.png | Bin 0 -> 2758 bytes |
57 | .../icons/hicolor/36x36/apps/AutoLinux.png | Bin 0 -> 3094 bytes |
58 | .../icons/hicolor/48x48/apps/AutoLinux.png | Bin 0 -> 4686 bytes |
59 | .../icons/hicolor/512x512/apps/AutoLinux.png | Bin 0 -> 72652 bytes |
60 | .../icons/hicolor/64x64/apps/AutoLinux.png | Bin 0 -> 6575 bytes |
61 | .../icons/hicolor/72x72/apps/AutoLinux.png | Bin 0 -> 7702 bytes |
62 | .../icons/hicolor/96x96/apps/AutoLinux.png | Bin 0 -> 10787 bytes |
63 | .../icons/hicolor/scalable/apps/AutoLinux.svg | 1 + |
64 | .../hicolor/symbolic/apps/AutoLinux-symbolic.svg | 1 + |
65 | .../etc/skel/.local/AutoLinux/logo.png | Bin 0 -> 23356 bytes |
66 | .../etc/skel/.local/AutoLinux/patch/bar_ltsymbol.c | 18 + |
67 | .../etc/skel/.local/AutoLinux/patch/bar_ltsymbol.h | 3 + |
68 | .../etc/skel/.local/AutoLinux/patch/bar_status.c | 19 + |
69 | .../etc/skel/.local/AutoLinux/patch/bar_status.h | 3 + |
70 | .../etc/skel/.local/AutoLinux/patch/bar_tags.c | 57 + |
71 | .../etc/skel/.local/AutoLinux/patch/bar_tags.h | 3 + |
72 | .../etc/skel/.local/AutoLinux/patch/bar_wintitle.c | 31 + |
73 | .../etc/skel/.local/AutoLinux/patch/bar_wintitle.h | 3 + |
74 | .../skel/.local/AutoLinux/patch/cust/bar_date.c | 43 + |
75 | .../skel/.local/AutoLinux/patch/cust/bar_date.h | 3 + |
76 | .../.local/AutoLinux/patch/cust/bar_datetime.c | 34 + |
77 | .../.local/AutoLinux/patch/cust/bar_datetime.h | 2 + |
78 | .../skel/.local/AutoLinux/patch/cust/bar_time.c | 49 + |
79 | .../skel/.local/AutoLinux/patch/cust/bar_time.h | 4 + |
80 | .../etc/skel/.local/AutoLinux/patch/functions.c | 21 + |
81 | .../etc/skel/.local/AutoLinux/patch/functions.h | 0 |
82 | .../etc/skel/.local/AutoLinux/patch/include.c | 9 + |
83 | .../etc/skel/.local/AutoLinux/patch/include.h | 8 + |
84 | .../etc/skel/.local/AutoLinux/shiftview.c | 64 + |
85 | .../etc/skel/.local/AutoLinux/transient.c | 42 + |
86 | .../etc/skel/.local/AutoLinux/util.c | 35 + |
87 | .../etc/skel/.local/AutoLinux/util.h | 8 + |
88 | .../etc/skel/.local/AutoLinux/util.o | Bin 0 -> 2224 bytes |
89 | .../etc/skel/.local/AutoLinux/vanitygaps.c | 542 ++++ |
90 | .../usr/share/xsessions/AutoLinux.desktop | 7 + |
91 | BUILD/src/concise-installer | 1 + |
92 | PKGBUILD | 3 +- |
93 | 86 files changed, 7873 insertions(+), 2 deletions(-) |
94 | |
95 | diff --git a/BUILD/PKGBUILD b/BUILD/PKGBUILD |
96 | new file mode 100644 |
97 | index 0000000..364d554 |
98 | --- /dev/null |
99 | +++ b/BUILD/PKGBUILD |
100 | @@ -0,0 +1,36 @@ |
101 | +# Maintainer: Connor Etherington <[email protected]> |
102 | +# --- |
103 | +pkgname=concise-installer |
104 | +_pkgname=AutoLinux |
105 | +_destname1="/etc/skel/.local/" |
106 | +_destname2="/usr/share/xsessions/" |
107 | +pkgver=0.1.1 |
108 | +pkgrel=1 |
109 | +pkgdesc="AutoLinux-installer" |
110 | +arch=('x86_64') |
111 | +url="https://gitlab.com/a4to/${pkgname}" |
112 | +makedepends=('git') |
113 | +depends=('libx11') |
114 | +provides=("${pkgname}") |
115 | +options=(!strip !emptydirs) |
116 | +source=("git+https://gitlab.com/a4to/${pkgname}.git") |
117 | +sha256sums=('SKIP') |
118 | + |
119 | +build() { |
120 | + cd "$srcdir/${pkgname}-${pkgver}-${pkgrel}-${arch}" 2>/dev/null || cd "$srcdir/${pkgname}" 2>/dev/null |
121 | + cd "etc/skel/.local/${_pkgname}" |
122 | + make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11 FREETYPEINC=/usr/include/freetype2 FREETYPELIB=/usr/lib |
123 | +} |
124 | + |
125 | +package() { |
126 | + |
127 | + cd "$srcdir/${pkgname}-${pkgver}-${pkgrel}-${arch}" 2>/dev/null || cd "$srcdir/${pkgname}" 2>/dev/null |
128 | + |
129 | + install -dm755 "${pkgdir}${_destname1}" |
130 | + install -dm755 "${pkgdir}${_destname2}" |
131 | + |
132 | + install -Dm755 "./usr/share/xsessions/${_pkgname}.desktop" "${pkgdir}${_destname2}${_pkgname}.desktop" |
133 | + |
134 | + cp -a "./etc/skel/.local/${_pkgname}/." "${pkgdir}${_destname1}${_pkgname}/" |
135 | + |
136 | +} |
137 | diff --git a/BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst b/BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst |
138 | new file mode 100644 |
139 | index 0000000..ba026dd |
140 | Binary files /dev/null and b/BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst differ |
141 | diff --git a/BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst.sig b/BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst.sig |
142 | new file mode 100644 |
143 | index 0000000..eca3da1 |
144 | Binary files /dev/null and b/BUILD/concise-installer-0.1.1-1-x86_64.pkg.tar.zst.sig differ |
145 | diff --git a/BUILD/concise-installer/HEAD b/BUILD/concise-installer/HEAD |
146 | new file mode 100644 |
147 | index 0000000..cb089cd |
148 | --- /dev/null |
149 | +++ b/BUILD/concise-installer/HEAD |
150 | @@ -0,0 +1 @@ |
151 | +ref: refs/heads/master |
152 | diff --git a/BUILD/concise-installer/config b/BUILD/concise-installer/config |
153 | new file mode 100644 |
154 | index 0000000..2cf893c |
155 | --- /dev/null |
156 | +++ b/BUILD/concise-installer/config |
157 | @@ -0,0 +1,8 @@ |
158 | +[core] |
159 | + repositoryformatversion = 0 |
160 | + filemode = true |
161 | + bare = true |
162 | +[remote "origin"] |
163 | + url = https://gitlab.com/a4to/concise-installer.git |
164 | + fetch = +refs/*:refs/* |
165 | + mirror = true |
166 | diff --git a/BUILD/concise-installer/description b/BUILD/concise-installer/description |
167 | new file mode 100644 |
168 | index 0000000..498b267 |
169 | --- /dev/null |
170 | +++ b/BUILD/concise-installer/description |
171 | @@ -0,0 +1 @@ |
172 | +Unnamed repository; edit this file 'description' to name the repository. |
173 | diff --git a/BUILD/concise-installer/hooks/applypatch-msg.sample b/BUILD/concise-installer/hooks/applypatch-msg.sample |
174 | new file mode 100755 |
175 | index 0000000..a5d7b84 |
176 | --- /dev/null |
177 | +++ b/BUILD/concise-installer/hooks/applypatch-msg.sample |
178 | @@ -0,0 +1,15 @@ |
179 | +#!/bin/sh |
180 | +# |
181 | +# An example hook script to check the commit log message taken by |
182 | +# applypatch from an e-mail message. |
183 | +# |
184 | +# The hook should exit with non-zero status after issuing an |
185 | +# appropriate message if it wants to stop the commit. The hook is |
186 | +# allowed to edit the commit message file. |
187 | +# |
188 | +# To enable this hook, rename this file to "applypatch-msg". |
189 | + |
190 | +. git-sh-setup |
191 | +commitmsg="$(git rev-parse --git-path hooks/commit-msg)" |
192 | +test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} |
193 | +: |
194 | diff --git a/BUILD/concise-installer/hooks/commit-msg.sample b/BUILD/concise-installer/hooks/commit-msg.sample |
195 | new file mode 100755 |
196 | index 0000000..b58d118 |
197 | --- /dev/null |
198 | +++ b/BUILD/concise-installer/hooks/commit-msg.sample |
199 | @@ -0,0 +1,24 @@ |
200 | +#!/bin/sh |
201 | +# |
202 | +# An example hook script to check the commit log message. |
203 | +# Called by "git commit" with one argument, the name of the file |
204 | +# that has the commit message. The hook should exit with non-zero |
205 | +# status after issuing an appropriate message if it wants to stop the |
206 | +# commit. The hook is allowed to edit the commit message file. |
207 | +# |
208 | +# To enable this hook, rename this file to "commit-msg". |
209 | + |
210 | +# Uncomment the below to add a Signed-off-by line to the message. |
211 | +# Doing this in a hook is a bad idea in general, but the prepare-commit-msg |
212 | +# hook is more suited to it. |
213 | +# |
214 | +# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') |
215 | +# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" |
216 | + |
217 | +# This example catches duplicate Signed-off-by lines. |
218 | + |
219 | +test "" = "$(grep '^Signed-off-by: ' "$1" | |
220 | + sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { |
221 | + echo >&2 Duplicate Signed-off-by lines. |
222 | + exit 1 |
223 | +} |
224 | diff --git a/BUILD/concise-installer/hooks/fsmonitor-watchman.sample b/BUILD/concise-installer/hooks/fsmonitor-watchman.sample |
225 | new file mode 100755 |
226 | index 0000000..23e856f |
227 | --- /dev/null |
228 | +++ b/BUILD/concise-installer/hooks/fsmonitor-watchman.sample |
229 | @@ -0,0 +1,174 @@ |
230 | +#!/usr/bin/perl |
231 | + |
232 | +use strict; |
233 | +use warnings; |
234 | +use IPC::Open2; |
235 | + |
236 | +# An example hook script to integrate Watchman |
237 | +# (https://facebook.github.io/watchman/) with git to speed up detecting |
238 | +# new and modified files. |
239 | +# |
240 | +# The hook is passed a version (currently 2) and last update token |
241 | +# formatted as a string and outputs to stdout a new update token and |
242 | +# all files that have been modified since the update token. Paths must |
243 | +# be relative to the root of the working tree and separated by a single NUL. |
244 | +# |
245 | +# To enable this hook, rename this file to "query-watchman" and set |
246 | +# 'git config core.fsmonitor .git/hooks/query-watchman' |
247 | +# |
248 | +my ($version, $last_update_token) = @ARGV; |
249 | + |
250 | +# Uncomment for debugging |
251 | +# print STDERR "$0 $version $last_update_token\n"; |
252 | + |
253 | +# Check the hook interface version |
254 | +if ($version ne 2) { |
255 | + die "Unsupported query-fsmonitor hook version '$version'.\n" . |
256 | + "Falling back to scanning...\n"; |
257 | +} |
258 | + |
259 | +my $git_work_tree = get_working_dir(); |
260 | + |
261 | +my $retry = 1; |
262 | + |
263 | +my $json_pkg; |
264 | +eval { |
265 | + require JSON::XS; |
266 | + $json_pkg = "JSON::XS"; |
267 | + 1; |
268 | +} or do { |
269 | + require JSON::PP; |
270 | + $json_pkg = "JSON::PP"; |
271 | +}; |
272 | + |
273 | +launch_watchman(); |
274 | + |
275 | +sub launch_watchman { |
276 | + my $o = watchman_query(); |
277 | + if (is_work_tree_watched($o)) { |
278 | + output_result($o->{clock}, @{$o->{files}}); |
279 | + } |
280 | +} |
281 | + |
282 | +sub output_result { |
283 | + my ($clockid, @files) = @_; |
284 | + |
285 | + # Uncomment for debugging watchman output |
286 | + # open (my $fh, ">", ".git/watchman-output.out"); |
287 | + # binmode $fh, ":utf8"; |
288 | + # print $fh "$clockid\n@files\n"; |
289 | + # close $fh; |
290 | + |
291 | + binmode STDOUT, ":utf8"; |
292 | + print $clockid; |
293 | + print "\0"; |
294 | + local $, = "\0"; |
295 | + print @files; |
296 | +} |
297 | + |
298 | +sub watchman_clock { |
299 | + my $response = qx/watchman clock "$git_work_tree"/; |
300 | + die "Failed to get clock id on '$git_work_tree'.\n" . |
301 | + "Falling back to scanning...\n" if $? != 0; |
302 | + |
303 | + return $json_pkg->new->utf8->decode($response); |
304 | +} |
305 | + |
306 | +sub watchman_query { |
307 | + my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty') |
308 | + or die "open2() failed: $!\n" . |
309 | + "Falling back to scanning...\n"; |
310 | + |
311 | + # In the query expression below we're asking for names of files that |
312 | + # changed since $last_update_token but not from the .git folder. |
313 | + # |
314 | + # To accomplish this, we're using the "since" generator to use the |
315 | + # recency index to select candidate nodes and "fields" to limit the |
316 | + # output to file names only. Then we're using the "expression" term to |
317 | + # further constrain the results. |
318 | + my $last_update_line = ""; |
319 | + if (substr($last_update_token, 0, 1) eq "c") { |
320 | + $last_update_token = "\"$last_update_token\""; |
321 | + $last_update_line = qq[\n"since": $last_update_token,]; |
322 | + } |
323 | + my $query = <<" END"; |
324 | + ["query", "$git_work_tree", {$last_update_line |
325 | + "fields": ["name"], |
326 | + "expression": ["not", ["dirname", ".git"]] |
327 | + }] |
328 | + END |
329 | + |
330 | + # Uncomment for debugging the watchman query |
331 | + # open (my $fh, ">", ".git/watchman-query.json"); |
332 | + # print $fh $query; |
333 | + # close $fh; |
334 | + |
335 | + print CHLD_IN $query; |
336 | + close CHLD_IN; |
337 | + my $response = do {local $/; <CHLD_OUT>}; |
338 | + |
339 | + # Uncomment for debugging the watch response |
340 | + # open ($fh, ">", ".git/watchman-response.json"); |
341 | + # print $fh $response; |
342 | + # close $fh; |
343 | + |
344 | + die "Watchman: command returned no output.\n" . |
345 | + "Falling back to scanning...\n" if $response eq ""; |
346 | + die "Watchman: command returned invalid output: $response\n" . |
347 | + "Falling back to scanning...\n" unless $response =~ /^\{/; |
348 | + |
349 | + return $json_pkg->new->utf8->decode($response); |
350 | +} |
351 | + |
352 | +sub is_work_tree_watched { |
353 | + my ($output) = @_; |
354 | + my $error = $output->{error}; |
355 | + if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) { |
356 | + $retry--; |
357 | + my $response = qx/watchman watch "$git_work_tree"/; |
358 | + die "Failed to make watchman watch '$git_work_tree'.\n" . |
359 | + "Falling back to scanning...\n" if $? != 0; |
360 | + $output = $json_pkg->new->utf8->decode($response); |
361 | + $error = $output->{error}; |
362 | + die "Watchman: $error.\n" . |
363 | + "Falling back to scanning...\n" if $error; |
364 | + |
365 | + # Uncomment for debugging watchman output |
366 | + # open (my $fh, ">", ".git/watchman-output.out"); |
367 | + # close $fh; |
368 | + |
369 | + # Watchman will always return all files on the first query so |
370 | + # return the fast "everything is dirty" flag to git and do the |
371 | + # Watchman query just to get it over with now so we won't pay |
372 | + # the cost in git to look up each individual file. |
373 | + my $o = watchman_clock(); |
374 | + $error = $output->{error}; |
375 | + |
376 | + die "Watchman: $error.\n" . |
377 | + "Falling back to scanning...\n" if $error; |
378 | + |
379 | + output_result($o->{clock}, ("/")); |
380 | + $last_update_token = $o->{clock}; |
381 | + |
382 | + eval { launch_watchman() }; |
383 | + return 0; |
384 | + } |
385 | + |
386 | + die "Watchman: $error.\n" . |
387 | + "Falling back to scanning...\n" if $error; |
388 | + |
389 | + return 1; |
390 | +} |
391 | + |
392 | +sub get_working_dir { |
393 | + my $working_dir; |
394 | + if ($^O =~ 'msys' || $^O =~ 'cygwin') { |
395 | + $working_dir = Win32::GetCwd(); |
396 | + $working_dir =~ tr/\\/\//; |
397 | + } else { |
398 | + require Cwd; |
399 | + $working_dir = Cwd::cwd(); |
400 | + } |
401 | + |
402 | + return $working_dir; |
403 | +} |
404 | diff --git a/BUILD/concise-installer/hooks/post-update.sample b/BUILD/concise-installer/hooks/post-update.sample |
405 | new file mode 100755 |
406 | index 0000000..ec17ec1 |
407 | --- /dev/null |
408 | +++ b/BUILD/concise-installer/hooks/post-update.sample |
409 | @@ -0,0 +1,8 @@ |
410 | +#!/bin/sh |
411 | +# |
412 | +# An example hook script to prepare a packed repository for use over |
413 | +# dumb transports. |
414 | +# |
415 | +# To enable this hook, rename this file to "post-update". |
416 | + |
417 | +exec git update-server-info |
418 | diff --git a/BUILD/concise-installer/hooks/pre-applypatch.sample b/BUILD/concise-installer/hooks/pre-applypatch.sample |
419 | new file mode 100755 |
420 | index 0000000..4142082 |
421 | --- /dev/null |
422 | +++ b/BUILD/concise-installer/hooks/pre-applypatch.sample |
423 | @@ -0,0 +1,14 @@ |
424 | +#!/bin/sh |
425 | +# |
426 | +# An example hook script to verify what is about to be committed |
427 | +# by applypatch from an e-mail message. |
428 | +# |
429 | +# The hook should exit with non-zero status after issuing an |
430 | +# appropriate message if it wants to stop the commit. |
431 | +# |
432 | +# To enable this hook, rename this file to "pre-applypatch". |
433 | + |
434 | +. git-sh-setup |
435 | +precommit="$(git rev-parse --git-path hooks/pre-commit)" |
436 | +test -x "$precommit" && exec "$precommit" ${1+"$@"} |
437 | +: |
438 | diff --git a/BUILD/concise-installer/hooks/pre-commit.sample b/BUILD/concise-installer/hooks/pre-commit.sample |
439 | new file mode 100755 |
440 | index 0000000..29ed5ee |
441 | --- /dev/null |
442 | +++ b/BUILD/concise-installer/hooks/pre-commit.sample |
443 | @@ -0,0 +1,49 @@ |
444 | +#!/bin/sh |
445 | +# |
446 | +# An example hook script to verify what is about to be committed. |
447 | +# Called by "git commit" with no arguments. The hook should |
448 | +# exit with non-zero status after issuing an appropriate message if |
449 | +# it wants to stop the commit. |
450 | +# |
451 | +# To enable this hook, rename this file to "pre-commit". |
452 | + |
453 | +if git rev-parse --verify HEAD >/dev/null 2>&1 |
454 | +then |
455 | + against=HEAD |
456 | +else |
457 | + # Initial commit: diff against an empty tree object |
458 | + against=$(git hash-object -t tree /dev/null) |
459 | +fi |
460 | + |
461 | +# If you want to allow non-ASCII filenames set this variable to true. |
462 | +allownonascii=$(git config --type=bool hooks.allownonascii) |
463 | + |
464 | +# Redirect output to stderr. |
465 | +exec 1>&2 |
466 | + |
467 | +# Cross platform projects tend to avoid non-ASCII filenames; prevent |
468 | +# them from being added to the repository. We exploit the fact that the |
469 | +# printable range starts at the space character and ends with tilde. |
470 | +if [ "$allownonascii" != "true" ] && |
471 | + # Note that the use of brackets around a tr range is ok here, (it's |
472 | + # even required, for portability to Solaris 10's /usr/bin/tr), since |
473 | + # the square bracket bytes happen to fall in the designated range. |
474 | + test $(git diff-index --cached --name-only --diff-filter=A -z $against | |
475 | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 |
476 | +then |
477 | + cat <<\EOF |
478 | +Error: Attempt to add a non-ASCII file name. |
479 | + |
480 | +This can cause problems if you want to work with people on other platforms. |
481 | + |
482 | +To be portable it is advisable to rename the file. |
483 | + |
484 | +If you know what you are doing you can disable this check using: |
485 | + |
486 | + git config hooks.allownonascii true |
487 | +EOF |
488 | + exit 1 |
489 | +fi |
490 | + |
491 | +# If there are whitespace errors, print the offending file names and fail. |
492 | +exec git diff-index --check --cached $against -- |
493 | diff --git a/BUILD/concise-installer/hooks/pre-merge-commit.sample b/BUILD/concise-installer/hooks/pre-merge-commit.sample |
494 | new file mode 100755 |
495 | index 0000000..399eab1 |
496 | --- /dev/null |
497 | +++ b/BUILD/concise-installer/hooks/pre-merge-commit.sample |
498 | @@ -0,0 +1,13 @@ |
499 | +#!/bin/sh |
500 | +# |
501 | +# An example hook script to verify what is about to be committed. |
502 | +# Called by "git merge" with no arguments. The hook should |
503 | +# exit with non-zero status after issuing an appropriate message to |
504 | +# stderr if it wants to stop the merge commit. |
505 | +# |
506 | +# To enable this hook, rename this file to "pre-merge-commit". |
507 | + |
508 | +. git-sh-setup |
509 | +test -x "$GIT_DIR/hooks/pre-commit" && |
510 | + exec "$GIT_DIR/hooks/pre-commit" |
511 | +: |
512 | diff --git a/BUILD/concise-installer/hooks/pre-push.sample b/BUILD/concise-installer/hooks/pre-push.sample |
513 | new file mode 100755 |
514 | index 0000000..4ce688d |
515 | --- /dev/null |
516 | +++ b/BUILD/concise-installer/hooks/pre-push.sample |
517 | @@ -0,0 +1,53 @@ |
518 | +#!/bin/sh |
519 | + |
520 | +# An example hook script to verify what is about to be pushed. Called by "git |
521 | +# push" after it has checked the remote status, but before anything has been |
522 | +# pushed. If this script exits with a non-zero status nothing will be pushed. |
523 | +# |
524 | +# This hook is called with the following parameters: |
525 | +# |
526 | +# $1 -- Name of the remote to which the push is being done |
527 | +# $2 -- URL to which the push is being done |
528 | +# |
529 | +# If pushing without using a named remote those arguments will be equal. |
530 | +# |
531 | +# Information about the commits which are being pushed is supplied as lines to |
532 | +# the standard input in the form: |
533 | +# |
534 | +# <local ref> <local oid> <remote ref> <remote oid> |
535 | +# |
536 | +# This sample shows how to prevent push of commits where the log message starts |
537 | +# with "WIP" (work in progress). |
538 | + |
539 | +remote="$1" |
540 | +url="$2" |
541 | + |
542 | +zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0') |
543 | + |
544 | +while read local_ref local_oid remote_ref remote_oid |
545 | +do |
546 | + if test "$local_oid" = "$zero" |
547 | + then |
548 | + # Handle delete |
549 | + : |
550 | + else |
551 | + if test "$remote_oid" = "$zero" |
552 | + then |
553 | + # New branch, examine all commits |
554 | + range="$local_oid" |
555 | + else |
556 | + # Update to existing branch, examine new commits |
557 | + range="$remote_oid..$local_oid" |
558 | + fi |
559 | + |
560 | + # Check for WIP commit |
561 | + commit=$(git rev-list -n 1 --grep '^WIP' "$range") |
562 | + if test -n "$commit" |
563 | + then |
564 | + echo >&2 "Found WIP commit in $local_ref, not pushing" |
565 | + exit 1 |
566 | + fi |
567 | + fi |
568 | +done |
569 | + |
570 | +exit 0 |
571 | diff --git a/BUILD/concise-installer/hooks/pre-rebase.sample b/BUILD/concise-installer/hooks/pre-rebase.sample |
572 | new file mode 100755 |
573 | index 0000000..6cbef5c |
574 | --- /dev/null |
575 | +++ b/BUILD/concise-installer/hooks/pre-rebase.sample |
576 | @@ -0,0 +1,169 @@ |
577 | +#!/bin/sh |
578 | +# |
579 | +# Copyright (c) 2006, 2008 Junio C Hamano |
580 | +# |
581 | +# The "pre-rebase" hook is run just before "git rebase" starts doing |
582 | +# its job, and can prevent the command from running by exiting with |
583 | +# non-zero status. |
584 | +# |
585 | +# The hook is called with the following parameters: |
586 | +# |
587 | +# $1 -- the upstream the series was forked from. |
588 | +# $2 -- the branch being rebased (or empty when rebasing the current branch). |
589 | +# |
590 | +# This sample shows how to prevent topic branches that are already |
591 | +# merged to 'next' branch from getting rebased, because allowing it |
592 | +# would result in rebasing already published history. |
593 | + |
594 | +publish=next |
595 | +basebranch="$1" |
596 | +if test "$#" = 2 |
597 | +then |
598 | + topic="refs/heads/$2" |
599 | +else |
600 | + topic=`git symbolic-ref HEAD` || |
601 | + exit 0 ;# we do not interrupt rebasing detached HEAD |
602 | +fi |
603 | + |
604 | +case "$topic" in |
605 | +refs/heads/??/*) |
606 | + ;; |
607 | +*) |
608 | + exit 0 ;# we do not interrupt others. |
609 | + ;; |
610 | +esac |
611 | + |
612 | +# Now we are dealing with a topic branch being rebased |
613 | +# on top of master. Is it OK to rebase it? |
614 | + |
615 | +# Does the topic really exist? |
616 | +git show-ref -q "$topic" || { |
617 | + echo >&2 "No such branch $topic" |
618 | + exit 1 |
619 | +} |
620 | + |
621 | +# Is topic fully merged to master? |
622 | +not_in_master=`git rev-list --pretty=oneline ^master "$topic"` |
623 | +if test -z "$not_in_master" |
624 | +then |
625 | + echo >&2 "$topic is fully merged to master; better remove it." |
626 | + exit 1 ;# we could allow it, but there is no point. |
627 | +fi |
628 | + |
629 | +# Is topic ever merged to next? If so you should not be rebasing it. |
630 | +only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` |
631 | +only_next_2=`git rev-list ^master ${publish} | sort` |
632 | +if test "$only_next_1" = "$only_next_2" |
633 | +then |
634 | + not_in_topic=`git rev-list "^$topic" master` |
635 | + if test -z "$not_in_topic" |
636 | + then |
637 | + echo >&2 "$topic is already up to date with master" |
638 | + exit 1 ;# we could allow it, but there is no point. |
639 | + else |
640 | + exit 0 |
641 | + fi |
642 | +else |
643 | + not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` |
644 | + /usr/bin/perl -e ' |
645 | + my $topic = $ARGV[0]; |
646 | + my $msg = "* $topic has commits already merged to public branch:\n"; |
647 | + my (%not_in_next) = map { |
648 | + /^([0-9a-f]+) /; |
649 | + ($1 => 1); |
650 | + } split(/\n/, $ARGV[1]); |
651 | + for my $elem (map { |
652 | + /^([0-9a-f]+) (.*)$/; |
653 | + [$1 => $2]; |
654 | + } split(/\n/, $ARGV[2])) { |
655 | + if (!exists $not_in_next{$elem->[0]}) { |
656 | + if ($msg) { |
657 | + print STDERR $msg; |
658 | + undef $msg; |
659 | + } |
660 | + print STDERR " $elem->[1]\n"; |
661 | + } |
662 | + } |
663 | + ' "$topic" "$not_in_next" "$not_in_master" |
664 | + exit 1 |
665 | +fi |
666 | + |
667 | +<<\DOC_END |
668 | + |
669 | +This sample hook safeguards topic branches that have been |
670 | +published from being rewound. |
671 | + |
672 | +The workflow assumed here is: |
673 | + |
674 | + * Once a topic branch forks from "master", "master" is never |
675 | + merged into it again (either directly or indirectly). |
676 | + |
677 | + * Once a topic branch is fully cooked and merged into "master", |
678 | + it is deleted. If you need to build on top of it to correct |
679 | + earlier mistakes, a new topic branch is created by forking at |
680 | + the tip of the "master". This is not strictly necessary, but |
681 | + it makes it easier to keep your history simple. |
682 | + |
683 | + * Whenever you need to test or publish your changes to topic |
684 | + branches, merge them into "next" branch. |
685 | + |
686 | +The script, being an example, hardcodes the publish branch name |
687 | +to be "next", but it is trivial to make it configurable via |
688 | +$GIT_DIR/config mechanism. |
689 | + |
690 | +With this workflow, you would want to know: |
691 | + |
692 | +(1) ... if a topic branch has ever been merged to "next". Young |
693 | + topic branches can have stupid mistakes you would rather |
694 | + clean up before publishing, and things that have not been |
695 | + merged into other branches can be easily rebased without |
696 | + affecting other people. But once it is published, you would |
697 | + not want to rewind it. |
698 | + |
699 | +(2) ... if a topic branch has been fully merged to "master". |
700 | + Then you can delete it. More importantly, you should not |
701 | + build on top of it -- other people may already want to |
702 | + change things related to the topic as patches against your |
703 | + "master", so if you need further changes, it is better to |
704 | + fork the topic (perhaps with the same name) afresh from the |
705 | + tip of "master". |
706 | + |
707 | +Let's look at this example: |
708 | + |
709 | + o---o---o---o---o---o---o---o---o---o "next" |
710 | + / / / / |
711 | + / a---a---b A / / |
712 | + / / / / |
713 | + / / c---c---c---c B / |
714 | + / / / \ / |
715 | + / / / b---b C \ / |
716 | + / / / / \ / |
717 | + ---o---o---o---o---o---o---o---o---o---o---o "master" |
718 | + |
719 | + |
720 | +A, B and C are topic branches. |
721 | + |
722 | + * A has one fix since it was merged up to "next". |
723 | + |
724 | + * B has finished. It has been fully merged up to "master" and "next", |
725 | + and is ready to be deleted. |
726 | + |
727 | + * C has not merged to "next" at all. |
728 | + |
729 | +We would want to allow C to be rebased, refuse A, and encourage |
730 | +B to be deleted. |
731 | + |
732 | +To compute (1): |
733 | + |
734 | + git rev-list ^master ^topic next |
735 | + git rev-list ^master next |
736 | + |
737 | + if these match, topic has not merged in next at all. |
738 | + |
739 | +To compute (2): |
740 | + |
741 | + git rev-list master..topic |
742 | + |
743 | + if this is empty, it is fully merged to "master". |
744 | + |
745 | +DOC_END |
746 | diff --git a/BUILD/concise-installer/hooks/pre-receive.sample b/BUILD/concise-installer/hooks/pre-receive.sample |
747 | new file mode 100755 |
748 | index 0000000..a1fd29e |
749 | --- /dev/null |
750 | +++ b/BUILD/concise-installer/hooks/pre-receive.sample |
751 | @@ -0,0 +1,24 @@ |
752 | +#!/bin/sh |
753 | +# |
754 | +# An example hook script to make use of push options. |
755 | +# The example simply echoes all push options that start with 'echoback=' |
756 | +# and rejects all pushes when the "reject" push option is used. |
757 | +# |
758 | +# To enable this hook, rename this file to "pre-receive". |
759 | + |
760 | +if test -n "$GIT_PUSH_OPTION_COUNT" |
761 | +then |
762 | + i=0 |
763 | + while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" |
764 | + do |
765 | + eval "value=\$GIT_PUSH_OPTION_$i" |
766 | + case "$value" in |
767 | + echoback=*) |
768 | + echo "echo from the pre-receive-hook: ${value#*=}" >&2 |
769 | + ;; |
770 | + reject) |
771 | + exit 1 |
772 | + esac |
773 | + i=$((i + 1)) |
774 | + done |
775 | +fi |
776 | diff --git a/BUILD/concise-installer/hooks/prepare-commit-msg.sample b/BUILD/concise-installer/hooks/prepare-commit-msg.sample |
777 | new file mode 100755 |
778 | index 0000000..10fa14c |
779 | --- /dev/null |
780 | +++ b/BUILD/concise-installer/hooks/prepare-commit-msg.sample |
781 | @@ -0,0 +1,42 @@ |
782 | +#!/bin/sh |
783 | +# |
784 | +# An example hook script to prepare the commit log message. |
785 | +# Called by "git commit" with the name of the file that has the |
786 | +# commit message, followed by the description of the commit |
787 | +# message's source. The hook's purpose is to edit the commit |
788 | +# message file. If the hook fails with a non-zero status, |
789 | +# the commit is aborted. |
790 | +# |
791 | +# To enable this hook, rename this file to "prepare-commit-msg". |
792 | + |
793 | +# This hook includes three examples. The first one removes the |
794 | +# "# Please enter the commit message..." help message. |
795 | +# |
796 | +# The second includes the output of "git diff --name-status -r" |
797 | +# into the message, just before the "git status" output. It is |
798 | +# commented because it doesn't cope with --amend or with squashed |
799 | +# commits. |
800 | +# |
801 | +# The third example adds a Signed-off-by line to the message, that can |
802 | +# still be edited. This is rarely a good idea. |
803 | + |
804 | +COMMIT_MSG_FILE=$1 |
805 | +COMMIT_SOURCE=$2 |
806 | +SHA1=$3 |
807 | + |
808 | +/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" |
809 | + |
810 | +# case "$COMMIT_SOURCE,$SHA1" in |
811 | +# ,|template,) |
812 | +# /usr/bin/perl -i.bak -pe ' |
813 | +# print "\n" . `git diff --cached --name-status -r` |
814 | +# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; |
815 | +# *) ;; |
816 | +# esac |
817 | + |
818 | +# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') |
819 | +# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE" |
820 | +# if test -z "$COMMIT_SOURCE" |
821 | +# then |
822 | +# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE" |
823 | +# fi |
824 | diff --git a/BUILD/concise-installer/hooks/push-to-checkout.sample b/BUILD/concise-installer/hooks/push-to-checkout.sample |
825 | new file mode 100755 |
826 | index 0000000..af5a0c0 |
827 | --- /dev/null |
828 | +++ b/BUILD/concise-installer/hooks/push-to-checkout.sample |
829 | @@ -0,0 +1,78 @@ |
830 | +#!/bin/sh |
831 | + |
832 | +# An example hook script to update a checked-out tree on a git push. |
833 | +# |
834 | +# This hook is invoked by git-receive-pack(1) when it reacts to git |
835 | +# push and updates reference(s) in its repository, and when the push |
836 | +# tries to update the branch that is currently checked out and the |
837 | +# receive.denyCurrentBranch configuration variable is set to |
838 | +# updateInstead. |
839 | +# |
840 | +# By default, such a push is refused if the working tree and the index |
841 | +# of the remote repository has any difference from the currently |
842 | +# checked out commit; when both the working tree and the index match |
843 | +# the current commit, they are updated to match the newly pushed tip |
844 | +# of the branch. This hook is to be used to override the default |
845 | +# behaviour; however the code below reimplements the default behaviour |
846 | +# as a starting point for convenient modification. |
847 | +# |
848 | +# The hook receives the commit with which the tip of the current |
849 | +# branch is going to be updated: |
850 | +commit=$1 |
851 | + |
852 | +# It can exit with a non-zero status to refuse the push (when it does |
853 | +# so, it must not modify the index or the working tree). |
854 | +die () { |
855 | + echo >&2 "$*" |
856 | + exit 1 |
857 | +} |
858 | + |
859 | +# Or it can make any necessary changes to the working tree and to the |
860 | +# index to bring them to the desired state when the tip of the current |
861 | +# branch is updated to the new commit, and exit with a zero status. |
862 | +# |
863 | +# For example, the hook can simply run git read-tree -u -m HEAD "$1" |
864 | +# in order to emulate git fetch that is run in the reverse direction |
865 | +# with git push, as the two-tree form of git read-tree -u -m is |
866 | +# essentially the same as git switch or git checkout that switches |
867 | +# branches while keeping the local changes in the working tree that do |
868 | +# not interfere with the difference between the branches. |
869 | + |
870 | +# The below is a more-or-less exact translation to shell of the C code |
871 | +# for the default behaviour for git's push-to-checkout hook defined in |
872 | +# the push_to_deploy() function in builtin/receive-pack.c. |
873 | +# |
874 | +# Note that the hook will be executed from the repository directory, |
875 | +# not from the working tree, so if you want to perform operations on |
876 | +# the working tree, you will have to adapt your code accordingly, e.g. |
877 | +# by adding "cd .." or using relative paths. |
878 | + |
879 | +if ! git update-index -q --ignore-submodules --refresh |
880 | +then |
881 | + die "Up-to-date check failed" |
882 | +fi |
883 | + |
884 | +if ! git diff-files --quiet --ignore-submodules -- |
885 | +then |
886 | + die "Working directory has unstaged changes" |
887 | +fi |
888 | + |
889 | +# This is a rough translation of: |
890 | +# |
891 | +# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX |
892 | +if git cat-file -e HEAD 2>/dev/null |
893 | +then |
894 | + head=HEAD |
895 | +else |
896 | + head=$(git hash-object -t tree --stdin </dev/null) |
897 | +fi |
898 | + |
899 | +if ! git diff-index --quiet --cached --ignore-submodules $head -- |
900 | +then |
901 | + die "Working directory has staged changes" |
902 | +fi |
903 | + |
904 | +if ! git read-tree -u -m "$commit" |
905 | +then |
906 | + die "Could not update working tree to new HEAD" |
907 | +fi |
908 | diff --git a/BUILD/concise-installer/hooks/sendemail-validate.sample b/BUILD/concise-installer/hooks/sendemail-validate.sample |
909 | new file mode 100755 |
910 | index 0000000..640bcf8 |
911 | --- /dev/null |
912 | +++ b/BUILD/concise-installer/hooks/sendemail-validate.sample |
913 | @@ -0,0 +1,77 @@ |
914 | +#!/bin/sh |
915 | + |
916 | +# An example hook script to validate a patch (and/or patch series) before |
917 | +# sending it via email. |
918 | +# |
919 | +# The hook should exit with non-zero status after issuing an appropriate |
920 | +# message if it wants to prevent the email(s) from being sent. |
921 | +# |
922 | +# To enable this hook, rename this file to "sendemail-validate". |
923 | +# |
924 | +# By default, it will only check that the patch(es) can be applied on top of |
925 | +# the default upstream branch without conflicts in a secondary worktree. After |
926 | +# validation (successful or not) of the last patch of a series, the worktree |
927 | +# will be deleted. |
928 | +# |
929 | +# The following config variables can be set to change the default remote and |
930 | +# remote ref that are used to apply the patches against: |
931 | +# |
932 | +# sendemail.validateRemote (default: origin) |
933 | +# sendemail.validateRemoteRef (default: HEAD) |
934 | +# |
935 | +# Replace the TODO placeholders with appropriate checks according to your |
936 | +# needs. |
937 | + |
938 | +validate_cover_letter () { |
939 | + file="$1" |
940 | + # TODO: Replace with appropriate checks (e.g. spell checking). |
941 | + true |
942 | +} |
943 | + |
944 | +validate_patch () { |
945 | + file="$1" |
946 | + # Ensure that the patch applies without conflicts. |
947 | + git am -3 "$file" || return |
948 | + # TODO: Replace with appropriate checks for this patch |
949 | + # (e.g. checkpatch.pl). |
950 | + true |
951 | +} |
952 | + |
953 | +validate_series () { |
954 | + # TODO: Replace with appropriate checks for the whole series |
955 | + # (e.g. quick build, coding style checks, etc.). |
956 | + true |
957 | +} |
958 | + |
959 | +# main ------------------------------------------------------------------------- |
960 | + |
961 | +if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1 |
962 | +then |
963 | + remote=$(git config --default origin --get sendemail.validateRemote) && |
964 | + ref=$(git config --default HEAD --get sendemail.validateRemoteRef) && |
965 | + worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) && |
966 | + git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" && |
967 | + git config --replace-all sendemail.validateWorktree "$worktree" |
968 | +else |
969 | + worktree=$(git config --get sendemail.validateWorktree) |
970 | +fi || { |
971 | + echo "sendemail-validate: error: failed to prepare worktree" >&2 |
972 | + exit 1 |
973 | +} |
974 | + |
975 | +unset GIT_DIR GIT_WORK_TREE |
976 | +cd "$worktree" && |
977 | + |
978 | +if grep -q "^diff --git " "$1" |
979 | +then |
980 | + validate_patch "$1" |
981 | +else |
982 | + validate_cover_letter "$1" |
983 | +fi && |
984 | + |
985 | +if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL" |
986 | +then |
987 | + git config --unset-all sendemail.validateWorktree && |
988 | + trap 'git worktree remove -ff "$worktree"' EXIT && |
989 | + validate_series |
990 | +fi |
991 | diff --git a/BUILD/concise-installer/hooks/update.sample b/BUILD/concise-installer/hooks/update.sample |
992 | new file mode 100755 |
993 | index 0000000..c4d426b |
994 | --- /dev/null |
995 | +++ b/BUILD/concise-installer/hooks/update.sample |
996 | @@ -0,0 +1,128 @@ |
997 | +#!/bin/sh |
998 | +# |
999 | +# An example hook script to block unannotated tags from entering. |