Adding global and per-repo settings to Kallithea
Andrew Shadura
andrew at shadura.me
Tue May 19 10:31:41 EDT 2015
Hello,
On Tue, 19 May 2015 14:04:23 +0200
Thomas De Schampheleire <patrickdepinguin at gmail.com> wrote:
> I would like to get some clarification/discussion on adding new
> settings to Kallithea, both global and per-repo settings.
> For global settings, there is a 'settings' table that has one row per
> setting, each setting having a name, value and type.
> This is a nice and simple implementation.
> However, it seems that when new settings have been added in the past,
> there was always a database migration associated with it. This
> migration is not that big of a deal, but still doesn't seem necessary
> to me.
> When a setting is not present in the database, the default should be
> applied instead (at runtime, without changing the db). When a setting
> is first changed, the database is updated with the right setting.
> Alternatively, the setting is defaulted in the database when it is
> first used and found to be missing from the database.
> Does this make sense to you? Do you agree that a database migration is
> not necessary?
It does to me. Mads, what's your opinion?
> Regarding per-repo settings: is this currently implemented in some
> way? If so how? If not, how should we best implement this?
> In the repositories table, there are several columns that could be
> considered as per-repo setting, but it is not very nice to keep adding
> columns for every new per-repo setting.
> Such columns include landing_revision, enable_locking, ...
We (me and Mads) have discussed about this a lot during last week's
hackathon in Copenhagen. Here's an excerpt from our notes:
* Per Repo settings
* https://bitbucket.org/conservancy/kallithea/pull-request/39/allow-to-enable-or-disable-hooks-on-a-per/diff
* using an association table makes it easy to reuse … but perhaps complex to maintain?
* simple db migration step, avoids duplicating whole db ...
* requirements:
* admin - repo defaults indicates existing per repo settings: private, stats, locking, downloads (boolean fields on repository in database)
* hg settings & extensions per repo (instead of manual .hg/hgrc editing) … and there is probably a case for similar git settings
* per repo hooks and hook parameters - also git
* notify per repo (but that might just be a hook)
* theming? (not really, but perhaps, one day …)
* other global config?
* some kind of fancy group inheritance … but not in first milestone
* stored today
* bools on repos
* settings table - 99% really global (perhaps except stylify_metatags, dashboard_items, repository_fields)
* ui table, 1:1 database representation of mercurial config, contains stuff we want to make per repo, not much else … except git coverage
* easy solution
* add a nullable repo field to the ui table
* need a way to distinguish between VCS-specific stuff and our own; see what TortoiseHg does and do the same? Perhaps, use a [kallithea] section?
I'm not sure how legible it is, but there are some ideas there :)
--
Cheers,
Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://lists.sfconservancy.org/pipermail/kallithea-general/attachments/20150519/12c59af0/attachment.sig>
More information about the kallithea-general
mailing list