Version Control 3 January 2015

Size: px
Start display at page:

Download "Version Control 3 January 2015"

Transcription

1 Version Control 3 January 2015 Ben Klemens [This is the revision control chapter of 21st Century C 1, by me, published by O Reilly Media. I had to sign over all rights to the book three times over, for some reason I m still not clear on. But I was clear throughout the contract negotiations of both first and second editions that I retain the right to publish my writing on this blog, and that I retain the movie rights. The great majority of the content in the book is available via the tip-a-day series from this post (entry #049) et seq, or the chapter-long post on parallell processing in C (entry #175). ] [The chapter on revision control gets especially positive reviews. One person even offered to translate it into Portugese; I had to refer him to O Reilly and I don t know what happened after that. It s in the book because I think it d be hard to be writing production C code in the present day without knowing how to pull code from a git repository. But in the other direction, this tutorial is not really C-specific at all.] [So, here it is, with some revisions, in a free-as-in-beer format, to help those of you who are not yet habitual revision control users to become so. If you like this chapter, maybe let the book buying public know by saying something nice on Goodreads 2 or Amazon 3. And if you think it ll make a good movie, give me a call.] This chapter is about revision control systems (RCSes), which maintain snapshots of the many different versions of a project as it develops, such as the stages in the development of a book, a tortured love letter, or a program. Using an RCS has changed how I work. To explain it with a metaphor, think of writing as rock climbing. If you re not a rock climber yourself, you might picture a solid rock wall and the intimidating and life-threatening task of getting to the top. But in the modern day, the process is much more incremental. Attached to a rope, you climb a few meters, and then clip the rope to the wall using specialized equipment (cams, pins, carabiners, and so on). Now, if you fall, your rope will catch at the last carabiner, which is reasonably safe. While on the wall, your focus is not reaching the top, but the much more reachable problem of finding where you can clip your next carabiner. Coming back to writing with an RCS, a day s work is no longer a featureless slog toward the summit, but a sequence of small steps. What one feature could I add? What one problem could I fix? Once a step is made and you are sure that your code base is in a safe and clean state, commit a revision, and if your next step turns out disastrously, you &tag=caltechdivini-20&creative=9325&path=tg/detail/-/ / qid= /sr=8-1/ref=pd_bbs_ur_ &tag=caltechdivini-20&creative=9325&path=tg/detail/-/ / qid= /sr=8-1/ref=pd_bbs_ur_1 1

2 can fall back to the revision you just committed instead of starting from the beginning. But structuring the writing process and allowing us to mark safe points is just the beginning: Our filesystem now has a time dimension. We can query the RCS s repository of file information to see what a file looked like last week and how it changed from then to now. Even without the other powers, I have found that this alone makes me a more confident writer. We can keep track of multiple versions of a project, such as my copy and my coauthor s copy. Even within my own work, I may want one version of a project (a branch) with an experimental feature, which should be kept segregated from the stable version that needs to be able to run without surprises. GitHub 4 has about 218,000 projects that self-report as being primarily in C as of this writing, and there are more C projects in other, smaller RCS repository hosts, such as the GNU s Savannah. Even if you aren t going to modify the code, cloning these repositories is a quick way to get the program or library onto your hard drive for your own use. When your own project is ready for public use (or before then), you can make the repository public as another means of distribution. Now that you and I both have versions of the same project, and both have equal ability to hack our versions of the code base, revision control gives us the power to merge together our multiple threads as easily as possible. This chapter will cover Git, which is a distributed revision control system, meaning that any given copy of the project works as a standalone repository of the project and its history. There are others, with Mercurial and Bazaar the other front-runners in the category. There is largely a one-to-one mapping among the features of these systems, and what major differences had existed have merged over the years, so you should be able to pick the others up immediately after reading this chapter. 1 Changes via diff The most rudimentary means of revision control is via diff and patch, which are POSIX-standard and therefore most certainly on your system. You probably have two files on your drive somewhere that are reasonably similar; if not, grab any text file, change a few lines, and save the modified version with a new name. Try: diff f1.c f2.c and you will get a listing, a little more machine-readable than human-readable, that shows the lines that have changed between the two files. Piping output to a text file via diff f1.c f2.c > diffs and then opening diffs in your text editor may give you a colorized version that is easier to follow. You will see some lines giving the name of the file and location within the file, perhaps a few lines of context that did not change between the two files, and lines beginning with + and - showing the lines 4 2

3 that got added and removed. Run diff with the -u flag to get a few lines of context around the additions and subtractions. Given two directories holding two versions of your project, v1 and v2, generate a single diff file in the unified diff format for the entire directories via the recursive (-r) option: diff ur v1 v > diff v1v2 The patch command reads diff files and executes the changes listed there. If you and a friend both have v1 of the project, you could send diff-v1v2 to your friend, and she could run: patch < diff v1v2 to apply all of your changes to her copy of v1. Or, if you have no friends, you can run diff from time to time on your own code and thus keep a record of the changes you have made over time. If you find that you have inserted a bug in your code, the diffs are the first place to look for hints about what you touched that you shouldn t have. If that isn t enough, and you already deleted v1, you could run the patch in reverse from the v2 directory, patch -R < diff-v1v2, reverting version 2 back to version 1. If you were at version 4, you could even conceivably run a sequence of diffs to move further back in time: cd v4 patch R < diff v3v4 patch R < diff v2v3 patch R < diff v1v2 I say conceivably because maintaining a sequence of diffs like this is tedious and error-prone. Thus, the revision control system, which will make and track the diffs for you. 2 Git s Objects Git is a C program like any other, and is based on a small set of objects. The key object is the commit object, which is akin to a unified diff file. Given a previous commit object and some changes from that baseline, a new commit object encapsulates the information. It gets some support from the index, which is a list of the changes registered since the last commit object, the primary use of which will be in generating the next commit object. The commit objects link together to form a tree much like any other tree. Each commit object will have (at least) one parent commit object. Stepping up and down the tree is akin to using patch and patch -R to step among versions. The repository itself is not formally a single object in the Git source code, but I think of it as an object, because the usual operations one would define, such as new, copy, and free, apply to the entire repository. Get a new repository in the directory you are working in via: git init 3

4 OK, you now have a revision control system in place. You might not see it, because Git stores all its files in a directory named.git, where the dot means that all the usual utilities like ls will take it to be hidden. You can look for it via, e.g., ls -a or via a show hidden files option in your favorite file manager. Alternatively, copy a repository via git clone. This is how you would get a project from Savannah or Github. To get the source code for Git using git: git clone The reader may also be interested in cloning the repository with the examples for this book: git clone k/21st Century Examples.git If you want to test something on a repository in /myrepo and are worried that you might break something, go to a temp directory (say mkdir /tmp; cd /tmp), clone your repository with git clone /myrepo, and experiment away. Deleting the clone when done (rm -rf /tmp/myrepo) has no effect on the original. Given that all the data about a repository is in the.git subdirectory of your project directory, the analog to freeing a repository is simple: rm rf.git Having the whole repository so self-contained means that you can make spare copies to shunt between home and work, copy everything to a temp directory for a quick experiment, and so on, without much hassle. We re almost ready to generate some commit objects, but because they summarize diffs since the starting point or a prior commit, we re going to have to have on hand some diffs to commit. The index (Git source: struct index_state) is a list of changes that are to be bundled into the next commit. It exists because we don t actually want every change in the project directory to be recorded. For example, gnomes.c and gnomes.h will beget gnomes.o and the executable gnomes. Your RCS should track gnomes.c and gnomes.h and let the others regenerate as needed. So the key operation with the index is adding elements to its list of changes. Use: git add gnomes.c gnomes.h to add these files to the index. Other typical changes to the list of files tracked also need to be recorded in the index: git add newfile git rm oldfile git mv flie file Changes you made to files that are already tracked by Git are not automatically added to the index, which might be a surprise to users of other RCSes (but see below). Add each individually via git add changedfile, or use: git add u to add to the index changes to all the files Git already tracks. At some point you have enough changes listed in the index that they should be recorded as a commit object in the repository. Generate a new commit object via: 4

5 git commit a m here is an initial commit. The -m flag attaches a message to the revision, which you ll read when you run git log later on. If you omit the message, then Git will start the text editor specified in the environment variable EDITOR so you can enter it (the default editor is typically vi; export that variable in your shell s startup script, e.g.,.bashrc or.zshrc, if you want something different). The -a flag tells Git that there are good odds that I forgot to run git add -u, so please run it just before committing. In practice, this means that you never have to run git add -u explicitly, as long as you always remember the -a flag in git commit -a. A warning: It is easy to find Git experts who are concerned with generating a coherent, clean narrative from their commits. Instead of commit messages like added an index object, plus some bug fixes along the way, an expert Git author would create two commits, one with the message added an index object and one with bug fixes. These authors have such control because nothing is added to the index by default, so they can add only enough to express one precise change in the code, write the index to a commit object, then add a new set of items to a clean index to generate the next commit object. I found one blogger who took several pages to describe his commit routine: For the most complicated cases, I will print out the diffs, read them over, and mark them up in six colors of highlighter... However, until you become a Git expert, this will be much more control over the index than you really need or want. That is, not using -a with git commit is an advanced use that many people never bother with. In a perfect world, the -a would be the default, but it isn t, so don t forget it. Calling git commit -a writes a new commit object to the repository based on all the changes the index was able to track, and clears the index. Having saved your work, you can now continue to add more. Further and this is the real, major benefit of revision control so far you can delete whatever you want, confident that it can be recovered if you need it back. Don t clutter up the code with large blocks of commented-out obsolete routines delete! A useful tip: After you commit, you will almost certainly slap your forehead and realize something you forgot. Instead of performing another commit, you can run git commit --amend -a to redo your last commit. An aside: Diff/Snapshot Duality Physicists sometimes prefer to think of light as a wave and sometimes as a particle; similarly, a commit object is sometimes best thought of as a complete snapshot of the project at a moment in time and sometimes as a diff from its parent. From either perspective, it includes a record of the author, the name of the object (as we ll see later), the message you attached via the -m flag, and (unless it is the initial commit) a pointer to the parent commit object(s). Internally, is a commit a diff or a snapshot? It could be either or both. There was once a time when Git always stored a snapshot, unless you ran git gc (garbage collect) to compress the set of snapshots into a set of deltas (aka diffs). Users complained about having to remember to run git gc, so it now runs automatically after certain commands, meaning that Git is probably (but by no means always) storing diffs. [end aside] 5

6 Having generated a commit object, your interactions with it will mostly consist of looking at its contents. You ll use git diff to see the diffs that are the core of the commit object and git log to see the metadata. The key metadata is the name of the object, which is assigned via an unpleasant but sensible naming convention: the SHA1 hash, a 40-digit hexadecimal number that can be assigned to an object, in a manner that lets us assume that no two objects will have the same hash, and that the same object will have the same name in every copy of the repository. When you commit your files, you ll see the first few digits of the hash on the screen, and you can run git log to see the list of commit objects in the history of the current commit object, listed by their hash and the human-language message you wrote when you did the commit (and see git help log for the other available metadata). Fortunately, you need only as much of the hash as will uniquely identify your commit. So if you look at the log and decide that you want to check out revision number fe9c49cddac5150dc974de1f7248a1c5e3b33e89, you can do so with: git checkout fe9c4 This does the sort of time-travel via diffs that patch almost provided, rewinding to the state of the project at commit fe9c4. Because a given commit only has pointers to its parents, not its children, when you check git log after checking out an old commit, you will see the trace of objects that led up to this commit, but not later commits. The rarely used git reflog will show you the full list of commit objects the repository knows about, but the easier means of jumping back to the most current version of the project is via a tag, a humanfriendly name that you won t have to look up in the log. Tags are maintained as separate objects in the repository and hold a pointer to a commit object being tagged. The most frequently used tag is master, which refers to the last commit object on the master branch (which, because we haven t covered branching yet, is probably the only branch you have). Thus, to return from back in time to the latest state, use: git checkout master Getting back to git diff, it shows what changes you have made since the last committed revision. The output is what would be written to the next commit object via git commit -a. As with the output from the plain diff program, git diff > diffs will write to a file that may be more legible in your colorized text editor. Without arguments, git diff shows the diff between the index and what is in the project directory; if you haven t added anything to the index yet, this will be every change since the last commit. With one commit object name, git diff shows the sequence of changes between that commit and what is in the project directory. With two names, it shows the sequence of changes from one commit to the other: git diff #Show the diffs between the working directory and the index. git diff staged #Show the diffs between the index and the previous commit. git diff 234e2a #Show the diffs between the working directory and the given commit object. git diff 234e2a 8b90ac #Show the changes from one commit object to another. A useful tip: There are a few naming conveniences to save you some hexadecimal. The name HEAD refers to the last checked-out commit. This is usually the tip of a branch; when it isn t, git error messages will refer to this as a detached HEAD. 6

7 Append 1 to a name to refer to the named commit s parent, 2 to refer to its grandparent, and so on. Thus, all of the following are valid: git diff HEAD 4 #Compare the working directory to four commits ago. git checkout master 1 #Check out the predecessor to the head of the master branch. git checkout master #Shorthand for the same. git diff b0897 b8097 #See what changed in commit b8097. At this point, you know how to: Save frequent incremental revisions of your project. Get a log of your committed revisions. Find out what you changed or added recently. Check out earlier versions so that you can recover earlier work if needed. Having a backup system organized enough that you can delete code with confidence and recover as needed will already make you a better writer. 2.1 The Stash Commit objects are the reference points from which most Git activity occurs. For example, Git prefers to apply patches relative to a commit, and you can jump to any commit, but if you jump away from a working directory that does not match a commit you have no way to jump back. When there are uncommitted changes in the current working directory, Git will warn you that you are not at a commit and will typically refuse to perform the operation you asked it to do. One way to go back to a commit would be to write down all the work you had done since the last commit, revert your project to the last commit, execute the operation, then redo the saved work after you are finished jumping or patching. Thus we employ the stash, a special commit object mostly equivalent to what you would get from git commit -a, but with a few special features, such as retaining all the untracked junk in your working directory. Here is the typical procedure: git stash # Code is now as it was at last checkin. git checkout fe9c4 # Look around here. git checkout {\em \verb@master@} # Or whatever commit you had started with # Code is now as it was at last checkin, so replay stashed diffs with: git stash pop Another sometimes-appropriate alternative for checking out given changes in your working directory is git reset --hard, which takes the working directory back to the state it was in when you last checked out. The command sounds severe because it is: you are about to throw away all work you have done since the last checkout. 7

8 3 Trees and Their Branches There is one tree in a repository, which got generated when the first author of a new repository ran git init. You are probably familiar with tree data structures, consisting of a set of nodes, where each node has links to some number of children and a link to a parent (and in exotic trees like Git s, possibly several parents). Indeed, all commit objects but the initial one have a parent, and the object records the diffs between itself and the parent commit. The terminal node in the sequence, the tip of the branch, is tagged with a branch name. For our purposes, there is a one-toone correspondence between branch tips and the series of diffs that led to that branch. The one-to-one correspondence means we can interchangeably refer to branches and the commit object at the tip of the branch. Thus, if the tip of the master branch is commit 234a3d, then git checkout master and git checkout 234a3d are entirely equivalent (until a new commit gets written, and that takes on the master label). It also means that the list of commit objects on a branch can be rederived at any time by starting at the commit at the named tip and tracing back to the origin of the tree. The typical custom is to keep the master branch fully functional at all times. When you want to add a new feature or try a new thread of inquiry, create a new branch for it. When the branch is fully functioning, you will be able to merge the new feature back into the master using the methods to follow. There are two ways to create a new branch splitting off from the present state of your project: git branch newleaf # Create a new branch... git checkout newleaf # then check out the branch you just created. # Or execute both steps at once with the equivalent: git checkout b newleaf Having created the new branch, switch between the tips of the two branches via git checkout master and git checkout {\em newleaf}. What branch are you on right now? Find out with: git branch which will list all branches and put a * by the one that is currently active. What would happen if you were to build a time machine, go back to before you were born, and kill your parents? If we learned anything from science fiction, it s that if we change history, the present doesn t change, but a new alternate history splinters off. So if you check out an old version, make changes, and check in a new commit object with your newly made changes, then you now have a new branch distinct from the master branch. You will find via git branch that when the past forks like this, you will be on (no branch). Untagged branches tend to create problems, so if ever you find that you are doing work on (no branch), then run git branch -m new_branch_name to name the branch to which you ve just splintered. Sidebar: Visual Aids There are several graphical interfaces to be had, which are especially useful when tracing how branches diverged and merged. Try gitk or 8

9 git gui for Tk-based GUIs, tig for a console (curses) based GUI, or git instaweb to start a web server that you can interact with in your browser, or ask your package manager or Internet search engine for several more. 3.1 Merging So far, we have generated new commit objects by starting with a commit object as a starting point and applying a list of diffs from the index. A branch is also a series of diffs, so given an arbitrary commit object and a list of diffs from a branch, we should be able to create a new commit object in which the branch s diffs are applied to the existing commit object. This is a merge. To merge all the changes that occurred over the course of newleaf back into master, switch to master and use git merge: git checkout master git merge newleaf For example, you have used a branch off of master to develop a new feature, and it finally passes all tests; then applying all the diffs from the development branch to master would create a new commit object with the new feature soundly in place. Let us say that, while working on the new feature, you never checked out master and so made no changes to it. Then applying the sequence of diffs from the other branch would simply be a fast replay of all of the changes recorded in each commit object in the branch, which Git calls a fast-forward. But if you made any changes to master, then this is no longer a simple question of a fast application of all of the diffs. For example, say that at the point where the branch split off, gnomes.c had: short int height inches; In master, you removed the derogatory type: int height inches; The purpose of newleaf was to convert to metric: short int height cm; At this point, Git is stymied. Knowing how to combine these lines requires knowing what you as a human intended. Git s solution is to modify your text file to include both versions, something like: <<<<<<< HEAD int height inches; ======= short int height cm; >>>>>>> 3c3c3c The merge is put on hold, waiting for you to edit the file to express the change you would like to see. In this case, you would probably reduce the five-line chunk Git left in the text file to: int height cm; 9

10 Here is the procedure for committing merges in a non-fast-forward, meaning that there have been changes in both branches since they diverged: Run git merge other_branch. In all likelihood, get told that there are conflicts you have to resolve. Check the list of unmerged files using git status. Pick a file to manually check on. Open it in a text editor and find the merge-me marks if it is a content conflict. If it s a filename or file position conflict, move the file into place. Run git add your_now_fixed_file. Repeat steps 3 5 until all unmerged files are checked in. Run git commit to finalize the merge. Take comfort in all this manual work. Git is conservative in merging and won t automatically do anything that could, under some storyline, cause you to lose work. When you are done with the merge, all of the relevant diffs that occurred in the side branch are represented in the final commit object of the merged-to branch, so the custom is to delete the side branch: git delete other branch The other_branch tag is deleted, but the commit objects that led up to it are still in the repository for your reference. 4 The Rebase Say you have a main branch and split off a testing branch from it on Monday. Then on Tuesday through Thursday, you make extensive changes to both the main and testing branch. On Friday, when you try to merge the test branch back into the main, you have an overwhelming number of little conflicts to resolve. Let s start the week over. You split the testing branch off from the main branch on Monday, meaning that the last commits on both branches share a common ancestor of Monday s commit on the main branch. On Tuesday, you have a new commit on the main branch; let it be commit abcd123. At the end of the day, you replay all the diffs that occurred on the main branch onto the testing branch: git branch testing # get on the testing branch git rebase abcd123 # or equivalently: git rebase main With the rebase command, all the changes made on the main branch since the common ancestor are replayed on the testing branch. You might need to manually merge things, but by only having one day s work to merge, we can hope that the task of merging is more manageable. Now that all changes up to abcd123 are present in both branches, it is as if the branches had actually split off from that commit, rather than Monday s commit. This is where the name of the procedure comes from: the testing branch has been rebased to split off from a new point on the main branch. 10

11 You also perform rebases at the end of Wednesday, Thursday, and Friday, and each of them is reasonably painless, as the testing branch kept up with the changes on the main branch throughout the week. Rebases are often cast as an advanced use of Git, because other systems that aren t as capable with diff application don t have this technique. But in practice rebasing and merging are about on equal footing: both apply diffs from another branch to produce a commit, and the only question is whether you are tying together the ends of two branches (in which case, merge) or want both branches to continue their separate lives for a while longer (in which case, rebase). The typical usage is to rebase the diffs from the master into the side branch, and merge the diffs from the side branch into the master, so there is a symmetry between the two in practice. And as noted, letting diffs pile up on multiple branches can make the final merge a pain, so it is good form to rebase reasonably often. 5 Remote Repositories Everything to this point has been occurring within one tree. If you cloned a repository from elsewhere, then at the moment of cloning, you and the origin both have identical trees with identical commit objects. However, you and your colleagues will continue working, so you will all be adding new and different commit objects. Your repository has a list of remotes, which are pointers to other repositories related to this one elsewhere in the world. If you got your repository via git clone, then the repository from which you cloned is named origin as far as the new repository is concerned. In the typical case, this is the only remote you will ever use. When you first clone and run git branch, you ll see one lonely branch, regardless of how many branches the origin repository had. But run git branch -a to see all the branches that Git knows about, and you will see those in the remote as well as the local ones. If you cloned a repository from Github, et al, you can use this to check whether other authors had pushed other branches to the central repository. Those copies of the branches in your local repository are as of the first time you pulled. Next week, to update those remote branches with the information from the origin repository, run git fetch. Now that you have up-to-date copies of the remote branches in your repository, you could merge one with the local branch you are working on using the full name of the remote branch, for example, git merge remotes/origin/master. Instead of the two-step git fetch; git merge remotes/origin/master, you can update the branch via git pull origin master which fetches the remote changes and merges them into your current repository all at once. The converse is push, which you ll use to update the remote repository with your last commit (not the state of your index or working directory). If you are working on a branch named bbranch and want to push to the remote with the same name, use: git push origin bbranch 11

12 There are good odds that when you push your changes, applying the diffs from your branch to the remote branch will not be a fast-forward (if it is, then your colleagues haven t been doing any work). Resolving a non-fast-forward merge typically requires human intervention, and there is probably not a human at the remote. Thus, Git will allow only fast-forward pushes. How can you guarantee that your push is a fast-forward? Run git pull origin bbranch to get the changes made since your last pull. Merge as seen earlier, wherein you as a human resolve those changes a computer cannot. Run git commit -a -m "dealt with merges". Run git push origin bbranch, because now Git only has to apply a single diff, which can be done automatically. To this point, I have assumed that you are on a local branch with the same name as the remote branch (probably master on both sides). If you are crossing names, give a colon-separated pair of source:destination branch names. git fetch origin new changes:master #Merge remote new changes into local master git push origin my fixes:version2 #Merge the local branch into a differently named remote. git push origin :prune me #Delete a remote branch. git fetch origin new changes: #Pull to no branch; create a commit named FETCH HEAD. None of these operations change your current branch, but some create a new branch that you can switch to via the usual git checkout. Sidebar: The Central Repository Despite all the discussion of decentralization, the easiest setup for sharing is still to have a central repository that everybody clones, meaning that everybody has the same origin repository. This is how downloading from Github and Savannah typically works. When setting up a repository for this sort of thing, use git init --bare, which means that nobody can actually do work in that directory, and users will have to clone to do anything at all. There are also some permissions flags that come in handy, such as --shared=group to allow all members of a POSIX group to read and write to the repository. You can t push to a branch in a nonbare remote repository that the repository owner has checked out; doing so will cause chaos. If this happens, ask your colleague to git branch to a different branch, then push while the target branch is in the background. Or, your colleague can set up a public bare repository and a private working repository. You push to the public repository, and your colleague pulls the changes to his or her working repository when convenient. [end sidebar] The structure of a Git repository is not especially complex: there are commit objects representing the changes since the parent commit object, organized into a tree, with an index gathering together the changes to be made in the next commit. But with these elements, you can organize multiple versions of your work, confidently delete things, create experimental branches and merge them back to the main thread when 12

13 they pass all their tests, and merge your colleagues work with your own. From there, git help and your favorite Internet search engine will teach you many more tricks and ways to do these things more smoothly. 13

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

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

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

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

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

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

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

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

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

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

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. 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

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

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

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! 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 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

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

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 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

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

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

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

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

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

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

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

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

Two Best Practices for Scientific Computing

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,

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

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

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

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

Hypercosm. Studio. www.hypercosm.com

Hypercosm. Studio. www.hypercosm.com Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks

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

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

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

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 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

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 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

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

So you want to create an Email a Friend action

So you want to create an Email a Friend action So you want to create an Email a Friend action This help file will take you through all the steps on how to create a simple and effective email a friend action. It doesn t cover the advanced features;

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

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

Using SVN to Manage Source RTL

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.

More information

Palantir.net presents Git

Palantir.net presents Git Palantir.net presents Git Branching, Merging, Commits, and Tagging: Basics and Best Practices Git Started This assumes you already have a repo. Instructions for that are already on Github. Branching BRANCHING

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

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

Source Code Management/Version Control

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

More information

Subversion Integration for Visual Studio

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

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

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

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

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

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

DO MORE WITH YOUR HOME PHONE

DO MORE WITH YOUR HOME PHONE CALL 13 2200 VISIT A TELSTRA STORE telstra.com/homephone HOME FEATURES USER GUIDE DO MORE WITH YOUR HOME PHONE C020 JAN13 XXXXXXXX PHONE FEATURES THAT MAKE LIFE EASIER Our home features make it easy for

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

5 Group Policy Management Capabilities You re Missing

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

More information

WORKING IN TEAMS WITH CASECOMPLETE AND MICROSOFT VISUAL SOURCE SAFE. Contents

WORKING IN TEAMS WITH CASECOMPLETE AND MICROSOFT VISUAL SOURCE SAFE. Contents WORKING IN TEAMS WITH CASECOMPLETE AND MICROSOFT VISUAL SOURCE SAFE Contents Working in Teams with CaseComplete... 2 Need an introduction to how version control works?... 2 Exclusive Checkout... 3 Multiple

More information

Ayear ago, I wrote an article entitled

Ayear ago, I wrote an article entitled by Peter Collinson, Hillside Systems MICHELLE FRIESENHAHN WILBY Customizing CDE Ayear ago, I wrote an article entitled The Common Desktop Environment (June 1996, Page 22) in which I discussed the basics

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

Git - Working with Remote Repositories

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

More information

Local Version Control (sccs, rcs)

Local Version Control (sccs, rcs) Steven J Zeil February 21, 2013 Contents 1 History 2 2 Exploration 5 3 Collaboration 7 4 Strengths and Weaknesses 8 1 Localized Version Control The earliest version control systems in wide use were sccs

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

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

Chapter 3 ADDRESS BOOK, CONTACTS, AND DISTRIBUTION LISTS

Chapter 3 ADDRESS BOOK, CONTACTS, AND DISTRIBUTION LISTS Chapter 3 ADDRESS BOOK, CONTACTS, AND DISTRIBUTION LISTS 03Archer.indd 71 8/4/05 9:13:59 AM Address Book 3.1 What Is the Address Book The Address Book in Outlook is actually a collection of address books

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

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 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

In the same spirit, our QuickBooks 2008 Software Installation Guide has been completely revised as well.

In the same spirit, our QuickBooks 2008 Software Installation Guide has been completely revised as well. QuickBooks 2008 Software Installation Guide Welcome 3/25/09; Ver. IMD-2.1 This guide is designed to support users installing QuickBooks: Pro or Premier 2008 financial accounting software, especially in

More information

Using SVN to Manage Source RTL

Using SVN to Manage Source RTL Using SVN to Manage Source RTL CS250 Tutorial 1 (Version 083010a) August 30, 2010 Yunsup Lee In this tutorial you will gain experience using the Subversion (SVN) to manage your source RTL and code. You

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

Setting Up a CLucene and PostgreSQL Federation

Setting Up a CLucene and PostgreSQL Federation Federated Desktop and File Server Search with libferris Ben Martin Abstract How to federate CLucene personal document indexes with PostgreSQL/TSearch2. The libferris project has two major goals: mounting

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

WORKING IN TEAMS WITH CASECOMPLETE AND ACCUREV. Contents

WORKING IN TEAMS WITH CASECOMPLETE AND ACCUREV. Contents WORKING IN TEAMS WITH CASECOMPLETE AND ACCUREV Contents Working in Teams with CaseComplete... 2 Need an introduction to how version control works?... 2 Exclusive Checkout... 3 Multiple Checkout... 3 Merge

More information

Microsoft Office Access 2007 Training

Microsoft Office Access 2007 Training Mississippi College presents: Microsoft Office Access 2007 Training Course contents Overview: Fast, easy, simple Lesson 1: A new beginning Lesson 2: OK, back to work Lesson 3: Save your files in the format

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

WORKING WITH YOUTUBE CAPTIONS

WORKING WITH YOUTUBE CAPTIONS D O N N K I N G Speak for your life! WORKING WITH YOUTUBE CAPTIONS BY DONN KING Pellissippi State Community College Knoxville, TN dking@pstcc.edu 865-694-6698 This work is licensed under the Creative Commons

More information

CEFNS Web Hosting a Guide for CS212

CEFNS Web Hosting a Guide for CS212 CEFNS Web Hosting a Guide for CS212 INTRODUCTION: TOOLS: In CS212, you will be learning the basics of web development. Therefore, you want to keep your tools to a minimum so that you understand how things

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

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

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

Copyright 2010 You have giveaway rights to this report. Feel free to share.

Copyright 2010 You have giveaway rights to this report. Feel free to share. Article Marketing Magic Copyright 2010 You have giveaway rights to this report. Feel free to share. Table of Contents What Is Article Marketing?...3 The History of Article Marketing...7 Article Marketing

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

ECE 4750 Computer Architecture, Fall 2015 Tutorial 2: Git Distributed Version Control System

ECE 4750 Computer Architecture, Fall 2015 Tutorial 2: Git Distributed Version Control System School of Electrical and Computer Engineering Cornell University revision: 2015-09-08-11-01 1 Introduction 2 2 Setting up Your GitHub Account 2 3 Git and GitHub 3 3.1 Single-User Workflow.....................................

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

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

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

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

More information

using version control in system administration

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.

More information

How to get the most out of Windows 10 File Explorer

How to get the most out of Windows 10 File Explorer How to get the most out of Windows 10 File Explorer 2 Contents 04 The File Explorer Ribbon: A handy tool (once you get used to it) 08 Gain a new perspective with the Group By command 13 Zero in on the

More information

ELECTRONIC CHILD CARE (ECC) PARENT TRAINING SCRIPT FOR CCR&R PROVIDERS

ELECTRONIC CHILD CARE (ECC) PARENT TRAINING SCRIPT FOR CCR&R PROVIDERS ELECTRONIC CHILD CARE (ECC) PARENT TRAINING SCRIPT FOR CCR&R PROVIDERS Introductory remarks I would like to welcome all of you to today s E-Child Care training session. My name is [insert name] and I work

More information

Version Control with Mercurial and SSH

Version Control with Mercurial and SSH Version Control with Mercurial and SSH Lasse Kliemann lki@informatik.uni-kiel.de Vorkurs Informatik 2010 Wishlist While working on a project, it is nice to... be able to switch back to older versions of

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

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

BUSINESSLINE FEATURES USER GUIDE. Do more with your business phone

BUSINESSLINE FEATURES USER GUIDE. Do more with your business phone BUSINESSLINE FEATURES USER GUIDE Do more with your business phone WELCOME TO TELSTRA BUSINESSLINE FEATURES Telstra BusinessLine Features are the smart way to manage your calls and stay connected to your

More information

Lab 2 : Basic File Server. Introduction

Lab 2 : Basic File Server. Introduction Lab 2 : Basic File Server Introduction In this lab, you will start your file system implementation by getting the following FUSE operations to work: CREATE/MKNOD, LOOKUP, and READDIR SETATTR, WRITE and

More information

Budget Main Window (Single Bank Account) Budget Main Window (Multiple Bank Accounts)

Budget Main Window (Single Bank Account) Budget Main Window (Multiple Bank Accounts) Budget Main Window (Single Bank Account) Budget Main Window (Multiple Bank Accounts) Page 1 of 136 Using Budget Help Budget has extensive help features. To get help use Budget's Help > Budget Help menu

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