Re: Changes to branch management

2014-12-29 Thread Ben Cooksley
On Tue, Dec 30, 2014 at 6:08 AM, Jan Kundrát  wrote:
> On Monday, 29 December 2014 09:50:06 CEST, Ben Cooksley wrote:
>>
>> Unfortunately allowing force pushes is an extremely messy business
>> with the hooks - so we're unable to do this (for maintenance reasons
>> among others).
>
>
> Could you please elaborate on this one?
>
> The only reason I remember ever hearing was "it will send all notification
> e-mails again when you force-push". Why would that be a problem? Would
> disabling e.g. the CCMAIL, BUG and CCBUG keywords (or the all of the
> notification hooks) in all branches that support force pushes be a
> reasonable fix?

Two reasons:

1) The notification hooks, as you mention above. Disabling them for
branches which permit force pushes would be a workaround for that, but
then we have more complexity in the hooks to look after.

2) The social problems that come with the lack of notifications.
Community code review via email is broken without them, and force
pushes require people to take action if they have interacted with such
a branch in the past.

Plus it means we'll have a 3 tier hierarchy of branches in our
mainline repos - "personal" branches one can force push, "work"
branches which are shared and the primary release branches. Seems like
it might be a bit complex.

>
> With kind regards,
> Jan

Thanks,
Ben

>
>
> --
> Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/


Re: Changes to branch management

2014-12-29 Thread Jan Kundrát

On Monday, 29 December 2014 09:50:06 CEST, Ben Cooksley wrote:

Unfortunately allowing force pushes is an extremely messy business
with the hooks - so we're unable to do this (for maintenance reasons
among others).


Could you please elaborate on this one?

The only reason I remember ever hearing was "it will send all notification 
e-mails again when you force-push". Why would that be a problem? Would 
disabling e.g. the CCMAIL, BUG and CCBUG keywords (or the all of the 
notification hooks) in all branches that support force pushes be a 
reasonable fix?


With kind regards,
Jan

--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/


Re: Changes to branch management

2014-12-29 Thread Ben Cooksley
On Sat, Dec 27, 2014 at 9:09 AM, Matthew Dawson  wrote:
> On December 25, 2014 08:21:05 PM Ben Cooksley wrote:
>> > The way I see it, there are two reasonable alternatives with the current
>> > setup:
>> >
>> > 1) Everybody can create, delete and force-push to all branches except the
>> > "reserved" ones (kde/*, master, stable,... see the list).
>> >
>> > 2) People are free to create, delete and force-push to all branches below
>> > my/$username/ (in my case, tat would be my/jkt/foo for example). Only repo
>> > owners can create, delete and force-push to arbitrary branch names.
>>
>> In essence, yes - those are the two possible options we have.
>> Force pushing will *still* be prohibited under this proposal as it
>> stands (and would be a CoC violation if done).
>>
>> > Deciding which of these to use should be just a matter of style. Both seem
>> > very sensible to me, and they will definitely present an improvement over
>> > the current status where people can create, but not cleanup afterwards.
>>
>> Agreed. Can we have a show of hands / etc as to which one would suit
>> people best?
>>
>> I will add a 3rd possibility though.
>>
>> 3) People are free to create and delete to all branches below work/*.
>> Creation and deletion of branches outside this would be limited to
>> project admins (release managers). It also allows other developers to
>> cleanup as needed so it doesn't all fall on the repository admin /
>> sysadmin.
> I think a combination of 2 + 3 are best.  3 is the best for doing
> collaborative work, where force pushes are not welcome.  As Thomas says, its
> simple and keeps most important branches protected.
>
> However, I think 2 should be included, if and only if a developer gains the
> ability to force push into their personal branches.  When working , a
> developer may want to revise the history as development progress, but before
> moving it into a collaborative zone.  This makes it easy for developers to
> work closer to the main repository without pushing the code elsewhere,
> allowing other developers to quickly see how something is progressing.
>
> If force pushes are something that KDE does not want to allow, then I think
> doing just 3 is best.  I had thought they were disallowed to prevent people
> doing bad things on important branches.  I think for branches specifically
> listed as personal branches, allowing force pushes would be OK with the CoC,
> as developers can continue to monitor progress on a given branch.
> --
> Matthew

Thanks everyone for the feedback.
Support for proposal #3 seems fairly universal from what I can see -
so we'll go ahead and implement that.

Unfortunately allowing force pushes is an extremely messy business
with the hooks - so we're unable to do this (for maintenance reasons
among others).

Thanks,
Ben


Re: Changes to branch management

2014-12-26 Thread Matthew Dawson
On December 25, 2014 08:21:05 PM Ben Cooksley wrote:
> > The way I see it, there are two reasonable alternatives with the current
> > setup:
> > 
> > 1) Everybody can create, delete and force-push to all branches except the
> > "reserved" ones (kde/*, master, stable,... see the list).
> > 
> > 2) People are free to create, delete and force-push to all branches below
> > my/$username/ (in my case, tat would be my/jkt/foo for example). Only repo
> > owners can create, delete and force-push to arbitrary branch names.
> 
> In essence, yes - those are the two possible options we have.
> Force pushing will *still* be prohibited under this proposal as it
> stands (and would be a CoC violation if done).
> 
> > Deciding which of these to use should be just a matter of style. Both seem
> > very sensible to me, and they will definitely present an improvement over
> > the current status where people can create, but not cleanup afterwards.
> 
> Agreed. Can we have a show of hands / etc as to which one would suit
> people best?
> 
> I will add a 3rd possibility though.
> 
> 3) People are free to create and delete to all branches below work/*.
> Creation and deletion of branches outside this would be limited to
> project admins (release managers). It also allows other developers to
> cleanup as needed so it doesn't all fall on the repository admin /
> sysadmin.
I think a combination of 2 + 3 are best.  3 is the best for doing 
collaborative work, where force pushes are not welcome.  As Thomas says, its 
simple and keeps most important branches protected.

However, I think 2 should be included, if and only if a developer gains the 
ability to force push into their personal branches.  When working , a 
developer may want to revise the history as development progress, but before 
moving it into a collaborative zone.  This makes it easy for developers to 
work closer to the main repository without pushing the code elsewhere, 
allowing other developers to quickly see how something is progressing.

If force pushes are something that KDE does not want to allow, then I think 
doing just 3 is best.  I had thought they were disallowed to prevent people 
doing bad things on important branches.  I think for branches specifically 
listed as personal branches, allowing force pushes would be OK with the CoC, 
as developers can continue to monitor progress on a given branch.
-- 
Matthew

signature.asc
Description: This is a digitally signed message part.


Re: Changes to branch management

2014-12-26 Thread Alex Merry
On Thursday 25 December 2014 20:29:12 Thomas Friedrichsmeier wrote:
> On Thu, 25 Dec 2014 20:21:05 +1300
> Ben Cooksley  wrote:
> > 3) People are free to create and delete to all branches below work/*.
> > Creation and deletion of branches outside this would be limited to
> > project admins (release managers). It also allows other developers to
> > cleanup as needed so it doesn't all fall on the repository admin /
> > sysadmin.
> > 
> > This removes developer usernames from the branch names - which is
> > probably better for long term collaborative branches (which i've seen
> > used in a number of projects) and doesn't make a difference for short
> > term branches.
> 
> I like 3 best.
> 
> This seems like a very straight-forward solution that offers the current
> level of protection for all existing branches, while allowing a lot of
> flexibility in managing non-protected branches (including, importantly,
> the possibility to organize by feature / purpose rather than by
> "owner").

+1


Re: Changes to branch management

2014-12-26 Thread Albert Astals Cid
El Dijous, 25 de desembre de 2014, a les 20:29:12, Thomas Friedrichsmeier va 
escriure:
> On Thu, 25 Dec 2014 20:21:05 +1300
> Ben Cooksley  wrote:
> [...]
> 
> > > 1) Everybody can create, delete and force-push to all branches
> > > except the "reserved" ones (kde/*, master, stable,... see the list).
> > > 
> > > 2) People are free to create, delete and force-push to all branches
> > > below my/$username/ (in my case, tat would be my/jkt/foo for
> > > example). Only repo owners can create, delete and force-push to
> > > arbitrary branch names.
> 
> [...]
> 
> > Agreed. Can we have a show of hands / etc as to which one would suit
> > people best?
> > 
> > I will add a 3rd possibility though.
> > 
> > 3) People are free to create and delete to all branches below work/*.
> > Creation and deletion of branches outside this would be limited to
> > project admins (release managers). It also allows other developers to
> > cleanup as needed so it doesn't all fall on the repository admin /
> > sysadmin.
> > 
> > This removes developer usernames from the branch names - which is
> > probably better for long term collaborative branches (which i've seen
> > used in a number of projects) and doesn't make a difference for short
> > term branches.
> 
> I like 3 best.
> 
> This seems like a very straight-forward solution that offers the current
> level of protection for all existing branches, while allowing a lot of
> flexibility in managing non-protected branches (including, importantly,
> the possibility to organize by feature / purpose rather than by
> "owner").

+1

Cheers,
  Albert

> 
> Regards
> Thomas


signature.asc
Description: This is a digitally signed message part.


Re: Changes to branch management

2014-12-25 Thread Thomas Friedrichsmeier
On Thu, 25 Dec 2014 20:21:05 +1300
Ben Cooksley  wrote:
[...]
> > 1) Everybody can create, delete and force-push to all branches
> > except the "reserved" ones (kde/*, master, stable,... see the list).
> >
> > 2) People are free to create, delete and force-push to all branches
> > below my/$username/ (in my case, tat would be my/jkt/foo for
> > example). Only repo owners can create, delete and force-push to
> > arbitrary branch names.
[...]
> Agreed. Can we have a show of hands / etc as to which one would suit
> people best?
> 
> I will add a 3rd possibility though.
> 
> 3) People are free to create and delete to all branches below work/*.
> Creation and deletion of branches outside this would be limited to
> project admins (release managers). It also allows other developers to
> cleanup as needed so it doesn't all fall on the repository admin /
> sysadmin.
> 
> This removes developer usernames from the branch names - which is
> probably better for long term collaborative branches (which i've seen
> used in a number of projects) and doesn't make a difference for short
> term branches.

I like 3 best.

This seems like a very straight-forward solution that offers the current
level of protection for all existing branches, while allowing a lot of
flexibility in managing non-protected branches (including, importantly,
the possibility to organize by feature / purpose rather than by
"owner").

Regards
Thomas


signature.asc
Description: PGP signature


Re: Changes to branch management

2014-12-25 Thread Jan Kundrát

On Thursday, 25 December 2014 08:21:05 CEST, Ben Cooksley wrote:

In essence, yes - those are the two possible options we have.
Force pushing will *still* be prohibited under this proposal as it
stands (and would be a CoC violation if done).


Hi Ben,
this is a very strong statement. I'm believe that you have a good reason 
for making it, but I do not understand what that reason is. I think that 
one of the reasons you strongly dislike force pushes are limitations of the 
current hook setup. That's a relevant technical point, but IMHO it isn't 
something which would qualify a force push to be a CoC violation. The CoC 
is a generic document which doesn't even talk about the concept of SCM. 
Maybe I have my knee-jerk reaction when people call something they consider 
an evil thing a "CoC violation", but I just about totally disagree when I 
read such a statement. I would hate to see this subthread getting derailed 
into a lnguage lawyering of what's in the CoC and what isn't there, so I'll 
stop here by saying that I don't agree with that particular conclusion.


The reason why I think that a force push sometimes makes sense is 
experience with Trojita. There's a couple of long-forgotten WIP branches 
which only differ by some of them being already squashed into more 
manageable form or rebased on a more recent master. The current state leads 
to branches like "foo", "foo-2" etc (I think we're at foo-5 with Trojita 
now). What alternative to force pushes would you recommend? Should we stick 
with the foo-number scheme? Why is that good?


With kind regards,
Jan

--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/


Re: Changes to branch management

2014-12-25 Thread Ben Cooksley
On Wed, Dec 24, 2014 at 12:56 AM, Christian Mollekopf
 wrote:
> On Wednesday 24 December 2014 00.04:22 Ben Cooksley wrote:
>> Hi all,
>>
>> As the other thread has gotten a bit congested with various threads, I
>> thought I would split up the topics to make things a bit easier to
>> manage.
>>
>> The first seems the least contentious: allowing all developers to
>> delete branches on our mainline repositories, except for certain
>> protected branches (like "master" and "KDE/*" for instance).
>>
>> Any suggestions or variations on this?
>>
>
> This would be a great improvement indeed.
>
> I assume this would also work on scratch repositories?
> Since one person has to "own" a scratch repository, I think other people
> should still be able to delete branches in that repository.

The way our templating system works at the moment means we would need
to make a separate adjustment for them as they are declared
separately.
At the moment, normal developers only have the power to push to
existing branches on others scratch repositories.

>
> Cheers,
> Christian
>

Thanks,
Ben


Re: Changes to branch management

2014-12-25 Thread Christian Mollekopf
On Wednesday 24 December 2014 00.04:22 Ben Cooksley wrote:
> Hi all,
> 
> As the other thread has gotten a bit congested with various threads, I
> thought I would split up the topics to make things a bit easier to
> manage.
> 
> The first seems the least contentious: allowing all developers to
> delete branches on our mainline repositories, except for certain
> protected branches (like "master" and "KDE/*" for instance).
> 
> Any suggestions or variations on this?
> 

This would be a great improvement indeed.

I assume this would also work on scratch repositories?
Since one person has to "own" a scratch repository, I think other people 
should still be able to delete branches in that repository.

Cheers,
Christian



Re: Changes to branch management

2014-12-24 Thread Ben Cooksley
On Thu, Dec 25, 2014 at 5:04 AM, Jan Kundrát  wrote:
> On Wednesday, 24 December 2014 01:57:15 CEST, Ben Cooksley wrote:
>>
>> Unfortunately i'm not sure if Gitolite's ACL mechanisms let us
>> differentiate between tags and branches so if we allow anyone to
>> delete branches they'll probably be able to do the same for tags.
>
>
> Are the generated config files or the scripts for generating gitolite's
> config files available somewhere? The Gitolite setup I'm familiar with uses
> explicit qualifiers such as "refs/heads/" and "refs/tags/" when setting up
> ACLs. Do you use something different on git.k.o? If not, then managing tags
> separately from branches should come for free.

The generated files themselves are only available in the private
gitolite-admin repository.
You can find the "script" which is a Redmine/Chiliproject plugin in my
scratch space on git.kde.org.

Our config file template goes something like this though:

repo 
RWCD = 
RW   [0-9](.+) = @all
-[0-9](.+) = @all
RW   KDE/(.+)  = @all
-KDE/(.+)  = @all
RWC  = @all

Changing it to use explicit syntax shouldn't cause any major breakages
though - but considering that the release managers are not always
repository admins I would be reluctant to restrict the management of
tags to repo admins only.

>
> The way I see it, there are two reasonable alternatives with the current
> setup:
>
> 1) Everybody can create, delete and force-push to all branches except the
> "reserved" ones (kde/*, master, stable,... see the list).
>
> 2) People are free to create, delete and force-push to all branches below
> my/$username/ (in my case, tat would be my/jkt/foo for example). Only repo
> owners can create, delete and force-push to arbitrary branch names.

In essence, yes - those are the two possible options we have.
Force pushing will *still* be prohibited under this proposal as it
stands (and would be a CoC violation if done).

>
> Deciding which of these to use should be just a matter of style. Both seem
> very sensible to me, and they will definitely present an improvement over
> the current status where people can create, but not cleanup afterwards.

Agreed. Can we have a show of hands / etc as to which one would suit
people best?

I will add a 3rd possibility though.

3) People are free to create and delete to all branches below work/*.
Creation and deletion of branches outside this would be limited to
project admins (release managers). It also allows other developers to
cleanup as needed so it doesn't all fall on the repository admin /
sysadmin.

This removes developer usernames from the branch names - which is
probably better for long term collaborative branches (which i've seen
used in a number of projects) and doesn't make a difference for short
term branches.

>
> With kind regards,
>
> Jan

Thanks,
Ben

>
> --
> Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/


Re: Changes to branch management

2014-12-24 Thread Jan Kundrát

On Wednesday, 24 December 2014 01:57:15 CEST, Ben Cooksley wrote:

Unfortunately i'm not sure if Gitolite's ACL mechanisms let us
differentiate between tags and branches so if we allow anyone to
delete branches they'll probably be able to do the same for tags.


Are the generated config files or the scripts for generating gitolite's 
config files available somewhere? The Gitolite setup I'm familiar with uses 
explicit qualifiers such as "refs/heads/" and "refs/tags/" when setting up 
ACLs. Do you use something different on git.k.o? If not, then managing tags 
separately from branches should come for free.


The way I see it, there are two reasonable alternatives with the current 
setup:


1) Everybody can create, delete and force-push to all branches except the 
"reserved" ones (kde/*, master, stable,... see the list).


2) People are free to create, delete and force-push to all branches below 
my/$username/ (in my case, tat would be my/jkt/foo for example). Only repo 
owners can create, delete and force-push to arbitrary branch names.


Deciding which of these to use should be just a matter of style. Both seem 
very sensible to me, and they will definitely present an improvement over 
the current status where people can create, but not cleanup afterwards.


With kind regards,
Jan

--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/


Re: Changes to branch management

2014-12-24 Thread Thomas Friedrichsmeier
Hi!

On Wed, 24 Dec 2014 14:11:46 +1300
Ben Cooksley  wrote:
> That brings the list of protected branches requested thus far to:
> 
> master
> frameworks
> KDE/*
> Applications/*
> Plasma/*
> Calligra/*
> 
> Any others?

Extragear apps may have different names for release series branches. For
RKWard, we currently have releases/*. That said, I think the risk of
someone deleting these branches seems quite tolerable, given that there
are backup refs. No need to add protection rules for these as far as I
am concerned.

However, just to bring in yet another idea, a different approach would
be whitelisting certain branch names for deletion, e.g. devel/*
(static prefix(es) as opposed to user-name prefix as suggested by
others).

Regards
Thomas


signature.asc
Description: PGP signature


Re: Changes to branch management

2014-12-24 Thread Albert Astals Cid
El Dimecres, 24 de desembre de 2014, a les 10:48:43, Kevin Ottens va escriure:
> On Wednesday 24 December 2014 13:57:15 Ben Cooksley wrote:
> > Unfortunately i'm not sure if Gitolite's ACL mechanisms let us
> > differentiate between tags and branches so if we allow anyone to
> > delete branches they'll probably be able to do the same for tags.
> 
> Then it's definitely something to pay attention to. I don't think we're as
> well structured for tags than we are for branches accross the board.
> Especially for tagging releases I don't think we have a consistent naming
> scheme.

For "old KDE SC", Plasma, Frameworks and Applications we're using 
v$VersionNumber

I know that's not *everything* but covers quite a nice percentage.

Cheers,
  Albert

> 
> Cheers.


signature.asc
Description: This is a digitally signed message part.


Re: Changes to branch management

2014-12-24 Thread Albert Astals Cid
El Dimecres, 24 de desembre de 2014, a les 14:05:54, Ben Cooksley va escriure:
> On Wed, Dec 24, 2014 at 5:35 AM, Sebastian Kügler  wrote:
> > On Tuesday, December 23, 2014 06:27:01 Albert Astals Cid wrote:
> >> El Dimarts, 23 de desembre de 2014, a les 14:48:21, Sebastian Kügler va
> >> 
> >> escriure:
> >> > On Wednesday, December 24, 2014 00:04:22 Ben Cooksley wrote:
> >> > > The first seems the least contentious: allowing all developers to
> >> > > delete branches on our mainline repositories, except for certain
> >> > > protected branches (like "master" and "KDE/*" for instance).
> >> > 
> >> > I'd add "frameworks" to that, it has a status very similar to "master"
> >> > for
> >> > many projects.
> >> 
> >> Has it? As far as i understand frameworks is "just" a work branch that
> >> will
> >> eventually merged into "master" when it's done.
> > 
> > IMO, yes. It's a branch shared across many people and often being the base
> > for yet another branch, so the annoyance of someone doing a force-push
> > there would be quite high.
> 
> The abuse of such branch deletion powers to achieve a "force push"
> would be considered a severe violation of the Code of Conduct as far
> as i'm concerned.
> That is regardless of whether the branch affected is a personal or
> mainline branch.
> 
> > I'm in favor of only relaxing the permissions for "personal" branches
> > (i.e.
> > branches that you've created yourself (in Plasma, we're using
> > username/branchname quite consistently, so just matching for "starts with
> > $username" would work well enough for me).
> 
> It would be incredibly expensive to record who created a branch to
> implement such an ACL.
> While personal branches are supported, the scheme you use at the
> moment isn't unfortunately.

We don't say record who created it, "just" do a plain text comparison of the 
branch name against the user name.

Cheers,
  Albert

> 
> See http://gitolite.com/gitolite/gitolite.html#pers for more information.
> 
> > Cheers,
> > --
> > sebas
> > 
> > http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9
> 
> Thanks,
> Ben



Re: Changes to branch management

2014-12-24 Thread Kevin Ottens
On Wednesday 24 December 2014 13:57:15 Ben Cooksley wrote:
> Unfortunately i'm not sure if Gitolite's ACL mechanisms let us
> differentiate between tags and branches so if we allow anyone to
> delete branches they'll probably be able to do the same for tags.

Then it's definitely something to pay attention to. I don't think we're as 
well structured for tags than we are for branches accross the board. 
Especially for tagging releases I don't think we have a consistent naming 
scheme.

Cheers.
-- 
Kévin Ottens, http://ervin.ipsquad.net

KDAB - proud supporter of KDE, http://www.kdab.com


signature.asc
Description: This is a digitally signed message part.


Re: Changes to branch management

2014-12-23 Thread Ben Cooksley
On Wed, Dec 24, 2014 at 4:40 AM, Boudewijn Rempt  wrote:
> On Wed, 24 Dec 2014, Ben Cooksley wrote:
>
>> Hi all,
>>
>> As the other thread has gotten a bit congested with various threads, I
>> thought I would split up the topics to make things a bit easier to
>> manage.
>>
>> The first seems the least contentious: allowing all developers to
>> delete branches on our mainline repositories, except for certain
>> protected branches (like "master" and "KDE/*" for instance).
>>
>> Any suggestions or variations on this?
>>
>> Note: the protected branches really do need to be universal across all
>> repositories to be effective - otherwise the effort required to add
>> the protection will introduce an extremely high maintenance burden.
>
>
> Would it be possible to add the Calligra/* release branches to that list, or
> should we better rename them toe KDE/*?

That brings the list of protected branches requested thus far to:

master
frameworks
KDE/*
Applications/*
Plasma/*
Calligra/*

Any others?

Please bear in mind that for each item added to the list, we need two
lines in the Gitolite configuration - per repository.
We have 747 declared (mainline) repositories at the moment.

(Fortunately the generation of this file is scripted from the
projects.kde.org database)

>
>> I'll also add that there is never a risk of work being lost courtesy
>> of the backup refs. The hooks automatically create these refs
>> (including the unix time of the event) whenever a destructive event is
>> made to a ref. The hooks will also explicitly prohibit any attempt to
>> alter the backup refs - they're read only and untouchable.
>>
>> These can be manually fetched using "git fetch" if necessary to
>> restore a branch which is mistakenly deleted.
>
>
> That's reassuring :-)

Yes, we've had this mechanism in place since our current generation of
hooks went live (Jan 2011).

>
> Boud

Thanks,
Ben


Re: Changes to branch management

2014-12-23 Thread Ben Cooksley
On Wed, Dec 24, 2014 at 5:35 AM, Sebastian Kügler  wrote:
> On Tuesday, December 23, 2014 06:27:01 Albert Astals Cid wrote:
>> El Dimarts, 23 de desembre de 2014, a les 14:48:21, Sebastian Kügler va
>>
>> escriure:
>> > On Wednesday, December 24, 2014 00:04:22 Ben Cooksley wrote:
>> > > The first seems the least contentious: allowing all developers to
>> > > delete branches on our mainline repositories, except for certain
>> > > protected branches (like "master" and "KDE/*" for instance).
>> >
>> >
>> >
>> > I'd add "frameworks" to that, it has a status very similar to "master" for
>> > many projects.
>>
>> Has it? As far as i understand frameworks is "just" a work branch that will
>> eventually merged into "master" when it's done.
>
> IMO, yes. It's a branch shared across many people and often being the base for
> yet another branch, so the annoyance of someone doing a force-push there would
> be quite high.

The abuse of such branch deletion powers to achieve a "force push"
would be considered a severe violation of the Code of Conduct as far
as i'm concerned.
That is regardless of whether the branch affected is a personal or
mainline branch.

>
> I'm in favor of only relaxing the permissions for "personal" branches (i.e.
> branches that you've created yourself (in Plasma, we're using
> username/branchname quite consistently, so just matching for "starts with
> $username" would work well enough for me).

It would be incredibly expensive to record who created a branch to
implement such an ACL.
While personal branches are supported, the scheme you use at the
moment isn't unfortunately.

See http://gitolite.com/gitolite/gitolite.html#pers for more information.

>
> Cheers,
> --
> sebas
>
> http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9

Thanks,
Ben


Re: Changes to branch management

2014-12-23 Thread Ben Cooksley
On Wed, Dec 24, 2014 at 7:10 AM, Thiago Macieira  wrote:
> On Tuesday 23 December 2014 17:45:23 Milian Wolff wrote:
>> +1 to all of the above. What about tags btw? In KDevelop e.g. it would only
>> be  a nuisance if someone would delete one of our "stable" branches, but
>> deleting one of the release tags would be ugly as I'd then need to figure
>> out what commit was chosen for what release.
>>
>> Bye and thanks for your continuous work Ben, much appreciated! Take care.
>
> Tags shouldn't be deleted, period. That's something for the repo owner, in
> case of a mistake.
>
> Also note that people will get those tags and git remote prune doesn't delete
> them. So don't push bad tags.

Once again you don't have to worry.
The backup mechanism in the hooks doesn't care about the type of ref
it is handling - if the operation is destructive a backup will be
created.

Unfortunately i'm not sure if Gitolite's ACL mechanisms let us
differentiate between tags and branches so if we allow anyone to
delete branches they'll probably be able to do the same for tags.

Regards,
Ben

> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
>Software Architect - Intel Open Source Technology Center
>   PGP/GPG: 0x6EF45358; fingerprint:
>   E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
>


Re: Changes to branch management

2014-12-23 Thread Thiago Macieira
On Tuesday 23 December 2014 17:45:23 Milian Wolff wrote:
> +1 to all of the above. What about tags btw? In KDevelop e.g. it would only
> be  a nuisance if someone would delete one of our "stable" branches, but
> deleting one of the release tags would be ugly as I'd then need to figure
> out what commit was chosen for what release.
> 
> Bye and thanks for your continuous work Ben, much appreciated! Take care.

Tags shouldn't be deleted, period. That's something for the repo owner, in 
case of a mistake.

Also note that people will get those tags and git remote prune doesn't delete 
them. So don't push bad tags.
-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
  PGP/GPG: 0x6EF45358; fingerprint:
  E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358



Re: Changes to branch management

2014-12-23 Thread Sebastian Kügler
On Tuesday, December 23, 2014 17:29:05 Ivan Čukić wrote:
> > I'd add Applications/* and Plasma/* to this.
> >
> >Would it be possible to add the Calligra/* release branches to that
> 
> Seems that release branches are starting with capital letters. Would that
> be  possible and sufficient for the deletable-branch heuristic?

Sounds very cryptic to me, to be honest.
-- 
sebas

http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9


Re: Changes to branch management

2014-12-23 Thread Milian Wolff
On Wednesday 24 December 2014 00:04:22 Ben Cooksley wrote:
> Hi all,
> 
> As the other thread has gotten a bit congested with various threads, I
> thought I would split up the topics to make things a bit easier to
> manage.
> 
> The first seems the least contentious: allowing all developers to
> delete branches on our mainline repositories, except for certain
> protected branches (like "master" and "KDE/*" for instance).
> 
> Any suggestions or variations on this?
> 
> Note: the protected branches really do need to be universal across all
> repositories to be effective - otherwise the effort required to add
> the protection will introduce an extremely high maintenance burden.
> 
> I'll also add that there is never a risk of work being lost courtesy
> of the backup refs. The hooks automatically create these refs
> (including the unix time of the event) whenever a destructive event is
> made to a ref. The hooks will also explicitly prohibit any attempt to
> alter the backup refs - they're read only and untouchable.
> 
> These can be manually fetched using "git fetch" if necessary to
> restore a branch which is mistakenly deleted.

+1 to all of the above. What about tags btw? In KDevelop e.g. it would only be 
a nuisance if someone would delete one of our "stable" branches, but deleting 
one of the release tags would be ugly as I'd then need to figure out what 
commit was chosen for what release.

Bye and thanks for your continuous work Ben, much appreciated! Take care.
-- 
Milian Wolff
m...@milianw.de
http://milianw.de


Re: Changes to branch management

2014-12-23 Thread Sebastian Kügler
On Tuesday, December 23, 2014 06:27:01 Albert Astals Cid wrote:
> El Dimarts, 23 de desembre de 2014, a les 14:48:21, Sebastian Kügler va 
> 
> escriure:
> > On Wednesday, December 24, 2014 00:04:22 Ben Cooksley wrote:
> > > The first seems the least contentious: allowing all developers to
> > > delete branches on our mainline repositories, except for certain
> > > protected branches (like "master" and "KDE/*" for instance).
> >
> > 
> >
> > I'd add "frameworks" to that, it has a status very similar to "master" for
> > many projects.
> 
> Has it? As far as i understand frameworks is "just" a work branch that will 
> eventually merged into "master" when it's done.

IMO, yes. It's a branch shared across many people and often being the base for 
yet another branch, so the annoyance of someone doing a force-push there would 
be quite high.

I'm in favor of only relaxing the permissions for "personal" branches (i.e. 
branches that you've created yourself (in Plasma, we're using 
username/branchname quite consistently, so just matching for "starts with 
$username" would work well enough for me).

Cheers,
-- 
sebas

http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9


Re: Changes to branch management

2014-12-23 Thread Ivan Čukić

> I'd add Applications/* and Plasma/* to this.

>Would it be possible to add the Calligra/* release branches to that

Seems that release branches are starting with capital letters. Would that be 
possible and sufficient for the deletable-branch heuristic?



--
Cheerio,
Ivan


KDE, ivan.cukic at kde.org, http://ivan.fomentgroup.org/
gpg key id: 850B6F76, keyserver.pgp.com


Re: Changes to branch management

2014-12-23 Thread Boudewijn Rempt

On Wed, 24 Dec 2014, Ben Cooksley wrote:


Hi all,

As the other thread has gotten a bit congested with various threads, I
thought I would split up the topics to make things a bit easier to
manage.

The first seems the least contentious: allowing all developers to
delete branches on our mainline repositories, except for certain
protected branches (like "master" and "KDE/*" for instance).

Any suggestions or variations on this?

Note: the protected branches really do need to be universal across all
repositories to be effective - otherwise the effort required to add
the protection will introduce an extremely high maintenance burden.


Would it be possible to add the Calligra/* release branches to that 
list, or should we better rename them toe KDE/*?



I'll also add that there is never a risk of work being lost courtesy
of the backup refs. The hooks automatically create these refs
(including the unix time of the event) whenever a destructive event is
made to a ref. The hooks will also explicitly prohibit any attempt to
alter the backup refs - they're read only and untouchable.

These can be manually fetched using "git fetch" if necessary to
restore a branch which is mistakenly deleted.


That's reassuring :-)

Boud


Re: Changes to branch management

2014-12-23 Thread Albert Astals Cid
El Dimarts, 23 de desembre de 2014, a les 14:48:21, Sebastian Kügler va 
escriure:
> On Wednesday, December 24, 2014 00:04:22 Ben Cooksley wrote:
> > The first seems the least contentious: allowing all developers to
> > delete branches on our mainline repositories, except for certain
> > protected branches (like "master" and "KDE/*" for instance).
> 
> I'd add "frameworks" to that, it has a status very similar to "master" for
> many projects.

Has it? As far as i understand frameworks is "just" a work branch that will 
eventually merged into "master" when it's done.

Cheers,
  Albert


Re: Changes to branch management

2014-12-23 Thread Albert Astals Cid
El Dimecres, 24 de desembre de 2014, a les 00:04:22, Ben Cooksley va escriure:
> Hi all,
> 
> As the other thread has gotten a bit congested with various threads, I
> thought I would split up the topics to make things a bit easier to
> manage.
> 
> The first seems the least contentious: allowing all developers to
> delete branches on our mainline repositories, except for certain
> protected branches (like "master" and "KDE/*" for instance).

I'd add Applications/* and Plasma/* to this.

> Any suggestions or variations on this?

Is the option that someone mentioned of "I can remove only the branches that 
are myusername/*"? 

Cheers,
  Albert

> 
> Note: the protected branches really do need to be universal across all
> repositories to be effective - otherwise the effort required to add
> the protection will introduce an extremely high maintenance burden.
> 
> I'll also add that there is never a risk of work being lost courtesy
> of the backup refs. The hooks automatically create these refs
> (including the unix time of the event) whenever a destructive event is
> made to a ref. The hooks will also explicitly prohibit any attempt to
> alter the backup refs - they're read only and untouchable.
> 
> These can be manually fetched using "git fetch" if necessary to
> restore a branch which is mistakenly deleted.
> 
> Thanks,
> Ben



Re: Changes to branch management

2014-12-23 Thread Sebastian Kügler
On Wednesday, December 24, 2014 00:04:22 Ben Cooksley wrote:
> The first seems the least contentious: allowing all developers to
> delete branches on our mainline repositories, except for certain
> protected branches (like "master" and "KDE/*" for instance).

I'd add "frameworks" to that, it has a status very similar to "master" for 
many projects.
-- 
sebas

http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9


Re: Changes to branch management

2014-12-23 Thread Alex Merry
On Wednesday 24 December 2014 00:04:22 Ben Cooksley wrote:
> The first seems the least contentious: allowing all developers to
> delete branches on our mainline repositories, except for certain
> protected branches (like "master" and "KDE/*" for instance).
> 
> Any suggestions or variations on this?

I think "master" and "KDE/*" is a reasonable set of protected branches, and 
allowing deleting other branches should be fine, given the backup system.

> Note: the protected branches really do need to be universal across all
> repositories to be effective - otherwise the effort required to add
> the protection will introduce an extremely high maintenance burden.

Also, having consistency helps people working across multiple projects, which 
I have always got the impression is something we encourage.

Alex



Re: Changes to branch management

2014-12-23 Thread Jan Kundrát

On Tuesday, 23 December 2014 12:04:22 CEST, Ben Cooksley wrote:

The first seems the least contentious: allowing all developers to
delete branches on our mainline repositories, except for certain
protected branches (like "master" and "KDE/*" for instance).

Any suggestions or variations on this?


Given that the current git infrastructure is there to stay for a while, 
adding support for this makes a lot of sense in my opinion.


Right now we all have a technical access to create arbitrary branches. It 
makes sense to abolish the current rule that only a repo owner can delete 
them. That said, is it OK from a "cultural" point of view if I as a KDE 
developer go ahead and work directly in some project's feature branch? IMHO 
that makes sense, "increases collaboration" and what not, but I also think 
that this should be clearly documented and communicated well so that people 
aren't surprised.


Looking ahead long-term, I envision a system where it doesn't really matter 
where people do not have to create feature branches. They simply push their 
changes up for a review, and they are tracked as if it was a feature 
branch. However, this won't get adopted anytime soon, so +1 for enabling 
branch deletion, +1 for discouraging the use of personal clones, +1 for 
working with feature branches right within a project's repo.


Cheers,
Jan

--
Trojitá, a fast Qt IMAP e-mail client -- http://trojita.flaska.net/


Changes to branch management

2014-12-23 Thread Ben Cooksley
Hi all,

As the other thread has gotten a bit congested with various threads, I
thought I would split up the topics to make things a bit easier to
manage.

The first seems the least contentious: allowing all developers to
delete branches on our mainline repositories, except for certain
protected branches (like "master" and "KDE/*" for instance).

Any suggestions or variations on this?

Note: the protected branches really do need to be universal across all
repositories to be effective - otherwise the effort required to add
the protection will introduce an extremely high maintenance burden.

I'll also add that there is never a risk of work being lost courtesy
of the backup refs. The hooks automatically create these refs
(including the unix time of the event) whenever a destructive event is
made to a ref. The hooks will also explicitly prohibit any attempt to
alter the backup refs - they're read only and untouchable.

These can be manually fetched using "git fetch" if necessary to
restore a branch which is mistakenly deleted.

Thanks,
Ben