SlideShare a Scribd company logo
Version control in Game Dev

(or how to not lose everything to a power surge)
What is Version Control
• Wikipedia: “the management of changes to
  documents, computer programs, large web
  sites, and other collections of information.”
• Huh?.. In real people speak?
  – It’s a history of the changes to your work
  – Usually saved on a server somewhere
  – That allows you (or someone else) to get a copy of
    your work as it is/was at some point
Demo
Why should I bother?
•   Helps you track down where bugs came from
•   Lets you take risks
•   Makes it easier to work in a team
•   Backups (stuff happens!)
•   All the cool kids are doing it :P
Which Version Control system?
• Centralized = old school. Everything on the
  server, without access to that, you’re fooked.
  Eg. CVS, SVN, SourceSafe
• Distributed = everyone has a copy of the
  whole repo.. More resilient, can work offline.
  Eg. Git (<3), Mercurial
What should be in Version Control?
• Ideally EVERYTHING you need to recreate the
  project at any given time
• Prefer source assets to output assets (source
  code instead of internal dlls, pdfs instead of
  pngs)
• On large projects, may have to rather keep
  output art assets (gajillion meg multilayer
  pdfs), but then at least back source up
Git: Which tools?
•   Commandline
•   SmartGitHg
•   SourceTree <3 (Windows only in Beta )
•   TortoiseGit (No, no, no. Just don’t do it)
Git terminology
• Repository: where history of work is stored (you
  have one locally, and one or more on remote
  machines).
• Origin: shorthand for “main” remote repository.
  Not really special in any way.
• Commit: state of all your assets at a given point in
  time
• Branch: series of commits
• Master: “main” branch
• Working Copy: assets you’re actually working on
Git workflow
1.   Create new repository
2.   Make code changes
3.   Commit local changes (repeat 2-3)
4.   Pull changes =
     – Fetch changes from remote
     – Merge changes into local
     – Commit merge
5. Test
6. Push changes
7. Repeat from 2
Demo
Unity+Git: specifics
• Set version control mode to met a files (edit-
  >project settings->editor)
• Set up your .gitignore to exclude:
   – Library and temp folders
   – Monodev/Studio project files
   – System files like DS_store & thumbnails
• Metas, metas, metas:
   – If you add an asset, add the meta
   – If you empty a folder, delete the folder and the meta
Where to go to get started?
• Github.com – free public repositories, well
  known, widely used
• Bitbucket.com – free private repositories!! 
• Git-scm.com

More Related Content

What's hot

Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Matt Warren
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
Pranav Kulkarni
 
Let's talk GIt
Let's talk GItLet's talk GIt
Let's talk GIt
Darshan Parikh
 
X page developer
X page developerX page developer
X page developer
Jakob Majkilde
 
Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015
ice799
 
Git basics
Git basicsGit basics
Git basics
Ashwin Date
 
Learning by Experience, Devploying pyxbackup
Learning by Experience, Devploying pyxbackupLearning by Experience, Devploying pyxbackup
Learning by Experience, Devploying pyxbackupJervin Real
 
Do you know all of Puppet?
Do you know all of Puppet?Do you know all of Puppet?
Do you know all of Puppet?
Julien Pivotto
 
Git Introduction
Git IntroductionGit Introduction
Git Introduction
Anil Wadghule
 
Does Cowgirl Dream of Red Swirl?
Does Cowgirl Dream of Red Swirl?Does Cowgirl Dream of Red Swirl?
Does Cowgirl Dream of Red Swirl?
Hideki Yamane
 
Git basics
Git basicsGit basics
Git basics
Amit Sawhney
 
Read the Docs
Read the DocsRead the Docs
Read the Docs
ericholscher
 
Jupyter Kernel: How to Speak in Another Language
Jupyter Kernel: How to Speak in Another LanguageJupyter Kernel: How to Speak in Another Language
Jupyter Kernel: How to Speak in Another Language
Wey-Han Liaw
 
Mini git tutorial
Mini git tutorialMini git tutorial
Mini git tutorial
Cristian Lucchesi
 
Git Heaven with Wakanda
Git Heaven with WakandaGit Heaven with Wakanda
Git Heaven with Wakanda
Juergen Fesslmeier
 
Run Python on windows
Run Python on windowsRun Python on windows
Run Python on windows
Sitthykun LY
 
20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortestingKazuhiro Oinuma
 
Getting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress DevelopmentGetting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress Development
David Bisset
 
Git! Why? How?
Git! Why? How?Git! Why? How?
Git! Why? How?
Daniel Kummer
 
Docker 入門 Introduction to Docker
Docker 入門  Introduction to DockerDocker 入門  Introduction to Docker
Docker 入門 Introduction to Docker
Genchi Lu
 

What's hot (20)

Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
Microsoft & Open Source - a 'brave new world' - ProgSCon 2017
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Let's talk GIt
Let's talk GItLet's talk GIt
Let's talk GIt
 
X page developer
X page developerX page developer
X page developer
 
Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015Puppet Camp LA 2/19/2015
Puppet Camp LA 2/19/2015
 
Git basics
Git basicsGit basics
Git basics
 
Learning by Experience, Devploying pyxbackup
Learning by Experience, Devploying pyxbackupLearning by Experience, Devploying pyxbackup
Learning by Experience, Devploying pyxbackup
 
Do you know all of Puppet?
Do you know all of Puppet?Do you know all of Puppet?
Do you know all of Puppet?
 
Git Introduction
Git IntroductionGit Introduction
Git Introduction
 
Does Cowgirl Dream of Red Swirl?
Does Cowgirl Dream of Red Swirl?Does Cowgirl Dream of Red Swirl?
Does Cowgirl Dream of Red Swirl?
 
Git basics
Git basicsGit basics
Git basics
 
Read the Docs
Read the DocsRead the Docs
Read the Docs
 
Jupyter Kernel: How to Speak in Another Language
Jupyter Kernel: How to Speak in Another LanguageJupyter Kernel: How to Speak in Another Language
Jupyter Kernel: How to Speak in Another Language
 
Mini git tutorial
Mini git tutorialMini git tutorial
Mini git tutorial
 
Git Heaven with Wakanda
Git Heaven with WakandaGit Heaven with Wakanda
Git Heaven with Wakanda
 
Run Python on windows
Run Python on windowsRun Python on windows
Run Python on windows
 
20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting20120524 english lt2_pythontoolsfortesting
20120524 english lt2_pythontoolsfortesting
 
Getting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress DevelopmentGetting Started With Grunt for WordPress Development
Getting Started With Grunt for WordPress Development
 
Git! Why? How?
Git! Why? How?Git! Why? How?
Git! Why? How?
 
Docker 入門 Introduction to Docker
Docker 入門  Introduction to DockerDocker 入門  Introduction to Docker
Docker 入門 Introduction to Docker
 

Similar to Source andassetcontrolingamedev

CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
PouriaQashqai1
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
Tim Osborn
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
Bruno Capuano
 
Git
GitGit
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
Anurag Upadhaya
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
Geoff Hoffman
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
Derek Jacoby
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
Derek Jacoby
 
Reproducible research: practice
Reproducible research: practiceReproducible research: practice
Reproducible research: practice
C. Tobin Magle
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Ahmed El-Arabawy
 
IS - section 1 - modifiedFinal information system.pptx
IS - section 1 - modifiedFinal information system.pptxIS - section 1 - modifiedFinal information system.pptx
IS - section 1 - modifiedFinal information system.pptx
NaglaaAbdelhady
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
Betclic Everest Group Tech Team
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
Kishor Kumar
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
GoogleDevelopersStud1
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
BigBlueHat
 
Git and Github
Git and GithubGit and Github
Git and Github
Akshay Vasava
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git
Ivano Malavolta
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
Arashdeepkaur16
 

Similar to Source andassetcontrolingamedev (20)

CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
 
Git
GitGit
Git
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
Reproducible research: practice
Reproducible research: practiceReproducible research: practice
Reproducible research: practice
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 
IS - section 1 - modifiedFinal information system.pptx
IS - section 1 - modifiedFinal information system.pptxIS - section 1 - modifiedFinal information system.pptx
IS - section 1 - modifiedFinal information system.pptx
 
git and github
git and githubgit and github
git and github
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
 
Git and Github
Git and GithubGit and Github
Git and Github
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
 

Source andassetcontrolingamedev

  • 1. Version control in Game Dev (or how to not lose everything to a power surge)
  • 2. What is Version Control • Wikipedia: “the management of changes to documents, computer programs, large web sites, and other collections of information.” • Huh?.. In real people speak? – It’s a history of the changes to your work – Usually saved on a server somewhere – That allows you (or someone else) to get a copy of your work as it is/was at some point
  • 4. Why should I bother? • Helps you track down where bugs came from • Lets you take risks • Makes it easier to work in a team • Backups (stuff happens!) • All the cool kids are doing it :P
  • 5. Which Version Control system? • Centralized = old school. Everything on the server, without access to that, you’re fooked. Eg. CVS, SVN, SourceSafe • Distributed = everyone has a copy of the whole repo.. More resilient, can work offline. Eg. Git (<3), Mercurial
  • 6. What should be in Version Control? • Ideally EVERYTHING you need to recreate the project at any given time • Prefer source assets to output assets (source code instead of internal dlls, pdfs instead of pngs) • On large projects, may have to rather keep output art assets (gajillion meg multilayer pdfs), but then at least back source up
  • 7. Git: Which tools? • Commandline • SmartGitHg • SourceTree <3 (Windows only in Beta ) • TortoiseGit (No, no, no. Just don’t do it)
  • 8. Git terminology • Repository: where history of work is stored (you have one locally, and one or more on remote machines). • Origin: shorthand for “main” remote repository. Not really special in any way. • Commit: state of all your assets at a given point in time • Branch: series of commits • Master: “main” branch • Working Copy: assets you’re actually working on
  • 9. Git workflow 1. Create new repository 2. Make code changes 3. Commit local changes (repeat 2-3) 4. Pull changes = – Fetch changes from remote – Merge changes into local – Commit merge 5. Test 6. Push changes 7. Repeat from 2
  • 10. Demo
  • 11. Unity+Git: specifics • Set version control mode to met a files (edit- >project settings->editor) • Set up your .gitignore to exclude: – Library and temp folders – Monodev/Studio project files – System files like DS_store & thumbnails • Metas, metas, metas: – If you add an asset, add the meta – If you empty a folder, delete the folder and the meta
  • 12. Where to go to get started? • Github.com – free public repositories, well known, widely used • Bitbucket.com – free private repositories!!  • Git-scm.com