From 247921dce4087c8690b891442fdd027820f86166 Mon Sep 17 00:00:00 2001 From: SpinDizzy Date: Wed, 22 Jan 2020 17:36:22 +0000 Subject: [PATCH] --- Desktop.ini | Bin 0 -> 186 bytes README.txt | 5 + conf/authz | 32 ++++++ conf/hooks-env.tmpl | 19 ++++ conf/passwd | 8 ++ conf/svnserve.conf | 81 +++++++++++++ db/current | 1 + db/format | 3 + db/fs-type | 1 + db/fsfs.conf | 200 +++++++++++++++++++++++++++++++++ db/min-unpacked-rev | 1 + db/rep-cache.db | Bin 0 -> 8192 bytes db/rep-cache.db-journal | 0 db/revprops/0/0 | 5 + db/revprops/0/1 | 13 +++ db/revs/0/0 | Bin 0 -> 253 bytes db/revs/0/1 | Bin 0 -> 725 bytes db/txn-current | 1 + db/txn-current-lock | 0 db/uuid | 2 + db/write-lock | 0 format | 1 + hooks/post-commit.tmpl | 62 ++++++++++ hooks/post-lock.tmpl | 64 +++++++++++ hooks/post-revprop-change.tmpl | 69 ++++++++++++ hooks/post-unlock.tmpl | 61 ++++++++++ hooks/pre-commit.tmpl | 91 +++++++++++++++ hooks/pre-lock.tmpl | 95 ++++++++++++++++ hooks/pre-revprop-change.tmpl | 79 +++++++++++++ hooks/pre-unlock.tmpl | 87 ++++++++++++++ hooks/start-commit.tmpl | 81 +++++++++++++ locks/db-logs.lock | 3 + locks/db.lock | 3 + svn.ico | Bin 0 -> 180467 bytes 34 files changed, 1068 insertions(+) create mode 100644 Desktop.ini create mode 100644 README.txt create mode 100644 conf/authz create mode 100644 conf/hooks-env.tmpl create mode 100644 conf/passwd create mode 100644 conf/svnserve.conf create mode 100644 db/current create mode 100644 db/format create mode 100644 db/fs-type create mode 100644 db/fsfs.conf create mode 100644 db/min-unpacked-rev create mode 100644 db/rep-cache.db create mode 100644 db/rep-cache.db-journal create mode 100644 db/revprops/0/0 create mode 100644 db/revprops/0/1 create mode 100644 db/revs/0/0 create mode 100644 db/revs/0/1 create mode 100644 db/txn-current create mode 100644 db/txn-current-lock create mode 100644 db/uuid create mode 100644 db/write-lock create mode 100644 format create mode 100644 hooks/post-commit.tmpl create mode 100644 hooks/post-lock.tmpl create mode 100644 hooks/post-revprop-change.tmpl create mode 100644 hooks/post-unlock.tmpl create mode 100644 hooks/pre-commit.tmpl create mode 100644 hooks/pre-lock.tmpl create mode 100644 hooks/pre-revprop-change.tmpl create mode 100644 hooks/pre-unlock.tmpl create mode 100644 hooks/start-commit.tmpl create mode 100644 locks/db-logs.lock create mode 100644 locks/db.lock create mode 100644 svn.ico diff --git a/Desktop.ini b/Desktop.ini new file mode 100644 index 0000000000000000000000000000000000000000..ae60713df66a31b539b420539fd55c2f8c4522e0 GIT binary patch literal 186 zcmYL?%?g505Ju0sr|1c!7jP8>u7YeAEi7*&RElQQ+jqvO7%q3_``wXIawc(cmcEL? zDY$W>WzS5sovwzSD=QjRi8UQL3;BZMr1&zq{)diCWiWq5q}F<$Kj)`qt1{9`Mh<$D UO@mnU&e?c(?t$F>dtPR~0WH!YhX4Qo literal 0 HcmV?d00001 diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..4deaac3 --- /dev/null +++ b/README.txt @@ -0,0 +1,5 @@ +This is a Subversion repository; use the 'svnadmin' and 'svnlook' +tools to examine it. Do not add, delete, or modify files here +unless you know how to avoid corrupting the repository. + +Visit http://subversion.apache.org/ for more information. diff --git a/conf/authz b/conf/authz new file mode 100644 index 0000000..90d8838 --- /dev/null +++ b/conf/authz @@ -0,0 +1,32 @@ +### This file is an example authorization file for svnserve. +### Its format is identical to that of mod_authz_svn authorization +### files. +### As shown below each section defines authorizations for the path and +### (optional) repository specified by the section name. +### The authorizations follow. An authorization line can refer to: +### - a single user, +### - a group of users defined in a special [groups] section, +### - an alias defined in a special [aliases] section, +### - all authenticated users, using the '$authenticated' token, +### - only anonymous users, using the '$anonymous' token, +### - anyone, using the '*' wildcard. +### +### A match can be inverted by prefixing the rule with '~'. Rules can +### grant read ('r') access, read-write ('rw') access, or no access +### (''). + +[aliases] +# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average + +[groups] +# harry_and_sally = harry,sally +# harry_sally_and_joe = harry,sally,&joe + +# [/foo/bar] +# harry = rw +# &joe = r +# * = + +# [repository:/baz/fuz] +# @harry_and_sally = rw +# * = r diff --git a/conf/hooks-env.tmpl b/conf/hooks-env.tmpl new file mode 100644 index 0000000..378694c --- /dev/null +++ b/conf/hooks-env.tmpl @@ -0,0 +1,19 @@ +### This file is an example hook script environment configuration file. +### Hook scripts run in an empty environment by default. +### As shown below each section defines environment variables for a +### particular hook script. The [default] section defines environment +### variables for all hook scripts, unless overridden by a hook-specific +### section. + +### This example configures a UTF-8 locale for all hook scripts, so that +### special characters, such as umlauts, may be printed to stderr. +### If UTF-8 is used with a mod_dav_svn server, the SVNUseUTF8 option must +### also be set to 'yes' in httpd.conf. +### With svnserve, the LANG environment variable of the svnserve process +### must be set to the same value as given here. +[default] +LANG = en_US.UTF-8 + +### This sets the PATH environment variable for the pre-commit hook. +[pre-commit] +PATH = /usr/local/bin:/usr/bin:/usr/sbin diff --git a/conf/passwd b/conf/passwd new file mode 100644 index 0000000..d22bafc --- /dev/null +++ b/conf/passwd @@ -0,0 +1,8 @@ +### This file is an example password file for svnserve. +### Its format is similar to that of svnserve.conf. As shown in the +### example below it contains one section labelled [users]. +### The name and password for each user follow, one account per line. + +[users] +# harry = harryssecret +# sally = sallyssecret diff --git a/conf/svnserve.conf b/conf/svnserve.conf new file mode 100644 index 0000000..331a44e --- /dev/null +++ b/conf/svnserve.conf @@ -0,0 +1,81 @@ +### This file controls the configuration of the svnserve daemon, if you +### use it to allow access to this repository. (If you only allow +### access through http: and/or file: URLs, then this file is +### irrelevant.) + +### Visit http://subversion.apache.org/ for more information. + +[general] +### The anon-access and auth-access options control access to the +### repository for unauthenticated (a.k.a. anonymous) users and +### authenticated users, respectively. +### Valid values are "write", "read", and "none". +### Setting the value to "none" prohibits both reading and writing; +### "read" allows read-only access, and "write" allows complete +### read/write access to the repository. +### The sample settings below are the defaults and specify that anonymous +### users have read-only access to the repository, while authenticated +### users have read and write access to the repository. +# anon-access = read +# auth-access = write +### The password-db option controls the location of the password +### database file. Unless you specify a path starting with a /, +### the file's location is relative to the directory containing +### this configuration file. +### If SASL is enabled (see below), this file will NOT be used. +### Uncomment the line below to use the default password file. +# password-db = passwd +### The authz-db option controls the location of the authorization +### rules for path-based access control. Unless you specify a path +### starting with a /, the file's location is relative to the +### directory containing this file. The specified path may be a +### repository relative URL (^/) or an absolute file:// URL to a text +### file in a Subversion repository. If you don't specify an authz-db, +### no path-based access control is done. +### Uncomment the line below to use the default authorization file. +# authz-db = authz +### The groups-db option controls the location of the file with the +### group definitions and allows maintaining groups separately from the +### authorization rules. The groups-db file is of the same format as the +### authz-db file and should contain a single [groups] section with the +### group definitions. If the option is enabled, the authz-db file cannot +### contain a [groups] section. Unless you specify a path starting with +### a /, the file's location is relative to the directory containing this +### file. The specified path may be a repository relative URL (^/) or an +### absolute file:// URL to a text file in a Subversion repository. +### This option is not being used by default. +# groups-db = groups +### This option specifies the authentication realm of the repository. +### If two repositories have the same authentication realm, they should +### have the same password database, and vice versa. The default realm +### is repository's uuid. +# realm = My First Repository +### The force-username-case option causes svnserve to case-normalize +### usernames before comparing them against the authorization rules in the +### authz-db file configured above. Valid values are "upper" (to upper- +### case the usernames), "lower" (to lowercase the usernames), and +### "none" (to compare usernames as-is without case conversion, which +### is the default behavior). +# force-username-case = none +### The hooks-env options specifies a path to the hook script environment +### configuration file. This option overrides the per-repository default +### and can be used to configure the hook script environment for multiple +### repositories in a single file, if an absolute path is specified. +### Unless you specify an absolute path, the file's location is relative +### to the directory containing this file. +# hooks-env = hooks-env + +[sasl] +### This option specifies whether you want to use the Cyrus SASL +### library for authentication. Default is false. +### Enabling this option requires svnserve to have been built with Cyrus +### SASL support; to check, run 'svnserve --version' and look for a line +### reading 'Cyrus SASL authentication is available.' +# use-sasl = true +### These options specify the desired strength of the security layer +### that you want SASL to provide. 0 means no encryption, 1 means +### integrity-checking only, values larger than 1 are correlated +### to the effective key length for encryption (e.g. 128 means 128-bit +### encryption). The values below are the defaults. +# min-encryption = 0 +# max-encryption = 256 diff --git a/db/current b/db/current new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/db/current @@ -0,0 +1 @@ +1 diff --git a/db/format b/db/format new file mode 100644 index 0000000..5dd0c22 --- /dev/null +++ b/db/format @@ -0,0 +1,3 @@ +8 +layout sharded 1000 +addressing logical diff --git a/db/fs-type b/db/fs-type new file mode 100644 index 0000000..4fdd953 --- /dev/null +++ b/db/fs-type @@ -0,0 +1 @@ +fsfs diff --git a/db/fsfs.conf b/db/fsfs.conf new file mode 100644 index 0000000..39f5d7e --- /dev/null +++ b/db/fsfs.conf @@ -0,0 +1,200 @@ +### This file controls the configuration of the FSFS filesystem. + +[memcached-servers] +### These options name memcached servers used to cache internal FSFS +### data. See http://www.danga.com/memcached/ for more information on +### memcached. To use memcached with FSFS, run one or more memcached +### servers, and specify each of them as an option like so: +# first-server = 127.0.0.1:11211 +# remote-memcached = mymemcached.corp.example.com:11212 +### The option name is ignored; the value is of the form HOST:PORT. +### memcached servers can be shared between multiple repositories; +### however, if you do this, you *must* ensure that repositories have +### distinct UUIDs and paths, or else cached data from one repository +### might be used by another accidentally. Note also that memcached has +### no authentication for reads or writes, so you must ensure that your +### memcached servers are only accessible by trusted users. + +[caches] +### When a cache-related error occurs, normally Subversion ignores it +### and continues, logging an error if the server is appropriately +### configured (and ignoring it with file:// access). To make +### Subversion never ignore cache errors, uncomment this line. +# fail-stop = true + +[rep-sharing] +### To conserve space, the filesystem can optionally avoid storing +### duplicate representations. This comes at a slight cost in +### performance, as maintaining a database of shared representations can +### increase commit times. The space savings are dependent upon the size +### of the repository, the number of objects it contains and the amount of +### duplication between them, usually a function of the branching and +### merging process. +### +### The following parameter enables rep-sharing in the repository. It can +### be switched on and off at will, but for best space-saving results +### should be enabled consistently over the life of the repository. +### 'svnadmin verify' will check the rep-cache regardless of this setting. +### rep-sharing is enabled by default. +# enable-rep-sharing = true + +[deltification] +### To conserve space, the filesystem stores data as differences against +### existing representations. This comes at a slight cost in performance, +### as calculating differences can increase commit times. Reading data +### will also create higher CPU load and the data will be fragmented. +### Since deltification tends to save significant amounts of disk space, +### the overall I/O load can actually be lower. +### +### The options in this section allow for tuning the deltification +### strategy. Their effects on data size and server performance may vary +### from one repository to another. Versions prior to 1.8 will ignore +### this section. +### +### The following parameter enables deltification for directories. It can +### be switched on and off at will, but for best space-saving results +### should be enabled consistently over the lifetime of the repository. +### Repositories containing large directories will benefit greatly. +### In rarely accessed repositories, the I/O overhead may be significant +### as caches will most likely be low. +### directory deltification is enabled by default. +# enable-dir-deltification = true +### +### The following parameter enables deltification for properties on files +### and directories. Overall, this is a minor tuning option but can save +### some disk space if you merge frequently or frequently change node +### properties. You should not activate this if rep-sharing has been +### disabled because this may result in a net increase in repository size. +### property deltification is enabled by default. +# enable-props-deltification = true +### +### During commit, the server may need to walk the whole change history of +### of a given node to find a suitable deltification base. This linear +### process can impact commit times, svnadmin load and similar operations. +### This setting limits the depth of the deltification history. If the +### threshold has been reached, the node will be stored as fulltext and a +### new deltification history begins. +### Note, this is unrelated to svn log. +### Very large values rarely provide significant additional savings but +### can impact performance greatly - in particular if directory +### deltification has been activated. Very small values may be useful in +### repositories that are dominated by large, changing binaries. +### Should be a power of two minus 1. A value of 0 will effectively +### disable deltification. +### For 1.8, the default value is 1023; earlier versions have no limit. +# max-deltification-walk = 1023 +### +### The skip-delta scheme used by FSFS tends to repeatably store redundant +### delta information where a simple delta against the latest version is +### often smaller. By default, 1.8+ will therefore use skip deltas only +### after the linear chain of deltas has grown beyond the threshold +### specified by this setting. +### Values up to 64 can result in some reduction in repository size for +### the cost of quickly increasing I/O and CPU costs. Similarly, smaller +### numbers can reduce those costs at the cost of more disk space. For +### rarely read repositories or those containing larger binaries, this may +### present a better trade-off. +### Should be a power of two. A value of 1 or smaller will cause the +### exclusive use of skip-deltas (as in pre-1.8). +### For 1.8, the default value is 16; earlier versions use 1. +# max-linear-deltification = 16 +### +### After deltification, we compress the data to minimize on-disk size. +### This setting controls the compression algorithm, which will be used in +### future revisions. It can be used to either disable compression or to +### select between available algorithms (zlib, lz4). zlib is a general- +### purpose compression algorithm. lz4 is a fast compression algorithm +### which should be preferred for repositories with large and, possibly, +### incompressible files. Note that the compression ratio of lz4 is +### usually lower than the one provided by zlib, but using it can +### significantly speed up commits as well as reading the data. +### lz4 compression algorithm is supported, starting from format 8 +### repositories, available in Subversion 1.10 and higher. +### The syntax of this option is: +### compression = none | lz4 | zlib | zlib-1 ... zlib-9 +### Versions prior to Subversion 1.10 will ignore this option. +### The default value is 'lz4' if supported by the repository format and +### 'zlib' otherwise. 'zlib' is currently equivalent to 'zlib-5'. +# compression = lz4 +### +### DEPRECATED: The new 'compression' option deprecates previously used +### 'compression-level' option, which was used to configure zlib compression. +### For compatibility with previous versions of Subversion, this option can +### still be used (and it will result in zlib compression with the +### corresponding compression level). +### compression-level = 0 ... 9 (default is 5) + +[packed-revprops] +### This parameter controls the size (in kBytes) of packed revprop files. +### Revprops of consecutive revisions will be concatenated into a single +### file up to but not exceeding the threshold given here. However, each +### pack file may be much smaller and revprops of a single revision may be +### much larger than the limit set here. The threshold will be applied +### before optional compression takes place. +### Large values will reduce disk space usage at the expense of increased +### latency and CPU usage reading and changing individual revprops. +### Values smaller than 4 kByte will not improve latency any further and +### quickly render revprop packing ineffective. +### revprop-pack-size is 16 kBytes by default for non-compressed revprop +### pack files and 64 kBytes when compression has been enabled. +# revprop-pack-size = 16 +### +### To save disk space, packed revprop files may be compressed. Standard +### revprops tend to allow for very effective compression. Reading and +### even more so writing, become significantly more CPU intensive. +### Compressing packed revprops is disabled by default. +# compress-packed-revprops = false + +[io] +### Parameters in this section control the data access granularity in +### format 7 repositories and later. The defaults should translate into +### decent performance over a wide range of setups. +### +### When a specific piece of information needs to be read from disk, a +### data block is being read at once and its contents are being cached. +### If the repository is being stored on a RAID, the block size should be +### either 50% or 100% of RAID block size / granularity. Also, your file +### system blocks/clusters should be properly aligned and sized. In that +### setup, each access will hit only one disk (minimizes I/O load) but +### uses all the data provided by the disk in a single access. +### For SSD-based storage systems, slightly lower values around 16 kB +### may improve latency while still maximizing throughput. If block-read +### has not been enabled, this will be capped to 4 kBytes. +### Can be changed at any time but must be a power of 2. +### block-size is given in kBytes and with a default of 64 kBytes. +# block-size = 64 +### +### The log-to-phys index maps data item numbers to offsets within the +### rev or pack file. This index is organized in pages of a fixed maximum +### capacity. To access an item, the page table and the respective page +### must be read. +### This parameter only affects revisions with thousands of changed paths. +### If you have several extremely large revisions (~1 mio changes), think +### about increasing this setting. Reducing the value will rarely result +### in a net speedup. +### This is an expert setting. Must be a power of 2. +### l2p-page-size is 8192 entries by default. +# l2p-page-size = 8192 +### +### The phys-to-log index maps positions within the rev or pack file to +### to data items, i.e. describes what piece of information is being +### stored at any particular offset. The index describes the rev file +### in chunks (pages) and keeps a global list of all those pages. Large +### pages mean a shorter page table but a larger per-page description of +### data items in it. The latency sweetspot depends on the change size +### distribution but covers a relatively wide range. +### If the repository contains very large files, i.e. individual changes +### of tens of MB each, increasing the page size will shorten the index +### file at the expense of a slightly increased latency in sections with +### smaller changes. +### For source code repositories, this should be about 16x the block-size. +### Must be a power of 2. +### p2l-page-size is given in kBytes and with a default of 1024 kBytes. +# p2l-page-size = 1024 + +[debug] +### +### Whether to verify each new revision immediately before finalizing +### the commit. This is disabled by default except in maintainer-mode +### builds. +# verify-before-commit = false diff --git a/db/min-unpacked-rev b/db/min-unpacked-rev new file mode 100644 index 0000000..573541a --- /dev/null +++ b/db/min-unpacked-rev @@ -0,0 +1 @@ +0 diff --git a/db/rep-cache.db b/db/rep-cache.db new file mode 100644 index 0000000000000000000000000000000000000000..50c11ff48e8d877a584b870a8abe191e68627779 GIT binary patch literal 8192 zcmeIuPfNov7zXg92%;eF=5fzaLA>|{tQxdfSB)8S2N`ioX+hV~77=gar`WeOkufjD zlZPFim;B{@2;ui|pO&pdUe&L*#i{5CDa9EegoswtZ$Bmdy0tooE!;!quZqM8mU})S z_aXdXQGfyzpa2CZKmiI+fC3bt00lNu;PXjtAN2e3Yp1o(FRpfr$<$7Z-$QhvRcsVY ze4Z+-`#1zp*rtF{j|PLx&taP4PA9jq9^*!hkA0$cZ)H7XIuriUBa9Mroed3iHcBpcgL-cx>G>%NP=Epypa2CZKmiI+fC3bt J00sU@;2Qzt1RRiHZQ=L;CU@@4?#yhXLbg~~mc>fT`3nX?Ls&t(q_@;kd&|6q zPmnj!N-"j%`;)7F<&!^&p5-&NVNc`P`LVZ4M1vhI123LfW679Jk&yS}h4J?+gU zS3MZfY8^$e`Aiw@d{Ry%1dI`+SBZs%>uw7^VT{$-o>k4Xyk=x|K`9*$$d+#CX^Zv$ zf4Az(2{}^ad;78;-W-sx-=Fn>9+LNu&)3o0-}x~i0yI}C8O(!53mF)Lc9yx|g^G|c ej~cmPzoZI_YZ6{Gdr_88^Nk1hnf(AO7WJ=&dj!fDn0uL2;xcFgCGi};7P%MLA>_hL1!bWwMgk<=JI{-``-8Sx~2ler?X@>qvZhS z>jPT>)6KB%uk~`LVLed!QU%IMrh0nGt~zC~p7r~M2xW}B&Vh{`_(=}ATKsQ!Fzyy7 zc4uq7<>SMvwZ?-a) z)0B>oW87dZf4*6*J;dJdmgjkw&ZC`k2j2VA6K~^ji#5jLtJ2Wv5xP@BFE&4IU%WYq zems5i{p{Q%din14uL~NZ-LD^~H)6E)d2he;%)5-9fBCR^<=fA>YX}J*yI_JaqN6CX rO2(X~(lQ>UT$426lExq+3DoM8C~b*QiI&DOO{6l~rdCtJNj(1>+FjA$ literal 0 HcmV?d00001 diff --git a/db/txn-current b/db/txn-current new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/db/txn-current @@ -0,0 +1 @@ +1 diff --git a/db/txn-current-lock b/db/txn-current-lock new file mode 100644 index 0000000..e69de29 diff --git a/db/uuid b/db/uuid new file mode 100644 index 0000000..4588373 --- /dev/null +++ b/db/uuid @@ -0,0 +1,2 @@ +eb20f9c5-9a5b-5d4d-8bd4-585cf12843c9 +2b4effe4-627e-d846-a421-15f1b8ad4a47 diff --git a/db/write-lock b/db/write-lock new file mode 100644 index 0000000..e69de29 diff --git a/format b/format new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/format @@ -0,0 +1 @@ +5 diff --git a/hooks/post-commit.tmpl b/hooks/post-commit.tmpl new file mode 100644 index 0000000..166709e --- /dev/null +++ b/hooks/post-commit.tmpl @@ -0,0 +1,62 @@ +#!/bin/sh + +# POST-COMMIT HOOK +# +# The post-commit hook is invoked after a commit. Subversion runs +# this hook by invoking a program (script, executable, binary, etc.) +# named 'post-commit' (for which this file is a template) with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REV (the number of the revision just committed) +# [3] TXN-NAME (the name of the transaction that has become REV) +# +# Because the commit has already completed and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to help it examine the +# newly-committed tree. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'post-commit' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-commit' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-commit.bat' or 'post-commit.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +REV="$2" +TXN_NAME="$3" + +mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf diff --git a/hooks/post-lock.tmpl b/hooks/post-lock.tmpl new file mode 100644 index 0000000..34b8cbf --- /dev/null +++ b/hooks/post-lock.tmpl @@ -0,0 +1,64 @@ +#!/bin/sh + +# POST-LOCK HOOK +# +# The post-lock hook is run after a path is locked. Subversion runs +# this hook by invoking a program (script, executable, binary, etc.) +# named 'post-lock' (for which this file is a template) with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] USER (the user who created the lock) +# +# The paths that were just locked are passed to the hook via STDIN. +# +# Because the locks have already been created and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to examine the paths in the repository +# but since the hook is invoked asynchronously the newly-created locks +# may no longer be present. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'post-lock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-lock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-lock.bat' or 'post-lock.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +USER="$2" + +# Send email to interested parties, let them know a lock was created: +mailer.py lock "$REPOS" "$USER" /path/to/mailer.conf diff --git a/hooks/post-revprop-change.tmpl b/hooks/post-revprop-change.tmpl new file mode 100644 index 0000000..0f82582 --- /dev/null +++ b/hooks/post-revprop-change.tmpl @@ -0,0 +1,69 @@ +#!/bin/sh + +# POST-REVPROP-CHANGE HOOK +# +# The post-revprop-change hook is invoked after a revision property +# has been added, modified or deleted. Subversion runs this hook by +# invoking a program (script, executable, binary, etc.) named +# 'post-revprop-change' (for which this file is a template), with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REV (the revision that was tweaked) +# [3] USER (the username of the person tweaking the property) +# [4] PROPNAME (the property that was changed) +# [5] ACTION (the property was 'A'dded, 'M'odified, or 'D'eleted) +# +# [STDIN] PROPVAL ** the old property value is passed via STDIN. +# +# Because the propchange has already completed and cannot be undone, +# the exit code of the hook program is ignored. The hook program +# can use the 'svnlook' utility to help it examine the +# new property value. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'post-revprop-change' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-revprop-change' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-revprop-change.bat' or 'post-revprop-change.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +REV="$2" +USER="$3" +PROPNAME="$4" +ACTION="$5" + +mailer.py propchange2 "$REPOS" "$REV" "$USER" "$PROPNAME" "$ACTION" /path/to/mailer.conf diff --git a/hooks/post-unlock.tmpl b/hooks/post-unlock.tmpl new file mode 100644 index 0000000..1ddb023 --- /dev/null +++ b/hooks/post-unlock.tmpl @@ -0,0 +1,61 @@ +#!/bin/sh + +# POST-UNLOCK HOOK +# +# The post-unlock hook runs after a path is unlocked. Subversion runs +# this hook by invoking a program (script, executable, binary, etc.) +# named 'post-unlock' (for which this file is a template) with the +# following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] USER (the user who destroyed the lock) +# +# The paths that were just unlocked are passed to the hook via STDIN. +# +# Because the lock has already been destroyed and cannot be undone, +# the exit code of the hook program is ignored. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'post-unlock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'post-unlock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'post-unlock.bat' or 'post-unlock.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +USER="$2" + +# Send email to interested parties, let them know a lock was removed: +mailer.py unlock "$REPOS" "$USER" /path/to/mailer.conf diff --git a/hooks/pre-commit.tmpl b/hooks/pre-commit.tmpl new file mode 100644 index 0000000..c2d147f --- /dev/null +++ b/hooks/pre-commit.tmpl @@ -0,0 +1,91 @@ +#!/bin/sh + +# PRE-COMMIT HOOK +# +# The pre-commit hook is invoked before a Subversion txn is +# committed. Subversion runs this hook by invoking a program +# (script, executable, binary, etc.) named 'pre-commit' (for which +# this file is a template), with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] TXN-NAME (the name of the txn about to be committed) +# +# [STDIN] LOCK-TOKENS ** the lock tokens are passed via STDIN. +# +# If STDIN contains the line "LOCK-TOKENS:\n" (the "\n" denotes a +# single newline), the lines following it are the lock tokens for +# this commit. The end of the list is marked by a line containing +# only a newline character. +# +# Each lock token line consists of a URI-escaped path, followed +# by the separator character '|', followed by the lock token string, +# followed by a newline. +# +# If the hook program exits with success, the txn is committed; but +# if it exits with failure (non-zero), the txn is aborted, no commit +# takes place, and STDERR is returned to the client. The hook +# program can use the 'svnlook' utility to help it examine the txn. +# +# *** NOTE: THE HOOK PROGRAM MUST NOT MODIFY THE TXN, EXCEPT *** +# *** FOR REVISION PROPERTIES (like svn:log or svn:author). *** +# +# This is why we recommend using the read-only 'svnlook' utility. +# In the future, Subversion may enforce the rule that pre-commit +# hooks should not modify the versioned data in txns, or else come +# up with a mechanism to make it safe to do so (by informing the +# committing client of the changes). However, right now neither +# mechanism is implemented, so hook writers just have to be careful. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'pre-commit' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-commit' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-commit.bat' or 'pre-commit.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +TXN="$2" + +# Make sure that the log message contains some text. +SVNLOOK=/usr/local/bin/svnlook +$SVNLOOK log -t "$TXN" "$REPOS" | \ + grep "[a-zA-Z0-9]" > /dev/null || exit 1 + +# Check that the author of this commit has the rights to perform +# the commit on the files and directories being modified. +commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 + +# All checks passed, so allow the commit. +exit 0 diff --git a/hooks/pre-lock.tmpl b/hooks/pre-lock.tmpl new file mode 100644 index 0000000..e2209b3 --- /dev/null +++ b/hooks/pre-lock.tmpl @@ -0,0 +1,95 @@ +#!/bin/sh + +# PRE-LOCK HOOK +# +# The pre-lock hook is invoked before an exclusive lock is +# created. Subversion runs this hook by invoking a program +# (script, executable, binary, etc.) named 'pre-lock' (for which +# this file is a template), with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] PATH (the path in the repository about to be locked) +# [3] USER (the user creating the lock) +# [4] COMMENT (the comment of the lock) +# [5] STEAL-LOCK (1 if the user is trying to steal the lock, else 0) +# +# If the hook program outputs anything on stdout, the output string will +# be used as the lock token for this lock operation. If you choose to use +# this feature, you must guarantee the tokens generated are unique across +# the repository each time. +# +# If the hook program exits with success, the lock is created; but +# if it exits with failure (non-zero), the lock action is aborted +# and STDERR is returned to the client. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'pre-lock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-lock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-lock.bat' or 'pre-lock.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +PATH="$2" +USER="$3" +COMMENT="$4" +STEAL="$5" + +# If a lock exists and is owned by a different person, don't allow it +# to be stolen (e.g., with 'svn lock --force ...'). + +# (Maybe this script could send email to the lock owner?) +SVNLOOK=/usr/local/bin/svnlook +GREP=/bin/grep +SED=/bin/sed + +LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \ + $GREP '^Owner: ' | $SED 's/Owner: //'` + +# If we get no result from svnlook, there's no lock, allow the lock to +# happen: +if [ "$LOCK_OWNER" = "" ]; then + exit 0 +fi + +# If the person locking matches the lock's owner, allow the lock to +# happen: +if [ "$LOCK_OWNER" = "$USER" ]; then + exit 0 +fi + +# Otherwise, we've got an owner mismatch, so return failure: +echo "Error: $PATH already locked by ${LOCK_OWNER}." 1>&2 +exit 1 diff --git a/hooks/pre-revprop-change.tmpl b/hooks/pre-revprop-change.tmpl new file mode 100644 index 0000000..3f4283a --- /dev/null +++ b/hooks/pre-revprop-change.tmpl @@ -0,0 +1,79 @@ +#!/bin/sh + +# PRE-REVPROP-CHANGE HOOK +# +# The pre-revprop-change hook is invoked before a revision property +# is added, modified or deleted. Subversion runs this hook by invoking +# a program (script, executable, binary, etc.) named 'pre-revprop-change' +# (for which this file is a template), with the following ordered +# arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] REV (the revision being tweaked) +# [3] USER (the username of the person tweaking the property) +# [4] PROPNAME (the property being set on the revision) +# [5] ACTION (the property is being 'A'dded, 'M'odified, or 'D'eleted) +# +# [STDIN] PROPVAL ** the new property value is passed via STDIN. +# +# If the hook program exits with success, the propchange happens; but +# if it exits with failure (non-zero), the propchange doesn't happen. +# The hook program can use the 'svnlook' utility to examine the +# existing value of the revision property. +# +# WARNING: unlike other hooks, this hook MUST exist for revision +# properties to be changed. If the hook does not exist, Subversion +# will behave as if the hook were present, but failed. The reason +# for this is that revision properties are UNVERSIONED, meaning that +# a successful propchange is destructive; the old value is gone +# forever. We recommend the hook back up the old value somewhere. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'pre-revprop-change' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-revprop-change' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-revprop-change.bat' or 'pre-revprop-change.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +REV="$2" +USER="$3" +PROPNAME="$4" +ACTION="$5" + +if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi + +echo "Changing revision properties other than svn:log is prohibited" >&2 +exit 1 diff --git a/hooks/pre-unlock.tmpl b/hooks/pre-unlock.tmpl new file mode 100644 index 0000000..590ba39 --- /dev/null +++ b/hooks/pre-unlock.tmpl @@ -0,0 +1,87 @@ +#!/bin/sh + +# PRE-UNLOCK HOOK +# +# The pre-unlock hook is invoked before an exclusive lock is +# destroyed. Subversion runs this hook by invoking a program +# (script, executable, binary, etc.) named 'pre-unlock' (for which +# this file is a template), with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] PATH (the path in the repository about to be unlocked) +# [3] USER (the user destroying the lock) +# [4] TOKEN (the lock token to be destroyed) +# [5] BREAK-UNLOCK (1 if the user is breaking the lock, else 0) +# +# If the hook program exits with success, the lock is destroyed; but +# if it exits with failure (non-zero), the unlock action is aborted +# and STDERR is returned to the client. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'pre-unlock' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'pre-unlock' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'pre-unlock.bat' or 'pre-unlock.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +PATH="$2" +USER="$3" +TOKEN="$4" +BREAK="$5" + +# If a lock is owned by a different person, don't allow it be broken. +# (Maybe this script could send email to the lock owner?) + +SVNLOOK=/usr/local/bin/svnlook +GREP=/bin/grep +SED=/bin/sed + +LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \ + $GREP '^Owner: ' | $SED 's/Owner: //'` + +# If we get no result from svnlook, there's no lock, return success: +if [ "$LOCK_OWNER" = "" ]; then + exit 0 +fi + +# If the person unlocking matches the lock's owner, return success: +if [ "$LOCK_OWNER" = "$USER" ]; then + exit 0 +fi + +# Otherwise, we've got an owner mismatch, so return failure: +echo "Error: $PATH locked by ${LOCK_OWNER}." 1>&2 +exit 1 diff --git a/hooks/start-commit.tmpl b/hooks/start-commit.tmpl new file mode 100644 index 0000000..bf0a165 --- /dev/null +++ b/hooks/start-commit.tmpl @@ -0,0 +1,81 @@ +#!/bin/sh + +# START-COMMIT HOOK +# +# The start-commit hook is invoked immediately after a Subversion txn is +# created and populated with initial revprops in the process of doing a +# commit. Subversion runs this hook by invoking a program (script, +# executable, binary, etc.) named 'start-commit' (for which this file +# is a template) with the following ordered arguments: +# +# [1] REPOS-PATH (the path to this repository) +# [2] USER (the authenticated user attempting to commit) +# [3] CAPABILITIES (a colon-separated list of capabilities reported +# by the client; see note below) +# [4] TXN-NAME (the name of the commit txn just created) +# +# Note: The CAPABILITIES parameter is new in Subversion 1.5, and 1.5 +# clients will typically report at least the "mergeinfo" capability. +# If there are other capabilities, then the list is colon-separated, +# e.g.: "mergeinfo:some-other-capability" (the order is undefined). +# +# The list is self-reported by the client. Therefore, you should not +# make security assumptions based on the capabilities list, nor should +# you assume that clients reliably report every capability they have. +# +# Note: The TXN-NAME parameter is new in Subversion 1.8. Prior to version +# 1.8, the start-commit hook was invoked before the commit txn was even +# created, so the ability to inspect the commit txn and its metadata from +# within the start-commit hook was not possible. +# +# If the hook program exits with success, the commit continues; but +# if it exits with failure (non-zero), the commit is stopped before +# a Subversion txn is created, and STDERR is returned to the client. +# +# The default working directory for the invocation is undefined, so +# the program should set one explicitly if it cares. +# +# On a Unix system, the normal procedure is to have 'start-commit' +# invoke other programs to do the real work, though it may do the +# work itself too. +# +# Note that 'start-commit' must be executable by the user(s) who will +# invoke it (typically the user httpd runs as), and that user must +# have filesystem-level permission to access the repository. +# +# On a Windows system, you should name the hook program +# 'start-commit.bat' or 'start-commit.exe', +# but the basic idea is the same. +# +# The hook program runs in an empty environment, unless the server is +# explicitly configured otherwise. For example, a common problem is for +# the PATH environment variable to not be set to its usual value, so +# that subprograms fail to launch unless invoked via absolute path. +# If you're having unexpected problems with a hook program, the +# culprit may be unusual (or missing) environment variables. +# +# CAUTION: +# For security reasons, you MUST always properly quote arguments when +# you use them, as those arguments could contain whitespace or other +# problematic characters. Additionally, you should delimit the list +# of options with "--" before passing the arguments, so malicious +# clients cannot bootleg unexpected options to the commands your +# script aims to execute. +# For similar reasons, you should also add a trailing @ to URLs which +# are passed to SVN commands accepting URLs with peg revisions. +# +# Here is an example hook script, for a Unix /bin/sh interpreter. +# For more examples and pre-written hooks, see those in +# the Subversion repository at +# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and +# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ + + +REPOS="$1" +USER="$2" + +commit-allower.pl --repository "$REPOS" --user "$USER" || exit 1 +special-auth-check.py --user "$USER" --auth-level 3 || exit 1 + +# All checks passed, so allow the commit. +exit 0 diff --git a/locks/db-logs.lock b/locks/db-logs.lock new file mode 100644 index 0000000..536ac36 --- /dev/null +++ b/locks/db-logs.lock @@ -0,0 +1,3 @@ +This file is not used by Subversion 1.3.x or later. +However, its existence is required for compatibility with +Subversion 1.2.x or earlier. diff --git a/locks/db.lock b/locks/db.lock new file mode 100644 index 0000000..536ac36 --- /dev/null +++ b/locks/db.lock @@ -0,0 +1,3 @@ +This file is not used by Subversion 1.3.x or later. +However, its existence is required for compatibility with +Subversion 1.2.x or earlier. diff --git a/svn.ico b/svn.ico new file mode 100644 index 0000000000000000000000000000000000000000..0896ad00c1516d35c1d647d2b933143a5c799058 GIT binary patch literal 180467 zcma&NWk8!v&^CG}1S>AZ-AXAA#U)7b0!0eN-QAra#l6LfLvf0`Q;HQY?(XgmC(rx6 z-#LFzer4}uXJ>Y2cdof+ZvX%RIKY1&Ss6(cD_H;_0096yI{<%<0u*5a089=5sHpz8 zjRF9SUjTrJ=>N3)kpN)K5CE{T|4-Wj5dcyw{zu&Z$eWOWf4BR;@`!*UG60yU`oHqv zZFB(e9{IoWhyWR60H9s?zw(Fx3j_eLUjP5(#VNr1Z^3nf{Wl&Jz=#3@j5$F76#Bny zaR7)E0RON4R6r3u0Mz(^|5tx_8?L8zF8F`-rvk!I0RW)}{J;8B0TvK=|5h*%uB<4H z@rvXXd}NIO=H)->|6?KCUO>mG$P7MR9I}#PY98}P8K@~_8m=d!mkOf_qwR8BdA@XW z)hwPXgamkGM(hTyLch7_;wn>)=phN%J6rUv*m~_yk@n{J9yuf(DI3FU8T~g@zJ4b$2BVrIjoZUv*t=jhV^273UM-n?->!3-0&w zy7~6dym2*57J%deDYU zSs)}UYL{D{Ry!}lnHRlEP@~P{UQ!X2J@Zc-Dg*o$C=E@l;UO|_Cg1BLw4B_d>)d`m zLbZ5Qtx85dc+ej4X)a*0d*^5rzwZMkOTtw(bWJDXEyZ?j49BJ{A8RdH%*H;Mq#L!Bkr) zkteyz#Ew{BM=E-2hEfh|DQo%d+G&GpDsjmwh{dW}1Rlp&?d4_Etl@jsxS&X{0?SgUy2TEniX;}=I4y*n*8 z8D&~nox```(*bGl0V8sa*hcJ+9~KTRlb=L>?zjomdrb&<0lZoBNxWXcat~?@#w5bH zx-t?pi2>4>3f<%<&lM$jz$Jj4+J)Ep>U7sOYn%fFU%ta0{`wQ|x#v1_35NE;D^2d; zgBu~F4qh@xZZ8u%$AwJV3-!0aCTJE%ZWvmSLpy^#>y~c^nZ*C_L67Y4WyNu?g-ZBI zr~PH+7Z#Z?tW@JGvs7&M+P87lJSqz3)kMC}&A`G}eB*pp=q8uKXF zWW$iU%{SVp+!}gEz1Y6I7!u^oJ}qk9+L+V)gq_8|J>O4%?EMfVXlQIgZGRaybh?qM zW1wt?ULpr@rZTsl@AerQShHfn&|nHEVag^b;=?=Lw4yJ(&&reIyThZA(E%8Eu9X+DeqY{$4MaK?L@?3_jL8>^rVFu5=ssZ`yx-faWO-=p_YtKMM<1nvrtXll1bp^-VOX{pCMuxzB7F9wk~I zlvQB!gjh#s5t5rVO6|T@W?^n4H{Z3uf3^id)(3i&D6R;>5CGgo^7;hv^6JY6G zCb0~>)BL?iiE7N~VwYM%8d6aIk)8jZlWf*m6y0VXMVsv*mjE2iLhs4%=ev_-GV1q4 zxk-9`7&SYfsTS*QO{B`NhdB2>W7>2lIwJ*!M{6lVq=&{6JT1iNm!p%&{7(mKu9?7s zM}&vhT|)Z=8$Ig@#PWGiL6(9~>dLldSJ!M$>HBZkp``euP8nZO#5cTkjy}xTE*m3Z zn*~P^Zpr2$1?hJfHj`T&gGV(Uc1%2`{SB(S$u`c4~H7 zkE6{7J7yBdFc`E~w)fJVI!`3(k4^annt_2{F2n9=!vzIty=u_eC{s|uVvLxH)X_FM zb18Ok$VZ&nhux0u>5t*2cOz8Tx)y=GGF;q03#rvtP=_&y!wSW>ImwqnEY{@#!tPJ+ zbxue8(PDtZ$F;)h3h#xhO7>^v*z?Di4SNcl6(x#mN%n2Go5?K3BL=?H8wUE9tp z$k8l$cmGz(T?lVJyqrrnoeXUn5fc!oVB4n!HdiG*o}n3T2<8p02^g~aWKEtmHzJ6tsJLHa#R z{�`<^y%c@DqlGuIt<)(brq?HMcjX-r+KI5MAM%#fv?Upr*qw{=N5IY z8eqAn!Ft)huq<$FgEsmMor zP{@jo;vlVF39AK7*%J`BQ?U`NNyPQli1V$+-c6OOlhOq4DAg~F!+7JA0 zk8DRVyKcJNKd{mRIExqM&n73F3jjI>e=F_L2E2d)C4WLB(WIoLYZMYcfux7@AH%;( z8%BR4VjW>UhV=~@xfJYz_)tNC-5HdPM}rQ>cNu2v_=qx}9PnS#ZFd8kC)Gq`B9P?= zz=eE1X*M0`6tJz@%RmoI-`Wgs(oylE8@nldCeX{u3A`MP_AD z&D<6U?kokED1cw1FFjb<8@-y#yTw0uq(&Pk@3zR&-B*ItIlkdWbha;u8ppU+MxNp~ ztjY8}_@92^yZH^8Kp7iDJ>%kaD)e3Kw`j=#W{H2kv&F#a=GdQE6YQ{e(u$dor*zMmvPF~jgSSPam9XC888S!7@8OjM0C zf%ePAx`7QAFQx=%D^6zfi+2|;46VY0>!zoOq)=`lDJvOL|<_!>K`ja1g76J;Z)dR;q zK9+Xj13uW_CWg1KZx_iFhKXEjlagpUx?c58O}sZfxNWd7TPA!_IB+TRh*@%T6kW;m zkDFU$?AgAqgF4~_TbV46W4++j>VB{New{mh!4oi}_ak6N_*!z66x725OpP7(F3%9> zFa2V#ETPbvcbds=7Ws{V+t4ui@pa?Px})1|af`gXizK_-cnVqxvSm0-rUWsX1z~K= z&-4^x@bERc^ESROr^*wr79$hki2NPb^-{D1+hK_E5?`69skR=VhG22p7)1F3uC*Jw z0_Ck08YT2X2@u%5oRCJAn<$&-(-3s;(>nSJFgo9QlvV9;^R@buZ7V&KAk8!o9=@SX zZn{#8_BC2s8QDFO^G{t9OnOduQsLDPR!1)Sflc8dD&%lL7)TG0@?h*>Q10BP5f6Ta z@P;HaJpL@luQ>40=8tnF4xe>LHY|=6<7+CN5i%;m(F_WPpBOeW<{Wo_frP!Hh(z|8C?Ex%INbpd>~7sBGP6(lu!L&^Oh)18{1 zOwwW{zGl`>luzI`x0>RiQ)nAzBWl}scJWA3eN=sR?LscnzHBFZBfD_>G)pcazn+-P zU~tvRUN%=ht>9_4Tqw_*+#eqMBF*~G9tV!XM<*tn9k$As%-CR_M*te=1~AF)+E`&$ z$qK&n5O^7?dU!`-8=!l$g4vxmpTqGlsREN3jZ=c*�a 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 literal 0 HcmV?d00001