CS 2112 Lab: Version Control CS 2112 Lab: Version Control What is - - PowerPoint PPT Presentation

cs 2112 lab version control
SMART_READER_LITE
LIVE PREVIEW

CS 2112 Lab: Version Control CS 2112 Lab: Version Control What is - - PowerPoint PPT Presentation

What is Version Control? Git Structure Using Git Controlling your computer with a shell CS 2112 Lab: Version Control CS 2112 Lab: Version Control What is Version Control? Git Structure Using Git Controlling your computer with a shell


slide-1
SLIDE 1

What is Version Control? Git Structure Using Git Controlling your computer with a shell

CS 2112 Lab: Version Control

CS 2112 Lab: Version Control

slide-2
SLIDE 2

What is Version Control? Git Structure Using Git Controlling your computer with a shell Version Control

What is Version Control?

You’re emailing your project back and forth with your partner. An hour before the deadline, you and your partner both find different bugs and work feverishly to correct them. When you try to submit, you find that you have two different versions of the code, and you don’t have enough time to figure out who changed what, how to merge them together into one final project, and what, if any, bugs were introduced along the way!

CS 2112 Lab: Version Control

slide-3
SLIDE 3

What is Version Control? Git Structure Using Git Controlling your computer with a shell Version Control

What is Version Control?

Version control allows multiple people to work on a project simultaneously by keeping versioned copies of each file in your project for each edit that you make. This makes it easy to:

◮ Revert files back to a previous state if you make a mistake. ◮ Look over any changes made by you or those you are working

with.

◮ Recover any files if they are lost.

Distributed version control lets you store the different versions of your files on a remote server.

CS 2112 Lab: Version Control

slide-4
SLIDE 4

What is Version Control? Git Structure Using Git Controlling your computer with a shell Overview

Git!

Several widely used version control systems exist. Some of the most popular free ones are Git, Mercurial, and Subversion. Perforce is often used in industry. We will take a look at Git, which is popular, freely available, and powerful. Subversion is simpler to use but less powerful; Mercurial is similar to Git; perhaps a little

  • slower. Eclipse has some support for projects that use Git, but it’s

safer to get Git at the command line.

CS 2112 Lab: Version Control

slide-5
SLIDE 5

What is Version Control? Git Structure Using Git Controlling your computer with a shell Overview

Setting Up a Repository

A couple of sites host free repositories, including:

◮ github.com (Git - though you will need to request a student

account for private repositories)

◮ bitbucket.org (Git and Mercurial) ◮ xp-dev.com (Subversion, Git, and Mercurial)

You will need to follow the specific instructions for whichever host you choose in order to initialize a Git project and add your new remote repository. (This will make more sense later!)

CS 2112 Lab: Version Control

slide-6
SLIDE 6

What is Version Control? Git Structure Using Git Controlling your computer with a shell Structure

The Local Repository

Your local repository contains 3 trees:

◮ Working Directory - This is where you will look at, modify,

and add files to your project.

◮ Staging Area/Index - When you add a file (git add file

from the command line, or Add to Index in Eclipse), the file is added to this second tree, the staging area. This is where you prepare the files that you would like to eventually commit to your repository.

◮ Repository - When you commit the changes made to your

files (git commit by command line, Commit in Eclipse), changes made to the files in your staging area are added to the repository as new versions of those files. You must specify a commit message with each commit to let others know what you have changed.

CS 2112 Lab: Version Control

slide-7
SLIDE 7

What is Version Control? Git Structure Using Git Controlling your computer with a shell Structure

The Local Repository

Figure: Local Repository Workflow

CS 2112 Lab: Version Control

slide-8
SLIDE 8

What is Version Control? Git Structure Using Git Controlling your computer with a shell Structure

The Remote Repository

◮ When you are ready for others on your team to be able to view

and pull your changes into their own local repositories, you can push your committed changes to the remote repository.

◮ If anyone else has pushed changes to your remote repository,

Git will make you pull those changes into your own local repository before pushing any new changes.

◮ If you and your partner have been working on different parts

  • f your code, Git will automatically merge in your partner’s

changes smoothly. If you have been working on the same code, however...

CS 2112 Lab: Version Control

slide-9
SLIDE 9

What is Version Control? Git Structure Using Git Controlling your computer with a shell Structure

The Remote Repository

Figure: Remote repository workflow

CS 2112 Lab: Version Control

slide-10
SLIDE 10

What is Version Control? Git Structure Using Git Controlling your computer with a shell Conflicts and Reverting

Merge conflicts

If you and your partner have both modified the same code, Git will be unsure about which version you would like it to use - yours, or theirs? To fix this, Git will ask you to resolve merge conflicts.

Figure: Eclipse Merge Conflict Tool

CS 2112 Lab: Version Control

slide-11
SLIDE 11

What is Version Control? Git Structure Using Git Controlling your computer with a shell Conflicts and Reverting

Merge conflicts

Once you have your Local File Workspace version of the file looking how you would like, you can right click on the file to mark it as

  • merged. You can then commit your merge, and push it as normal.

CS 2112 Lab: Version Control

slide-12
SLIDE 12

What is Version Control? Git Structure Using Git Controlling your computer with a shell Conflicts and Reverting

Git Workflow - Reverting a File

Figure: A Git Workflow

CS 2112 Lab: Version Control

slide-13
SLIDE 13

What is Version Control? Git Structure Using Git Controlling your computer with a shell Conflicts and Reverting

EGit Commands to Remember!

◮ Team → Add to Index — Add a file to your Index if you

want to track the changes you make in it, and commit those changes later.

◮ Team → Commit — Commit changes in your working

directory to your local repository; these changes will be pushed to the remote repository on the next Push command.

◮ Team → Synchronize Workspace — This will pull from the

remote repository and make sure that your local repository is up to date (needed especially before a Push)

◮ Push or Team → Push Branch — Pushes all your

committed changes to the remote repository

CS 2112 Lab: Version Control

slide-14
SLIDE 14

What is Version Control? Git Structure Using Git Controlling your computer with a shell

The shell: a lower-level interface

A shell is a command-line interface to your computer’s operating

  • system. Less pretty than the GUI interface, more functional.

◮ Windows: cmd, Cygwin (Unix on Windows), or PowerShell ◮ Unix (Mac OS X, Linux): sh (bash), (t)csh

CS 2112 Lab: Version Control

slide-15
SLIDE 15

What is Version Control? Git Structure Using Git Controlling your computer with a shell

Shell commands

A shell command consists of a program name followed by some

  • ptiona command-line arguments. Spaces separate the command

and the arguments from each other. Examples:

◮ rm filename (Windows: del filename) : remove a file ◮ ls directory (Windows: dir directory): list contents of

directory

◮ echo message : print the message to standard output ◮ cat filename (Windows: type filename) : print the

contents of the file.

◮ cd directory : change the current directory (shell built-in

command)

CS 2112 Lab: Version Control

slide-16
SLIDE 16

What is Version Control? Git Structure Using Git Controlling your computer with a shell

Command context

Every command is executed with some context provided by the

  • perating system:

◮ The current directory in which the command runs. All files

accesses are relative to this directory. Note: folders are known as directories at the operating system level.

◮ A set of environment variables that can be looked up by the

running program.1

◮ Standard input and output devices. Normally standard input

reads from the shell’s input and output goes to the shell. However, it is possible to override these. The syntax > filename redirects output to the specified file.

1The ShellShock vulnerability exploits a bug in how the bash shell handles

environment variables.

CS 2112 Lab: Version Control

slide-17
SLIDE 17

What is Version Control? Git Structure Using Git Controlling your computer with a shell

Pathnames and directories

◮ Files and directories are specified by pathnames: names

separated by slashes (Unix, Cygwin) or backslashes (Windows).

◮ Pathnames starting with a slash (backslash) are absolute and

start from the root of the file system.

◮ The special directory “.” means the current directory, and

“..” means the parent directory of the current directory.

◮ To go up a directory: cd .. ◮ To go to the root directory: cd / ◮ To list the current directory: ls ., or just ls. CS 2112 Lab: Version Control