version control systems svn and git how do vcs support sw
play

Version Control Systems: SVN and GIT How do VCS support SW - PowerPoint PPT Presentation

Version Control Systems: SVN and GIT How do VCS support SW development teams? CS 435/535 The College of William and Mary Agile manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through


  1. Version Control Systems: SVN and GIT How do VCS support SW development teams? CS 435/535 The College of William and Mary

  2. Agile manifesto  We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:  Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan  That is, while there is value in the items on the right, we value the items on the left more. What is needed? Chapter 3 Agile software development 2

  3. Plan-driven and agile specification Plan-based development Design and Requirements Requirements implementation engineering specification Requirements change requests Agile development Requirements Design and engineering implementation Chapter 3 Agile software development 3

  4. The extreme programming release cycle Select user Break down stories for this Plan release stories to tasks release Evaluate Release Develop/integrate/ system software test software Chapter 3 Agile software development 4

  5. The Scrum process Assess Select Outline planning and architectural Project closure design Review Develop Sprint cycle Chapter 3 Agile software development 5

  6. Scrum benefits  The product is broken down into a set of manageable and understandable chunks.  Unstable requirements do not hold up progress.  The whole team have visibility of everything and consequently team communication is improved.  Customers see on-time delivery of increments and gain feedback on how the product works.  Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed. Chapter 3 Agile software development 6

  7. Software Engineering is Team Work Remember • Enabling technology for productivity SVN from CS 301? • must support parallelization What does it support? • must support communication • Documentation as preserved communication • must support management of tasks & people • What needs to be done? When? By whom? • What has been done? By whom?

  8. Version Control Systems Centralized • CVS – 1990 • SVN - 2000 Distributed • Bitkeeper - 1997 • Git – 2005 • Bazaar – 2005 • Mercurial - 2005 *More VCS at http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

  9. Version Control Systems • Version control system • supports concurrent software development on shared code base • keeps track of changes, • integrates versions / recognizes conflicts, • allows for recovery, documentation of changes • Common set up: • IDE as front end, VCS as back end (shared, persistent storage)

  10. Subclipse: eclipse plugin for SVN

  11. Subclipse: eclipse plugin for SVN http://subclipse.tigris.org/update_1.8.x

  12. EGit: eclipse plugin for Git

  13. EGit: eclipse plugin for Git http://download.eclipse.org/egit/updates

  14. EGit: eclipse plugin for Git http://eclipsesource.com/blogs/tutorials/egit-tutorial/ http://wiki.eclipse.org/EGit/User_Guide#Overview

  15. Centralized vs Distributed Version Control Systems Centralized Architecture: Image from http://git-scm.com/book/en/Getting-Started-About-Version-Control

  16. Distributed Version Control Systems Distributed Architecture: Image from http://git-scm.com/book/en/Getting-Started-About-Version-Control

  17. Centralized vs Distributed VCS • What are the pros & cons? • Software engineering is much about scalability: • Project size in # of developers • about 10 • up to 100 • more than 100

  18. Workflows: Centralized • Small teams • Typical workflow for SVN and CVS • Repository is a single point of failure Image from http://git-scm.com/book/en/Distributed-Git-Distributed-Workflows

  19. Workflows: Integration - Manager • Supported by CVS and SVN using branches • More easily supported by distributed version control systems Image from http://git-scm.com/book/en/Distributed-Git-Distributed-Workflows

  20. Workflows: Director and Lieutenants • Supported by CVS and SVN using branches • More easily supported by distributed version control systems • Generally used by huge projects (e.g., Linux kernel) Image from http://git-scm.com/book/en/Distributed-Git-Distributed-Workflows

  21. Versions, Revisions, and Snapshots • CVS : each commit generates a new version for each file modified • SVN: each commit generates new state of the file system tree, called a revision • GIT: same than SVN; keeps a snapshot of the system but instead of saving the deltas it saves the changed files and references to the unchanged ones

  22. Git follows idea of a file system with snapshots

  23. SVN et al: 1.4: Other systems tend to store data as changes to a base version of each file.

  24. Versions, Revisions, and Snapshots SVN and Git use global revision numbers Image from http://svnbook.red-bean.com/en/1.7/svn.basic.in-action.html

  25. Operations and states (CVS and SVN) Workspace Repository Checkout Commit

  26. Operations and states (Git) Staging area Workspace Repository (Index) Checkout Stage Commit

  27. Operations and commands - Git http://osteele.com/posts/2008/05/commit-policies

  28. Workflows: Integration - Manager • Supported by CVS and SVN using branches • More easily supported by distributed version control systems Image from http://git-scm.com/book/en/Distributed-Git-Distributed-Workflows

  29. Operations and commands Operation CVS SVN Git Init init create init Import import import commit Checkout checkout checkout clone Checkout branch checkout checkout checkout Commit/Checkin commit commit commit, push Update update update fetch, pull

  30. Operations and commands - SVN+Eclipse

  31. Operations and commands - SVN+Eclipse

  32. Operations and commands - SVN+Eclipse

  33. Operations and commands - SVN+Eclipse

  34. Operations and commands - SVN+Eclipse

  35. Operations and commands - SVN+Eclipse

  36. Workflows and issues • Workflow: 1) get code base 2) make changes 3) deliver changes • Issue: Read/write access to remote repository • Protected: User authentication, registration, account/pw necessary in communication, IDE stores/uses account/pw for convenience • Issue: Conflicts • Changes do not fit together, automatically recognized at some level of granularity (same file, same method, same line of code) • Automatically recognized, manually fixed • Issue: Documentation / Communication • What changed, how trustworthy are the changes, what needs to be changed as an effect • Finding the right historical version to undo some changes

  37. Tagging • Useful for marking specific points in history, in particular: Releases • Two types: lightweight vs annotated • annotated: full objects in Git DB, check summed, contain tagger name, email, date, tagging message, can be signed & verified $ git show v1.4 • $ git tag -a v1.4 -m ’my version 1.4’ tag v1.4 Tagger: Scott Chacon <schacon@gee-mail.com> Date: Mon Feb 9 14:45:11 2009 -0800 my version 1.4 commit 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge: 4a447f7... a6b4c97... Author: Scott Chacon <schacon@gee-mail.com> Date: Sun Feb 8 19:02:46 2009 -0800 Merge branch ’experiment’

  38. Branching • CVS : simple process for creating branches on the repository • SVN: has no internal concept of a branch; branches are managed as copies of a directory. • GIT: very simple process for creating local and remote branches

  39. Merging 4 Branch 1 6 5 2 3 4 Merge Branch 1 6 7 5 2 3

  40. Branching in SVN

  41. Branching in SVN

  42. Branching in SVN

  43. Branching in SVN

  44. Branching in SVN

  45. Branching in SVN

  46. Branching in SVN

  47. Branching in Git • Branches are lightweight movable pointers to commits • The default branch is the MASTER (trunk) Images from http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

  48. Branching in Git Initial layout for three commits New branch pointer (iss53) Images from http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

  49. Branching in Git New commit on the branch Hot fix branch on master Images from http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

  50. Merging in Git Images from http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

  51. Merging in Git Images from http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging

  52. Branching & Merging in Git • Key concept, well supported • Local workflow • people create branches for any issue / task /assignment they deal with, sometimes called “topic” branch • optional: rebase instead of merge to obtain a linear history • only recommended for local repository • Remote repository: merge with master • For integration manager with blessed repository: pull request

  53. What is missing so far? • Documentation of problems, bug reports • Work assignments, who does what and till when Issue tracking

  54. Github Issue Tracker • Filter by open and closed issues, assignees, labels, and milestones. • Sort by issue age, number of comments, and update time. • Milestones / labels

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend