With Mercurial and Progress.   Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?

Slides:



Advertisements
Similar presentations
Week 2 DUE This Week: Safety Form and Model Release DUE Next Week: Project Timelines and Website Notebooks Lab Access SharePoint Usage Subversion Software.
Advertisements

Me: Dr James Hetherington -- UCL Research Software Development Team -- blogs.ucl.ac.uk/research-software-development/blogs.ucl.ac.uk/research-software-development/
Version Control 1.  Version control (or revision control) is the term for the management of source files, and all of the intermediate stages as development.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
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.
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.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
Introduction to Git and Github Joshua imtraum.com.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
Fundamentals of Git By Zachary Ling 29 th, Aug,
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.
Subversion. What is Subversion? A Version Control System A successor to CVS and SourceSafe Essentially gives you a tracked, shared file system.
Introduction to Version Control
Source Control Repositories for Team Collaboration: SVN, TFS, Git.
Source Control Systems SVN, Git, GitHub SoftUni Team Technical Trainers Software University
Git – versioning and managing your software L. Grewe.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
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.
Prepared by: Steve Teo Contributors: Tong Huu Khiem.
Version Control. What is it? Software to help keep track of changes made to files Tracks the history of your work Helps you collaborate with others.
Version control Using Git Version control, using Git1.
ITEC 370 Lecture 16 Implementation. Review Questions? Design document on F, feedback tomorrow Midterm on F Implementation –Management (MMM) –Team roles.
Drexel University Software Engineering Research Group Git for SE101 1.
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. How do you share code? Discussion.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
CSE 219 Computer Science III CVS
Mercurial – Revision Control System. Overview of Revision Control Systems (IBM) Rational ClearQuest Perforce Centralized systems – CVS, Subversion/SVN.
Version Control Systems. Version Control Manage changes to software code – Preserve history – Facilitate multiple users / versions.
Sofia Event Center May 2014 Martin Kulov Git For TFS Developers.
Version Control System Lisa Palathingal 03/04/2015.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
Version Control and SVN ECE 297. Why Do We Need Version Control?
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
CS 160 and CMPE/SE 131 Software Engineering February 16 Class Meeting Department of Computer Science Department of Computer Engineering San José State.
1 CSE 303 Lecture 19 Version control and Subversion ( svn ) slides created by Marty Stepp
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Introduction to Git - Chirag Dani. Objectives Basics of Git Understanding different “Mindset of Git” Demo - Git with Visual Studio.
Git How to 1. Why Git To resolve problems in lab exams (accidental deletions) Use existing Libraries with ease (Statistics and Computer) Prepare undergraduates.
Using Git with collaboration, code review, and code management for open source and private projects. & Using Terminal to create, and push commits to repositories.
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git workflows: using multiple branches for parallel development SE-2800 Dr. Mark L. Hornick 1.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
Collaborative Git An introduction to Git with others
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
Information Systems and Network Engineering Laboratory II
Git and GitHub primer.
LECTURE 2: Software Configuration Management
Version Control.
Version control, using Git
Software Engineering for Data Scientists
Version Control System
Source Code Management
LECTURE 3: Software Configuration Management
Getting Started with Git and Bitbucket
Git CS Fall 2018.
Version Control System - Git
Version Control with Git and GitHub
Git Introduction.
Git GitHub.
Presentation transcript:

With Mercurial and Progress

  Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?  Using Mercurial [with Progress]  Examples / Demos  Questions Overview

  Julian Lyndon-Smith, dot.r limited  Progress developer since v3  Fan of vcs since 1987  Developed, sold Boss (Progress-based vcs)  Other vcs systems used include  Roundtable ~  SourceSafe ~  Cvs ~  Subversion ~ Introduction

  As developers, we write code that changes over time  Bugs  aka “feature”  aka “undocumented behaviour”  aka “works on my machine”  New functionality  Aka “we could charge for this”  Better way of doing something  aka “I want to play with this cool new tech” What is version control?

  Everyone uses a version control system  Just not the right one  Copy foo.p foo.[x].p (where x=1 to … )  Modify foo.p What is version control?

  Audit trail of changes  Who did what, where, why and when ?  Syncronization  Share the same code between developers  Backup  Get any version of the file from any time  Revert  Throw away local changes Why use version control?

 Centralised vcs checkout checkin checkout checkin checkout

 Centralised vcs  Centralized version control systems  Cvs  Source safe  Rcs  Subversion  Single central copy of project / source (aka “repo”)  Committing records changes into central repo  Other developers see this change

 Centralised vcs  Workflow  Pull changes from central repo  Make changes  Commit changes back to central repo  Disadvantages  Only “latest” copy of source available  Need to be online / connected  All changes to a file have to be in one changeset

 Strengths  Workflow is familiar to most developers  Only one place for all source  Trunk has latest version

 Weaknesses  Poor merging  No offline commits  Any commit is available to all users  Working or not  Breaks build servers  Days or weeks between checkins  Commits only apply to selected subdirectory and children (subversion)

 Distributed vcs checkout checkin checkout checkin checkout checkin checkout QA RepoBuild Repo

 Distributed vcs  Distributed version control systems  Mercurial  Git  Arcs  Bazaar  Multiple copies of all versions of project / source  Committing records changes into local repo  Other developers do not see this change  Until pushed back to remote repo

 Distributed vcs  Workflow  Clone repo  Make changes  Commit changes back to own repo  Push changes up to remote repo  Disadvantages  None …

 Strengths  All repositories are equal  Offline history  Offline commit  Less chance of merge conflicts  “hidden” experimental branches

 Weaknesses  Who has the “latest” version ?  Large Binary files  Fixed in later releases  Mindset

 Why mercurial ?  Boiled down to git or mercurial  Git  Poor documentation  Complicated command lines  Gui for eclipse did not work for me  Mercurial  Worked first time  Gui worked first time  Purely personal choice.

 Using mercurial  The basics

 Using mercurial  Download from  Update settings

 Using mercurial  Download from  Go to your source code directory  hg init  There’s now a.hg directory  Now “add” the source files to the repository  hg add  Now commit the files to the repository  hg commit

 Using mercurial  So, what happened in the repository ?  hg log  Shows the history of changes  User, notes, changeset id and date  In reverse order (latest first)  Let’s make a change to a file ( h-BinCheck.p )  And commit it  hg commit

 Using mercurial  Let’s see the log now  hg log  What were the changes ?  hg diff –r0:1 h-BinCheck.p  Let’s make more changes  What is the status of my working directory ?  hg status  What were the changes ?  hg diff

 Using mercurial  Don’t like what you see ?  hg revert (creates.orig file)  hg revert –no-backup (no.orig file)

 Mercurial Repositories checkout checkin checkout checkin checkout checkin checkout QA RepoBuild Repo

 Mercurial Repositories  A “Central” repository is useful for  Providing a master repo for QA  Providing a convenient repo for cloning  Hg serve  Starts a webserver on port 8000  Allows a repo to be accessed by other developers  Server or developer machine  Generally LAN only

 Mercurial Repositories  Bitbucket   Free for up to 5 users  Built-in issue tracking  Unlimited repositories (private / public)  Available wherever there is an internet connection  Demo: Create a new repository (pugus)

  Creates a repository from another repository  hg clone pugushttps://bitbucket.org/jmls/pugus  Inits the repo  Downloads the entire repository  Updates the working directory  Add a new file, commit  hg add  hg commit Cloning

 Repository changesets n/a [empty repository] bitbucket 0 My initial version my computer

 Pushing changes  Now we need to push changes up to remote repo  hg push  Rinse, repeat  make another change “added comments”  commit, push 0 My initial version bitbucket 0 My initial version my computer

 Pushing changes  Now we have  hg push 1 Added comments 0 My initial version bitbucket 1 Added comments 0 My initial version my computer

 Another developer..  Alice has been added to the dev team  Needs to clone the repository  hg clone 1 Added comments 0 My initial version bitbucket 1 Added comments 0 My initial version Alice 1 Added comments 0 My initial version my computer

 Multiple changes  I add a new file  Alice modifies readme.txt  Both commit 2 Added install.txt 1 Added comments 0 My initial version my computer 2 Added copyright message 1 Added comments 0 My initial version Alice

 Alice pushes  Alice pushes to remote repo 2 Added copyright message 1 Added comments 0 My initial version bitbucket 2 Added copyright message 1 Added comments 0 My initial version Alice

 I push  I push to remote repo  Fails.  I need to get the updated changesets before I can push  hg incoming  Shows all changes  hg pull  Now there are 2 heads (mine and Alice’s)  Working directory not updated

 I push  Merge the two heads  hg merge  Updates working directory  hg commit  hg push

  Alice doesn’t have the latest version I push 4 merged changesets 3 Added install.txt 2 Added copyright message 1 Added comments 0 My initial version bitbucket 4 Merged changesets 3 Added copyright message 2 Added install.txt 1 Added comments 0 My initial version my computer 2 Added copyright message 1 Added comments 0 My initial version Alice

  Alice doesn’t have the latest version  hg pull  No merge needed, just update  hg update  Alice now has the latest version of the repository Alice pulls 4 Merged changesets 3 Added install.txt 2 Added copyright message 1 Added comments 0 My initial version alice

 General workflow pullupdate Make changes commitPullMergeTestCommitpush

 Workbench demo

  Help => Install new Software Mercurial Eclipse

  Create new Progress project  File => New=>Other Mercurial Eclipse

  To create a Progress view on the project  Select Project Properties  Select Project Facets  Select Openedge / GUI for.net  Apply  Now we have a progress project with a mercurial team  No more command line ;) Mercurial Eclipse