HCJB Senior Design Team April 10, 2013. Development Tool When working with a team, the need for a central repository is essential Need a system to allow.

Slides:



Advertisements
Similar presentations
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.
Advertisements

Software Configuration Management Donna Albino LIS489, December 3, 2014.
Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
Juan Carlos Flores 10/20/2011. Outline Introduction Centralized Revision Control Systems Subversion Overview Distributed Revision Control Systems Network.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
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.
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
SubVersioN – the new Central Service at DESY by Marian Gawron.
GIT is for people who like SVN September 18 th 2012 Vladimir Kerkez and BK.
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.
Git A distributed version control system 23-Aug-15.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
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 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.
Source Control Repositories for Team Collaboration: SVN, TFS, Git Svetlin Nakov Telerik Software Academy academy.telerik.com Manager Technical Training.
Programming in Teams And how to manage your code.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
Introduction to Version Control
Source Control Repositories for Team Collaboration: SVN, TFS, Git.
A primer on version control at OTN
Git – versioning and managing your software L. Grewe.
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.
1 Introductory Notes on the Git Source Control Management Ric Holt, 8 Oct 2009.
Warmup A programmer’s wife tells him, “Would you mind going to the store and picking up a loaf of bread? Also, if they have eggs, get a dozen.” The programmer.
Version control Using Git Version control, using Git1.
Version Control. How do you share code? Discussion.
…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.
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.
Subversion (SVN) A Revision Control System Successor to CVS Carlos Armas Hervey Allen.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Team 708 – Hardwired Fusion Created by Nam Tran 2014.
Continuous Integration and Code Review: how IT can help Alex Lossent – IT/PES – Version Control Systems 29-Sep st Forum1.
INFSO-RI Enabling Grids for E-sciencE SCDB C. Loomis / Michel Jouvin (LAL-Orsay) Quattor Tutorial LCG T2 Workshop June 16, 2006.
By: Anuj Sharma. Topics covered:  GIT Introduction  GIT Benefits over different tools  GIT workflow  GIT server creation  How to use GIT for first.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
Wordpress with Mina Automated Deployment Solution Jonathan Gravato DIG 4104c.
Version Control System Lisa Palathingal 03/04/2015.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
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.
An Introduction to Git David Johndrow COMP 490 – Senior Design & Development 2/11/16.
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.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
Version Control Systems
CS5220 Advanced Topics in Web Programming Version Control with Git
Information Systems and Network Engineering Laboratory II
Source Control Systems
Git and GitHub primer.
Version Control.
Version Control overview
Version control, using Git
Version Control Systems
Storing, Sending, and Tracking Files Recitation 2
Concurrent Version Control
Source Code Management
Part 1: Editing and Publishing Files
Git CS Fall 2018.
Patrick Cozzi University of Pennsylvania CIS Fall 2012
Using GitHub for Papyrus Models Jessie Jewitt – OAM Technology Consulting/ ARM Inc. January 29th, 2018.
Presentation transcript:

HCJB Senior Design Team April 10, 2013

Development Tool When working with a team, the need for a central repository is essential Need a system to allow versioning, and a way to acquire the latest edition of the code A system to track and manage bugs was also needed

Development Tool Many tools exist which accomplish the task, or at least an element of the overarching problem SVN Bazaar Mercurial To address our problems, we have chosen to use a development environment consisting of the use of both Git and GitLab

Goal Explain and educate on the tools Git and GitLab Advantages of Git over SVN How these tools are used in combination Method for implementing this toolset into your projects

What is Git Git is a version control system Developed as a repository system for both local and remote changes Allows teammates to work simultaneously on a project Tracks each commit, allowing for a detailed documentation of the project along every step Allows for advanced merging and branching operations

What is Git Developed by Linus Torvalds as a replacement for SVN and to manage the development of the Linux kernel “Subversion has been the most pointless project ever started…Subversion used to say CVS done right: with that slogan there is nowhere you can go. There is no way to do CVS right…If you like using CVS, you should be in some kind of mental institution or somewhere else.” -Linus Torvalds

Git in Industry Companies and projects currently using Git Google Android Facebook Microsoft Netflix Linux Ruby on Rails Gnome KDE Eclipse X.org

Why Git is Better Git tracks the content rather than the files Branches are lightweight, and merging is a simple process Allows for a more streamlined offline development process Repositories are smaller in size and are stored in a single.git directory Allows for advanced staging operations, and the use of stashing when working through troublesome sections

Git vs SVN Git is much faster than SVN Coded in C, which allows for a great amount of optimization Accomplishes much of the logic client side, thereby reducing time needed for communication Developed to work on the Linux kernel, so that large project manipulation is at the forefront of the benchmarks

Git vs SVN Speed benchmarks Benchmarks performed by

Git vs SVN Git is significantly smaller than SVN All files are contained in a small decentralized.git file In the case of Mozilla’s projects, a Git repository was 30 times smaller than an identical SVN repository Entire Linux kernel with 5 years of versioning contained in a single 1 GB.git file SVN carries two complete copies of each file, while Git maintains a simple and separate 100 bytes of data per file, noting changes and supporting operations

Git vs SVN Git is more secure than SVN All commits are uniquely hashed for both security and indexing purposes Commits can be authenticated through numerous means In the case of SSH commits, a key may be provided by both the client and server to guarantee authenticity and prevent against unauthorized access

Git vs SVN Git is decentralized Each user contains an individual repository and can check commits against itself, allowing for detailed local revisioning Being decentralized allows for easy replication and deployment In this case, SVN relies on a single centralized repository and is unusable without

Git vs SVN Git is flexible Due to it’s decentralized nature, Git commits can be stored locally, or committed through HTTP, SSH, FTP, or even by No need for a centralized repository Developed as a command line utility, which allows a large amount of features to be built and customized on top of it

Git vs SVN Data Assurance A checksum is performed on both upload and download to ensure sure that the file hasn’t been corrupted. Commit IDs are generated upon each commit Linked list style of commits Each commit is linked to the next, so that if something in the history was changed, each following commit will be rebranded to indicate the modification

Git vs SVN Branching Git allows the usage of advanced branching mechanisms and procedures Individual divisions of the code can be separated and developed separately within separate branches of the code Branches can allow for the separation of work between developers, or even for disposable experimentation Branching is a precursor and a component of the merging process

Git vs SVN Merging The process of merging is directly related to the process of branching Individual branches may be merged together, solving code conflicts, back into the default or master branch of the project Merges are usually done automatically, unless a conflict is presented, in which case the user is presented with several options with which to handle the conflict

Git vs SVN Merging Content of the files is tracked rather than the file itself This allows for a greater element of tracking and a smarter and more automated process of merging SVN is unable to accomplish this, and will throw a conflict if a file name is changed and differs from the name in the central repository Git is able to solve this problem with its use of managing a local repository and tracking individual changes to the code

Git vs SVN Merging example

Interface with SVN It is possible to import and export from SVN Exporting from SVN to Git can be done through a series of manual bash scripts Use of a program such as svn2git allows for a more seamless integration of Git from a SVN repository

What is GitLab A web interface for Git Provides additional features on top of a Git repository Developed as a Github clone for self-hosting Allows for access to the repository from a web browser Issue and milestone tracking implemented Support for attachments and code snippets Integration of a wiki and wall for project documentation

What is GitLab Runs on a Ruby on Rails platform Developed for Debian or Ubuntu systems, however community support exists for other distributions such as Arch, CentOS, Fedora, or Gentoo Requires a specified version of Ruby and several Gem components to operate Based to run on top of Git, and utilizes a special Git user account to separate the repository Utilizes Nginx as the web server, as opposed to Apache

What is GitLab Each user is able to submit a generated SSH key to uniquely identify the submitter and machine Option to input a passphrase along with the key is possible Commits are done through an SSH shell, using the generated public key for authentication Cloning of the repository can be done through either HTTP or SSH

What is GitLab Supports the deployment of hooks, both service and web Service hooks can be used to launch specific services or compilations based on a particular event, such as a commit or merge Continuous integration servers, such as GitLab CI, provide additional features within this set of options Web hooks can be used to deploy the project remotely to a separate development server RSS feed provided to allow the latest project news and developments to be sent to your personal reader

Use of GitLab We use the combination of Git and GitLab to maintain our code By submitting each work session’s code, we ensure that a record is kept of our development along each step of the process The merging process makes it easy to compile everyone’s work together In the case of a mistake being made in the code, we are able to revert to any edition committed previously into the repository

Use of GitLab Issue Tracking We can assign small parts of the project to team members through GitLab This allows the group to know exactly what needs worked on Bugs can also be submitted as an issue, and assigned to a particular developer to address Issues can be closed in a ticketing like system to show which parts of the project have been completed Milestones can be created with issues assigned to them, and a chosen due date applied

Use of GitLab Backup “A file does not exist unless it is present in multiple geographical locations” With a local repository on each of our machines, development server, and our GitLab server, we have a great amount of data redundancy in the event of a failure, either software or hardware Our repository is stored on the Amazon cloud in addition to our server on campus Allows us to pull old versions of the project as well

Advantages of GitLab Allows for self-maintained version control for a closed source project Integrates seamlessly with Git Allows for a detailed viewing and documentation of the project Common alternative is Github, which does not provide free hosting for closed source projects

Our Development Environment Each machine used for development has a Git shell installed, and key generated to deploy to the central repository WinSCP used for the Windows machines to synchronize the code with the development server Development server running CentOS 6.4 Apache web server used to host the content, with individualized public html folders in each home directory

Our Development Environment GitLab is running on a specialized server in the Amazon EC2 Virginia cloud Running remotely to allow access both on and off campus Deployed on an Amazon micro virtual server Server running TurnKey Linux Stripped down version of Debian, with the sole purpose of hosting a GitLab instance

Demo Repository demo

How to Use Git can be downloaded for Windows, Linux or Mac GUI clients are available for Git

How to Use Once Git shell is installed, it is best to generate a security key ssh-keygen -t rsa -C Copy the generated key to the server for authentication clip < ~/.ssh/id_rsa.pub Clone the git repository to your local machine git clone

How to Use Git commands for everyday usage are relatively simple git pull Get the latest changes to the code git add. Add any newly created files to the repository for tracking git add –u Remove any deleted files from tracking and the repository git commit –m ‘Changes’ Make a version of changes you have made git push Deploy the latest changes to the central repository

How to Use Git pull example

How to Use While Git is installed client side and server side, GitLab is installed on the server used for the central repository An installation guide is provided with the recommended use of a Debian or Ubuntu server TurnKey prebuilt GitLab versions also available

Summary Over the course of our project, we have found both Git and GitLab to be powerful tools which have greatly aided our development process While Git has provided the majority of the behind the scenes features, GitLab has allowed us to seamlessly integrate these tools within our development environment How would your project management be different if Git was used instead of SVN?

References and Resources Git GitLab Git and SVN Comparison Switch from SVN to Git from-subversion-to-git from-subversion-to-git