Last updated May 7, 2011.
Introduction
This is the official place listing everything that was required for the second phase of the *.drupal.org migration to Git. This page was intended to represent a complete feature/needs/requirements list. In addition to providing a more-organized list of 'git phase 2' issues than the issue tracker can provide, there is information on this page about steps required for the migration that does not fit well in an issue.
Generally speaking, there were four places that code related to the migration will end up:
- A pre-existing "external" tool (e.g. a Git repository browser like "gitweb", etc)
- Version Control API and its child projects
- A new Git-specific module that's general purpose (i.e. not tied to drupal.org itself) but outside the scope of Version Control API
- A patch or new submodule in the drupal.org customizations project for truly drupal.org-specific code
Which of the four depends entirely on the issue at hand.
'Phase 2' Git integration tasks
User & Account Management
- #720664: Create a "ssh_key" module, to allow upload of SSH keys to drupal.org user profiles [nnewton, sdboyer]
- #781264: Decide on an appropriate git analogue to current CVS account workflow [dww, pwolanin, mikey_p]
- #720670: Figure out wording of the "Yes, I promise to upload GPLv2+ code" checkbox
Project-centric tasks
- Release node integration
- #850142: Integrate VCAPI with project_release node add form [dww, hunmonk]
- #781246: Write Git-specific packaging plugin for d.o [dww, hunmonk]
- #720598: Consider using git-archive expansion for .info files [sdboyer]
- #782584: Review for additional TODOs related to d.o conversion to git [mikey_p, marvil07, dww]
- Project node integration
- #781282: Expose project repository on the project UI [marvil07, dww, mikey_p, sdboyer, hunmonk]
- #781300: option to lock project short name [hunmonk]
- Per-project repo ACLs
- #714034: Determine the access control solution for git [nnewton, sdboyer]
- #782764: Ensure gitolite can scale to 10k, 100k+ users [nnewton, sdboyer, yhager]
- #781344: Extend project maintainer UI for manipulating git project ACLs [marvil07, dww, hunmonk]
- #781346: Make UI-configured ACLs available to gitolite/git-http-backend/git hooks [mikey_p, sdboyer]
Managing commit data
- #781396: Devise system for mapping git commits to d.o users [marvil07, dww, sdboyer]
- Commit listings [dww, mikey_p, marvil07]
- Commit statistics
- #782408: Decide on an approach to recording commit statistics (and thereby, standardize the recommended merge workflow) [sdboyer]
- #782410: Create project maintainers block and committers page
- #782572: Create a most active developers block based on versioncontrol data
- #850146: Create git analogue to most active projects blocks
- Commit + issue integration
Manage pushes/network interaction
- #782598: Determine a system for tracking git pushes [sdboyer]
- #782610: Determine feedback to be provided back to clients when they push to d.o
- #722250: Determine branch/tag naming restrictions in Git
Finish VCS API 6.x-2.x
- #484366: Create serverside git hooks [CorniI]
- #484382: Get 6.x-2.x branch of vcgit to a beta release
- #714228: Cleanup and refactor of versioncontrol_git
- #498086: Implement a user_mapping_method that only use only the email address
- #528966: dbtng integration [sdboyer]
- #831896: Refactor VC API to use DBTNG & an Entities-like system
Data migration & CVS legacy issues
- #781316: Blow away CVS items (post-migration-scripts) without corresponding projects [sdboyer]
- #782780: Finish the cvs -> git data migration path [sdboyer]
- #781302: Change the migration scripts to accommodate all of our CVS data, not just modules
- #780342: Handle linkrot from CVS commit browser
Documentation
- #774770: Make a Project Git instructions module [helmo, pwolanin?]
- #714448: Complete the git handbook
- #720666: Document how to create SSH keys on all major platforms
- #782684: Establish and codify standard set of git-for-drupal workflows (meta issue) [sdboyer]
Other
- #781322: Settle on, implement, and test a repo browser for git [nnewton]
- #714436: Update testbot to Git
Testing & implementation
Git Network Responses
Git's hooks allow us to issue messages back to clients attempting to perform push operations. Following is a list of scenarios.
- Successful push (probably nothing extra over what git does already)
- Rejected push - push would result in a non-fast-forward merge (any repo)
- Rejected push - user has no perms at all on the target repo (project repo)
- Rejected push - user has perms on the target repo, but not on the target branch (project repo)
- Rejected push - user's git privileges have been temporarily suspended (any repo)
- Rejected push - user's git privileges have been permanently suspended (any repo)