Version Control 2 Lab Schedule Today Lab 2 Version Control - - PowerPoint PPT Presentation

version control
SMART_READER_LITE
LIVE PREVIEW

Version Control 2 Lab Schedule Today Lab 2 Version Control - - PowerPoint PPT Presentation

Computer Systems and Networks ECPE 170 Jeff Shafer University of the Pacific Version Control 2 Lab Schedule Today Lab 2 Version Control Next Week Intro to C (for C++ programmers) Lab 3 C Programming /


slide-1
SLIDE 1

ì

Computer Systems and Networks

ECPE 170 – Jeff Shafer – University of the Pacific

Version Control

slide-2
SLIDE 2

Lab Schedule

ì

Today

ì

Lab 2 – Version Control ì

Next Week

ì

Intro to C (for C++ programmers)

ì

Lab 3 – C Programming / Build Tools ì

Deadlines

ì

Lab 1 Report – Jan 26th, 2019 by 5am

ì Submit via Canvas

ì

Lab 2 Report – Jan 29th, 2019 by 5am

ì Submit via version control

Spring 2019 Computer Systems and Networks

2

slide-3
SLIDE 3

Before Version Control

1.

<Report.doc>

2.

<Report.doc.bak>

3.

<Report-1.doc>

4.

Email off to partner…

5.

<Report-2.doc>

6.

Partner responds with doc (that is missing the changes you just made)

7.

<Report-2a.doc>

8.

<Report-2a-WITH- REFERENCES.doc>

9.

Email off to partner… Partner responds with new doc <Report-3.doc>

  • 10. <Report-3-FINAL.doc>
  • 11. <Report-3-FINAL-OOPS-FIXED-

TYPO-FINAL.doc>

Spring 2019 Computer Systems and Networks

3

slide-4
SLIDE 4

Version Control Features

ì Project history tracking ì Concurrent file editing (merges) ì Non-linear program history (branches) ì Naming scheme for program releases (tags)

Spring 2019 Computer Systems and Networks

4

slide-5
SLIDE 5

Motivation for Version Control

ì Why would a single programmer (working alone)

use version control?

ì

Backup files

ì

Roll-back to earlier (working) version

ì

See changes made between current (broken) code and earlier (working) code

ì

Maintain multiple versions of a single product

ì

Experiment with a new feature

ì Try a risky change in a “sandbox” ì If it works, you can merge it into the regular code.

If it fails, you can throw it away.

Spring 2019 Computer Systems and Networks

5

slide-6
SLIDE 6

Motivation for Version Control

ì Why would a small group of developers use

version control?

ì

All the reasons a single programmer would, plus…

ì

Merging different changes made by different developers into the same file

ì Add a new function at the bottom? Safe to

automatically merge in

ì Re-write a function at the same time another

developer is also editing it? Version control will catch this and ask you to decide which edits should “win” ì

Blame – who wrote this buggy code?!?

Spring 2019 Computer Systems and Networks

6

slide-7
SLIDE 7

Motivation for Version Control

ì Why would a large group of developers use

version control?

ì Different question: Could you develop the Linux

kernel, Adobe Photoshop, Google Chrome, etc… using:

ì

A single shared “folder of code”?

ì

Emailing code snippets between developers?

ì

Everyone sits around and shares one keyboard?

Spring 2019 Computer Systems and Networks

7

slide-8
SLIDE 8

Version Control Basics

ì What kind of files should I keep in version control?

ì

Program source code (obviously)

ì

VHDL / Verilog files (from digital design class)

ì

Matlab scripts

ì

HTML files

ì

Server configuration files

ì Imagine you work at Livermore National Labs, and

your job is to manage Linux cluster computers with 100,000+ machines (nodes)… ì

Anything that is plain text!

Spring 2019 Computer Systems and Networks

8

slide-9
SLIDE 9

Version Control Basics

ì What kind of files should I not keep in version

control?

Spring 2019 Computer Systems and Networks

9

https://www.youtube.com/watch?v=WJVBvvS57j0

slide-10
SLIDE 10

Version Control Basics

ì

What kind of files should I not keep in version control?

ì

These are more what you’d call “guidelines” than actual “rules”…

ì

Binary data

ì How do you merge two different binary files together? No

general-purpose way to do this

ì

Anything auto-generated by the compiler

ì Object files or executable file ì Wastes space on useless junk that can be re-created

automatically

ì

Text editor temp files (e.g. main.c~)

Spring 2019 Computer Systems and Networks

10

slide-11
SLIDE 11

Version Control Basics

ì Big risk in putting the executable in version control

ì

If you forget to compile before a commit, the executable may not be in sync with the attached source code!

ì

Big headache if you ever roll back to this version! ì In ECPE 170, all our executable files can be

produced in under 5 seconds with one command. There’s no need to include them in your repository

Spring 2019 Computer Systems and Networks

11

slide-12
SLIDE 12

Problem 1 – Comparison

ì How are these Version Control Systems different?

ì

Mercurial

ì

Git

ì

SVN

Spring 2019 Computer Systems and Networks

12

P1

slide-13
SLIDE 13

Distributed Version Control

ì Why do they call Mercurial a distributed version

control system?

ì

Conventional systems (e.g., Subversion or “svn”) have a centralized server hold the “master” copy

ì

Distributed version control – each copy is its own full-fledged master! (But you can still push changes from one person’s copy to another)

ì Allows version control to work offline ì Allows version control to work with ad-hoc groups

Spring 2019 Computer Systems and Networks

13

slide-14
SLIDE 14

Universe 1: Centralized Version Control (SVN)

Centralized Repository svn commit Ivan’s Dir Lisa’s Dir Kevin’s Dir Dorothy’s Dir

slide-15
SLIDE 15

Universe 2: Distributed Version Control (Hg)

Centralized Repository hg commit Ivan’s Dir Lisa’s Dir Kevin’s Dir Dorothy’s Dir Ivan’s Repo Lisa’s Repo Kevin’s Repo Dorothy’s Repo hg push hg pull

slide-16
SLIDE 16

Mercurial Command Flow (Typical)

1.

hg clone <repository address>

a.

#get repo on your desktop 2.

hg add <filenames> #always specify a filename to add

a.

#add new files and make changes 3.

hg commit -m <meaningful commit message>

a.

#commit to your repo

b.

Make changes and repeat 3

  • 4. hg revert –all

a.

#if not happy with changes, revert to last commit (do 4)

  • b. Then make changes and go to 3
  • 5. hg push #All done? Let everyone see
slide-17
SLIDE 17

Problem 2 – Mercurial Cheat Sheet

ì Go find a Mercurial cheat sheet (or 2) for future

reference

Spring 2019 Computer Systems and Networks

17

P2

slide-18
SLIDE 18

Version Control in ECPE 170

ì Version control required for this class

ì

Used to distribute boilerplate code for labs

ì

Used to turn in assignments when finished

Spring 2019 Computer Systems and Networks

18

slide-19
SLIDE 19

Version Control in ECPE 170

ì If you only do one check-in at the very end

  • f your project, you've missed the whole

point of version control, and turned a valuable tool into an obstacle to completing the assignment

ì Check-in code on a

regular basis!

Spring 2019 Computer Systems and Networks

19

slide-20
SLIDE 20

Spring 2019 Computer Systems and Networks

20

slide-21
SLIDE 21

Spring 2019 Computer Systems and Networks

21

http://xkcd.com/1597/

"If that doesn't fix it, git.txt contains the phone number

  • f a friend of mine who

understands git. Just wait through a few minutes of 'It's really pretty simple, just think of branches as...' and eventually you'll learn the commands that will fix everything.”

slide-22
SLIDE 22

Problem 3 – Multiple Heads

ì Research and answer question 3 on your own, and

then begin the lab!

Spring 2019 Computer Systems and Networks

22

P3