Reputation: 5167
I have been tasked with writing a set of user guidelines for SVN for developers in my company.
The guidelines are to be solely from a user perspective (e.g. commit comments, when to commit) and not from an administrative perspective (e.g. when to tag, how to structure). An administrative guideline will be written in a separate document.
We are an app development house involved also in embedded development. So our developers range from HTML5 and Flash to Java and C. Some of our coding involves forking very large (millions of files) code bases. Other parts involve us engaging in ground-up development.
Are there any best practices for use of SVN from a user (i.e. grunt developer) perspective?
Upvotes: 1
Views: 200
Reputation: 4089
This is a fairly subjective question, so I wouldn't be opposed to TPTB closing it. However, I'll happily share my opinions on this. Keep in mind that I come from a background working in small/medium (10-50 developers) enterprise contexts, so my opinions are tailored to that environment.
The following are more "admin" guidelines (in your taxonomy), but are still relevant to developers. Also, these are much more subjective, so take with an even larger grain of salt.
Upvotes: 5
Reputation: 36758
To supplement @Stuart Lange's great suggestions, here is my list that I have been honing for some time. This comes from both my experience and my research for my TortoiseSVN and Subversion Cookbook being serially published on Simple-Talk.com (part 8 was most recently published with more to come). For brevity I am listing only the bullet items here--my series of articles provide rationale and support for all of these in great detail.
A. Each commit should be for a single reason.
B. A single reason should be committed all together: code, help file, db schema, etc.
C. A commit should never break the build.
D. Always have a reason to commit a file.
E. Always review what you are about to commit, line by line.
F. Make commit messages required.
G. Commit in a timely fashion.
H. Do file operations (move, copy, rename) within your version control system as much as possible.
I. Include everything in source control except your generated files (so do include 3rd party binaries).
J. Never do a commit in isolation: consider SVN update/manually verify/SVN commit as an "atomic" operation.
Upvotes: 3