Two Best Practices for Scientific Computing

Size: px
Start display at page:

Download "Two Best Practices for Scientific Computing"

Transcription

1 Two Best Practices for Scientific Computing Version Control Systems & Automated Code Testing David Love Software Interest Group University of Arizona February 18, 2013

2 How This Talk Happened Applied alumnus, Carlos Chiquete, posted this paper on Facebook a All were great, but I d never encountered many a Justifying every second ever wasted on Facebook Best Practices for Scientific Computing (arxiv) David Love VCS & Testing February 18, / 40

3 Software Carpentry Lead author Greg Wilson founded a group called Software Carpentry They have many videos documenting best practices for scientific computing A 2-day boot camp ($20) will be held April 4-5, 2013 teaching many of these techniques. David Love VCS & Testing February 18, / 40

4 1 Version Control System: Git Basics Branching Remote Repositories 2 Unit (and other) Testing Assertions Unit Testing with xunit

5 1 Version Control System: Git Basics Branching Remote Repositories 2 Unit (and other) Testing

6 What is a Version Control System? Version Control Systems are pieces of software designed to: Maintain a complete history of the state of a project Works especially well with program code, L A TEX files anything you can read in a text editor Other file types aren t stored as efficiently Allow for different versions (branches) to exist concurrently and independently Provides tools to integrate changes from different branches together Allow for much simpler collaboration with others David Love VCS & Testing February 18, / 40

7 How It Works Version Control Systems maintain a database of document versions, called a repository Users check out files from the repository, change them, then commit those changes to the repository The VCS checks whether two editors (or branches) have edited the same lines, notes the conflict, and makes you resolve it Greatly reduces the chance that editors will overwrite each other accidentally Changes will not get lost Repository determines the latest version David Love VCS & Testing February 18, / 40

8 Best Use of Version Control Best Practices for Scientific Computing In practice, everything that has been created manually should be put version control, including programs, original field observations, and the source files for papers. Automated output and intermediate files can be regenerated at need. Binary files (e.g., images and audio clips) may be stored in version control, but it is often more sensible to use an archiving system for them, and store the metadata describing their contents in version control instead. David Love VCS & Testing February 18, / 40

9 Types of VCSs There are two basic types of VCSs: Centralized Maintains the repository on a centralized server. Clients only check out specific versions of files. CVS (Concurrent Versions System) SVN (Subversion) Decentralized Keeps a copy of the entire repository on every system. Any client could (potentially) act as a server. Git Mercurial David Love VCS & Testing February 18, / 40

10 Types of VCSs There are two basic types of VCSs: Centralized Maintains the repository on a centralized server. Clients only check out specific versions of files. CVS (Concurrent Versions System) SVN (Subversion) (Software Carpentry teaches SVN) Decentralized Keeps a copy of the entire repository on every system. Any client could (potentially) act as a server. Git Mercurial David Love VCS & Testing February 18, / 40

11 Types of VCSs There are two basic types of VCSs: Centralized Maintains the repository on a centralized server. Clients only check out specific versions of files. CVS (Concurrent Versions System) SVN (Subversion) (Software Carpentry teaches SVN) Decentralized Keeps a copy of the entire repository on every system. Any client could (potentially) act as a server. Git (I will demonstrate Git) Mercurial David Love VCS & Testing February 18, / 40

12 Why Git? A very popular distributed VCS Does not require setting up a separate location to store the database This makes being a single user easier Supported on most popular code hosting services Google Code, SorceForge github 12, Bitbucket git svn uses Git locally but works with a Subversion server Free & Open Source Why Git is Better than X 1 Free student account 2 github:windows github:mac github:mobile David Love VCS & Testing February 18, / 40

13 Git Resources 1 Pro Git (used for this talk) 2 Version Control By Example 3 Top 10 Git Tutorials for Beginners 4 O Reilly Webcast: Git in One Hour 5 Git+L A TEX Workflow The highest rated answer to this stack overflow question is very good. David Love VCS & Testing February 18, / 40

14 Basics Basic Configuration Git stores your name and and attached them to your contributions 1 git config --global user.name "David Love" 2 git config --global user. dlove@math.arizona.edu Name your favorite editor 3 git config --global core.editor vim Select a diff & merge tool 4 git config --global merge.tool meld The --global tag stores the information in your home directory, and apply to all git repositories. The configuration will be stored in the local git repository otherwise. David Love VCS & Testing February 18, / 40

15 Basics Merge Tools Open Source 1 Diffuse 2 Emerge (emacs) 3 gvimdiff (gvim) 4 KDiff3 5 Meld 6 tkdiff 7 TortoiseMerge 8 xxdiff Free Commercial Software 1 opendiff (OS X developer tool) 2 P4Merge Pay Software 1 Araxis Merge 2 Beyond Compare 3 ECMerge GitHub for Windows & Mac provide their own merge tool David Love VCS & Testing February 18, / 40

16 Basics Creating a Git Repository To create a new repository: 1 Move to the directory with your files 2 git init To clone an existing repository: Use git command clone Format: git clone <url> [<directory>] Urls can use protocols git, http(s), ssh: git clone git://github.com/schacon/grit.git git clone git clone ssh://dlove@gila.math.arizona.edu:31415/$home/test.git David Love VCS & Testing February 18, / 40

17 Basics The File Status Lifecycle in Git Pro Git Image 2-1 Command git status lists Untracked files Modified but unstaged files Staged but uncommitted Moving within the lifecycle: Stage files with git add <file> Commit with git commit David Love VCS & Testing February 18, / 40

18 Basics Committing Changes to the Repository When you commit changes to the repository, Git asks for a commit message Git opens your favorite editor, and gives a (commented out) default message Now, type a short message describing what you changed during this commit Structuring Commits Best practice: structure your editing so each commit is a logically separate idea David Love VCS & Testing February 18, / 40

19 Basics Once committed, Git gives a message like Commit Information [master b05ca11] Commit message 1 file changed, 3 insertions(+), 2 deletions(-) master Branch name b05ca11 SHA-1 hash key (abbrev) Commit message Your commit message 1 file changed Number of files changed 3 insertions(+) Number of lines inserted 2 deletions(-) Number of lines deleted Git stores commits by a 40 digit SHA-1 hash key Git tracks lines of code. Editing a line = 1 insertion & 1 deletion David Love VCS & Testing February 18, / 40

20 Basics Committing all changes git commit without add git commit -a allows for skipping git add by committing all modified files. David Love VCS & Testing February 18, / 40

21 Basics Viewing Changes git diff Prints the differences between modified file and the most recent committed version git difftool Uses the merge tool to highlight the differences --cached Modifies either command to show differences between staged file and most recent committed version David Love VCS & Testing February 18, / 40

22 Basics Viewing the Commit History Commit Log git log shows the commit history in reverse chronological order. Default information Commit hash Author Options: Date & time committed Commit message -<number> Latest <number> entries, e.g., git log -4 --pretty=oneline Abbreviates to one line of output --since= Look at commits since some time, e.g., yesterday, 1.week, "2 months", 2013/02/01, 02/01/ until= Look at commits until some time David Love VCS & Testing February 18, / 40

23 Basics Undoing Changes Changing Your Last Commit You can modify your previous commit to a new commit with git commit --amend. Unstaging a Staged File A file can be unstaged with git reset HEAD <file> Unmodifying a Modified File You can delete modifications to a file with git checkout -- <file> git status lists the latter two commands when appropriate. David Love VCS & Testing February 18, / 40

24 Branching What is a Branch? In Git and other VCSs, a branch is an independent copy of the working directory Changes in one branch will not affect any other branch Different branches can be checked out of the repository Branches can be merged to combine their contents Branches are simpler in Git than in most other VCSs David Love VCS & Testing February 18, / 40

25 Branching Basic Branch Commands in Git The basic branch operations: List branches git branch Create branch git branch <branch name> Check out branch git checkout <branch name> Merge into current branch git merge <branch name> To see how branches work, we ll look at how Git stores data. David Love VCS & Testing February 18, / 40

26 Branching Data Storage in Git Pro Git Image 1-5 Git stores data as a series of snapshots. Only when files A, B, or C change does Git store a new snapshot. David Love VCS & Testing February 18, / 40

27 Branching Data Storage in Git Pro Git Image 3-2 Data Git stores about a commit, including the hash, the author, commit message etc. Horizontal arrows are pointers pointing to the previous commit. David Love VCS & Testing February 18, / 40

28 Branching Branching in Git, Conceptually Pro Git Image 3-3 An abbreviated commit history marked by SHA-1 hashes David Love VCS & Testing February 18, / 40

29 Branching Branching in Git, Conceptually Pro Git Image 3-4 After git branch testing David Love VCS & Testing February 18, / 40

30 Branching Branching in Git, Conceptually Pro Git Image 3-5 The HEAD pointer keeps track of the current branch David Love VCS & Testing February 18, / 40

31 Branching Branching in Git, Conceptually Pro Git Image 3-6 After git checkout testing David Love VCS & Testing February 18, / 40

32 Branching Branching in Git, Conceptually Pro Git Image 3-7 Made some changes, then committed to the current branch (testing) David Love VCS & Testing February 18, / 40

33 Branching Branching in Git, Conceptually Pro Git Image 3-8 After git checkout master David Love VCS & Testing February 18, / 40

34 Branching Branching in Git, Conceptually Pro Git Image 3-9 Made further changes, then committed them to master David Love VCS & Testing February 18, / 40

35 Branching Branch Merging, Conceptually Pro Git Image 3-10 You want to fix issue #53. Next: Create a branch for that purpose A small commit history David Love VCS & Testing February 18, / 40

36 Branching Branch Merging, Conceptually Pro Git Image 3-11 git branch iss53 Next: Make a change and commit it git branch iss53 David Love VCS & Testing February 18, / 40

37 Branching Branch Merging, Conceptually Pro Git Image 3-12 You stumble upon a bug that needs to be fixed immediately. Go back to master so your partial work on iss53 doesn t get integrated too early. Commands to execute: git checkout master git checkout -b hotfix to create and immediately check out branch hotfix Make a commit to fix the bug. Committed change on iss53 David Love VCS & Testing February 18, / 40

38 Branching Branch Merging, Conceptually Pro Git Image 3-13 After testing your work, you want to add the bug fix to master Next: merge hotfix into master git branch hotfix to fix a bug David Love VCS & Testing February 18, / 40

39 Branching Pro Git Image 3-14 Branch Merging, Conceptually Merging changes into master To merge hotfix into master: 1 git checkout master 2 git merge hotfix Git responds with message that includes Fast forward Meaning: Git simply moved the master label up history of commits Next: delete branch hotfix it is no longer needed Next: Go back to working on iss53 David Love VCS & Testing February 18, / 40

40 Branching Branch Merging, Conceptually Pro Git Image 3-15 Delete branch hotfix with: git branch -d hotfix Make another commit to iss53 Delete branch hotfix David Love VCS & Testing February 18, / 40

41 Branching Branch Merging, Conceptually Pro Git Image 3-15 Want to merge iss53 into master But master can t just move up the commit history Will do a three-way merge Want to merge again David Love VCS & Testing February 18, / 40

42 Branching Branch Merging, Conceptually Pro Git Image 3-16 git merge iss53 Git analyzes the changes applied to the common ancestor by master and iss53 If master and iss53 made changes to the same lines, Git notes a conflict that must be resolved manually The three-way merge David Love VCS & Testing February 18, / 40

43 Branching Branch Merging, Conceptually Pro Git Image 3-16 Git surrounds conflicts with standard conflict resolution markers: Code between <<<<<<< and ======= is the code from HEAD (master) Code between ======= and >>>>>>> is the code from the merging branch (iss53) The three-way merge David Love VCS & Testing February 18, / 40

44 Branching Pro Git Image 3-16 Branch Merging, Conceptually The three-way merge Run git mergetool to use your merge tool to resolve the conflict Git creates some files to help you merge the conflicts successfully: file.local from the current branch (master) file.base from the common ancestor file.remote from the merging branch (iss53) David Love VCS & Testing February 18, / 40

45 Branching Branch Merging, Conceptually Pro Git Image 3-17 Git creates a merge commit once the conflicts are resolved (or if no conflicts) Note: after resolving a conflict, you must then git merge to generate the merge commit. Merge commit at end of three-way merge David Love VCS & Testing February 18, / 40

46 Branching Comparing Branches git difftool branch shows differences between the current branch and branch using the merge tool David Love VCS & Testing February 18, / 40

47 Branching Comparing Branches git difftool branch shows differences between the current branch and branch using the merge tool Double Dot Notation For branches A and B, A..B selects all commits in the history of B since splitting from A git log A..B gives all commit messages in B since splitting from A David Love VCS & Testing February 18, / 40

48 Branching Comparing Branches git difftool branch shows differences between the current branch and branch using the merge tool Double Dot Notation For branches A and B, A..B selects all commits in the history of B since splitting from A git log A..B gives all commit messages in B since splitting from A Triple Dot Notation A...B selects commits on both branches since splitting git log A...B gives all commit messages in either A or B since the common ancestor David Love VCS & Testing February 18, / 40

49 Remote Repositories Remote Repositories Git can connect to remote repositories over networks to collaborate with others origin repository When you clone from a remote source, the remote repository is automatically added to your local repository and named origin git remote List remote repositories git remote -v List remote repositories with more information git remote add Add a new remote repository git remote rename Rename a remote repository git remote remove Remove a remote repository David Love VCS & Testing February 18, / 40

50 Remote Repositories Remote Branches Remote repositories have their own branches that you can examine and merge with Remote Branch Names Remote branches have names <repository>/<branch>, e.g., origin/master git branch -r Show remote branches git branch -a Show all branches (local and remote) David Love VCS & Testing February 18, / 40

51 Remote Repositories Getting Updates from a Remote Repository Two options to get data from a remote repository: git fetch origin Updates remote branch from origin. Does not change any local branches. git pull origin Updates remote branch from origin. Tries to merge these changes into your local branch. You will have to resolve any conflicts After resolving the conflict, git commit to generate the merge commit David Love VCS & Testing February 18, / 40

52 Remote Repositories Adding Updates to a Remote Repository One command to update a remote branch with your local copy git push origin master Update master branch on origin with your local copy of master If no one has made changes to origin since your last pull, the push will go through. If someone else has pushed to origin, Git will prevent you from pushing your changes. You must first merge the changes in the local repository before pushing the new code. 1 Use git pull to merge the changes into your copy 1 get mergetool to resolve any conflicts 2 get commit to generate the commit merge 2 git push to update the remote repository David Love VCS & Testing February 18, / 40

53 Remote Repositories Workflow with Remote Git 1 Pull changes to start your work time 1 Read the logs of changes made 2 Create local branches to make your changes 3 Once they are correct, merge your local changes back together 4 Push the changes back to the server 1 If rejected, pull to merge changes 2 Resolve conflicts and commit, if necessary 3 Push changes back to the server David Love VCS & Testing February 18, / 40

54 Remote Repositories Sync in GitHub:Widows and Mac Github Sync Github s GUI for Windows and Mac has a sync button that automatically deals with push and pull commands David Love VCS & Testing February 18, / 40

55 1 Version Control System: Git 2 Unit (and other) Testing Assertions Unit Testing with xunit

56 Testing Assertions Assertions Assertion An assertion is a statement that something is true at a particular point in a program. If the statement is false, the program will halt immediately. Assertions can be used to ensure that: 1 Inputs are valid 2 Program or function outputs are consistent 3 Theoretical properties of the algorithm are satisfied David Love VCS & Testing February 18, / 40

57 Testing Assertions Example: Assertions in Matlab My code has a lower bound zlower that should be uniformly nondecreasing as the algorithm progresses It is updated with zlower = c*x I use an assertion to ensure the nondecreasing bound updating zlower Code example: assert( c*x >= zlower, Decrease in zlower ) zlower = c*x; David Love VCS & Testing February 18, / 40

58 Testing Assertions Runtime Testing Best Practices in Scientific Computing Assertions can make up a sizable fraction of the code in well-written applications, just as tools for calibrating scientific instruments can make up a sizable fraction of the equipment in a lab. If something goes wrong, the code halts immediately, greatly simplifying debugging Best Practices in Scientific Computing Assertions are executable documentation, i.e., they explain the program as well as checking its behavior. This makes them more useful in many cases than comments since the reader can be sure that they are accurate and up to date. David Love VCS & Testing February 18, / 40

59 Testing Unit Testing with xunit Automated Testing Best Practices for Scientific Computing [R]egression testing is the practice of running pre-existing tests after changes to the code in order to make sure that it hasn t regressed, i.e., that things which were working haven t been broken. The next line of defense is Automated Testing: Unit Test Tests a single unit of a program, e.g., a function or method Integration Test Tests that units work correctly when put together David Love VCS & Testing February 18, / 40

60 Testing Unit Testing with xunit Kinds of Test Cases Oracles Anything that tells you how a program should be working 1 Closed form solutions to special cases 2 Simple/small cases of the problem 3 Older versions of the code 1 Slow, simple algorithm to test complicated, fast algorithm 2 High level implementation to test lower level code (e.g., MATLAB to C++) Bugs Write a test to trigger a fixed bug to prevent it from reappearing David Love VCS & Testing February 18, / 40

61 Testing Unit Testing with xunit MATLAB xunit Test Framework xunit is a framework for writing unit tests It has been implemented for almost any language you can think of MATLAB xunit Test Framework Wikipedia s List of Unit Testing Frameworks David Love VCS & Testing February 18, / 40

62 Testing Unit Testing with xunit Building tests with xunit xunit tests have the same basic structure: input =... expectedoutput =... realoutput = YourCode( input ); assertequal( expectedoutput, realoutput ); Define the input and expected output (perhaps for multiple cases) Run your code for each input value Compare your expectation with what happened David Love VCS & Testing February 18, / 40

63 Testing Unit Testing with xunit xunit Assertions assertequal(a,b) A and B are equal. assertelementsalmostequal Elements of floating point matrices A and B are within some (absolute or relative) tolerance assertvectorsalmostequal norm(a-b) is within some (absolute or relative) tolerance of zero asserttrue,assertfalse Check Boolean values assertfilesequal Checks that files are the same assertexceptionthrown Checks that a specific exception was thrown David Love VCS & Testing February 18, / 40

64 Testing Unit Testing with xunit Running tests with xunit With MATLAB xunit Test Framework: Write your tests in their own directory Write each test case as an M-file function that returns no output arguments The function should start or end with test or Test Go to the test directory Run all tests with runtests Run a specific test with runtests TestName David Love VCS & Testing February 18, / 40

65 Testing Unit Testing with xunit Test Driven Development Test Driven Development Broadly speaking, TDD is the practice of writing the test cases for new software before the software is written. Benefits: Helps to clarify the purpose of the program before coding begins Tends to create more modular and extensible code Helps ensure tests are actually written! Possible drawbacks: May include poorly written tests May create false confidence No clear evidence that TDD improves productivity David Love VCS & Testing February 18, / 40

66 Thanks for listening! Questions?

Version Control with. Ben Morgan

Version Control with. Ben Morgan Version Control with Ben Morgan Developer Workflow Log what we did: Add foo support Edit Sources Add Files Compile and Test Logbook ======= 1. Initial version Logbook ======= 1. Initial version 2. Remove

More information

Git Basics. Christopher Simpkins chris.simpkins@gatech.edu. Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 22

Git Basics. Christopher Simpkins chris.simpkins@gatech.edu. Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 22 Git Basics Christopher Simpkins chris.simpkins@gatech.edu Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 22 Version Control Systems Records changes to files over time Allows you to

More information

Using Git for Project Management with µvision

Using Git for Project Management with µvision MDK Version 5 Tutorial AN279, Spring 2015, V 1.0 Abstract Teamwork is the basis of many modern microcontroller development projects. Often teams are distributed all over the world and over various time

More information

Source Control Systems

Source Control Systems Source Control Systems SVN, Git, GitHub SoftUni Team Technical Trainers Software University http://softuni.bg Table of Contents 1. Software Configuration Management (SCM) 2. Version Control Systems: Philosophy

More information

Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat rohitrawat@gmail.com

Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat rohitrawat@gmail.com Version Control with Git Linux Users Group UT Arlington Rohit Rawat rohitrawat@gmail.com Need for Version Control Better than manually storing backups of older versions Easier to keep everyone updated

More information

Version Control Systems (Part 2)

Version Control Systems (Part 2) i i Systems and Internet Infrastructure Security Institute for Networking and Security Research Department of Computer Science and Engineering Pennsylvania State University, University Park, PA Version

More information

MATLAB & Git Versioning: The Very Basics

MATLAB & Git Versioning: The Very Basics 1 MATLAB & Git Versioning: The Very Basics basic guide for using git (command line) in the development of MATLAB code (windows) The information for this small guide was taken from the following websites:

More information

Version Control with Git. Kate Hedstrom ARSC, UAF

Version Control with Git. Kate Hedstrom ARSC, UAF 1 Version Control with Git Kate Hedstrom ARSC, UAF Linus Torvalds 3 Version Control Software System for managing source files For groups of people working on the same code When you need to get back last

More information

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF 1 Version Control with Svn, Git and git-svn Kate Hedstrom ARSC, UAF 2 Version Control Software System for managing source files For groups of people working on the same code When you need to get back last

More information

Lab Exercise Part II: Git: A distributed version control system

Lab Exercise Part II: Git: A distributed version control system Lunds tekniska högskola Datavetenskap, Nov 25, 2013 EDA260 Programvaruutveckling i grupp projekt Labb 2 (part II: Git): Labbhandledning Checked on Git versions: 1.8.1.2 Lab Exercise Part II: Git: A distributed

More information

Introduction to the Git Version Control System

Introduction to the Git Version Control System Introduction to the Sebastian Rockel rockel@informatik.uni-hamburg.de University of Hamburg Faculty of Mathematics, Informatics and Natural Sciences Department of Informatics Technical Aspects of Multimodal

More information

Version Control with Git. Dylan Nugent

Version Control with Git. Dylan Nugent Version Control with Git Dylan Nugent Agenda What is Version Control? (and why use it?) What is Git? (And why Git?) How Git Works (in theory) Setting up Git (surviving the CLI) The basics of Git (Just

More information

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.) Today: Source code control CPSC 491 Source Code (Version) Control Exercise: 1. Pretend like you don t have a version control system (e. g., no git, subversion, cvs, etc.) 2. How would you manage your source

More information

Introduction to Version Control

Introduction to Version Control Research Institute for Symbolic Computation Johannes Kepler University Linz, Austria Winter semester 2014 Outline General Remarks about Version Control 1 General Remarks about Version Control 2 Outline

More information

Version Control! Scenarios, Working with Git!

Version Control! Scenarios, Working with Git! Version Control! Scenarios, Working with Git!! Scenario 1! You finished the assignment at home! VC 2 Scenario 1b! You finished the assignment at home! You get to York to submit and realize you did not

More information

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number. Version control Version control is a powerful tool for many kinds of work done over a period of time, including writing papers and theses as well as writing code. This session gives a introduction to a

More information

Version Control for Computational Economists: An Introduction

Version Control for Computational Economists: An Introduction Version Control for Computational Economists: An Introduction Jake C. Torcasso April 3, 2014 Starting Point A collection of files on your computer Changes to files and new files over time Interested in

More information

FEEG6002 - Applied Programming 3 - Version Control and Git II

FEEG6002 - Applied Programming 3 - Version Control and Git II FEEG6002 - Applied Programming 3 - Version Control and Git II Sam Sinayoko 2015-10-16 1 / 26 Outline Learning outcomes Working with a single repository (review) Working with multiple versions of a repository

More information

Version Control using Git and Github. Joseph Rivera

Version Control using Git and Github. Joseph Rivera Version Control using Git and Github Joseph Rivera 1 What is Version Control? Powerful development tool! Management of additions, deletions, and modifications to software/source code or more generally

More information

Introduction to Git. Markus Kötter koetter@rrzn.uni-hannover.de. Notes. Leinelab Workshop July 28, 2015

Introduction to Git. Markus Kötter koetter@rrzn.uni-hannover.de. Notes. Leinelab Workshop July 28, 2015 Introduction to Git Markus Kötter koetter@rrzn.uni-hannover.de Leinelab Workshop July 28, 2015 Motivation - Why use version control? Versions in file names: does this look familiar? $ ls file file.2 file.

More information

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011 CISC 275: Introduction to Software Engineering Lab 5: Introduction to Revision Control with Charlie Greenbacker University of Delaware Fall 2011 Overview Revision Control Systems in general Subversion

More information

Version control with GIT

Version control with GIT AGV, IIT Kharagpur September 13, 2012 Outline 1 Version control system What is version control Why version control 2 Introducing GIT What is GIT? 3 Using GIT Using GIT for AGV at IIT KGP Help and Tips

More information

Advanced Computing Tools for Applied Research Chapter 4. Version control

Advanced Computing Tools for Applied Research Chapter 4. Version control Advanced Computing Tools for Applied Research Jaime Boal Martín-Larrauri Rafael Palacios Hielscher Academic year 2014/2015 1 Version control fundamentals 2 What you probably do now Manually save copies

More information

Pro Git. Scott Chacon * 2010-08-02

Pro Git. Scott Chacon * 2010-08-02 Pro Git Scott Chacon * 2010-08-02 * This is the PDF file for the Pro Git book contents. It is licensed under the Creative Commons Attribution-Non Commercial-Share Alike 3.0 license. I hope you enjoy it,

More information

Git Basics. Christian Hanser. Institute for Applied Information Processing and Communications Graz University of Technology. 6.

Git Basics. Christian Hanser. Institute for Applied Information Processing and Communications Graz University of Technology. 6. Git Basics Christian Hanser Institute for Applied Information Processing and Communications Graz University of Technology 6. March 2013 Christian Hanser 6. March 2013 Seite 1/39 Outline Learning Targets

More information

Introduc)on to Version Control with Git. Pradeep Sivakumar, PhD Sr. Computa5onal Specialist Research Compu5ng, NUIT

Introduc)on to Version Control with Git. Pradeep Sivakumar, PhD Sr. Computa5onal Specialist Research Compu5ng, NUIT Introduc)on to Version Control with Git Pradeep Sivakumar, PhD Sr. Computa5onal Specialist Research Compu5ng, NUIT Contents 1. What is Version Control? 2. Why use Version control? 3. What is Git? 4. Create

More information

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison Version control with git and GitHub Karl Broman Biostatistics & Medical Informatics, UW Madison kbroman.org github.com/kbroman @kwbroman Course web: kbroman.org/tools4rr Slides prepared with Sam Younkin

More information

Version Control with Git

Version Control with Git Version Control with Git Ben Wasserman (benjamin@cmu.edu) 15-441 Computer Networks Recitation 3 1/28 What is version control? Revisit previous code versions Backup projects Work with others Find where

More information

Introducing Xcode Source Control

Introducing Xcode Source Control APPENDIX A Introducing Xcode Source Control What You ll Learn in This Appendix: u The source control features offered in Xcode u The language of source control systems u How to connect to remote Subversion

More information

MOOSE-Based Application Development on GitLab

MOOSE-Based Application Development on GitLab MOOSE-Based Application Development on GitLab MOOSE Team Idaho National Laboratory September 9, 2014 Introduction The intended audience for this talk is developers of INL-hosted, MOOSE-based applications.

More information

Using Subversion in Computer Science

Using Subversion in Computer Science School of Computer Science 1 Using Subversion in Computer Science Last modified July 28, 2006 Starting from semester two, the School is adopting the increasingly popular SVN system for management of student

More information

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

Version Control Systems: SVN and GIT. How do VCS support SW development teams? 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

More information

MATLAB @ Work. MATLAB Source Control Using Git

MATLAB @ Work. MATLAB Source Control Using Git MATLAB @ Work MATLAB Source Control Using Git Richard Johnson Using source control is a key practice for professional programmers. If you have ever broken a program with a lot of editing changes, you can

More information

Version Control with Git

Version Control with Git Version Control with Git Claudius Coenen License: CC-BY-4.0 What We're Not Talking About Conceived by Linus Torvalds around 2005 Distributed Version Control vs. Central Version Control Why git is better

More information

Dalhousie University CSCI 2132 Software Development Winter 2015 Lab 7, March 11

Dalhousie University CSCI 2132 Software Development Winter 2015 Lab 7, March 11 Dalhousie University CSCI 2132 Software Development Winter 2015 Lab 7, March 11 In this lab, you will first learn how to use pointers to print memory addresses of variables. After that, you will learn

More information

Introduction to Version Control with Git

Introduction to Version Control with Git Introduction to Version Control with Git Dark Cosmology Centre Niels Bohr Institute License All images adapted from Pro Git by Scott Chacon and released under license Creative Commons BY-NC-SA 3.0. See

More information

Version control systems. Lecture 2

Version control systems. Lecture 2 Version control systems Lecture 2 VCS Many people s version- control method of choice is to copy files into another directory (e.g. a @me- stamped directory). But this approach is error prone. Easy to

More information

Version Control Systems

Version Control Systems Version Control Systems ESA 2015/2016 Adam Belloum a.s.z.belloum@uva.nl Material Prepared by Eelco Schatborn Today IntroducGon to Version Control Systems Centralized Version Control Systems RCS CVS SVN

More information

An Introduction to Mercurial Version Control Software

An Introduction to Mercurial Version Control Software An Introduction to Mercurial Version Control Software CS595, IIT [Doc Updated by H. Zhang] Oct, 2010 Satish Balay balay@mcs.anl.gov Outline Why use version control? Simple example of revisioning Mercurial

More information

Version Control. Version Control

Version Control. Version Control Version Control CS440 Introduction to Software Engineering 2013, 2015 John Bell Based on slides prepared by Jason Leigh for CS 340 University of Illinois at Chicago Version Control Incredibly important

More information

PKI, Git and SVN. Adam Young. Presented by. Senior Software Engineer, Red Hat. License Licensed under http://creativecommons.org/licenses/by/3.

PKI, Git and SVN. Adam Young. Presented by. Senior Software Engineer, Red Hat. License Licensed under http://creativecommons.org/licenses/by/3. PKI, Git and SVN Presented by Adam Young Senior Software Engineer, Red Hat License Licensed under http://creativecommons.org/licenses/by/3.0/ Agenda Why git Getting started Branches Commits Why? Saved

More information

Version Control with Subversion

Version Control with Subversion Version Control with Subversion Introduction Wouldn t you like to have a time machine? Software developers already have one! it is called version control Version control (aka Revision Control System or

More information

Data management on HPC platforms

Data management on HPC platforms Data management on HPC platforms Transferring data and handling code with Git scitas.epfl.ch September 10, 2015 http://bit.ly/1jkghz4 What kind of data Categorizing data to define a strategy Based on size?

More information

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous Integration. CSC 440: Software Engineering Slide #1 Continuous Integration CSC 440: Software Engineering Slide #1 Topics 1. Continuous integration 2. Configuration management 3. Types of version control 1. None 2. Lock-Modify-Unlock 3. Copy-Modify-Merge

More information

Version Control Tutorial using TortoiseSVN and. TortoiseGit

Version Control Tutorial using TortoiseSVN and. TortoiseGit Version Control Tutorial using TortoiseSVN and TortoiseGit Christopher J. Roy, Associate Professor Virginia Tech, cjroy@vt.edu This tutorial can be found at: www.aoe.vt.edu/people/webpages/cjroy/software-resources/tortoise-svn-git-tutorial.pdf

More information

Distributed Version Control

Distributed Version Control Distributed Version Control Faisal Tameesh April 3 rd, 2015 Executive Summary Version control is a cornerstone of modern software development. As opposed to the centralized, client-server architecture

More information

Software Configuration Management and Continuous Integration

Software Configuration Management and Continuous Integration 1 Chapter 1 Software Configuration Management and Continuous Integration Matthias Molitor, 1856389 Reaching and maintaining a high quality level is essential for each today s software project. To accomplish

More information

Content. Development Tools 2(63)

Content. Development Tools 2(63) Development Tools Content Project management and build, Maven Version control, Git Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools 2(63)

More information

An Introduction to Git Version Control for SAS Programmers

An Introduction to Git Version Control for SAS Programmers ABSTRACT An Introduction to Git Version Control for SAS Programmers Stephen Philp, Pelican Programming, Redondo Beach, CA Traditionally version control has been in the domain of the enterprise: either

More information

Git. A Distributed Version Control System. Carlos García Campos carlosgc@gsyc.es

Git. A Distributed Version Control System. Carlos García Campos carlosgc@gsyc.es Git A Distributed Version Control System Carlos García Campos carlosgc@gsyc.es Carlos García Campos carlosgc@gsyc.es - Git 1 A couple of Quotes For the first 10 years of kernel maintenance, we literally

More information

Working Copy 1.4 users manual

Working Copy 1.4 users manual Working Copy 1.4 users manual Introduction 3 Cloning repositories 3 Accessing files 3 Committing changes 4 Staying up-to-date 4 Remotes 5 Clone catalog 5 SSH keys 6 Viewing and editing files 6 File changes

More information

Gitflow process. Adapt Learning: Gitflow process. Document control

Gitflow process. Adapt Learning: Gitflow process. Document control Adapt Learning: Gitflow process Document control Abstract: Presents Totara Social s design goals to ensure subsequent design and development meets the needs of end- users. Author: Fabien O Carroll, Sven

More information

Lab 0: Version control

Lab 0: Version control Lab Handout ENGI3891 Faculty of Engineering and Applied Science 16,23 Sep 2015 1 Purpose and outcomes This lab will give you hands-on experience with an essential development tool: a version control system

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer GIT

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer GIT i About the Tutorial Git is a distributed revision control and source code management system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development.

More information

Zero-Touch Drupal Deployment

Zero-Touch Drupal Deployment Zero-Touch Drupal Deployment Whitepaper Date 25th October 2011 Document Number MIG5-WP-D-004 Revision 01 1 Table of Contents Preamble The concept Version control Consistency breeds abstraction Automation

More information

5 barriers to database source control and how you can get around them

5 barriers to database source control and how you can get around them WHITEPAPER DATABASE CHANGE MANAGEMENT 5 barriers to database source control and how you can get around them 91% of Fortune 100 companies use Red Gate Content Introduction We have backups of our databases,

More information

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger

UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 61B Fall 2012 P. N. Hilfinger Version Control and Homework Submission 1 Introduction Your

More information

The Bazaar Version Control System. Michael Hudson, Canonical Ltd michael.hudson@canonical.com

The Bazaar Version Control System. Michael Hudson, Canonical Ltd michael.hudson@canonical.com The Bazaar Version Control System Michael Hudson, Canonical Ltd michael.hudson@canonical.com What is Bazaar? Bazaar is a Distributed Version Control System (DVCS) You probably know what a VCS is by now:

More information

Unity Version Control

Unity Version Control Unity Version Control with BitBucket.org and SourceTree BLACKISH - last updated: April 2013 http://blog.blackish.at http://blackish-games.com! Table of Contents Setup! 3 Join an existing repository! 4

More information

Version Control with Subversion and Xcode

Version Control with Subversion and Xcode Version Control with Subversion and Xcode Author: Mark Szymczyk Last Update: June 21, 2006 This article shows you how to place your source code files under version control using Subversion and Xcode. By

More information

Version Uncontrolled! : How to Manage Your Version Control

Version Uncontrolled! : How to Manage Your Version Control Version Uncontrolled! : How to Manage Your Version Control Harold Dost III, Raastech ABSTRACT Are you constantly wondering what is in your production environment? Do you have any doubts about what code

More information

Version Control with Subversion

Version Control with Subversion Version Control with Subversion http://www.oit.duke.edu/scsc/ http://wiki.duke.edu/display/scsc scsc@duke.edu John Pormann, Ph.D. jbp1@duke.edu Software Carpentry Courseware This is a re-work from the

More information

Version Control Script

Version Control Script Version Control Script Mike Jackson, The Software Sustainability Institute Things you should do are written in bold. Suggested dialog is in normal text. Command- line excerpts and code fragments are in

More information

Annoyances with our current source control Can it get more comfortable? Git Appendix. Git vs Subversion. Andrey Kotlarski 13.XII.

Annoyances with our current source control Can it get more comfortable? Git Appendix. Git vs Subversion. Andrey Kotlarski 13.XII. Git vs Subversion Andrey Kotlarski 13.XII.2011 Outline Annoyances with our current source control Can it get more comfortable? Git Appendix Rant Network traffic Hopefully we have good repository backup

More information

The Hitchhiker s Guide to Github: SAS Programming Goes Social Jiangtang Hu d-wise Technologies, Inc., Morrisville, NC

The Hitchhiker s Guide to Github: SAS Programming Goes Social Jiangtang Hu d-wise Technologies, Inc., Morrisville, NC Paper PA-04 The Hitchhiker s Guide to Github: SAS Programming Goes Social Jiangtang Hu d-wise Technologies, Inc., Morrisville, NC ABSTRACT Don't Panic! Github is a fantastic way to host, share, and collaborate

More information

Version control with Subversion

Version control with Subversion Version control with Subversion Davor Cubranic Grad Seminar October 6, 2011 With searching comes loss And the presence of absence: My Thesis not found. Version Control A tool for managing changes to a

More information

Using GitHub for Rally Apps (Mac Version)

Using GitHub for Rally Apps (Mac Version) Using GitHub for Rally Apps (Mac Version) SOURCE DOCUMENT (must have a rallydev.com email address to access and edit) Introduction Rally has a working relationship with GitHub to enable customer collaboration

More information

BlueJ Teamwork Tutorial

BlueJ Teamwork Tutorial BlueJ Teamwork Tutorial Version 2.0 for BlueJ Version 2.5.0 (and 2.2.x) Bruce Quig, Davin McCall School of Engineering & IT, Deakin University Contents 1 OVERVIEW... 3 2 SETTING UP A REPOSITORY... 3 3

More information

CS 2112 Lab: Version Control

CS 2112 Lab: Version Control 29 September 1 October, 2014 Version Control What is Version Control? You re emailing your project back and forth with your partner. An hour before the deadline, you and your partner both find different

More information

Software configuration management

Software configuration management Software Engineering Theory Software configuration management Lena Buffoni/ Kristian Sandahl Department of Computer and Information Science 2015-09-30 2 Maintenance Requirements System Design (Architecture,

More information

1. History 2. Structure 3. Git Comparison 4. File Storage 5. File Tracking 6. Staging 7. Queues (MQ) 8. Merge Tools 9. Interfaces

1. History 2. Structure 3. Git Comparison 4. File Storage 5. File Tracking 6. Staging 7. Queues (MQ) 8. Merge Tools 9. Interfaces 1 Hg 1. History 2. Structure 3. Git Comparison 4. File Storage 5. File Tracking 6. Staging 7. Queues (MQ) 8. Merge Tools 9. Interfaces 2 Mercurial / Git History Bitmover's BitKeeper Proprietary distributed

More information

CSE 374 Programming Concepts & Tools. Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn

CSE 374 Programming Concepts & Tools. Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn CSE 374 Programming Concepts & Tools Laura Campbell (Thanks to Hal Perkins) Winter 2014 Lecture 16 Version control and svn Where we are Learning tools and concepts relevant to multi-file, multi-person,

More information

Derived from Chris Cannam's original at, https://code.soundsoftware.ac.uk/projects/easyhg/wiki/sc2012bootcamppl an.

Derived from Chris Cannam's original at, https://code.soundsoftware.ac.uk/projects/easyhg/wiki/sc2012bootcamppl an. Version Control Key Points ========================== Mike Jackson, The Software Sustainability Institute. This work is licensed under the Creative Commons Attribution License. Copyright (c) Software Carpentry

More information

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Computer Science Technische Universität Darmstadt Dr.

More information

Research Data Management CODING

Research Data Management CODING CODING Coding When writing software or analytical code it is important that others and your future self can understand what the code is doing. published 10 steps that they regard as the Best Practices

More information

Software development. Outline. Outline. Version control. Version control. Several users work on a same project. Collaborative software development

Software development. Outline. Outline. Version control. Version control. Several users work on a same project. Collaborative software development Software development Groupware and Collaborative Interaction Collaborative Software Development M2R Interaction - Université Paris-Sud - Année 2013-2014 Cédric Fleury (cedric.fleury@lri.fr) Several users

More information

NLP Programming Tutorial 0 - Programming Basics

NLP Programming Tutorial 0 - Programming Basics NLP Programming Tutorial 0 - Programming Basics Graham Neubig Nara Institute of Science and Technology (NAIST) 1 About this Tutorial 14 parts, starting from easier topics Each time: During the tutorial:

More information

Xcode Source Management Guide. (Legacy)

Xcode Source Management Guide. (Legacy) Xcode Source Management Guide (Legacy) Contents Introduction 5 Organization of This Document 5 See Also 6 Source Management Overview 7 Source Control Essentials 7 Snapshots 8 Managing Source in Xcode 8

More information

Improving your Drupal Development workflow with Continuous Integration

Improving your Drupal Development workflow with Continuous Integration Improving your Drupal Development workflow with Continuous Integration Peter Drake Sahana Murthy DREAM IT. DRUPAL IT. 1 Meet Us!!!! Peter Drake Cloud Software Engineer @Acquia Drupal Developer & sometimes

More information

CSCB07 Software Design Version Control

CSCB07 Software Design Version Control CSCB07 Software Design Version Control Anya Tafliovich Fall 2015 Problem I: Working Solo How do you keep track of changes to your program? Option 1: Don t bother Hope you get it right the first time Hope

More information

Integrated version control with Fossil SCM

Integrated version control with Fossil SCM Integrated version control with Fossil SCM Tech Talk 2009-12-01 Arne Bachmann Folie 1 Overview Web address www.fossil-scm.org Author Dr. D.R. Hipp - Author of License GPL v2 Motto No information shall

More information

Mercurial. Why version control (Single users)

Mercurial. Why version control (Single users) Mercurial Author: Hans Fangohr Date: 2008-05-21 Version: 033c85b22987 Id: talk.txt,v 033c85b22987 2008/05/21 08:42:42 fangohr Series: SESA2006 2008, last lecture Hint Adjust font-size

More information

Surround SCM Best Practices

Surround SCM Best Practices Surround SCM Best Practices This document addresses some of the common activities in Surround SCM and offers best practices for each. These best practices are designed with Surround SCM users in mind,

More information

How to set up SQL Source Control. The short guide for evaluators

How to set up SQL Source Control. The short guide for evaluators How to set up SQL Source Control The short guide for evaluators Content Introduction Team Foundation Server & Subversion setup Git setup Setup without a source control system Making your first commit Committing

More information

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE Source Code Management for Continuous Integration and Deployment Version 1.0 Copyright 2013, 2014 Amazon Web Services, Inc. and its affiliates. All rights reserved. This work may not be reproduced or redistributed,

More information

Continuous Integration

Continuous Integration Continuous Integration Collaborative development issues Checkout of a shared version of software ( mainline ) Creation of personal working copies of developers Software development: modification of personal

More information

Flumes Short User Guide to Subversion

Flumes Short User Guide to Subversion Flumes Short User Guide to Subversion Peter Nordin January 7, 2014 This guide is primarily meant as an introduction to Subversion for users of the svn accounts administered by the Division of Fluid and

More information

Revision control systems (RCS) and

Revision control systems (RCS) and Revision control systems (RCS) and Subversion Problem area Software projects with multiple developers need to coordinate and synchronize the source code Approaches to version control Work on same computer

More information

An Introduction to Mercurial Version Control Software

An Introduction to Mercurial Version Control Software An Introduction to Mercurial Version Control Software LANS Weekly Seminar October 17, 2006 Satish Balay balay@mcs.anl.gov Outline Why use version control? Simple example of revisioning Mercurial introduction

More information

SOFTWARE DEVELOPMENT BASICS SED

SOFTWARE DEVELOPMENT BASICS SED SOFTWARE DEVELOPMENT BASICS SED Centre de recherche Lille Nord Europe 16 DÉCEMBRE 2011 SUMMARY 1. Inria Forge 2. Build Process of Software 3. Software Testing 4. Continuous Integration 16 DECEMBRE 2011-2

More information

CVS versus BitKeeper A Comparison

CVS versus BitKeeper A Comparison Chapter 11 CVS versus BitKeeper A Comparison Since the publication of the second edition of this book, a powerful new versioning system has risen called Bitkeeper, or BK/PRO, to dominate at least certain

More information

COSC345 2013 Software Engineering. Lecture 7: Version Control

COSC345 2013 Software Engineering. Lecture 7: Version Control COSC345 2013 Software Engineering Lecture 7: Version Control Some Problems Communications File system problems Version control Basic principles and use Outline When to use version control Examples SCCS

More information

Automatic promotion and versioning with Oracle Data Integrator 12c

Automatic promotion and versioning with Oracle Data Integrator 12c Automatic promotion and versioning with Oracle Data Integrator 12c Jérôme FRANÇOISSE Rittman Mead United Kingdom Keywords: Oracle Data Integrator, ODI, Lifecycle, export, import, smart export, smart import,

More information

Introduction to Source Control ---

Introduction to Source Control --- Introduction to Source Control --- Overview Whether your software project is large or small, it is highly recommended that you use source control as early as possible in the lifecycle of your project.

More information

Git Branching for Continuous Delivery

Git Branching for Continuous Delivery Git Branching for Continuous Delivery Sarah Goff-Dupont Automation Enthusiast Hello everyone I ll be talking about how teams at Atlassian use Git branches for continuous delivery. My name is Sarah, and

More information

Puppet Firewall Module and Landb Integration

Puppet Firewall Module and Landb Integration Puppet Firewall Module and Landb Integration Supervisor: Steve Traylen Student: Andronidis Anastasios Summer 2012 1 Abstract During my stay at CERN as an intern, I had to complete two tasks that are related

More information

Version Control Using Subversion. Version Control Using Subversion 1 / 27

Version Control Using Subversion. Version Control Using Subversion 1 / 27 Version Control Using Subversion Version Control Using Subversion 1 / 27 What Is Version Control? Version control is also known as revision control. Version control is provided by a version control system

More information

Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102

Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102 Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102 Interneer, Inc. Updated on 2/22/2012 Created by Erika Keresztyen Fahey 2 Workflow - A102 - Basic HelpDesk Ticketing System

More information

Distributed Version Control with Mercurial and git

Distributed Version Control with Mercurial and git OpenStax-CNX module: m37404 1 Distributed Version Control with Mercurial and git Hannes Hirzel This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License 3.0 Abstract

More information

Git in control of your Change Management

Git in control of your Change Management Synopsis Git in control of your Change Management Git is a free Version Control System. It is designed for use by software developers, and quite popular for that purpose. The essence of Version Control

More information