DIGITAL REPOSITORIES CGDD 4603
Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra
Job Description… Graphics Programmer
Job Description… Audio Lead
Digital Repositories Also called “Software Configuration Management” (SCMs) Version control Source control Revision control Tracks changes to projects Allows teams (or individuals) to have a centralized system of code (client/server) Game development/media has special considerations
But WHY? Allows developers to see a snapshot of the code at any phase Manages the headache of: Monster_4_01_11_v3.1.cpp_copy Think of the redundancy!! “Hey man – can you send me the latest version of…” “Hey man – remember that version we had a few months back?” Moving code from computer to computer (shared folder) Understanding changes through diff
But WHY? Risk management Someone leaves, and so does their code Computer crashes or is stolen Oops – it was compiling/working before…
How it generally works… 1. Install client (optional) 2. Developer/Sys Admin creates an initial repository 3. Everyone synchs with the repository (updating) 4. New files are immediately added to the repository 5. Files that are being edited 1. Are checked out (i.e. locked) 2. Are simultaneously editable (i.e. text files) and merged together later 3. Changed files are committed 6. Developers can usually browse the logs for changes
Conflicts When two people submit one file that cannot be successfully merged Imagine one person deleting a line, the other keeps it.
Trunks and Branching The trunk is the primarily path of development Branches – independent paths One path might have no bugs One path might have new features One path might use an updated SDK
Common Repositories Commercial Perforce “Other” CVS SVN (or “Subversion” open-source) GIT and GITHub (which Mac is now recommending)
Interface Example (Perforce)
Checkout Example (Perforce) Trying to save without checking out first
Diff Example (Perforce, but looks similar to MacOS X “FileMerge”)
Reverting/Rolling Back
Distributed Version Control Many SCMs have a centralized server Distributed Version Control Is a peer-to-peer network Git “No canonical, reference copy” exists (Wikipedia) Better risk management?
Things to Remember Check your code back in! Don’t check out the entire project each time (for larger projects) Don’t check in broken code Don’t check in binaries that are generated .exes (in /bin and /obj in 2010) .ncb (Intellisense) In Perforce, the project must exist under the repository directory before adding it