Although Drupal has switched to Git for its Version Control needs for about an year, yet the workflow is by and far patch based, when it comes to collaborating. While some choose the path of creating sandboxes and then create an issue in the main project, yet we are far from using the power of distributed workflow that Git offers us. The following proposal aims at providing the base of using Git-like workflow while collaborating on projects.
The detailed description of repo-families can be found here.
Following the discussion and this follow up the conclusion is that the community is on the side of 'One repository per issue'.
Even  points in the same direction though the UI is slightly different from what @Cornil explained in .
Summarizing the approach:
- To have a Git-like workflow, we would start by creating Per-Issue Repositories.
- Each issue will have its repository. Everyone works at the same place other than in the case where 2 people approach the same problem differently and they decide to branch.
- When a user has a fair amount of code that he want to push, he can comment on the main issue queue where he can additionally specify branch or even the Maintainer can have a look at the related sandboxes view and decide to merge tip of branches.
- Each per-issue repo(s) are maintained by a set of maintainers who can push commits to the issue-repo and the Maintainer of the project pushes it into the main repo.
- The power to create a new repo for an issue can lie with either the Maintainer for the project or be open. The former will eliminate issue-duplication though.
- Each maintainer can appoint a set of co-maintainers who have commit-access to the various issue repositories(but not necessarily all of them, or the main repository). Adding maintainers per repo can also be an option.
Phase 1: VC_APi, VC_Git, VC_Project for D7
The goal is to understand Version Control* projects by brainstorming with mentors and simultaneously porting VC_Project it to D7(if its not done already).
This phase would involve writing/editing simpletests for the given modules as this would help me better understand how the module works.
Phase 2: Introduce the concept of Repo Families on VersionControl API and VersionControl Git and Version Control Project
We would have to implement a new table for referencing repositories to Issues(the unique key in this case being the 'Issue Number') and provide an API for the same. Since these are normal repositories, branch, merge, commit actions would not change.
Changes on Version Control and Version Control Git (according to the previously mentioned API) to allow for repo families.
Phase 3: Branches on per-issue Repositories
The first part would involve providing a help text on the Issue page (like the Version Control Tab on Projects Page) providing step by step instructions how to create branches. The more important part would be to allow users to specify the current branch they are working on in comments (much like users attach patches now). We can also look at generating patches when they specify the branch.
Another aspect of this Phase would be to club the work done in Phase 1 and Phase 2 to create access permissions for these per-issue repo(s).
(access permissions for repo(s) described above)
Phase 4: Creating views handlers for new database tables/fields on versioncontrol_project and change/add default views to it.
Presently VersionControl Project has views for commits(user/global git). A standard view showing sandboxes for different issues on a specific project would have to be added. Also, the different branches can be represented as a tree, the tip of each branch being a patch(have to discuss this further). So that the maintainer can review various issues and merge the best branch (in short auto generation of patches).
May 2: End-Semesters end.
till May 5: Initial Reading Phase and brainstorming with mentor.
May 6-May 22: Phase 1:Writing Simpletests for the given modules and porting VC_Project if necessary.
May 23-June 15: Phase 2
June 16-July 5: Phase 3
July 6-July 9: Testing the code till now and giving final touches. Writing Test Cases if time permits
July 10-July 17: Phase 4
College Re-Opens on July 25
July 18-August 13: Writing Simpletest.(Contributing to the test suite of VC Projects.
Who am I?
Rabi Shanker Guha, a undergraduate student at Indian Institute of Technology, Kanpur currently pursuing my B.Tech in Computer Science and Engineering. A open source enthusiast, who loves to Code, Sleep and Eat in the same order :)
I have been working on a variety of projects ranging from OpenCV to App/Website Development and participating in challenges like Algorithmic Challenge, Unknown Language Challenge, Development Competitions, etc.
I have been working Drupal for quite some time by now(mostly worked on understanding the API and learning to write Modules, etc). I had created my first website using Drupal at a Hack-a-Thon and am currently working on an intranet portal for my college. Though I am highly motivated by the OSS ideology, I haven't really contributed much except for a few patches to Statuses under the guidance of IceCreamYou. I want to make utmost of this summer by contributing to Drupal.
Frankly, the success stories of past GSoC participants at Drupal motivated me a lot.
How will the community gain?
If the project goes through and we are able to come up with code base for repo-families, it will radically change the way Drupal contributors collaborate and lead to better contribution workflow. This was discussed recently at BOF at Denver and many other times. I pledge to give in my full effort towards achieving of the same.
The following projects would serve as the base for my project