Lin Wang September 7, 2020 Tutorial 2: Version Control And

Total Page:16

File Type:pdf, Size:1020Kb

Lin Wang September 7, 2020 Tutorial 2: Version Control And Introduction to Computer Science Tutorial 2: version control and git Lin Wang September 7, 2020 Attention Please log into Zoom via Canvas so that your real name (not your nickname) is always shown Please use the Chat function sparingly ■ Respect each other, use the Chat to help each other ■ Any form of abuse will not be tolerated ■ Do not post any irrelevant content on the Chat (We monitor the use of Chat and we will look into violations) 2 Recap: Linux and shell Navigate the filesystem: Redirection pwd: print working directory cat: concatenate files cd: change directory sort: sort records ls: list directory contents less/more: navigating through file uniq: remove duplicates from sorted list Manipulate files/directories grep: match on text patterns cp: copy files and directories mv: move/rename files/directories Misc rm: remove files and directories echo: print text mkdir: create directories *: wildcard referring to all touch: create files ?: wildcard referring to a single character Tip: learning by doing! 3 Week 1 quizzes Question 1: Which of the following commands is used to print the current working directory? ❌ cd ❌ ls ✅ pwd ❌ man Question 2: If the current working directory is workspace/dir1/dir2, which of the following commands will navigate to the workspace/ directory? ❌ cd .. ❌ cd workspace ❌ cd ../../.. ✅ cd ../.. 4 Week 1 quizzes Question 3: Which of the following statements is true about the two commands? (a) cp dir1// dir2 (b) cp -r dir1// dir2 ✅ After running command (a), the directory dir2 contains the files from the directory dir1 but not the directories. However, after running command (b), the directory dir2 does contain all files and directories from the directory dir1. ❌ Command (a) is not valid since copying contents from directories requires using the '-r' option, to copy the contents of the directory recursively. ❌ After running command (a) the directory dir2 is a subdirectory of the directory dir1, whereas after running command (b) both directories are at the same directory level. ❌ Both commands copy the contents of directory dir1 to directory dir2. If directory dir2 does not exist, it is created and then the contents of dir1 are copied to the newly created directory dir2. 5 Week 1 quizzes Question 4: Which of the following statements is true about the three commands below? (a) mv dir1 dir2 (b) mv dir1// dir2 (c) mv -r dir1// dir2 ✅ In the case where the directory dir2 does not exist, command (a) is executed successfully but command (b) fails. ❌ When running command (a), if the directory dir2 exists then it is overwritten with the contents of the directory dir1. ❌ Before running command (a) the directories dir1 and dir2 are at the same directory level, and after execution, dir2 is a subdirectory of dir1. ❌ Before running command (b) the directories dir1 and dir2 are at the same directory level, and after execution, dir1 is a subdirectory of dir2. 6 Week 1 quizzes Question 4: Which of the following statements is true about the three commands below? (a) mv dir1 dir2 (b) mv dir1// dir2 (c) mv -r dir1// dir2 ❌ The first command renames the directory dir1 to dir2. If dir2 does not exist, it is first created and then the contents of dir1 are moved to the newly created directory dir2. ❌ After running command (b), the directory dir2 contains the files from the directory dir1 but not the directories. However, after running command (c), the directory dir2 does contain all files and directories from the directory dir1. 7 Week 1 quizzes Question 5: What does the command below do? cp foo[123] dir1 ❌ The command copies all files starting with either foo1, foo2, or foo3 to a directory named dir1. ✅ The command copies a file named foo[123] to a directory named dir1. ❌ The command copies one of the files foo1, foo2, or foo3 to a directory named dir1. ✅ The command copies several files named foo1, foo2, foo3 to a directory named dir1. See more about shell globbing: https://linux-training.be/funhtml/ch17.html 8 Week 1 quizzes Question 6: Which of the following commands will fail to execute? ❌ cp file1 ~ ✅ mv -r dir1// dir2 ❌ cp *.txt dir1 ✅ cp dir1 dir2 9 Week 1 quizzes Question 7: Which of the following statements are true about the four commands below? (a) cp dir1//.cpp dir2 (b) grep -n cin file1.cpp (c) cat file1 file2 >> file3 (d) echo [0-9]* ✅ Command (b) lists the lines that contain the string "cin", along with the line number they were found on. ✅ Command (d) lists all the files and directories whose names start with digits. ✅ Command (a) copies all files ending with ".cpp" in the directory dir1 to the directory dir2. ❌ Command (c) redirects the contents of file1 and file2 into the file file3. If file3 does not exist, it will be created; if file3 already exists, it will be overwritten. 10 Version control Source: SXSW Hackathon Imagine you work in a team where all of you contribute to a complex code base. This is very likely to happen in your later coursework. 11 Talking about complex code bases... Line of code in Linux kernel Linux in code of Line Time https://commons.wikimedia.org/wiki/File:Lines_of_Code_Linux_Kernel.svg 12 Version control How would you organize the shared code base and work separately without the hassle of code conflicts? You need a version control system (VCS)! It helps with the following 5 Ws: ■ What changes were made? ■ Where the changes were applied? ■ Who made the changes? ■ When the changes were made? VCS ■ Why the changes were needed? Source: SXSW Hackathon 13 Centralized version control A single server holds the code base. Clients access the server by means of check-in/check-outs Examples: ■ Concurrent Versions System (CVS) ■ Subversion (SVN) ■ Visual Source Safe Advantages: easy to maintain a single server Disadvantages: single point of failure 14 Distributed version control Each client holds a complete copy of the code base. Code is shared between clients by push/ pulls. Examples: ■ Git ■ BitKeeper ■ GNU arch Advantages: cheaper operations, no single point of failure Disadvantages: a bit more complicated! Do not worry, we are going to learn it now. 15 ■ 2002 - April 2005: Linux kernel was hosted on BitKeeper ■ April 2005: The copyright holder of BitKeeper withdrew free use of the product due to reverse engineering claims ■ April 3, 2005: Linus Torvalds (creator of the Linux kernel) began developing Git ■ April 5, 2005: Linus Torvalds announced the Git project and it became self-hosting on the second day ■ April 18, 2005: First merge of multiple branches took place ■ June 16, 2005: Linux kernel 2.6.12 was managed by Git ■ December 21, 2005: version 1.0 was released ■ By 2018: around 87% developers were using Git TED: The mind behind Linux 16 Configure your Git client Install Git ■ Linux/WLS: sudo apt install git ■ macOS: brew install git Configure your information ■ git config --global user.name "John Doe" ■ git config --global user.email [email protected] 17 Repository Create a new repository Client Server Option 2: git clone https://path/to/repository Repository Repository Option 1: git init git clone https://github.com/imlinwang/introcs-example.git git clone [email protected]:imlinwang/introcs-example.git (readonly) 18 Repository The three stages in Git workspace staging local remote add/remove commit reset push reset diff clone/pull 19 Commit Add and commit a file to a Git repository # create a new file touch newfile.txt workspace staging local # add some content echo "Some text" > newfile.txt # add to the staging env git add newfile.txt add/remove # check status commit git status # commit the changes git commit -m "First commit" # check status git status 20 Branch Allows you to move back and forth between status of a project You can create a new "feature" branch to work on a new feature without affecting the main branch of the project. At the end, you can merge the feature branch into the main branch. 21 Branch Create a new branch and merge it with the master branch # create a new branch and check out to it git checkout -b feature # create a new branch git brach feature # check all branches and current branch git branch # check out to the branch master git checkout master # merge the feature branch with the master git merge feature # delete a branch git branch -d feature 22 GitHub A platform for hosting project repositories workspace staging local remote add/remove commit reset push diff clone/pull 23 GitHub Local-remote interactions # clone a remote repository git clone [email protected]/path/to/repo remote # pull remote changes git pull # add a remote named origin git remote add origin path/to/remote # verify remote push git remote -v # push local commits to remote branch master git push origin master clone/pull 24 GitHub Set up a new GitHub repository and make changes 25 GitHub Issue pull requests 26 GitHub Confirm pull requests 27 GitHub Merge pull requests 28 References Check the following links if you want to learn more about Git ■ Git Pro: https://git-scm.com/book/en/v2 ■ Git Cheat-Sheet: https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf ■ Git Magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html ■ Oh Shit, Git!?!: https://ohshitgit.com/ ■ Git for Computer Scientists: https://eagain.net/articles/git-for-computer- scientists/ ■ Learn Git Branching: https://learngitbranching.js.org/ ■ MIT Git Tutorial: https://missing.csail.mit.edu/2020/version-control/ 29.
Recommended publications
  • Distributed Configuration Management: Mercurial CSCI 5828 Spring 2012 Mark Grebe Configuration Management
    Distributed Configuration Management: Mercurial CSCI 5828 Spring 2012 Mark Grebe Configuration Management Configuration Management (CM) systems are used to store code and other artifacts in Software Engineering projects. Since the early 70’s, there has been a progression of CM systems used for Software CM, starting with SCCS, and continuing through RCS, CVS, and Subversion. All of these systems used a single, centralized repository structure. Distributed Configuration Management As opposed to traditional CM systems, Distributed Configuration Management Systems are ones where there does not have to be a central repository. Each developer has a copy of the entire repository and history. A central repository may be optionally used, but it is equal to all of the other developer repositories. Advantages of Distributed Configuration Management Distributed tools are faster than centralized ones since metadata is stored locally. Can use tool to manage changes locally while not connected to the network where server resides. Scales more easily, since all of the load is not on a central server. Allows private work that is controlled, but not released to the larger community. Distributed systems are normally designed to make merges easy, since they are done more often. Mercurial Introduction Mercurial is a cross-platform, distributed configuration management application. In runs on most modern OS platforms, including Windows, Linux, Solaris, FreeBSD, and Mac OSX. Mercurial is written 95% in Python, with the remainder written in C for speed. Mercurial is available as a command line tool on all of the platforms, and with GUI support programs on many of the platforms. Mercurial is customizable with extensions, hooks, and output templates.
    [Show full text]
  • New York Software Symposium New York Information Technology Center June 24 - 25, 2011
    New York Software Symposium New York Information Technology Center June 24 - 25, 2011 Fri, Jun. 24, 2011 Room 2 Room 3 Room 4 Room 5 Room 6 8:00 - 9:00 AM REGISTRATION/BREAKFAST/WELCOME 9:00 - 10:30 AM Slimmed Down Software: Busy Java Developer's Sonar: Code Quality Programming HTML5 Concurrency without A Lean Approach Guide to Java 7 Metrics Made Easy Tim Berglund pain in pure Java Hamlet D`Arcy Ted Neward Matthew McCullough Venkat Subramaniam 10:30 - 11:00 AM BREAK 11:00 - 12:30 PM New Ideas for Old Code Busy Java Developer's Open Source Debugging NoSQL Smackdown! Collections for Concurrency Hamlet D`Arcy Guide to Games Tools for Java Tim Berglund Venkat Subramaniam Ted Neward Matthew McCullough 12:30 - 2:30 PM LUNCH & KEYNOTE 2:30 - 4:00 PM Pragmatic Architecture Java Boilerplate Busters Cascading through Hadoop: A Getting Started with Grails Programming in Functional Style Ted Neward Hamlet D`Arcy DSL for Simpler MapReduce Tim Berglund Venkat Subramaniam Matthew McCullough 4:00 - 4:30 PM BREAK 4:30 - 6:00 PM How to Select and Architectural Kata Workshop Resource-Oriented Cassandra: Radical Scala for the Intrigued Adopt a Technology Ted Neward Architectures : REST I NoSQL Scalability Venkat Subramaniam Peter Bell Brian Sletten Tim Berglund New York Software Symposium New York Information Technology Center June 24 - 25, 2011 Sat, Jun. 25, 2011 Room 2 Room 3 Room 4 Room 5 Room 6 8:00 - 9:00 AM BREAKFAST 9:00 - 10:30 AM Cryptography on the Resource-Oriented Integrating JVM Languages Complexity Theory and Busy Java Developer's
    [Show full text]
  • Git Basics Git Expertise
    Overview Git basics Git expertise Git A GNU Alternative to Bitkeeper Mohamed Barakat University of Kaiserslautern ITWM Kaiserslautern, January 2010 Mohamed Barakat Git Overview Git basics Git expertise 1 Git basics The Git configuration file Create a Git-repository Using a Git-repository 2 Git expertise Branching Pulling Merging and Cherry-Picking Mohamed Barakat Git Overview The Git configuration file Git basics Create a Git-repository Git expertise Using a Git-repository Overview 1 Git basics The Git configuration file Create a Git-repository Using a Git-repository 2 Git expertise Branching Pulling Merging and Cherry-Picking Mohamed Barakat Git Overview The Git configuration file Git basics Create a Git-repository Git expertise Using a Git-repository Git working copy and Git-repsoitory Git is a distributed SCM Git is a distributed Source Code Management system (SCM), i.e. each Git working copy sits on top of its own local Git repository located in a single top-level subdirectory .git. SVN is in contrast to Git a centralized SCM system, i.e. the SVN-repository is on exactly one server. Git allows you to commit, checkout, reset, etc. without contacting a server! Mohamed Barakat Git Overview The Git configuration file Git basics Create a Git-repository Git expertise Using a Git-repository The configuration file ˜/.gitconfig Create a Git configuration file vi ˜/.gitconfig [svn] authorsfile = .git/info/svn-authors [color] diff = auto status = auto branch = auto [user] name = Firstname Lastname email = [email protected] Mohamed Barakat Git Overview The Git configuration file Git basics Create a Git-repository Git expertise Using a Git-repository Create a Git-repository (quick version) init, add, commit Create a Git-repository in the directory XY: 1 cd XY 2 git init 3 git add .
    [Show full text]
  • GIT—A Stupid Content Tracker
    GIT—A Stupid Content Tracker Junio C. Hamano Twin Sun, Inc. [email protected] Abstract The paper gives an overview of how git evolved and discusses the strengths and weaknesses of its design. Git was hurriedly hacked together by Linus Torvalds, after the Linux kernel project lost its license to use BitKeeper as its source code management system (SCM). It has since 1 Low level design quickly grown to become capable of managing the Linux kernel project source code. Other projects have started to replace their existing Git is a “stupid content tracker.” It is designed SCMs with it. to record and compare the whole tree states ef- ficiently. Unlike traditional source code control Among interesting things that it does are: systems, its data structures are not geared to- ward recording changes between revisions, but for making it efficient to retrieve the state of in- 1. giving a quick whole-tree diff, dividual revisions. 2. quick, simple, stupid-but-safe merge, The unit in git storage is an object. It records: 3. facilitating e-mail based patch exchange workflow, and • blob – the contents of a file (either the 4. helping to pin-point the change that caused contents of a regular file, or the path a particular bug by a bisection search in pointed at by a symbolic link). the development history. • tree – the contents of a directory, by recording the mapping from names to ob- The core git functionality is implemented as a jects (either a blob object or a tree object set of programs to allow higher-layer systems that represents a subdirectory).
    [Show full text]
  • Bazaar, Das DVCS
    Bazaar, das DVCS Marek Kubica 20. November 2008 Marek Kubica Bazaar, das DVCS Vorweg ein paar Infos Mit was ich so spiele Bazaar in der Arbeit Mercurial für Python-Projekte Git für den Rest Welche Spielzeuge lass ich links liegen CVS wozu noch wo es SVN gibt? SVN wozu noch wenn es DVCS gibt? darcs lohnt sich nicht mehr monotone, codeville, arch obsolete das selbsgehackte, tolle DVCS deines Nachbarn ;) Marek Kubica Bazaar, das DVCS Geschichte In the beginning, there was GNU Arch Marek Kubica Bazaar, das DVCS GNU Arch Die Anfänge von DVCS CVS stinkt, wir brauchen was besseres SVN ist Evolution, keine Revolution GNU Arch war das erste DVCS mit dem ich in Kontakt kam (larch) fürchterlich kompliziert wurde dann von tla ersetzt immer noch fürchterlich Canonical hat tla 1.2 geforkt und Bazaar, baz genannt Paralell dazu: revc = Arch 2.0 Marek Kubica Bazaar, das DVCS Baz als Rettung? Von heiÿen Kartoeln baz war in C Was passiert: Canonical ruft Bazaar-NG ins Leben, bzr, lässt baz fallen Bazaar-NG wird in Bazaar umgetauft baz ist tot, tla ist tot, larch ist tot, revc ist bedeutungslos Hurra, GNU Arch ist endlich tot, es lebe bzr! Marek Kubica Bazaar, das DVCS bzr, der Retter Was bietet Bazaar? in Python geschrieben, mit einigen Speedups in Pyrex (C) reguläre Releases (quasi jeden Monat) Einfache Bedienung Meist ausreichende Performance Umfangreiche Dokumentation: Programmmeldungen, Manpages, Wiki, IRC-Channel (wenn man Geduld hat) Flexible Einsatzmöglichkeiten (verschiedene Workows) 1 Git mit Bazaar simulieren 2 SVN in Bazaar nachbauen (für Nostalgiker) freier Hoster wo man Code hochladen kann (Launchpad) Marek Kubica Bazaar, das DVCS Zeitleiste 2005 war eine aufregende Zeit 26.
    [Show full text]
  • Collaboration Tools in Software Engineering Stepan Bolotnikov Me
    Collaboration Tools in Software Engineering Stepan Bolotnikov Me ● Stepan Bolotnikov ● Software Engineer at Guardtime ● MSc in Software Engineering from UT, 2018 ● [email protected] You Mostly BSc students in Computer Science ● Software developers / QA engineers ● CS researchers ● Project managers / team leads In any case connected to software projects, sharing knowledge and resources Course ● History and working principles of version control systems (VCS) ● Git distributed VCS ● Issue tracking ● Theoretical knowledge + practical hands-on exercises ● 8 sessions ● Every 2nd Friday ● Lecture + practice ● Non-differentiated (pass/fail) Schedule ● 22. Feb - Introduction, history of VCS ● 08. Mar - Introduction to Git, setting up the first repository, basic Git usage ● 22. Mar - Common Git commands ● 05. Apr - Branching in Git, common branching models ● 19. Apr - Troubleshooting common Git issues ● 03. May - Github; Issue tracking ● 17. May - Advanced Git usage; git hooks and CI ● 31. May - Guest lecture, preparation for exam ● 07. June - Exam 1 ● 14. June - Exam 2 Sessions ● 4h ● Lecture part ● Practical part Final exam ● 7th or 17th June ● Individual practical tasks ● “Poor”, “Satisfactory” or “Good” ● “Satisfactory” and “Good” - passing In order to pass the course ● Active participation in at least 6 out of 8 sessions ○ Complete the practical tasks ● “Satisfactory” or “Good” on the final exam Communication Course website http://courses.cs.ut.ee/2019/cse Course Slack Click Lecture 1: Introduction to course, History of Version
    [Show full text]
  • Experten-Dossier 2019
    Experten-Dossier 2019 Über 80 Seiten mit praxisorientiertem Wissen für .NET-Entwickler rund um .NET Core, Azure DevOps, TypeScript, Cosmos DB, ML.NET, Git und Azure! bastacon www.basta.net Inhalt Agile & DevOps Die DevOps-Challenge 4 DevOps-Fallstricke und wie man ihnen entkommen kann von Kevin Gerndt Microservices & APIs Warum einfach? Es geht auch komplex! 10 Entwicklung von Microservices mit Microsoft .NET von Dr. Felix Nendzig Go Git! 16 Git erobert die Entwicklerwelt von Uwe Baumann Des Kaisers neue Kleider 21 Aus VSTS wird Azure DevOps – mehr als nur ein neuer Name? von Nico Orschel und Thomas Rümmler .NET Framework & C# R. I. P .NET „Core“ 29 .NET Framework, .NET Core und Mono sind tot – lang lebe .NET 5.0! von Dr. Holger Schwichtenberg Machine Learning für die Zukunft 33 Hintergrund und Einstieg in ML mit .NET von Kevin Gerndt Architektur Kolumne: Stropek as a Service 40 Zehn Hausaufgaben für die Cloud-Architektur – Eine gute Softwarearchitektur setzt klare Ziele voraus von Rainer Stropek Große Business-Apps mit Angular meistern 43 Nachhaltige Angular-Architekturen mit Nx und Strategic Design von Manfred Steyer Inhalt Sicherheit Du kommst hier nicht rein 48 API Authorization in ASP.NET Core 3.0 mit IdentityServer von Sebastian Gingter Wasm – Ist das sicher oder kann das weg? 53 Neue Besen kehren gut, sagt man. Aber sind sie auch sicher? von Carsten Eilers HTML5 & JavaScript Das Beste aus zwei Welten 59 Mit ASP.NET Core und Angular eine Webanwendung erstellen von Fabian Gosebrink Injections für echte TypeScript-Junkies 70 Dependency
    [Show full text]
  • Everything You Need to Know About Openjdk's Move to Git and Github
    Menu Topics Archives Downloads Subscribe Everything you need to know JAVA 17 about OpenJDK’s move to Git and GitHub Everything you need to know Blame or thank BitKeeper about OpenJDK’s move to Git Why not Mercurial? and GitHub Why Git? Why GitHub? Why the move, and why now? The move from Mercurial to Git Getting the source code and provided an opportunity to consolidate building the OpenJDK the source code repositories. Conclusion by Ian Darwin Dig deeper May 14, 2021 Download a PDF of this article Have you ever built your own Java Development Kit from source? Most end users of the JDK will not need to build their own JDK from the Oracle source code. I’ve needed to do that only a few times when I was running on the OpenBSD UNIX-like system, which is not one of the three supported platforms. Sure, you might want to build your own JDK to try out a new feature that you think should be added to Java. You might choose to build from source to be sure you are running a more trustworthy binary. Having the complete source code readily available, and now in a more commonly used download format, means it is easier than ever to build your own JDK. Yes, it’s a better-documented, easily configured process than in the past. But it’s still a bit confusing. The source code for the OpenJDK recently moved from the Mercurial version control system (VCS) to the Git VCS and the GitHub repository system, and that’s probably a good thing.
    [Show full text]
  • Software Test and Performance, January 2006, Page 26
    A Publication P B RA E Un C ST it T T IC es ES ti : ng VOLUME 3 • ISSUE 1 • JANUARY 2006 • $8.95 www.stpmag.com XP’s Balanced Approach to Test Stressing Software With Open Source Tools A MMethodethod to Build Visibility Into Your DevelopmentDevelopment Process MakingMaking YourYour QAQA EEfffoforrttss FFlyly The Importance of Life Cycle Management A MESSAGE FROM THE EDITOR VOLUME 3 • ISSUE 1 • JANUARY 2006 Publisher Editorial Director Better Life Cycle Ted Bahr Alan Zeichick +1-631-421-4158 x101 +1-650-359-4763 [email protected] [email protected] Editor Director of Events Management Lindsey Vereen Donna Esposito [email protected] +1-415-785-3419 [email protected] Associate News Editor Everyone is familiar with the ground. While you Director of Circulation Alex Handy Agnes Vanek the rule of thumb that says can’t download a hard- [email protected] +1-631-421-4158 x111 at each step of the way, the ware patch, neither can [email protected] Art Director cost to fix a problem you get into a software LuAnn T. Palazzo Circulation Assistant increases tenfold, and hav- system with a wrench. [email protected] Advertising Traffic Phyllis Oakes ing to fix a problem in the And getting to the site Copy Editor +1-631-421-4158 x115 field is the most expensive. can pose a challenge. George Ellis [email protected] [email protected] (Granted, the Internet It is an unfortunate fact Office Manager/ somewhat mitigates the of life that despite lofty Contributing Editors Marketing Scott Barber Cathy Zimmermann cost of patches for de- intentions, test cycles will [email protected] [email protected] ployed software, but still, Lindsey Vereen always get truncated.
    [Show full text]
  • Software Development a Practical Approach!
    Software Development A Practical Approach! Hans-Petter Halvorsen https://www.halvorsen.blog https://halvorsen.blog Software Development A Practical Approach! Hans-Petter Halvorsen Software Development A Practical Approach! Hans-Petter Halvorsen Copyright © 2020 ISBN: 978-82-691106-0-9 Publisher Identifier: 978-82-691106 https://halvorsen.blog ii Preface The main goal with this document: • To give you an overview of what software engineering is • To take you beyond programming to engineering software What is Software Development? It is a complex process to develop modern and professional software today. This document tries to give a brief overview of Software Development. This document tries to focus on a practical approach regarding Software Development. So why do we need System Engineering? Here are some key factors: • Understand Customer Requirements o What does the customer needs (because they may not know it!) o Transform Customer requirements into working software • Planning o How do we reach our goals? o Will we finish within deadline? o Resources o What can go wrong? • Implementation o What kind of platforms and architecture should be used? o Split your work into manageable pieces iii • Quality and Performance o Make sure the software fulfills the customers’ needs We will learn how to build good (i.e. high quality) software, which includes: • Requirements Specification • Technical Design • Good User Experience (UX) • Improved Code Quality and Implementation • Testing • System Documentation • User Documentation • etc. You will find additional resources on this web page: http://www.halvorsen.blog/documents/programming/software_engineering/ iv Information about the author: Hans-Petter Halvorsen The author currently works at the University of South-Eastern Norway.
    [Show full text]
  • Analysis and Comparison of Distributed Version Control Systems
    Fachhochschul-Bachelorstudiengang SOFTWARE ENGINEERING A-4232 Hagenberg, Austria Analysis and Comparison of Distributed Version Control Systems Bachelorarbeit Teil 1 zur Erlangung des akademischen Grades Bachelor of Science in Engineering Eingereicht von Daniel Knittl-Frank Begutachter: DI Dr. Stefan Wagner Hagenberg, Juni 2010 Contents Abstract iii Kurzfassung iv 1 Introduction1 1.1 Motivation............................1 1.2 Goals...............................2 1.3 Content..............................2 2 Version Control in General3 2.1 Workflows.............................4 2.2 Foundations............................5 2.2.1 Glossary..........................5 2.2.2 Repository........................6 2.2.3 Working Directory....................7 2.2.4 Diff and Patch......................7 2.2.5 Merge...........................9 2.2.6 Mainline, Branches and Tags.............. 12 3 Centralized Version Control 14 3.1 Tools................................ 14 3.1.1 CVS............................ 14 3.1.2 Subversion........................ 15 4 Distributed Version Control 17 4.1 Differences............................. 17 4.2 Concepts............................. 19 4.2.1 Revision identifiers.................... 20 4.2.2 Integrity.......................... 20 4.2.3 History representation.................. 21 4.3 Tools................................ 21 4.3.1 Bazaar........................... 22 4.3.2 Git............................. 27 4.3.3 Mercurial......................... 32 i Contents ii 5 Comparison 38 5.1 Testing Scenario......................... 38 5.2 Results............................... 38 6 Conclusion 46 Abstract Version and configuration control systems have played an essential role in software development for the last decades. Starting with the new millennium a new trend surfaced, distributed version control: dedicated central servers for few authorized users lose importance in favor of a more dynamic workflow, in which every developer works with a copy of a project's complete history and changes are synchronized ad-hoc between developers.
    [Show full text]
  • Op E N So U R C E Yea R B O O K 2 0
    OPEN SOURCE YEARBOOK 2016 ..... ........ .... ... .. .... .. .. ... .. OPENSOURCE.COM Opensource.com publishes stories about creating, adopting, and sharing open source solutions. Visit Opensource.com to learn more about how the open source way is improving technologies, education, business, government, health, law, entertainment, humanitarian efforts, and more. Submit a story idea: https://opensource.com/story Email us: [email protected] Chat with us in Freenode IRC: #opensource.com . OPEN SOURCE YEARBOOK 2016 . OPENSOURCE.COM 3 ...... ........ .. .. .. ... .... AUTOGRAPHS . ... .. .... .. .. ... .. ........ ...... ........ .. .. .. ... .... AUTOGRAPHS . ... .. .... .. .. ... .. ........ OPENSOURCE.COM...... ........ .. .. .. ... .... ........ WRITE FOR US ..... .. .. .. ... .... 7 big reasons to contribute to Opensource.com: Career benefits: “I probably would not have gotten my most recent job if it had not been for my articles on 1 Opensource.com.” Raise awareness: “The platform and publicity that is available through Opensource.com is extremely 2 valuable.” Grow your network: “I met a lot of interesting people after that, boosted my blog stats immediately, and 3 even got some business offers!” Contribute back to open source communities: “Writing for Opensource.com has allowed me to give 4 back to a community of users and developers from whom I have truly benefited for many years.” Receive free, professional editing services: “The team helps me, through feedback, on improving my 5 writing skills.” We’re loveable: “I love the Opensource.com team. I have known some of them for years and they are 6 good people.” 7 Writing for us is easy: “I couldn't have been more pleased with my writing experience.” Email us to learn more or to share your feedback about writing for us: https://opensource.com/story Visit our Participate page to more about joining in the Opensource.com community: https://opensource.com/participate Find our editorial team, moderators, authors, and readers on Freenode IRC at #opensource.com: https://opensource.com/irc .
    [Show full text]