DOC PREVIEW
CMU CS 15441 - Intro & Revision Control

This preview shows page 1-2-14-15-30-31 out of 31 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 31 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Recitation 1: Intro & Revision ControlSystems SoftwareQuite different from 213Software Engineering For Systems HackersOur PhilosophyPartly-free lunchYour jobIn Practice: AlgorithmsDon’t write it twiceDon’t prematurely optimizeOptimizing your timeOverviewResourcesRecitation MechanicsRevision ControlWhat is revision control?Why do I want it?You’ve sold me. What should I know about it?The repositoryCheck out and commitEvery revision is availableAnd you can see what changedConcurrent DevelopmentConcurrent editsSlide 25Resolving ConflictsBranchesSubversion (see handout)Brief walkthroughThoughts on Revision ControlGo forth and revise!Recitation 1: Intro & Revision ControlDave AndersenCMU Computer ScienceFall 2006Systems Software•Low-level (projects in C)•Designed to run forever–Handle every possible error condition–Manage resources carefully•Must be secure!–The Internet is not a friendly place•Based on documented protocolsQuite different from 213•Project size: 1000s of lines vs 100s.•Project duration: 5 weeks vs 1-2 weeks•Partners vs. solo developer•Result:–You can’t keep the “state” for 441 projects in your head at all times. It’s too big!–Requires one step more care in development.Software EngineeringFor Systems Hackers•Goals and foundations:–1-5 developers–Context: Systems code, but not too much is systems specific–Very low overhead and up-front cost•Like to see benefits w/in a single projectOur Philosophy•Your time is valuable and limited•Some things are fun:–Design, initial coding, a working project•Some things are less fun:–Agonizing debugging, bad project grades, spending 10x longer than you thought•Use techniques that minimize time and maximize fun vs less fun.Partly-free lunch•Techniques take a bit of time to learn–E.g., revision control software (today)–But they will pay off!•Some techniques take a bit more up-front time–E.g., writing good log messages, thinking about design, good debugging capabilities–But they make the rest of the project more predictable and reduce the uncertainty of failing in the last day.–(And they save debugging time).Your job•Ask yourself: “Could I be doing this in a more efficient way?”–Typing “gcc –g –Wall foo.c bar.c baz.c”vs typing “make”•Debugging: “Have I seen this bug before? What caused it? How could I avoid it?”–Be reflective; strive to learn & improve.In Practice: Algorithms•Most systems programs need:–Hashes, linked lists–Searching and sorting•For many, that’s it.–(Databases are different)•Given this,–What would a good, lazy programmer do?Don’t write it twice•Hashes/lists: Have a nice implementation that you reuse.–We suggest either the ones from•“The Practice of Programming”•Or rip them out of the BSD kernel•This is perfectly acceptable in 441•Sorting: Don’t write at all!–C library “qsort” (heap, merge…)Don’t prematurely optimize•If it ain’t slow, don’t break it•Keep your programs simple–Easier to write–Easier to debug•But make it easy to change implementation details–Modularity! (Later lecture)Optimizing your time•Sorting 3 numbers: Do it by hand•Sorting 3000 numbers: Do it in ruby•Sorting 300,000,000,000 numbers: Write some serious code•Mental calculation–Time spent doing task–Time spent automating/optimizing–Will you have to do this again?Overview•Today: Intro & Revision Control–Managing your source code wisely•Makefiles and automation 1–Automate the boring stuff!•Design: Modularity and Testability–Managing 1000 LoC != 100 LoC•Debugging: Techniques & Tools•Automation 2: ScriptingResources•Some great books:–The Pragmatic Programmer–The Practice of Programming–Writing Solid Code•Recitation notes:–http://www.cs.cmu.edu/~dga/systems-se.pdf–Please don’t redistribute: They’re very preliminary!Recitation Mechanics•1) These are your recitations.–We’ve got a schedule. It’s flexible.–Ask questions, make comments, …–1 part lecture, 1 part “public office hours” (homework questions? Sure! Project questions? Great!)•2) These aren’t the final answers–Recitations culled from our experience, other faculty, friends in industry, books, etc.–We’re always looking for better ideas/tools/practices/etc. If you have some, please share.Revision Control•Before you write a line of code…•Use subversion/CVS/etc.•Provides access to all old versions of your code–No more “cp file.c file.c.2006-01-01-1059am-oh-god-please-let-this-work”What is revision control?•A repository that stores each version•You explicitly “check out” and “check in” code and changes.•597 bark:~/tmp> svn checkout https://moo.cmcl.cs.cmu.edu/svn/systems-se A systems-se/related.tex A systems-se/acks.tex A systems-se/tinylang.tex A systems-se/emacs.tex ….Why do I want it?•Super-undo: Go to arbitrary versions–rm –rf your source tree? No problem!•Tracking changes /“why did this break?”•Concurrent development•Snapshots–Turning in the assignment: just make a snapshot when you want, and we’ll grade that. You can keep developing afterwords.–Useful, e.g., for optimization contest, or for making sure you have something working.You’ve sold me. What should I know about it?The repository•Master copy of code is separate from what you work on•You canhave multipleworking copieschecked out.(So can your partner)RepositoryYour working copyPartner working copyLaptop working copyCheck out and commit•Explicitly synchronize with the repositoryRepositoryYour working copyCheckout / UpdateCommitFirstVersionOlderVersion 2OlderVersion 1Every revision is availableCurrentversionAnd you can see what changedRevision control lets you note (and then see) what you changed:> svn log gtcd.ccr986 | ntolia | 2006-08-01 17:13:38 -0400 (Tue, 01 Aug 2006) | 6 linesThis allows the sp to get rid of chunks early before a transfer is complete.Useful when a file is requested in-order and the file size > mem cache sizeAnd makes it easy to go back to other versions:---------------------------------------------------------------------r987 | ntolia | 2006-08-02 13:16:21 -0400 (Wed, 02 Aug 2006) | 1 lineAfter much thought, I am reverting the last patch. We will need to revisit theissue when we think about DOT on storage-limited clientsConcurrent Development•Each person checks out a copy•Both can


View Full Document

CMU CS 15441 - Intro & Revision Control

Documents in this Course
lecture

lecture

34 pages

lecture

lecture

38 pages

lecture

lecture

18 pages

lecture

lecture

28 pages

lecture

lecture

11 pages

Lecture

Lecture

64 pages

lecture

lecture

10 pages

lecture

lecture

19 pages

Lecture 6

Lecture 6

43 pages

Exam

Exam

14 pages

lecture

lecture

38 pages

Debugging

Debugging

23 pages

lecture

lecture

60 pages

review

review

27 pages

lecture

lecture

12 pages

The Web

The Web

28 pages

Lecture

Lecture

40 pages

lecture

lecture

42 pages

lecture

lecture

9 pages

lecture

lecture

10 pages

lecture

lecture

49 pages

lecture

lecture

26 pages

Project

Project

5 pages

lecture

lecture

40 pages

lecture

lecture

9 pages

lecture

lecture

41 pages

lecture

lecture

32 pages

lecture

lecture

36 pages

lecture

lecture

34 pages

lecture

lecture

45 pages

lecture

lecture

26 pages

lecture

lecture

6 pages

lecture

lecture

51 pages

Project

Project

16 pages

lecture

lecture

44 pages

lecture

lecture

13 pages

lecture

lecture

42 pages

lecture

lecture

36 pages

Project

Project

13 pages

Project

Project

33 pages

lecture

lecture

43 pages

lecture

lecture

49 pages

Load more
Download Intro & Revision Control
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Intro & Revision Control and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Intro & Revision Control 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?