Please fix title to correct terminology as necessary. ;)

What I mean is stuff like:
- You can't commit a file called LICENSE.txt
- The contributions/profiles directory limits you to only certain files (like you can't commit modules/themes there, afaik)
- You can't branch/tag your sandbox
- You can only do specific branching/tagging names in modules/themes
- etc.

This differs from #720700: Come up with an update hook to mitigate abuse of sandboxes which is new logic that applies if we decide to go the route of opening sandboxes up to *anyone* with a drupal.org user account (phase 3). While this one is necessary to move our existing CVS workflow to Git (phase 2).

Comments

webchick’s picture

It looks like the bulk of this might be over here: http://drupalcode.org/viewvc/drupal/contributions/modules/cvslog/cvs_loc...

I welcome input from others on the infra team that can add additional insight/pointers.

Island Usurper’s picture

Since moving to a Git workflow would mean that the sandboxes and each project (at the very least) would be in their own repositories, I think we can get rid of the tagging and branching restrictions. No longer will all of the contributed projects share branches and tags, so the only namespace to pollute is your own.

Of course, the package creator that makes the downloads on d.o should only allow the same tags and branches we have always used. It shouldn't be hard for it to filter out the tags and branches it doesn't recognize.

sdboyer’s picture

We were definitely never going to have branch naming restrictions in the issue repos, or in the sandbox repos. I can't remember if there's been a discussion yet about if/how the current restrictions will be moved over to git, nor do I know if there's a reason for the restrictions beyond polluting the global CVS namespace. If not, then I agree - I don't see much reason to do the extra work of writing up scripts that restrict branch naming when we can just filter in the web UI.

sdboyer’s picture

Title: Convert existing "pre-commit hooks" (or whatever) to Git » Convert existing commit restrictions to Git, as appropriate
Issue tags: +git phase 2

Making this into one of the phase 2 items. We've got some other issues open about commit logging and such, but we do need to think about if & how to convert the restrictions we have over to git.

sdboyer’s picture

I had an extended conversation with dww about commit, branch and tag naming restrictions last week, and I've been needing to get it posted. A fuller summary will be posted as a reply to this issue soon, but the quick summary version is: no commit restrictions on d.o, except possibly on LICENSE.txt. The structure of a dvcs dictates that 'commit' restrictions actually can _only_ be 'receive' restrictions triggered when the d.o servers receive a push. Which means an arbitrarily large number of commits are being parsed at a time, and if commit 12 in a series of 100 commits violates the commit restrictions, we'd have to reject it all, or at least everything after that commit. To get around the restriction, then, people would have to rewrite history to remove the offending commit. Rewriting history is not a novice operation, and really not an OK thing to ever have a hard structural requirement that people do.

We should open another issue for the discussion of LICENSE.txt specifically and close this issue in anticipation of the summary of that conversation being posted.

webchick’s picture

Title: Convert existing commit restrictions to Git, as appropriate » Determine branch/tag naming restrictions in Git
Status: Active » Fixed

#869746: Automatically analyse the content of repositories to spot legal issues talks about commit restrictions in terms of files allowed and so on. So I'll leave that aside.

In terms of branch/naming restrictions, as mentioned by Sam, from now on, anything goes. This is necessary so that we can support Git's "branch early and often" development model. So there will be no more restrictions on creating feature branches, hotfix branches, or whatever else people want to do. YAY!

However, branches/tags intended to map to actual release tarballs on the project page will need to conform to the following pattern:

Core:
- 5.x: the 5.x branch
- 6.17: the tag for the 6.17 release

Contrib:
- 6.x-1.x: the 6.x-1.x branch
- 6.x-2.5: the tag for the 6.x-2.5 release

"extras" will follow the same general pattern:
- Core: 7.0-alpha5
- Contrib: 6.x-1.9-rc1

This is important so code such as Testbot, Update Status, etc. has something predictable (and incrementing) to map against.

But hey, at least no more obtuse branches/tags like DRUPAL-6--3-10-ALPHA2. :)

I've got a post cooking that summarizes dww and sdboyer's discussion and will post it to the git working group so it's archived more permanently than this issue.

sdboyer’s picture

Thanks for being my fantasmagastic secretary, Angie :)

This is necessary so that we can support Git's "branch early and often" development model. So there will be no more restrictions on creating feature branches, hotfix branches, or whatever else people want to do. YAY!

Lemme just put a little bit more of my own marketing spin on this, since I think this is huge. For features of any size, and most bugfixes that are more than just a couple quick lines, I tend to use a separate branch. By opening up such branches to the world, it'll let people REALLY unleash the power of a dvcs.

dww’s picture

By opening up such branches to the world, it'll let people REALLY unleash the power of a dvcs.

True. And it will also unleash a torrent of very confused branching and "release management" disasters in contrib. ;) But, that's the price we're going to have to live with. Progress isn't necessarily free...

But yes, I'm all in favor of a) the new branch/tag naming conventions for releases (we need an issue open about this in vcapi_project or something), and b) letting it rip for all other uses of branches and tags.

Cheers,
-Derek

sdboyer’s picture

Eh. You've got more experience in the area of what people actually do with their VCS freedoms, but I'm hoping we can put enough instructions in place that people will know why only name-conforming branches show up in the UI - and therefore, not too many release management disasters. Though I do agree there'll be a ton of confused branching - fortunately, not really a problem at all in git :)

Status: Fixed » Closed (fixed)
Issue tags: -git phase 2

Automatically closed -- issue fixed for 2 weeks with no activity.