1 © 2015 Albion College | BUGMI 2015 Git’s Architecture And How It Relates to Banner Eddie Bachle Albion College September 25, 2015.

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

David Stotts UNC Computer Science (2013) with slides from a talk by Karsten Dambekalns (2005)
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.
Git: Part 1 Overview & Object Model These slides were largely cut-and-pasted from tutorial/, with some additions.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
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.
Git. What’s Git? A British swear A Distributed Version Control System Developed in 2005 by Linus Torvalds for use on the Linux Kernel Git Logo by Jason.
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
With Mercurial and Progress.   Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?
1 Introductory Notes on the Git Source Control Management Ric Holt, 8 Oct 2009.
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 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.
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
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.
Team 708 – Hardwired Fusion Created by Nam Tran 2014.
Introduction to Version Control with Git CSC/ECE 517, Fall 2014 A joint project of the CSC/ECE 517 staff, including Titus Barik, Gaurav Tungatkar, Govind.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
Page 1 TBD 12/08/2014 Formation GIT Laurent Kappel Groupe SII 65, rue de Bercy Paris Tél : Fax :
1 Web Design Workshop DIG 4104c – Lecture 5c Git: Branch and Merge J. Michael Moshell University of Central Florida giantteddy.com.
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
It’s not just an insult from Harry Potter!. What is Git? Distributed Version Control System (DVCS) – Compared to a Centralized Version Control System.
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.
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
Getting Started with Git Presented by Jim Taylor Rooty Hollow, Owner Verizon Wireless, Senior Programmer/Analyst Git User for 6 years.
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
GIT: (a)Gentle InTroduction Bruno Bossola. Agenda About version control Concepts Working locally Remote operations Enterprise adoption Q&A.
KIT – University of the State of Baden-Wuerttemberg and National Research Center of the Helmholtz Association STEINBUCH CENTRE FOR COMPUTING - SCC
CS5220 Advanced Topics in Web Programming Version Control with Git
Introduction to Version Control with Git
Information Systems and Network Engineering Laboratory II
11 Version control (part 2)
LECTURE 2: Software Configuration Management
Git Practice walkthrough.
Version control, using Git
CS5220 Advanced Topics in Web Programming Version Control with Git
Software Engineering for Data Scientists
Version Control with Git and GitHub
Concurrent Version Control
SU Development Forum Introduction to Git - Save your projects!
Distributed Version Control with git
Akshay Narayan git up to speed with RCS Akshay Narayan
Source Code Management
Anatomy of a Git Project
LECTURE 3: Software Configuration Management
The Big Picture
Git CS Fall 2018.
Version control with Git
Introduction to Version Control with Git
Version Control with Git and GitHub
Git Fundamentals.
Hop Aboard the Git Train – Transitioning from TFVC
Git Introduction.
Git GitHub.
Introduction to The Git Version Control System
Advanced Git for Beginners
Presentation transcript:

1 © 2015 Albion College | BUGMI 2015 Git’s Architecture And How It Relates to Banner Eddie Bachle Albion College September 25, 2015

2 © 2015 Albion College | BUGMI 2015 Survey Questions Who has used what version control in the past? Git, Subversion, Mercurial, etc. Who has mods to Banner? 0, 1+, 5+, 10+, 20+, more than that!? Who has cloned the Ellucian Git repositories? Who has an XE module in production With mods?

3 © 2015 Albion College | BUGMI 2015 Introduction This is not a “type this command” Git presentation How the commands you type actually work Learn the lingo to be able to Google for answers Hopefully a start toward the “Git epiphany” Git is an architectural element in Banner XE Git isn’t something you just install for Banner XE

4 © 2015 Albion College | BUGMI 2015 Git Tenets and Conventions Distributed Branching model Social Curated Democratic Perspective based

5 © 2015 Albion College | BUGMI 2015 SHA-1 Sum 40-digit cryptographic hash “test” > a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 > 0b f9f2beae111b e9c8496c3d30 Universal identifier for immutable objects in Git Blobs, trees, and commits Commits are the object typically interacted with via SHA-1 Usually 6-8 of the 40 characters can be unique

6 © 2015 Albion College | BUGMI 2015 Directed Acyclic Graph Math behind the magic Nodes (commits) Edges (parent/child relationships) Graphic conventions Time (for commits) is along the Y axis Time (for our actions) is along the X axis Arrows point to the parent of a comment, not the child

7 © 2015 Albion College | BUGMI 2015 Directed Acyclic Graph Directed GraphDirected Cyclic GraphDirected Acyclic Graph

8 © 2015 Albion College | BUGMI 2015 Working Directory Root directory of your project (Banner app/plugin).git directory (contains the innards of Git) Files and folders tracked in the Git repository Mutable expression of “location” in Git repository

9 © 2015 Albion College | BUGMI 2015 Working Directory. ├── bannerOH.jsp ├── copyright.html ├── error.jsp ├── general │ ├── goaemal.html ├── images │ ├── bannertoc.jpg │ ├── toc1.gif │ └── toc2.gif ├── mastertoc.jsp ├── META-INF │ └── MANIFEST.MF ├── student │ ├── sgastdn.html └── WEB-INF └── web.xml. ├── bannerOH.jsp ├── copyright.html ├── error.jsp ├── images │ ├── bannertoc.jpg │ ├── toc1.gif │ └── toc2.gif ├── mastertoc.jsp ├── META-INF │ └── MANIFEST.MF ├── student │ ├── sgastdn.html └── WEB-INF └── web.xml. ├── bannerOH.jsp ├── copyright.html ├── error.jsp ├── general │ ├── goaemal.html ├── images │ ├── bannertoc.jpg │ ├── toc1.gif │ └── toc2.gif ├── mastertoc.jsp ├── META-INF │ └── MANIFEST.MF └── WEB-INF └── web.xml Student BranchGeneral BranchMaster Branch

10 © 2015 Albion College | BUGMI 2015 Staging Area It’s actually in the.git directory Also called the “index” in documentation git add add whole files, hunks of changes in a file, or single lines git reset HEAD $filename Can be used to unstage changes to specific files git commit commits only what's in the staging area

11 © 2015 Albion College | BUGMI 2015 Staging Area copyright.html general/goaemal.html images/toc1.gif student/sgastdn.html. ├── bannerOH.jsp ├── copyright.html ├── error.jsp ├── images │ ├── bannertoc.jpg ├── mastertoc.jsp ├── META-INF │ └── MANIFEST.MF ├── student │ ├── sgastdn.html └── WEB-INF └── web.xml. ├── bannerOH.jsp ├── copyright.html ├── error.jsp ├── general │ ├── goaemal.html ├── images │ ├── bannertoc.jpg │ ├── toc1.gif ├── mastertoc.jsp ├── META-INF │ └── MANIFEST.MF ├── student │ ├── sgastdn.html └── WEB-INF └── web.xml No ChangesChangesStage. ├── bannerOH.jsp ├── copyright.html ├── error.jsp ├── general │ ├── goaemal.html ├── images │ ├── bannertoc.jpg │ ├── toc1.gif ├── mastertoc.jsp ├── META-INF │ └── MANIFEST.MF └── WEB-INF └── web.xml Final Result

12 © 2015 Albion College | BUGMI 2015 Commits Nodes in the DAG Storage type for changes (deltas) Identified by hash computed from: Tree objects (including deltas) Commit message and timestamp Parent commit(s) SHA-1 values All commits are immutable Parent commit SHA-1 ensures integrity All history rewrites create new commits, not alter old ones

13 © 2015 Albion College | BUGMI 2015 Branches The heart of Git’s flexibility Movable pointers to commits HEAD is a special pointer to a branch (your perspective) git checkout moves HEAD between branches checkout actions don’t change state or history HEAD is the perspective from which new commits are made 40 character file in.git directory Functionally “free” to create or destroy

14 © 2015 Albion College | BUGMI 2015 New Branches Initial StateNew BranchCheckout

15 © 2015 Albion College | BUGMI 2015 Merging

16 © 2015 Albion College | BUGMI 2015 Fast-Forward Merges Initial StateAdd CommitsCheckoutMerge

17 © 2015 Albion College | BUGMI 2015 Non-FF Merge Initial StateHotfixCheckoutMerge

18 © 2015 Albion College | BUGMI 2015 Merge Conflicts Generated when same line changed by two merging branches Git is very good at resolving these typically Merge conflicts are in a “suspense” state like GOAMTCH Conflicting files will have diff sections added Update the files to read the way they should when resolved Stage all the resolved conflicts and commit, then you’re done

19 © 2015 Albion College | BUGMI 2015 Merge Conflicts This documentation is proprietary information of SCT and is not to be copied SCT 4 Country View Road Malvern, Pennsylvania United States of America Updated to say SunGard Higher Education on feature branch Updated to say Ellucian as a hotfix on the master branch Address kept the same

20 © 2015 Albion College | BUGMI 2015 Merge Conflicts copyright.html <<<<<<< HEAD This documentation is proprietary information of Ellucian and is not to be copied Ellucian ======= This documentation is proprietary information of SunGard Higher Education and is not to be copied SunGard Higher Education >>>>>>> feature

21 © 2015 Albion College | BUGMI 2015 Merge Conflicts Final result was This documentation is proprietary information of Ellucian and is not to be copied Ellucian 4 Country View Road Malvern, Pennsylvania United States of America

22 © 2015 Albion College | BUGMI 2015 Rebase The other branch integration method instead of merge The process of moving a branch to a new base commit. Rebase is a powerful technique used to rewrite history git rebase represents any commit identifier Don’t rebase public history (notice don’t, not can’t) Enough talk, let’s see an example

23 © 2015 Albion College | BUGMI 2015 Rebase Initial StateRebaseFinalizeGarbage Collect

24 © 2015 Albion College | BUGMI 2015 Remotes

25 © 2015 Albion College | BUGMI 2015 Remotes Bookmarks to other individual or group’s repositories Allows synchronization of code change history Conventional names are used for “organizational repos” upstream, origin, etc. In baseline Git, collaboration is managed by social convention Rewriting public history is rude, near impermissible, but not impossible

26 © 2015 Albion College | BUGMI 2015 Remotes Initial StateRemote HotfixFetchMerge

27 © 2015 Albion College | BUGMI 2015 Remotes – Local Merge Initial StateHotfixCheckoutMerge

28 © 2015 Albion College | BUGMI 2015 Remotes Initial LocalInitial RemoteLocal PushRemote Push

29 © 2015 Albion College | BUGMI 2015 Miscellaneous Commands

30 © 2015 Albion College | BUGMI 2015 Reset Reset is used to move branch pointers anywhere on the DAG Fast-forward merges are examples of reset

31 © 2015 Albion College | BUGMI 2015 Tag Named identifier for a commit Analogous to an immutable branch Often used to signify versioned releases Can be PGP signed to ensure integrity May be helpful to appease auditors

32 © 2015 Albion College | BUGMI 2015 Git and Banner

33 © 2015 Albion College | BUGMI 2015 Banner Perspective Ellucian provides a single repository from which we clone That repository is the remote to the local central repo That local central repo is the remote to each developer However, this is just one possible structure

34 © 2015 Albion College | BUGMI 2015 Banner Release Structure in Git grails137-eol reg-9.2-post9.12upgrade-1 reg-9.2-system-test reg-cloud2015-dev reg-comnsystest-ga-9.2 reg-ga-9.2 reg-ga reg-ga branch reg-grails221-eol reg-grails237-intro reg-mergetomaster-ga-9.2 reg-nat-ga-9.2 reg-systestfreeze-ga-9.2 reg-systestfreeze2-ga-9.2 registration-cr2-freeze registration-cr2-patch2 registration-cr2-softfreeze registration-cr2-systest rel-registration-9.2 rel-registration rel-registration-9.3 release-alpha-II-9.0 release-alpha-II-9.0-natfix release-alphaI-9.0 release-alphaI-9.0-update release-registration-cr1 /git/banner_student_registration_ssb_app ((rel-registration-9.3)) $ git tag -l

35 © 2015 Albion College | BUGMI 2015 Merging Ellucian Updates This is where the question of mods is relevant Each mod could be treated as a local feature branch Each Ellucian version update could be merged like a feature Git’s conflict resolution helps ensure consistency Much faster mod integration process (in my experience)

36 © 2015 Albion College | BUGMI 2015 Thank you! Eddie Bachle