Source Control Details

As a developer working on Lucere, there are a few guidelines for source control.

We use Mercurial as our version control system. We recommend using TortoiseHg as a graphical client for Mercurial. It is available for Windows, Linux or Mac.

When to Commit

Some projects have very strict guidelines about committing. Sometimes only a single committer controls all commits to the VCS. Sometimes there's a formal process for code review prior to committing. Sometimes anyone may commit when they would like, but there is a rule that says "No broken code commits". We currently have no such strict policies. We only have a few basic axioms:
  • Commit early and often
  • Merge locally then commit, unless you don't feel confident to merge correctly, then commit a new branch. Someone else will take care of the merge. Please make note in your commit comments that your branch is finished and ready for merging if it is.
  • Committing code that does not compile should generally be avoided.
    • "Commit early and often" supersedes this axiom. In general, if you are working on a lot of code at once, commit anything that is complete (changes finished and it builds) as soon as it's complete. If something isn't building, if it's a entire project, change the build configuration for that project to not attempt to build it, or if it's a file, change the properties for the particular file to not compile. We'd rather have broken code than no code. With broken code we can assign someone to finish it up.
  • Any changes in dependencies, where the dependency doesn't exist in our repository must be added to compilation-notes.txt with the following information:
    • Download location for the package source/binary
    • Exactly which version of the package the code is dependent on
    • The expected relative location of dependencies
    • Any special installation or configuration notes
  • Any resources committed to the repository must be either original work or work that is compatible with our license. We must have the right to redistribute that work as well. If it's not public domain or expressly licensed as something we can legally redistribute, please contact the custodian of the content and obtain permission to redistribute via our project. Please include the email chain in RFC822 format that provides permission and include that with the resource.

Last edited Nov 18, 2010 at 4:00 AM by thoward, version 1


No comments yet.