Software Engineering and Architecture

Slides:



Advertisements
Similar presentations
Version Control CS440 – Introduction to Software Engineering © 2014 – John Bell Based on slides prepared by Jason Leigh for CS 340 University.
Advertisements

Simple Git Steve Pieper. Topics Git considerations and Slicer Git as if it were svn Git the way it is meant to be.
Juan Carlos Flores 10/20/2011. Outline Introduction Centralized Revision Control Systems Subversion Overview Distributed Revision Control Systems Network.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Software Configuration Management Slides derived from Dr. Sara Stoecklin’s notes and various web sources.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Patterns & practices Symposium 2013 Introducing Git version control into your team Mark
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Version control Using Git 1Version control, using Git.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Introduction to Version Control
Why you should be using Version Control. Matt Krass Electrical/Software Engineer November 22, 2014.
Source Control Repositories for Team Collaboration: SVN, TFS, Git.
1 Lecture 19 Configuration Management Software Engineering.
GIT An introduction to GIT Source Control. What is GIT (1 of 2) ▪ “Git is a free and open source distributed version control system designed to handle.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 8-Oct-15.
Version control Using Git Version control, using Git1.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
…using Git/Tortoise Git
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Progress with migration to SVN Part3: How to work with g4svn and geant4tags tools. Geant4.
Study for Migration from CVS to SubVersion (SVN) Gunter Folger CERN/PH/SFT.
CVS – concurrent versions system AROC Guatemala July 19-23, 2010 Guatemala City, Guatemala.
All the dSoftArk Tools Getting started!. Tools dSoftArk is a semi-realistic, agile, development project –Industrial strength software (programming, TDD,
Version Control and SVN ECE 297. Why Do We Need Version Control?
A Git Workflow Model Slides produced from blog by Vincent Driessen and secondary posting at The.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
CS491A Software Design Lab Version Control with CVS and Subversion Chengyu Sun California State University, Los Angeles.
Developers Users Committers How do I configure this now? Just one more fix and I am done! CVS Download/Use Software Submit problems/ request features Store.
CS5220 Advanced Topics in Web Programming Version Control with Git
Version Control with Subversion
LECTURE 2: Software Configuration Management
Git Practice walkthrough.
Version control, using Git
HotCiv Project Starting up!.
CS5220 Advanced Topics in Web Programming Version Control with Git
Version Control System using Git
CVS revisions UML diagram
Version Control System
SU Development Forum Introduction to Git - Save your projects!
CSCE 606: Configuration Management
Akshay Narayan git up to speed with RCS Akshay Narayan
LECTURE 3: Software Configuration Management
X in [Integration, Delivery, Deployment]
Revision Control Daniel Daugherty
Git Best Practices Jay Patel Git Best Practices.
Subversion Basics Guide
Software Engineering D7032E
Git CS Fall 2018.
Version Control System - Git
Version Control with Git
Hop Aboard the Git Train – Transitioning from TFVC
Software Engineering and Architecture
Software Engineering and Architecture
Software Engineering and Architecture
CS122B: Projects in Databases and Web Applications Spring 2018
Software Engineering and Architecture
Outline Announcements: Version control with CVS HW II due today!
Software Engineering and Architecture
Presentation transcript:

Software Engineering and Architecture Release Management & Branching Models

Henrik Bærbak Christensen Branching CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Branching Models Git excels in branching, whereas SubVersion is bit heavy I use SubVersion for document oriented projects Because I like the simpler model of SubVersion and there is seldom need for branching All my course web pages and my book are SubVersion handled I use Git for source code oriented projects Because branching provides better workflow for experimenting and releasing CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Release Management You need to know what you release! Users report bugs and you need to fix them fast on the right code Example Release to AlphaTown Rewrite part of the AlphaTown code to support BetaTown (Major refactorings in core AlphaTown code) AlphaTown phones us ”Hurry, fix major bug now” But the code base is in a ‘state of flux’ (read: messy, broken, …) and also includes new features that AlphaTown has not paid for What to do??? CS@AU Henrik Bærbak Christensen

Not all versions are equal Some versions attain a special meaning: Release How to manage? Write down the version identity. Git: 4ef678a… ‘Tag’ a version on the graph. Essentially put a human readable label on specific version Make a ‘release branch’ Branch and name the new branch ‘Release-AlphaTown-V1.7.4’ Merge into a ‘release branch’ and tag it Merge current version into global release branch and tag it Releases should always reside on a branch! Why? Because otherwise main development interfere in case you need to fix a bug; and branches makes the release ‘stand out’ from the main development work CS@AU Henrik Bærbak Christensen

Tags Considered Harmful? Tags are available in all SCM system However ‘tags’ have some liabilities They are just ‘strings’ without any semantics Version id 12: ‘Release2.0’ Version id 13: ‘Release1.0’ ??? I.e. not really organized in a version graph No automation – you have to remember to tag Tag twice with same string? (git actually rejects it; CVS just overwrote it ) CS@AU Henrik Bærbak Christensen

Recommended for HotCiv Two Simple Models Recommended for HotCiv

Henrik Bærbak Christensen Simple Release Model A Single Release Branch Hotfixing must be done on separate branch And merged back CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen In Practice Finally, all features implemented CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Release 1 Let us release it! All releases are on the release branch; use ‘tag’ to id it Only first time CS@AU Henrik Bærbak Christensen

Continue work on master Refactor architecture to support BetaTown CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Release 2 ‘cross the t, dot the i’ and release Checkout the release branch; merge master into it; tag CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Discussion Pro Get the latest release is just ‘git checkout release’ which is easy Fewer branches (only ‘release’ and ‘hotfix’ used for releasing) Cons Hotfixing is difficult; you need a special branch for that Branch/Merge over into hotfix, make changes, merge back Hotfixing release 1 after release 2 will require a new branch Or you will mix the two! CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Simple Release Model B Major Release Branches Each major release give rise to new branch CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen In Practice Working on ‘master’, close to release CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen In Practice Make the final code, commit that CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Release 1 ‘cross the t, dot the i’ and release ‘branch’ and potentially ‘checkout’ CS@AU Henrik Bærbak Christensen

Continue work on master Refactor architecture to support BetaTown CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Release 2 Make a new branch for every major release Hotfixing e.g. release 1 Checkout that branch; make changes; commit to make release 1.0.1 Tag it with that name (Release1.0.1) to know what is released! CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Discussion Pro Each major release has a branch, allows hotfixing each with ease Con Many releases means many branches to overview CS@AU Henrik Bærbak Christensen

… and an Important Note… Tag information is stored in the repository So remember to push them to the origin git push - - tags The ”Ferrari without any safetybelt” again  CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Maintaining Releases Maintaining multiple concurrent releases is expensive Windows 7, Windows 8.1, Windows 10, Win Server … And even Windows XP in the face of WannaCry virus! Thus many companies adopt one release policy Firefox checks for new versions and enforces updating! As do Dropbox, source tree, ... And Windows 10! And of course all web based tools CS@AU Henrik Bærbak Christensen

Recommended Models in SWEA Keep it simple. Learn a stronger model for heavy industrial practice, later in your life . (Have a look at Driessen’s model.) Git defaults to the branch called ‘master’ so stick to this as your team’s development branch. You ‘release’ every time you hand in a mandatory project to your TA and evaluation. Either Single release branch – or one branch per release model… CS@AU Henrik Bærbak Christensen

Recommended Model in SWEA Major refactoring/risky business/experiments on a ‘issue’ branch To avoid messing up the master branch! Easy to ‘Do Over’, just orphan that branch Tag it with ‘BAD-IDEA-17’  If the idea was good, them merge it back into ‘master’ CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Examples Future reference for (very) large scale development http://nvie.com/posts/a-successful-git-branching-model/ CS@AU Henrik Bærbak Christensen

Henrik Bærbak Christensen Summary Branching supports the release and development process Releasing, bugfixing, subteams, feature branches, … Many different models can be made Agree on a model in your team! Keep it simple! Emphasize ease in daily work! Avoid reinventing the wheel Find a suitable model in literature CS@AU Henrik Bærbak Christensen