The DebianInstaller git repositories (one per source package) are used in a generally centralized way. Everyone on the DebianInstaller/Team can commit to any of the repositories. The repositories contain the canonical version of DebianInstaller. (Not to be confused with Ubuntu's version!)
If you're new to git, a good explanation of using it in this centralized way, that should be easy to pick up if you've used Subversion, was published here: < http://ebb.org/bkuhn/blog/2011/01/23/git-shared-repository-tutorial.html > The only difference from this tutorial is that we use "people/<login>/foo" for publishing personal branches, while the tutorial uses "<login>/foo".
While you can check out just a single git repository if you will only be working on a single component of DebianInstaller, most of us use the mr tool to mass checkout and update the many repositories that constitute d-i.
Some guidelines for using the DebianInstaller git repositories. (Checkout instructions here.) These rules are intentionally loose, the intent is to evolve best practices and procedures organically and document them here.
If in doubt, publish your patches to the email@example.com mailing list, or to a bug report, for review. You can generate the patches with "git format-patch". Anyone can do this, you don't need to be a member of the DebianInstaller team.
- If you're needing to update or maintain your changes in the medium or long term, consider publishing them in a branch. For example, you might be modifying d-i for a derivative distribution, so a branch containing your distro-specific changes would make sense. Or you might be working on a feature that will take some iterations to get right, then a feature branch would make sense.
Feel free to set up your own branches of DebianInstaller git repositories in "~/public_git" on Alioth, or on github, or whereever. And do whatever you like in them.
DebianInstaller team members are free to publish personal branches with names like "people/joeyh/foo", directly in the main git repository. This is analagous to the old "people/" tree in subversion.
When the DebianInstaller team as a whole is working on a feature, we might collectively decide to use a feature branch such as "foo" in the main git repository.
- We will make branches like "squeeze" as needed when working on some release-specific change. Rather than making such a branch in all our many git repositories, it will only be made in the repositories of affected packages.
- With the possible exception of "people/" branches, published branches in the main git repository should never be rebased.
Try to avoid unnecessary merge commits, but don't stress out about it.