Difference between revisions of "Version Control"

From eLinux.org
Jump to: navigation, search
(Why use it: minor)
(Why use it)
Line 21: Line 21:
  
 
==Why use it==
 
==Why use it==
There are three types questions a VCS helps answer
+
There are three core things a VCS helps do
#What changes were made in the past, why were they made and who made them (via commit history and commit comments)
+
#Answer the questions what changes were made in the past, why were they made and who made them (via commit history and commit comments)
#How can undo a change I've made in error and "roll back" to start again
+
#:Individual developers find this information useful as part of their daily an it also helps organisations with their compliance and audit management
# How can I share my changes with the rest of the project team
+
#Undo a change I've made in error and "roll back" to start again
 +
#Recreate the system as it was at some point in the past
  
 
==Tools available==
 
==Tools available==

Revision as of 13:26, 27 April 2012

Justification

  1. VC is an important skill for developers and a prerequisite for developing quality software
  2. DVCS will provide a useful platform for students to work together on projects

Outcomes

  1. Able to describe the benefits of using version control
  2. Can use Git for version control of new and existing projects, including working in a group
    1. Create a local repo
    2. Commit a change
    3. Create a branch
    4. Show the history
    5. SHow change differences
    6. Perform a local merge
    7. Push and pull changes to a remote repo

Introduction

What is it

Version Control (VC) is a common practice used to track all the changes that occur to the files in a project over time. It needs a Version Control System (VCS) tool to work

Why use it

There are three core things a VCS helps do

  1. Answer the questions what changes were made in the past, why were they made and who made them (via commit history and commit comments)
    Individual developers find this information useful as part of their daily an it also helps organisations with their compliance and audit management
  2. Undo a change I've made in error and "roll back" to start again
  3. Recreate the system as it was at some point in the past

Tools available

  • Distributed vs. Centralised
    Modern VCS work on a distributed model (DVCS). This means that every member of the project team keeps a complete local copy of all the changes. The previous model, still widely used with tools like Subversion, is centralised. There is only one central database with all the changes and team members only have a copy of the change they are currently working on.
  • Open Source and Commercial Tools
  • What the tools do
    • Commit history
    • Diff listing
    • Integrate with other tools (e.g. Ticket Systems, built Systems, project management etc)

An example using Git

Git is vey popular DVCS originally developed to maintain the GNU/Linux kernel source code (the operating system that usually runs on the Raspberry Pi). It is now used by many very large open source projects and a lot of commercial development teams. Git is very flexible and has a reputation of being hard to use, but we are only going to concentrate on the ten or so commands you need to be useful day to day.

These examples assume that you are using Debian Linux on a Raspberry Pi and have downloaded the Python Snakes project from #TODO into a directory called snakes. All the commands are issued from a terminal. You can start the terminal from the LXDE GUI by #TODO..... Initially this example assumes that the current directory is your home directory, which is the default when you start a terminal window.

  • Setup up
  1. Make sure you have the correct tools installed by tying the following commands:
  sudo apt-get install git git-gui git-gitk
  1. Test the installation with the command
 git --version
  1. you should see something like
 git version 1.7.10

Tell Git who you are (this is very important information and it recorded in every change in you make or commit)

 git config --global user.name "My Name"
 git config --global user.email "myname@mycollege.ed.uk"

You should of course substitude your own name and email address in the correct places. Git records that information is a use configuration file called .gitconfig in your home directory

  • Creating a repo
  • Committing a file
  • Making a change
  • Showing the diff
  • Committing the change
  • Showing the history
  • Branches

Working with other

  • Remote repos
  • Merging
  • Patches