Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: My two cents

...

SVN Best Practices:

Frequent checkins: At the end of the day, the code needs to be in a compliable stage and be checked in. A new feature or a bug fix will often take days or maybe weeks to complete.
However, it is important to check in your code frequently so the code is continuous integrated and everybody sees the latest changes. 

Fine grained commits: Don't commit unrelated changes together with a fix.
Be responsible: Always check what you're committing: make sure you're only committing what you need. Do a svn diff of the files you're going to commit and check the changes.
Never break the build: Do not commit code that would break the compile. Trying to build your sources and making sure that you add all the new files before you do a commit.
Document your commit: Always add a message with a meaningful explanation about the commit. If you are fixing a bug, remember to put a link to the bug in Jira.

Justin's suggested additions...

Committing: Always follow these steps when committing changes:

Update to latest revision (svn update)
Resolve conflicts
Inspect merged files
Build, test, and fix
Make sure new files get added, removed files deleted (svn status, svn add, svn delete)
Update again (to make sure no one else committed since last update)
Commit with useful message

And never commit more than one feature/fix per commit. Otherwise merging branches becomes painful.

Commit messages & bugs:

We should use the SVN support in Mingle and Jira (Jira via plugin) to aggregate related commits and allow easy browsing of all modifications to our source. Doing so requires a few things:

1. Every commit needs to be related to an issue in Jira. So before any commit, if the appropriate issue doesn't exist in Jira, open an issue in Jira for that feature/bug fix.
2. In your commit message, include the issue's Jira name.

Ex: Justin wants to commit the ability to delete images from slideshows. If that doesn't exist in Jira, he creates a new issue (TH-XXX) and links the main slideshow issue as being dependent on TH-XXX. Then he includes "TH-XXX" somewhere in his commit message.

I'm not sure what Mingle requires, but we would need to include whatever reference it needs as well.