An Introduction to Git Version Control for SAS Programmers
|
|
|
- Shawn Bennett
- 10 years ago
- Views:
Transcription
1 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 your company provides it as part of your development environment or they don't. Additionally version control systems were often viewed as cumbersome, complex and difficult to work with. With Git, version control is simplified and incorporated into your development process. This lets both individual SAS developers and entire teams work faster and smarter. This paper will take some of the best practices of open source developers and apply them to individual SAS developers. It will then show how those best practices can scale to teams and remote developers. INTRODUCTION Git is a free and open source distributed version control system that is unobtrusive and fits in nicely with the average SAS programmer s workflow. This paper will be useful for SAS programmers who are either interested in getting started with version control, or are currently using version control, but would like to see how Git works. This paper will walk you through the steps needed to get started using Git version control. VERSION CONTROL FOR PROGRAMMERS Why Version Control? Developers use version control to manage change. Version control allows you to see all the changes that have been made to your source code as well as who made those changes and when. Additionally, it allows you to rewind to any point in history and restore the code to the state it was in at that point in time. This lets you reproduce outputs generated by your code from any time in the past. It also lets you compare code to its previous implementation to help you understand why the code was changed. Why Git? Out of all the goodness that source control brings to your development environment, there are three main functions that stand out: Reduce the risks that code refactoring can introduce. Allow you to view and work with code as it was at any time in its history. Track who made what changes and when. Git makes these operations trivially easy. Additionally it uses hashing algorithms to ensure the history of a project is not changed or corrupted. History of Git Git was created in the Spring of 2005 by none other than Linus Torvalds. Torvalds had several design goals in mind when he started creating it. Namely: Support a distributed workflow Be very fast and scalable Have strong safeguards and make it very difficult to corrupt the history of a project. To support a distributed workflow, Git allows each developer to always have the entire history of a project within their own local repository. Files are not checked in or out of a central repository. Instead, each developer always has a full-fledged working copy. 1
2 Who uses Git? According to the Eclipse Foundation s annual community survey, over 27% of professional software developers report using Git as their primary source control system [1]. A quick search using Dice.com shows 974 jobs when searching with the keyword Git. To put that within a frame of reference I also searched some other technology keywords: Technology Keyword Number of Jobs Listed on Dice.com SAS 1621 Ruby 2226 Perl 5130 Bash 944 Java Svn 1092 In its early years Git suffered from criticism that it was difficult to use. In fact there is still a lot of documentation online that would make the strongest stomach churn with fear (check out the man pages, my eyes! they bleed!). Luckily, in the last few years a lot of progress has been made to make the project accessible to us mere mortals. Git Architecture To understand how Git works you have to understand how data flows between three data structures: your repository, the index and your working tree. The working tree is the set of files and directories on your computer that you normally work with. The index is an intermediary place where you stage changes that you would like committed to the repository. Often called the staging area. Creating a commit copies the staged changes into a new commit and then clears the index. The repository is the database that contains the full history of your project. Once things are committed to the repository they become part of the project s history and should not be changed. Each new commit depends on the hash signature of all the previous commits to maintain historical integrity. Typical Workflow In a typical workflow you edit files in your working tree. You then stage those changes to the index. After you have staged the changes to the index, you can then commit them to the repository. It may all sound like additional work at first, especially to programmers who generally write programs on their own or in small teams. But version control, especially source code control is one of those things that s not really needed until it s REALLY needed. And I have found it actually improves my workflow and coding habits. Some examples of how it has improved my coding habits: Code ownership. Changes are tagged with my name. Forever. Encourages smaller source code files. Logic within DATA steps can t be abstracted away into functions like other languages, but often steps can be logically separated into files. Teaches a change-one-thing-at-a-time mentality. Helps me think of my code as having a life-span and not as a once-off. 2
3 DIVING IN Now that we have talked about Git and some of its benefits, we are going to jump straight into downloading, installing and creating our first project with it. Our example project will be to write SAS code that audits a SAS data set by taking some measurements of it (number of observations, number of variables). It will be named auditor.sas. It is just being used as an example and does not have anything to do with Git itself. Set Up Git Many Linux systems have Git installed. If your operating system does not, you can download it: Git was born on and is native to Linux, but works on Windows and Mac OS X. There are a few small differences between the Windows version and *nix version but for the most part everything works the same for both. Since a lot of SAS development is still done on Windows, I will work through examples from that operating system. After you have downloaded the Git executable, you should run it. Display 1. Installing Git on Windows After it is installed you should see Git under your Start/Program Files. There will be two programs: Git Bash and Git GUI. Running Git Bash should bring up a window showing it is installed: Display 2. Git Bash Is Running 3
4 Once Git is installed, you should configure a few global variables. prompt> git config global user.name Stephen Philp prompt> git config global user. [email protected] They tell Git who you are and how you can be contacted. Another nice global variable to set is color.ui which tells Git to use color-coded output. prompt> git config global color.ui auto Creating Your First Repository It is very simple to create a repository in Git. First create the directory that your project will live under then change to that directory and run git init: prompt> mkdir auditor prompt> cd auditor prompt> git init Display 3. Creating A Git Repository And that s it. You have created a Git repository. The git init command creates a directory named.git within the auditor directory (your working tree). This.git directory stores all the repository metadata and contains your entire repository. Adding To Your Repository Now that we have an empty repository, it s time to add some code to it. The requirements for our make believe example are to track if the data set exists, when it was modified, how many observations it has and how many variables it has. To get started, I fire up my SAS editor and create a file named auditor.sas that looks like this: /* auditor.sas This code will audit a SAS data set. The measurements we will be taking are: number of observations number of variables modification date This code is example code and comes with no warranties :) */ 4
5 That s all we need to get started. Next we need to tell Git to track it. First we add it to the staging area with the git add command. prompt> git add auditor.sas Running this command does not produce any output. So it can be nice to have Git tell us what its status is: prompt> git status Git tells us that is has staged the file and the index has changes ready to be committed to the repository. Display 4. Staged Changes Ready To Be Committed Now we can commit the change to the repository with git commit. prompt> git commit m Add audit.sas Display 5. Our First Commit The m flag tells git commit to add the message Add audit.sas to the commit. Commits are the chunks of history added to the repository. The message lets you know why that chunk was added and what it does. 5
6 It is important to write informative commit messages because they help you understand your project s history as it grows. Tips on writing good commit messages can be found here: Now that we have added some history to the repository we can see our commit with git log: Display 6. Our Project s History The first thing you may notice is that commits are named using a hash tag. Each new commit hash tag is generated from all of the history in the repository. This lets Git track changes in a distributed environment. And it ensures that future commits reflect any changes that have been made to a project s history. You can also see that it tagged me as the author, date stamped it and displays the commit message. When we run git status we see that the index/staging area has been cleared by the last commit. Display 7. Index Cleared After Commit Working With Changes Now that we have a repository with a file that we are tracking, it s time to make some changes. The first thing I am going to do is create a test data set that we can use to write our code against. It will live in a directory named test. prompt> mkdir test 6
7 I m also going to create readme.txt file in the test directory to explain the contents of the directory. prompt> echo This directory contains data to test against > test/readme.txt I will also add some code to auditor.sas to create the test data set. /* auditor.sas This code will audit a SAS data set. The measurements we will be taking are: number of observations number of variables modification date This code is example code and comes with no warranties :) */ %macro create_test_data; libname test "c:\data\wuss2012\git\projects\auditor\test\"; data test.test_data; do i = 1 to 10; output; end; run; %mend create_test_data; %create_test_data; After I submit that code I have a data set named test_data in the test directory. We have made three changes to our working tree: changed our code in auditor.sas created a new file named readme.txt created a new file named test_data.sas7bdat Running git status shows that Git sees the changes in our working tree. Display 8. Working Tree Has Changes 7
8 Git sees that we have changes in our working tree, but they have not been added to its index/staging area to be committed. Before we add our changes to the staging area, we need to pause a moment and think about the types of files we just created. Specifically the SAS data set. SAS data sets are binary files. In general, it does not make sense to track changes to binary files. And Git in particular is not a very good tool for tracking binary files. So we will tell Git to ignore SAS data sets by creating a.gitignore file. At the root directory of your project create a file called.gitignore. Inside that file you can specify exactly which files to ignore or use globbing to specify which types to ignore. We will add *.sas7bdat and *.log since we don t want to track log files either. Listing of.gitignore file: *.sas7bdat *.log Then when we run git status we see that Git notices auditor.sas has been modified and additionally there is a new file called.gitignore. Display 9. Git Status Shows Our Changes Now we have new files and a modified file. Our currently tracked file auditor.sas has been modified, and there are new files that haven t been tracked yet. You add both of these changes to the staging area with git add. This was a point of confusion for me when I was first working with Git. Why would I add the file auditor.sas when it s already being tracked in the repository? I did not realize that I was not adding files to the repository. I was adding the changes to the files into the index/staging area. This may seem like an unnecessary extra step, but it is actually quite useful. It allows you to craft exactly what you want in your commit. It is bad practice to make commits that encompass more than one type of change. Consider our current set of changes: we added a.gitignore file and we also created test code and data. Instead of wrapping those two things into one commit like Added gitignore file and created test data, it is better to create two separate commits. First I will tell Git to add the.gitignore file to its index. prompt> git add.gitignore 8
9 git status shows there are changes in the index ready to be committed to the repository, and there are still changes not staged (the untracked files in test/). Display 10. Crafting A Commit With Specific Changes Now I can commit the staged changes that include only the.gitignore file: prompt> git commit m Add gitignore Running git status now shows that we have two changes in our working tree ready to be staged: the modified auditor.sas file and the new test directory that holds the readme.txt file. These are both changes that have to do with creating test data so I can put them into one commit. Display 10. Crafting A Commit With Specific Changes prompt> git add auditor.sas prompt> git add test After both files are added to the index/staging area we can commit our changes to the repository: prompt> git commit m Add test data 9
10 Now we can see a list of all our history with git log: Display 11. Git Log Shows the History of Our Project After creating our test data, the next step is to write the code that gathers the measurements. So I add this DATA step to the code in auditor.sas: * gather the measurements for our data set; libname target "c:\data\wuss2012\git\projects\auditor\test\"; data measurements; dsid = open('target.test_data'); nobs = attrn(dsid,'nobs'); nvars = attrn(dsid,'nvars'); modte = datepart( attrn(dsid,'modte') ); * no need for the time; rc = close(dsid); audit_date = today(); drop rc dsid; run; After I save the file I can type git status and I see that Git knows there are changes in my working tree. But let s pretend that we have been pulled away for a while and can t remember what changes have been made to the code. Maybe we got pulled away from the project and something else took priority for a few days. When I finally come back to the code, I d like to see the differences between what s in my working tree and what s stored in the repository: prompt> git diff HEAD 10
11 HEAD is a quick way to refer to the most recent commit to the branch you are in (more about branches in a second, but for the time being the branch we are in is called master). As you can see, the changes to auditor.sas are presented to us. Lines with a minus (-) are removed or replaced with the lines with a plus (+). Display 12. Diff Between Working Tree And Repository Those changes look good to me so I will commit them. Instead of typing git add auditor.sas I can use a shortcut and specify the flag a (for add) as well as the message flag on my commit command. prompt> git commit am Create measurements data set At this point we have reached a milestone in that our code is finished and works the way we want. A good way to mark a milestone is to create a tag in the repository. A tag sets a marker in your project s history so you can find it and refer to it easily. This is the first release of our code so we can tag it as 1.0. prompt> git tag 1.0 To see which tags are in your project s history use the command git tag by itself. Summary That covers the basic workflow of creating a repository, adding files to it, changing the working tree and committing the changes to the repository. Commands used: Git init Git add Git status Git commit Git log Git tag This has only scratched the surface though. One of the things that make Git such a productivity enhancer is branching. 11
12 BRANCHING Looking back at the work we have done so far, you can see that Git is using a branch called master. One of the most useful parts of Git is that it lets you create branches which you can treat as code scratchpads without worrying about messing up working code that is currently being used. Let s set up a typical scenario to show how Git branches can make life easier. The code we wrote works. It creates a data set called measurements. It s currently being run in a production environment every morning. It has made everyone happy. That is, until one night you wake up in a cold sweat with the realization that your code is missing one important piece: it doesn t check if the data set exists before gathering measurements! Luckily it hasn t caused a problem but it needs to be fixed right away. And the fix should be pretty quick to add to the code. Then you look at your code and realize that checking for the existence of the data set isn t as trivial as you originally thought it would be. data measurements; dsid = open('target.test_data'); nobs = attrn(dsid,'nobs'); nvars = attrn(dsid,'nvars'); modte = datepart( attrn(dsid,'modte') ); * no need for the time; rc = close(dsid); audit_date = today(); drop rc dsid; run; At first you think you can just add one line of logic to the data step: If not dsid then stop; But that still creates the measurements data set with no observations. Ideally we don t want to create a measurments data set if the data set we are measuring does not exist. Like every good SAS programmer, we puzzle on it just long enough to realize SAS/Macro is the answer. However, that will involve a pretty significant re-write. Normally big structural code changes like that can be risky. But we are not afraid. We have Git. And Git has branches. Everything in Git is treated as a branch. The code we have been working on is in a branch called master. You can see all the branches in your repository with the git branch command: prompt> git branch * master As you can see, there is one default branch called master. The asterisk tells us it is the currently selected branch. Since everything in Git is treated as a branch, they are very quick and easy for us to work with. Each branch contains just the commits that were made to that branch, plus a link to its parent branch. This keeps it from consuming too much disk space and allows Git to reconstruct the entire history of any branch by walking the links back through any parent branches. There are no hard and fast rules on when to create a new branch. But here are some examples when creating a branch is useful: When you want to do a pretty serious rewrite (like our current example). When testing out a new way to solve a problem. For A/B style code comparisons. To create a branch you use the git branch command and the name of your new branch. We will call the new branch ds_exist. prompt> git branch ds_exist This only creates a new branch, but it doesn t check it out into your working tree. prompt> git branch ds_exit * master 12
13 Now we have two branches, but the asterisk next to master tells us it is the one currently checked out. To start working with our new branch, we check it out. prompt> git checkout ds_exist Switched to branch ds_exist Now we can work on the code in our ds_exist branch with confidence knowing we can always revert back to the master branch if things go badly. After some hacking and editing we have a new version of the code: %macro create_measurements; * gather the measurements for our data set; libname target "c:\data\wuss2012\git\projects\auditor\test\"; %let exist = %sysfunc( exist(target.test_data) ); %if not &exist %then %goto term; data measurements; dsid = open('target.test_data'); nobs = attrn(dsid,'nobs'); nvars = attrn(dsid,'nvars'); modte = datepart( attrn(dsid,'modte') ); * no need for the time; rc = close(dsid); audit_date = today(); drop rc dsid; run; %return; %term: %put the data set does not exist; %mend create_measurements; %create_measurements; Now we can stage and commit these changes to our branch: prompt> git commit am Skip logic if data set does not exist Display 13. A Commit to the New Branch At this point, just to do a sanity check, you can checkout master and then reload auditor.sas to see that it has not changed within branch master. Then checkout ds_exist and reload auditor.sas to see that those changes are still in the ds_exist branch. Notice that branches allow you to have two (or more) versions of code within your one directory, and you can flip back and forth with one command: git checkout <branch name>. 13
14 Merging Branches Now that we are satisfied with the changes to the code in the ds_exist branch we can think about merging those changes back to the master branch. There are a couple of different ways to merge branches, but we will go with the straightforwardly named straight merge. A straight merge takes all the commits and history of one branch and attempts to merge them into another branch. The straight merge is nice because it preserves all of the commit history. As opposed to a squashed commits merge where all the commit history of one branch is squashed into one commit that is then applied to the branch. First thing you need to do is make sure that your working tree reflects the branch you want to merge into. prompt> git checkout master Switched to branch master The git merge command takes the name of the branch you want to merge into your current branch: prompt> git merge ds_exist Display 14. Merging Branches You can use git log to see that the commit from ds_exist has indeed been committed to the master branch. Display 15. Git Log Shows History Now that we have successfully merged our changes from branch ds_exist we can delete it. prompt> git branch d ds_exist 14
15 Deleted branch ds_exist (was cf38737). REMOTE REPOSITORIES So far all of our work has been done locally. We have used Git as our own personal version control on our own personal project. This works fine and is good, but Git was specifically written to allow teams of developers to work on the same project and be located anywhere. The standard architecture for using Git in a distributed environment is to have one main repository in a Git server. By default, this centralized repository is called origin. Then any number of developers pull from origin to create their local repository to work on. Their local repository will then have all of the history of the project. When a developer is satisfied with his or her changes, they push their branch back to origin. Setting up a Git server to act as the main repository for your company is relatively simple but involves some administrative tasks such as installing SSH, creating a user, etc which would fall outside the scope of this paper. For a great walkthrough see: Luckily, there is a great little spot on the web called github.com. As its name implies Github acts as an online hub for Git repositories. This works perfectly for an example to illustrate using Git as a distributed version control system. Github I have created an example repository named sas-empty-project on Github. You can view it online at: Display 16. Sas-empty-project On Github 15
16 SAS-empty-Project is simply a set of directories forming a relatively sane layout for a SAS project with a splash of SAS code to get things started. It s a nice way to bootstrap a new SAS project. Let s say you found the project on Github. You want to use it when you create your own SAS projects, and additionally contribute to the repository on Github. To start working with the sas-empty-project you need to create your own local repository of it. You do this with the git clone command. As the screen print above shows you, the repository on Github can be accessed through a URL which we pass to git clone: prompt> git clone Display 17. Voila! My Own Local Repository If you run git log you will see that the repository and all its history has been cloned to your machine. prompt> cd sas-empty-project prompt> git log 16
17 Now you can make some changes to your local repository. Looking at the.gitignore file you notice that only *.log and *.sas7bdat files have been specified. Since it s a SAS project, we know there are other SAS binary files that should be excluded. So you edit.gitignore to include other SAS file extensions [2]: # logs *.log # sas data sets *.sas7bdat # sas views *.sas7bvew # sas catalog *.sas7bcat # sas indexes *.sas7bndx # sas audit files *.sas7baud # sas stored programs *.sas7bpgm # sas MDDB *.sas7bmdb # sas item store *.sas7bitm Notice this time you also added comments to the.gitignore file. Now you can stage and commit the change to your local repository: prompt> git commit am Add more SAS binary file types to.gitignore Remember, the commit message is there to tell everyone what change you made. All that s left is to push your changes to the remote server. But first we have to take a step back and talk about how Git knows which remote server to push to. When you ran git clone, Git automatically set up a remote pointing to the repository you cloned from. You can verify this by running the git remote command with the v (for verbose) flag. prompt> git remote v origin (fetch) origin (push) You can see that the remote origin has been set up for both fetching (which is the same as a pull, but it does not automatically merge) and pushing. 17
18 Now you can push your changes using the git push command. prompt> git push origin master Since origin and master are defaults you could instead just do: prompt> git push Display 18. Pushing To A Remote Repository And that s it. You have successfully contributed your changes to the public repository on Github. And additionally you can now create all the directories for a new SAS project with a single command: prompt> git clone ADDITIONAL USEFUL COMMANDS A lot of times after I make a commit, I realize that I left a tiny little mistake in the code. Like a comment that I meant to erase, or a put statement that was useful just for debugging. I need to change the code, but I don t think the change really warrants its own commit. You can amend your last commit with: prompt> git commit C HEAD a amend The C parameter tells Git to use the message from the commit specified (remember HEAD refers to the last commit). Want to know who committed a line of code, and when? Use git blame <file>. prompt> git blame L 26,+6 auditor.sas This tells Git to show us who committed 6 lines in auditor.sas starting with line 26. Did you accidentally create a commit that absolutely shouldn t be there? prompt> git reset hard HEAD^ The parameter HEAD^ tells Git to reset the repository to the commit before the last commit. It is like the last commit never happened. 18
19 GIT CHEAT SHEET git init Initialize a Git repository. git status Shows all the changes that have occurred in your repository. git add <file> Adds a file to the index/staging area. git commit Creates a commit. -a adds changes to the index -m message specifies a message git log Shows the history of your repository. git diff Compare the changes in your working tree against the staging area. git diff HEAD Compare your working tree including staged changes to repository. git diff cached view the changes in the index/staging area to the repository..gitignore Text file that specifies files for Git to ignore. git rm cached <file> remove a file previously added to the repository. git tag Lists the tags. <tagname> Create a tag in the repository. git checkout tags/<tag name> Checks out the tag into your working tree. git branch List the branches. <branch name> Create the branch. -d <branch name> Delete the branch. git checkout <branch> Copy the code in that branch to your working tree to work on. -b Create a new branch from the current branch and checks it out. git merge <other branch> Merge <other branch> into the CURRENT branch. git clone <repository URL> Create a local copy of a remote repository. 19
20 REFERENCES [1] Eclipse Foundation. Eclipse Open Source Developer Report June Available at [2] Cates, Randall What s In A Name; Describing SAS File Types. Proceedings of the Twenty-Seventh Annual SAS Users Group International Conference. Cary, NC: SAS Institute Inc. Available at RECOMMENDED READING Swicegood, Travis (2008). Pragmatic Version Control Using Git. Raleigh NC: The Pragmatic Bookshelf Git Home Page CONTACT INFORMATION Your comments and questions are valued and encouraged. Contact the author at: Name: Stephen Philp Pelican Programming / / Redondo Beach CA [email protected] SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. indicates USA registration. Other brand and product names are trademarks of their respective companies. 20
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
Introduction to Git. Markus Kötter [email protected]. Notes. Leinelab Workshop July 28, 2015
Introduction to Git Markus Kötter [email protected] Leinelab Workshop July 28, 2015 Motivation - Why use version control? Versions in file names: does this look familiar? $ ls file file.2 file.
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
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
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:
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
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
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
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
Git Basics. Christopher Simpkins [email protected]. Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS 1331 1 / 22
Git Basics Christopher Simpkins [email protected] 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
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
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
Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat [email protected]
Version Control with Git Linux Users Group UT Arlington Rohit Rawat [email protected] Need for Version Control Better than manually storing backups of older versions Easier to keep everyone updated
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
Introduction to the Git Version Control System
Introduction to the Sebastian Rockel [email protected] University of Hamburg Faculty of Mathematics, Informatics and Natural Sciences Department of Informatics Technical Aspects of Multimodal
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
Git. A Distributed Version Control System. Carlos García Campos [email protected]
Git A Distributed Version Control System Carlos García Campos [email protected] Carlos García Campos [email protected] - Git 1 A couple of Quotes For the first 10 years of kernel maintenance, we literally
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
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
Version Control Systems
Version Control Systems ESA 2015/2016 Adam Belloum [email protected] Material Prepared by Eelco Schatborn Today IntroducGon to Version Control Systems Centralized Version Control Systems RCS CVS SVN
Two Best Practices for Scientific Computing
Two Best Practices for Scientific Computing Version Control Systems & Automated Code Testing David Love Software Interest Group University of Arizona February 18, 2013 How This Talk Happened Applied alumnus,
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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,
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
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
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
Jazz Source Control Best Practices
Jazz Source Control Best Practices Shashikant Padur RTC SCM Developer Jazz Source Control Mantra The fine print Fast, easy, and a few concepts to support many flexible workflows Give all users access to
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)
In depth study - Dev teams tooling
In depth study - Dev teams tooling Max Åberg mat09mab@ Jacob Burenstam Linder ada09jbu@ Desired feedback Structure of paper Problem description Inconsistencies git story explanation 1 Introduction Hypotheses
Version Control with Mercurial and SSH
Version Control with Mercurial and SSH Lasse Kliemann [email protected] Vorkurs Informatik 2010 Wishlist While working on a project, it is nice to... be able to switch back to older versions of
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
STABLE & SECURE BANK lab writeup. Page 1 of 21
STABLE & SECURE BANK lab writeup 1 of 21 Penetrating an imaginary bank through real present-date security vulnerabilities PENTESTIT, a Russian Information Security company has launched its new, eighth
Version Control with Subversion
Version Control with Subversion http://www.oit.duke.edu/scsc/ http://wiki.duke.edu/display/scsc [email protected] John Pormann, Ph.D. [email protected] Software Carpentry Courseware This is a re-work from the
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
using version control in system administration
LUKE KANIES using version control in system administration Luke Kanies runs Reductive Labs (http://reductivelabs.com), a startup producing OSS software for centralized, automated server administration.
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?
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
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
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
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 [email protected] Outline Why use version control? Simple example of revisioning Mercurial
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
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
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.
Version Control with Git
Version Control with Git Ben Wasserman ([email protected]) 15-441 Computer Networks Recitation 3 1/28 What is version control? Revisit previous code versions Backup projects Work with others Find where
Git - Working with Remote Repositories
Git - Working with Remote Repositories Handout New Concepts Working with remote Git repositories including setting up remote repositories, cloning remote repositories, and keeping local repositories in-sync
Source Control Guide: Git
MadCap Software Source Control Guide: Git Flare 11.1 Copyright 2015 MadCap Software. All rights reserved. Information in this document is subject to change without notice. The software described in this
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
Version Control Tools
Version Control Tools Source Code Control Venkat N Gudivada Marshall University 13 July 2010 Venkat N Gudivada Version Control Tools 1/73 Outline 1 References and Resources 2 3 4 Venkat N Gudivada Version
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.
The Social Accelerator Setup Guide
The Social Accelerator Setup Guide Welcome! Welcome to the Social Accelerator setup guide. This guide covers 2 ways to setup SA. Most likely, you will want to use the easy setup wizard. In that case, you
Source Code Management/Version Control
Date: 3 rd March 2005 Source Code Management/Version Control The Problem: In a typical software development environment, many developers will be engaged in work on one code base. If everyone was to be
Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab
Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab Yocto Project Developer Day San Francisco, 2013 Jessica Zhang Introduction Welcome to the Yocto Project Eclipse plug-in
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,
Git, GitHub & Web Hosting Workshop
Git, GitHub & Web Hosting Workshop WTM Hamburg Git, GitHub & Web Hosting Documentation During our Workshops we re going to develop parts of our WTM Hamburg Website together. At this point, we ll continue
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
Automating client deployment
Automating client deployment 1 Copyright Datacastle Corporation 2014. All rights reserved. Datacastle is a registered trademark of Datacastle Corporation. Microsoft Windows is either a registered trademark
Cobian9 Backup Program - Amanita
The problem with backup software Cobian9 Backup Program - Amanita Due to the quixotic nature of Windows computers, viruses and possibility of hardware failure many programs are available for backing up
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
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
SUGI 29 Applications Development
Backing up File Systems with Hierarchical Structure Using SAS/CONNECT Fagen Xie, Kaiser Permanent Southern California, California, USA Wansu Chen, Kaiser Permanent Southern California, California, USA
Subversion Integration for Visual Studio
Subversion Integration for Visual Studio VisualSVN Team VisualSVN: Subversion Integration for Visual Studio VisualSVN Team Copyright 2005-2008 VisualSVN Team Windows is a registered trademark of Microsoft
My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies
About the author My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies I am going to take you through the journey that my team embarked on as we looked for ways to automate processes,
inforouter Version 8.0 Administrator s Backup, Restore & Disaster Recovery Guide
inforouter Version 8.0 Administrator s Backup, Restore & Disaster Recovery Guide Active Innovations, Inc. Names of all products herein are used for identification purposes only and are trademarks and/or
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
Department of Veterans Affairs. Open Source Electronic Health Record Services
Department of Veterans Affairs Open Source Electronic Health Record Services MTools Installation and Usage Guide Version 1.0 June 2013 Contract: VA118-12-C-0056 Table of Contents 1. Installation... 3 1.1.
See the installation page http://wiki.wocommunity.org/display/documentation/deploying+on+linux
Linux Installation See the installation page http://wiki.wocommunity.org/display/documentation/deploying+on+linux Added goodies (project Wonder) Install couple of more goodies from Wonder. I Installed
IDERA WHITEPAPER. The paper will cover the following ten areas: Monitoring Management. WRITTEN BY Greg Robidoux
WRITTEN BY Greg Robidoux Top SQL Server Backup Mistakes and How to Avoid Them INTRODUCTION Backing up SQL Server databases is one of the most important tasks DBAs perform in their SQL Server environments
RingCentral Office@Hand from AT&T Desktop App for Windows & Mac. User Guide
RingCentral Office@Hand from AT&T Desktop App for Windows & Mac User Guide RingCentral Office@Hand from AT&T User Guide Table of Contents 2 Table of Contents 3 Welcome 4 Download and install the app 5
Developer Workshop 2015. Marc Dumontier McMaster/OSCAR-EMR
Developer Workshop 2015 Marc Dumontier McMaster/OSCAR-EMR Agenda Code Submission 101 Infrastructure Tools Developing OSCAR Code Submission: Process OSCAR EMR Sourceforge http://www.sourceforge.net/projects/oscarmcmaster
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
Incremental Backup Script. Jason Healy, Director of Networks and Systems
Incremental Backup Script Jason Healy, Director of Networks and Systems Last Updated Mar 18, 2008 2 Contents 1 Incremental Backup Script 5 1.1 Introduction.............................. 5 1.2 Design Issues.............................
LOCKSS on LINUX. Installation Manual and the OpenBSD Transition 02/17/2011
LOCKSS on LINUX Installation Manual and the OpenBSD Transition 02/17/2011 1 Table of Contents Overview... 3 LOCKSS Hardware... 5 Installation Checklist... 7 BIOS Settings... 10 Installation... 11 Firewall
Using SVN to Manage Source RTL
Using SVN to Manage Source RTL CS250 Tutorial 1 (Version 092509a) September 25, 2009 Yunsup Lee In this tutorial you will gain experience using the Subversion (SVN) to manage your source RTL and code.
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
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
Pragmatic Version Control
Extracted from: Pragmatic Version Control using Subversion, 2nd Edition This PDF file contains pages extracted from Pragmatic Version Control, one of the Pragmatic Starter Kit series of books for project
Using Karel with Eclipse
Mehran Sahami Handout #6 CS 106A September 23, 2015 Using Karel with Eclipse Based on a handout by Eric Roberts Once you have downloaded a copy of Eclipse as described in Handout #5, your next task is
Chapter 28: Expanding Web Studio
CHAPTER 25 - SAVING WEB SITES TO THE INTERNET Having successfully completed your Web site you are now ready to save (or post, or upload, or ftp) your Web site to the Internet. Web Studio has three ways
Setting up a local working copy with SVN, MAMP and rsync. Agentic - 2009
Setting up a local working copy with SVN, MAMP and rsync Agentic - 2009 Get MAMP You can download MAMP for MAC at this address : http://www.mamp.info/en/downloads/index.html Install MAMP in your APPLICATION
5 Group Policy Management Capabilities You re Missing
5 Group Policy Management Capabilities You re Missing Don Jones 1. 8 0 0. 8 1 3. 6 4 1 5 w w w. s c r i p t l o g i c. c o m / s m b I T 2011 ScriptLogic Corporation ALL RIGHTS RESERVED. ScriptLogic, the
Visual Studio.NET Database Projects
Visual Studio.NET Database Projects CHAPTER 8 IN THIS CHAPTER Creating a Database Project 294 Database References 296 Scripts 297 Queries 312 293 294 Visual Studio.NET Database Projects The database project
