GIT—A Stupid Content Tracker

Total Page:16

File Type:pdf, Size:1020Kb

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). (Porcelains) to be built on top of it. Several Porcelains have been built on top of git, to sup- • commit – A commit associates a tree port different workflows and individual taste of with meta-information that describes how users. The primary advantage of this architec- the tree came into existence. It records: ture is ease of customization, while keeping the repositories managed by different Porce- – The tree object that describes the lains compatible with each other. project state. 386 • GIT—A Stupid Content Tracker – The author name and time of creation branches by recording the commit object names of the content. of them. – The committer name and time of cre- To keep track of what is being worked on in ation of the commit. the user’s working tree, another data structure – The parent commits of this commit. called index, is used. It associates pathnames – The commit log that describes why with object names, and is used as the staging the project state needs to be changed area for building the next tree to be committed. to the tree contained in this commit from the trees contained in the parent When preparing an index to build the next tree, commits. it also records the stat(2) information from the working tree files to optimize common op- • tag – a tag object names another object erations. For example, when listing the set of and associates arbitrary information with files that are different between the index and it. A person creating the tag can attest that the working tree, git does not have to inspect it points at an authentic object by GPG- the contents of files whose cached stat(2) signing the tag. information match the current working tree. Each object is referred to by taking the SHA1 The core git system consists of many relatively hash (160 bits) of its internal representation, low-level commands (often called Plumbing) and the value of this hash is called its object and a set of higher level scripts (often called name. A tree object maps a pathname to the Porcelain) that use Plumbing commands. Each object name of the blob (or another tree, for a Plumbing command is designed to do a spe- subdirectory). cific task and only that task. The Plumbing commands to move information between the By naming a single tree object that represents recorded history and the working tree are: the top-level directory of a project, the entire di- rectory structure and the contents of any project state can be recreated. In that sense, a tree ob- • Files to index. git-update-index ject is roughly equivalent to a tarball. records the contents of the working tree files to the index; to write out the blob A commit object, by tying its tree object with recorded in the index to the working tree other commit objects in the ancestry chain, files, git-checkout-index is used; gives the specific project state a point in project and git-diff-files compares what history. A merge commit ties two or more lines is recorded in the index and the working of developments together by recording which tree files. With these, an index is built that commits are its parents. A tag object is used to records a set of files in the desired state to attach a label to a specific commit object (e.g. a be committed next. particular release). • Index to recorded history. To write These objects are enough to record the project out the contents of the index as a tree history. A project can have more than one lines object, git-write-index is used; of developments, and they are called branches. git-commit-tree takes a tree object, The latest commit in each line of development zero or more commit objects as its parents, is called the head of the branch, and a reposi- and the commit log message, and creates tory keeps track of the heads of currently active a commit object. git-diff-index 2006 Linux Symposium, Volume One • 387 compares what is recorded in a tree ob- • The development process is highly dis- ject and the index, to serve as a preview tributed. The development history led of what is going to be committed. to v2.6.16 since v2.6.12-rc2 contains changes by more than 1,800 authors that • Recorded history to index. The directory were committed by a few dozen people. structure recorded in a tree object is read by git-read-tree into the index. • The workflow involves many patch ex- changes through the mailing list. Among • git-checkout-index Index to files. 20,000 changes, 16,000 were committed writes the blobs recorded in the index to by somebody other than the original au- the working tree files. thor of the change. By tying these low-level commands together, • Each change tends to touch only a handful Porcelain commands give usability to the files. The source tree is highly modular whole system for the end users. For ex- and a change is often very contained to a ample, git-commit provides a UI to ask small part of the tree. A change touches for the commit log message, create a new only three files on average, and modifies commit object (using git-write-tree and about 160 lines. git-commit-tree), and record the object • The tree reorganization by addition and name of that commit as the updated topmost deletion is not so uncommon, but often commit in the current line of development. happens over time, not as a single rename with some modifications. 4,500 files were added or deleted, but less than 600 were 2 Design Goals renamed. • The workflow involves frequent merges From the beginning, git was designed specifi- between subsystem trees and the mainline. cally to support the workflow of the Linux ker- About 1,500 changes are merges (7%). nel project, and its design was heavily influ- enced by the common types of operations in the • A merge tends to be straightforward. The kernel project. The statistics quoted below are median number of paths involved in the for the 10-month period between the beginning 1,500 merges was 185, and among them, of May 2005 and the end of February 2006. only 10 required manual inspection of content-level merges. • The source tree is fairly large. It has approximately 19,000 files spread across Initial design guidelines came from the above 1,100 directories, and it is growing. project characteristics. • The project is very active. Approximately 20,000 changes were made during the 10- • A few dozen people playing the integrator month period. At the end of the examined role have to handle work by 2,000 contrib- period, around 75% of the lines are from utors, and it is paramount to make it effi- the version from the beginning of the pe- cient form them to perform common oper- riod, and the rest are additions and modifi- ations, such as patch acceptance and merg- cations. ing. 388 • GIT—A Stupid Content Tracker • Although the entire project is large, in- tween them. Tree comparison can take ad- dividual changes tend to be localized. vantage of this to avoid descending into Supporting patch application and merging subdirectories that are represented by the with a working tree with local modifica- same tree object while examining changes. tions, as long as such local modifications do not interfere with the change being pro- cessed, makes the integrators’ job more ef- ficient. 3 Evolution • The application of an e-mailed patch must The very initial version of git, released by Linus be very fast. It is not uncommon to feed Torvalds on April 7, 2005, had only a handful more than 1,000 changes at once during a of commands to: sync from the -mm tree to the mainline. • When existing contents are moved around • initialize the repository; in the project tree, renaming of an entire file (with or without modification at the • update the index to prepare for the next same time) is not a majority.
Recommended publications
  • Veusz Documentation Release 3.0
    Veusz Documentation Release 3.0 Jeremy Sanders Jun 09, 2018 CONTENTS 1 Introduction 3 1.1 Veusz...................................................3 1.2 Installation................................................3 1.3 Getting started..............................................3 1.4 Terminology...............................................3 1.4.1 Widget.............................................3 1.4.2 Settings: properties and formatting...............................6 1.4.3 Datasets.............................................7 1.4.4 Text...............................................7 1.4.5 Measurements..........................................8 1.4.6 Color theme...........................................8 1.4.7 Axis numeric scales.......................................8 1.4.8 Three dimensional (3D) plots..................................9 1.5 The main window............................................ 10 1.6 My first plot............................................... 11 2 Reading data 13 2.1 Standard text import........................................... 13 2.1.1 Data types in text import.................................... 14 2.1.2 Descriptors........................................... 14 2.1.3 Descriptor examples...................................... 15 2.2 CSV files................................................. 15 2.3 HDF5 files................................................ 16 2.3.1 Error bars............................................ 16 2.3.2 Slices.............................................. 16 2.3.3 2D data ranges........................................
    [Show full text]
  • Lightweight Distros on Test
    GROUP TEST LIGHTWEIGHT DISTROS LIGHTWEIGHT DISTROS GROUP TEST Mayank Sharma is on the lookout for distros tailor made to infuse life into his ageing computers. On Test Lightweight distros here has always been a some text editing, and watch some Linux Lite demand for lightweight videos. These users don’t need URL www.linuxliteos.com Talternatives both for the latest multi-core machines VERSION 2.0 individual apps and for complete loaded with several gigabytes of DESKTOP Xfce distributions. But the recent advent RAM or even a dedicated graphics Does the second version of the distro of feature-rich resource-hungry card. However, chances are their does enough to justify its title? software has reinvigorated efforts hardware isn’t supported by the to put those old, otherwise obsolete latest kernel, which keeps dropping WattOS machines to good use. support for older hardware that is URL www.planetwatt.com For a long time the primary no longer in vogue, such as dial-up VERSION R8 migrators to Linux were people modems. Back in 2012, support DESKTOP LXDE, Mate, Openbox who had fallen prey to the easily for the i386 chip was dropped from Has switching the base distro from exploitable nature of proprietary the kernel and some distros, like Ubuntu to Debian made any difference? operating systems. Of late though CentOS, have gone one step ahead we’re getting a whole new set of and dropped support for the 32-bit SparkyLinux users who come along with their architecture entirely. healthy and functional computers URL www.sparkylinux.org that just can’t power the newer VERSION 3.5 New life DESKTOP LXDE, Mate, Xfce and others release of Windows.
    [Show full text]
  • Installation Minimale De Debian Avec Serveur X Installation Minimale De Debian Avec Serveur X
    27/09/2021 06:52 1/6 Installation minimale de Debian avec serveur X Installation minimale de Debian avec serveur X Objet : Méthode d'installation minimale de Debian Niveau requis : débutant, avisé Commentaires : Il peut être intéressant d'installer les programmes séparément en partant d'un système minimal pour gagner en réactivité, pour avoir un système configuré selon ses besoins ou simplement pour en connaître un peu plus sur le fonctionnement de Debian. Débutant, à savoir : Utiliser GNU/Linux en ligne de commande, tout commence là !. Suivi : Création par smolski le 14/05/2010 Testé par paskal le 26-10-2013 Commentaires sur le forum : Lien vers le forum concernant ce tuto1) Pourquoi ? L'installation par défaut de Debian permet à l'utilisateur d'avoir un système complet et utilisable dès le premier démarrage : bureautique, Internet, jeux, multimédia, infographie… Néanmoins, il peut être intéressant d'installer les programmes séparément en partant d'un système minimal 1. pour gagner en réactivité, 2. pour avoir un système configuré selon ses besoins 3. ou simplement pour en connaître un peu plus sur le fonctionnement de Debian. Pré requis La procédure n'est pas compliquée. Je pars du principe que vous savez effectuer une installation par défaut de Debian de bout en bout et ne reviendrai que très peu sur cette partie. Je vous conseille également d'avoir un peu de bouteille sous Debian ou les systèmes GNU/Linux en général et d'être relativement à l'aise avec le terminal, une partie de l'installation ne se fera pas en mode graphique. Ceci étant dit, allons-y ! Installation du système Debian minimal Le début de la procédure est identique à l'installation par défaut, démarrez sur un CD ou USB netinstall et suivez les instructions.
    [Show full text]
  • BU KİTABI ÇALIN ~ Bu Kitabı Çalın
    ~ BU KİTABI ÇALIN ~ Bu Kitabı Çalın Ocak 2014 3 İçindekiler Teşekkür...............................................................................................4 Giriş......................................................................................................5 1. EXIF ve GPS.....................................................................................6 2. Sosyal Medyada Açık Hesaplar......................................................13 3. Ünlü Olmak....................................................................................17 4. Budala Son Kullanıcı......................................................................18 5. Twitter'ın Karanlık Yüzü.................................................................20 6. PGP Kullanın..................................................................................23 7. Google Hesabı Silmek....................................................................31 8. Big Brother = Usta.........................................................................36 9. Kimyasal Silah Kullanımı ve Amerika............................................39 10. Arka Kapı......................................................................................44 11. AKP, Baskı ve Polis Devleti...........................................................47 12. Online Kripto Araçları..................................................................50 13. CV Rekabetçiliği...........................................................................53 14. SteamOS'un Düşündürdükleri.....................................................56
    [Show full text]
  • Libreoffice Spreadsheet Cell Will Not Calculate
    Libreoffice Spreadsheet Cell Will Not Calculate Deryl systematized remittently if cosier Thom kaolinises or points. Drumlier Bart hawsed no upgrader confutes conqueringly after Grove tartarize magisterially, quite agglutinate. Vadose Otho bulged some stereochromy after Anglo-Saxon Prentiss cocainizes thinkingly. Excepteur sint occaecat cupidatat non consecutive list numbers, spreadsheets allowed if you did know what spreadsheet cells that we will select a particular document contains an exchange online or. Calc makes a: once with text, little until you. Now if not academically more about spreadsheets more non consecutive list or not cause of spreadsheet will distribute normally distributed measurements are designing spreadsheets more information. The squirrel is to duke a particular column case is based on different comparison of the butterfly in the. Complete they have not run around with. Let us begin with not as needed! And will understand how often do i could not calculating percentage of a calculation times, spreadsheets include a cyclic or. Note that will not change formula then run at some of spreadsheet with. - If i edit each cell provide the writer document the spreadsheet is not updated neither allow other cells are re-calculated on the writer document 2- The. How had you smell in LibreOffice Calc? Terex sales value will not visible on rails software. Libreoffice calc define range Botas Rudel. Column so I discovered OpenOffice sum function not working- before is. The apostrophe will best appear why the dough and many number but be formatted as attorney If apostrophe is not removed calculation operations will not be include. You may contain several empty cells window and final dialog boxes or products were trying but x data? LibreOffice Calc Calculations and the Formula Bar Ahuka.
    [Show full text]
  • Spreadsheet-Based Complex Data Transformation
    Spreadsheet-based complex data transformation Hung Thanh Vu Dissertation submitted in fulfilment of the requirements for the degree of Doctor of Philosophy School of Computer Science and Engineering University of New South Wales Sydney, NSW 2052, Australia March 2011 Supervisor: Prof. Boualem Benatallah i Acknowledgements I am very grateful to Professor Boualem for his exceptional unconditional support and limitless patience. He was the first person who taught me how to do research; how to write and present a complex research problem. He has always been there for me when I have any difficulties in research. He is one of the best supervisors I have ever worked with. Without his support, this thesis would never be completed. My sincere thanks go to Dr Regis Saint-Paul for his fruitful collaborations and providing me invaluable research skills. I also wish to express my gratitude to the members of the SOC group, who spent a lot of time discussing with me on the research issues and giving me helpful advice. I would like to thank Dr Paolo Papotti for insightful discussions on data exchange as well as mapping tools Clio, Clip, and +Spicy; Assisstant Professor Christopher Scaffidi for answering my questions on Topes; Associate Professor Wang-Chiew Tan and Dr Bogdan Alexe for helping me understand STBenchmark; Dr Wei Wang for helpful discussions on similarity join and its related algorithms; and some members of XQuery WG and XSLT WG including Daniela Florescu, Jerome Simeon, and Michael Kay for giving me advice on the expressiveness and new updates of XSLT and XQuery. Last but not least, I am forever in debt to my parents.
    [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]
  • A Brief History of GNOME
    A Brief History of GNOME Jonathan Blandford <[email protected]> July 29, 2017 MANCHESTER, UK 2 A Brief History of GNOME 2 Setting the Stage 1984 - 1997 A Brief History of GNOME 3 Setting the stage ● 1984 — X Windows created at MIT ● ● 1985 — GNU Manifesto Early graphics system for ● 1991 — GNU General Public License v2.0 Unix systems ● 1991 — Initial Linux release ● Created by MIT ● 1991 — Era of big projects ● Focused on mechanism, ● 1993 — Distributions appear not policy ● 1995 — Windows 95 released ● Holy Moly! X11 is almost ● 1995 — The GIMP released 35 years old ● 1996 — KDE Announced A Brief History of GNOME 4 twm circa 1995 ● Network Transparency ● Window Managers ● Netscape Navigator ● Toolkits (aw, motif) ● Simple apps ● Virtual Desktops / Workspaces A Brief History of GNOME 5 Setting the stage ● 1984 — X Windows created at MIT ● 1985 — GNU Manifesto ● Founded by Richard Stallman ● ● 1991 — GNU General Public License v2.0 Our fundamental Freedoms: ○ Freedom to run ● 1991 — Initial Linux release ○ Freedom to study ● 1991 — Era of big projects ○ Freedom to redistribute ○ Freedom to modify and ● 1993 — Distributions appear improve ● 1995 — Windows 95 released ● Also, a set of compilers, ● 1995 — The GIMP released userspace tools, editors, etc. ● 1996 — KDE Announced This was an overtly political movement and act A Brief History of GNOME 6 Setting the stage ● 1984 — X Windows created at MIT “The licenses for most software are ● 1985 — GNU Manifesto designed to take away your freedom to ● 1991 — GNU General Public License share and change it. By contrast, the v2.0 GNU General Public License is intended to guarantee your freedom to share and ● 1991 — Initial Linux release change free software--to make sure the ● 1991 — Era of big projects software is free for all its users.
    [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]
  • Package 'Gnumeric'
    Package ‘gnumeric’ March 9, 2017 Version 0.7-8 Date 2017-03-09 Title Read Data from Files Readable by 'gnumeric' Author Karoly Antal <[email protected]>. Maintainer Karoly Antal <[email protected]> Depends R (>= 2.8.1), XML Imports utils Description Read data files readable by 'gnumeric' into 'R'. Can read whole sheet or a range, from several file formats, including the native format of 'gnumeric'. Reading is done by using 'ssconvert' (a file converter utility included in the 'gnumeric' distribution <http://projects.gnome.org/gnumeric/>) to convert the requested part to CSV. From 'gnumeric' files (but not other formats) can list sheet names and sheet sizes or read all sheets. License GPL (>= 2) Repository CRAN Date/Publication 2017-03-09 13:20:28 NeedsCompilation no R topics documented: read.gnumeric.sheet . .2 read.gnumeric.sheet.info . .6 read.gnumeric.sheets . .7 Index 9 1 2 read.gnumeric.sheet read.gnumeric.sheet Read data from a gnumeric (or MS Excel, Openoffice Calc, Xbase, Quatro Pro, Paradox, HTML, etc) spreadsheet or database file using ssconvert from the gnumeric distribution Description Read data from a sheet of a gnumeric (or other common spreadsheet or database) file to a data.frame. Requires an external program, ‘ssconvert’ (normally installed with gnumeric in ‘PATH’. (Gnumeric home page is http://projects.gnome.org/gnumeric/) (Note: last gnumeric release for windows is 1.12.17 from 2014) Calls ‘ssconvert’ to convert the input to CSV. ‘ssconvert’ can read several file formats (see Details below). Note: During conversion to CSV ‘ssconvert’ also evaluates formulas (e.g. ‘=sum(A1:A3)’) in cells, and emits the result instead of the formula.
    [Show full text]
  • Linux-Cookbook.Pdf
    LINUX COOKBOOK ™ Other Linux resources from O’Reilly Related titles Linux Device Drivers Exploring the JDS Linux Linux in a Nutshell Desktop Running Linux Learning Red Hat Enterprise Building Embedded Linux Linux and Fedora Systems Linux Pocket Guide Linux Security Cookbook Understanding the Linux Kernel Linux Books linux.oreilly.com is a complete catalog of O’Reilly’s books on Resource Center Linux and Unix and related technologies, including sample chapters and code examples. ONLamp.com is the premier site for the open source web plat- form: Linux, Apache, MySQL, and either Perl, Python, or PHP. Conferences O’Reilly brings diverse innovators together to nurture the ideas that spark revolutionary industries. We specialize in document- ing the latest tools and systems, translating the innovator’s knowledge into useful skills for those in the trenches. Visit conferences.oreilly.com for our upcoming events. Safari Bookshelf (safari.oreilly.com) is the premier online refer- ence library for programmers and IT professionals. Conduct searches across more than 1,000 books. Subscribers can zero in on answers to time-critical questions in a matter of seconds. Read the books on your Bookshelf from cover to cover or sim- ply flip to the page you need. Try it today with a free trial. LINUX COOKBOOK ™ Carla Schroder Beijing • Cambridge • Farnham • Köln • Paris • Sebastopol • Taipei • Tokyo Linux Cookbook™ by Carla Schroder Copyright © 2005 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use.
    [Show full text]
  • SCM: a Look at Scons and GNU Arch
    SCM: A look at SCons and GNU Arch ¡ ¢ £ ¤ ¥ Ben Leslie ¦ § ¡ ¨ © ¢ § ¨ ¡ © ¨ © 1 WHAT IS SCM? CM is the discpline of controlling the evolution of complex systems; SCM is its specialization for computer programs and associated documents WHAT IS SCM? 2 WHAT IS SCM? CM is the discpline of controlling the evolution of complex systems; SCM is its specialization for computer programs and associated documents No really, what is it ? WHAT IS SCM? 2-A WHAT IS SCM? CM is the discpline of controlling the evolution of complex systems; SCM is its specialization for computer programs and associated documents No really, what is it ? • Versioning WHAT IS SCM? 2-B WHAT IS SCM? CM is the discpline of controlling the evolution of complex systems; SCM is its specialization for computer programs and associated documents No really, what is it ? • Versioning • Building WHAT IS SCM? 2-C BUILD SYSTEM – PURPOSE Automate construction process • Build rules – how to change .c into .o • Capture all build rules Rebuild exactly what is needed BUILD SYSTEM – PURPOSE 3 BUILD SYSTEM – PURPOSE Automate construction process • Build rules – how to change .c into .o • Capture all build rules Rebuild exactly what is needed • Build everything required – correctness. BUILD SYSTEM – PURPOSE 3-A BUILD SYSTEM – PURPOSE Automate construction process • Build rules – how to change .c into .o • Capture all build rules Rebuild exactly what is needed • Build everything required – correctness. • Don’t build anymore then needed – performance. BUILD SYSTEM – PURPOSE 3-B BUILD SYSTEM – PURPOSE Automate construction process • Build rules – how to change .c into .o • Capture all build rules Rebuild exactly what is needed • Build everything required – correctness.
    [Show full text]