Files
@ e54ddaa52fee
Branch filter:
Location: kallithea/docs/usage/customization.rst - annotation
e54ddaa52fee
1.7 KiB
text/prs.fallenstein.rst
hooks: parse incoming git refs correctly
Hooks receive a line of the following format on standard input:
<old-value> SP <new-value> SP <ref-name> LF
where <old-value> is the old object name stored in the ref,
<new-value> is the new object name to be stored in the ref
and <ref-name> is the full name of the ref.
This means, we have to strip at least the LF in order to have a
correct version of the ref name after the split. Also, when
parsing the ref name itself, use all components but first instead
of just second, as a ref name may have slashes in it.
Previously, failure to parse ref name correctly would lead to the
following behaviour. A newly created repository with no commits pushed
has HEAD set to refs/heads/master by default, even though there's no
such ref in the repository yet. Upon first push, Kallithea rewrites
this symbolic reference with a reference to a real branch.
However, due to a bug in ref name parsing, if a ref name had a slash,
Kallithea would update HEAD to an invalid reference:
git push origin feature/branch
would rewrite HEAD to refs/heads/feature. All future attempts to work
with this repository would fail because dulwich would complain it can't
read HEAD as it is a directory.
Hooks receive a line of the following format on standard input:
<old-value> SP <new-value> SP <ref-name> LF
where <old-value> is the old object name stored in the ref,
<new-value> is the new object name to be stored in the ref
and <ref-name> is the full name of the ref.
This means, we have to strip at least the LF in order to have a
correct version of the ref name after the split. Also, when
parsing the ref name itself, use all components but first instead
of just second, as a ref name may have slashes in it.
Previously, failure to parse ref name correctly would lead to the
following behaviour. A newly created repository with no commits pushed
has HEAD set to refs/heads/master by default, even though there's no
such ref in the repository yet. Upon first push, Kallithea rewrites
this symbolic reference with a reference to a real branch.
However, due to a bug in ref name parsing, if a ref name had a slash,
Kallithea would update HEAD to an invalid reference:
git push origin feature/branch
would rewrite HEAD to refs/heads/feature. All future attempts to work
with this repository would fail because dulwich would complain it can't
read HEAD as it is a directory.
60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 60f9840c8df1 | .. _customization:
=============
Customization
=============
There are several ways to customize Kallithea to your needs depending on what
you want to achieve.
HTML/JavaScript/CSS customization
---------------------------------
To customize the look-and-feel of the web interface (for example to add a
company banner or some JavaScript widget or to tweak the CSS style definitions)
you can enter HTML code (possibly with JavaScript and/or CSS) directly via the
*Admin > Settings > Global > HTML/JavaScript customization
block*.
Behavioral customization: rcextensions
--------------------------------------
Some behavioral customization can be done in Python using ``rcextensions``, a
custom Python package that can extend Kallithea functionality.
With ``rcextensions`` it's possible to add additional mappings for Whoosh
indexing and statistics, to add additional code into the push/pull/create/delete
repository hooks (for example to send signals to build bots such as Jenkins) and
even to monkey-patch certain parts of the Kallithea source code (for example
overwrite an entire function, change a global variable, ...).
To generate a skeleton extensions package, run::
paster make-rcext my.ini
This will create an ``rcextensions`` package next to the specified ``ini`` file.
See the ``__init__.py`` file inside the generated ``rcextensions`` package
for more details.
Behavioral customization: code changes
--------------------------------------
As Kallithea is open-source software, you can make any changes you like directly
in the source code.
We encourage you to send generic improvements back to the
community so that Kallithea can become better. See :ref:`contributing` for more
details.
|