{"id":23753,"date":"2023-05-10T01:58:35","date_gmt":"2023-05-10T01:58:35","guid":{"rendered":"https:\/\/www.booksofall.com\/de\/?post_type=product&#038;p=23753"},"modified":"2023-05-10T01:58:35","modified_gmt":"2023-05-10T01:58:35","slug":"version-control-with-subversion","status":"publish","type":"product","link":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/","title":{"rendered":"Version Control with Subversion"},"content":{"rendered":"<h2>Chapter 1. Fundamental Concepts<\/h2>\n<p>This chapter is a short, casual introduction to <a href=\"https:\/\/subversion.apache.org\/\">Subversion<\/a> and its approach to version control. We begin with a discussion of general <a href=\"https:\/\/about.gitlab.com\/topics\/version-control\/\">version control<\/a> concepts, work our way into the specific ideas behind Subversion, and show some simple examples of Subversion in use.<\/p>\n<p>Even though the examples in this chapter show people sharing collections of program source code, keep in mind that Subversion can manage any sort of file collection\u2014it&#8217;s not limited to helping computer programmers.<\/p>\n<h3>Version Control Basics<\/h3>\n<p>A version control system (or revision control system) is a system that tracks incremental versions (or revisions) of files and, in some cases, directories over time. Of course, merely tracking the various versions of a user&#8217;s (or group of users&#8217;) files and directories isn&#8217;t very interesting in itself. What makes a version control system useful is the fact that it allows you to explore the changes which resulted in each of those versions and facilitates the arbitrary recall of the same.<\/p>\n<p>In this section, we&#8217;ll introduce some fairly high-level version control system components and concepts. We&#8217;ll limit our discussion to modern version control systems\u2014in today&#8217;s interconnected world, there is very little point in acknowledging version control systems which cannot operate across wide-area networks.<\/p>\n<h4>The Repository<\/h4>\n<p>At the core of the version control system is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Repository_(version_control)\">repository<\/a>, which is the central store of that system&#8217;s data. The repository usually stores information in the form of a\u00a0<a href=\"https:\/\/www.ibm.com\/docs\/en\/aix\/7.2?topic=concepts-organization-contents-file-tree\"><i>filesystem tree<\/i><\/a>\u2014a hierarchy of files and directories. Any number of\u00a0<i>clients<\/i> connect to the repository, and then read or write to these files. By writing data, a client makes the information available to others; by reading data, the client receives information from others. <span style=\"font-size: 1rem;\">Figure 1.1, \u201cA typical <a href=\"https:\/\/en.wikipedia.org\/wiki\/Client%E2%80%93server_model\">client\/server<\/a> system\u201d illustrates this.<\/span><\/p>\n<p><b>Figure 1.1. A typical client\/server system<br \/>\n<\/b><\/p>\n<p id=\"DtSYbpB\"><img loading=\"lazy\" decoding=\"async\" width=\"224\" height=\"242\" class=\"alignnone size-full wp-image-23757 \" src=\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/img_645af895e9379.png\" alt=\"\" \/><\/p>\n<p><b>\u00a0<\/b><\/p>\n<p>Why is this interesting? So far, this sounds like the definition of a typical file server. And indeed, the repository\u00a0<i>is<\/i>\u00a0a kind of file server, but it&#8217;s not your usual breed. What makes the repository special is that as the files in the repository are changed, the repository remembers each version of those files.<\/p>\n<p>When a client reads data from the repository, it normally sees only the latest version of the filesystem tree. But what makes a version control client interesting is that it also has the ability to request previous states of the filesystem from the repository. A version control client can ask historical questions such as \u201cWhat did this directory contain last Wednesday?\u201d and \u201cWho was the last person to change this file, and what changes did he make?\u201d These are the sorts of questions that are at the heart of any version control system.<\/p>\n<h4>The Working Copy<\/h4>\n<p>A version control system&#8217;s value comes from the fact that it tracks versions of files and directories, but the rest of the software universe doesn&#8217;t operate on \u201cversions of files and directories\u201d. Most software programs understand how to operate only on a\u00a0<i>single<\/i>\u00a0version of a specific type of file. So how does a version control user interact with an abstract\u2014and, often, remote\u2014repository full of multiple versions of various files in a concrete fashion? How does his or her word processing software, presentation software, source code editor, web design software, or some other program\u2014all of which trade in the currency of simple data files\u2014get access to such files? The answer is found in the version control construct known as a\u00a0<i>working copy<\/i>.<\/p>\n<p>A working copy is, quite literally, a local copy of a particular version of a user&#8217;s VCS-managed data upon which that user is free to work. Working copies1 appear to other software just as any other local directory full of files, so those programs don&#8217;t have to be \u201cversion-control-aware\u201d in order to read from and write to that data. The task of managing the working copy and communicating changes made to its contents to and from the repository falls squarely to the version control system&#8217;s client software.<\/p>\n<h4>Versioning Models<\/h4>\n<p>If the primary mission of a version control system is to track the various versions of digital information over time, a very close secondary mission in any modern version control system is to enable collaborative editing and sharing of that data. But different systems use different strategies to achieve this. It&#8217;s important to understand these different strategies, for a couple of reasons. First, it will help you compare and contrast existing version control systems, in case you encounter other systems similar to Subversion. Beyond that, it will also help you make more effective use of Subversion, since Subversion itself supports a couple of different ways of working.<\/p>\n<h5>The problem of file sharing<\/h5>\n<p>All version control systems have to solve the same fundamental problem: how will the system allow users to share information, but prevent them from accidentally stepping on each other&#8217;s feet? It&#8217;s all too easy for users to accidentally overwrite each other&#8217;s changes in the repository.<\/p>\n<p>Consider the scenario shown in Figure 1.2, \u201cThe problem to avoid\u201d. Suppose we have two coworkers, Harry and Sally. They each decide to edit the same repository file at the same time. If Harry saves his changes to the repository first, it&#8217;s possible that (a few moments later) Sally could accidentally overwrite them with her own new version of the file. While Harry&#8217;s version of the file won&#8217;t be lost forever (because the system remembers every change), any changes Harry made\u00a0<i>won&#8217;t<\/i>\u00a0be present in Sally&#8217;s newer version of the file, because she never saw Harry&#8217;s changes to begin with. Harry&#8217;s work is still effectively lost\u2014or at least missing from the latest version of the file\u2014and probably by accident. This is definitely a situation we want to avoid!<\/p>\n","protected":false},"excerpt":{"rendered":"<p><iframe style=\"width: 100%; height: 750px; border: none;\" src=\"https:\/\/online.visual-paradigm.com\/share\/book\/version-control-with-subversion-1cmyxdifh9?p=1\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"featured_media":23758,"template":"","meta":{"_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!"},"product_brand":[],"product_cat":[386],"product_tag":[],"class_list":{"0":"post-23753","1":"product","2":"type-product","3":"status-publish","4":"has-post-thumbnail","6":"product_cat-version-control-systems","8":"first","9":"instock","10":"shipping-taxable","11":"product-type-simple"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Version Control with Subversion - BooksOfAll German<\/title>\n<meta name=\"description\" content=\"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Version Control with Subversion - BooksOfAll German\" \/>\n<meta property=\"og:description\" content=\"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/\" \/>\n<meta property=\"og:site_name\" content=\"BooksOfAll German\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/\",\"url\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/\",\"name\":\"Version Control with Subversion - BooksOfAll German\",\"isPartOf\":{\"@id\":\"https:\/\/www.booksofall.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg\",\"datePublished\":\"2023-05-10T01:58:35+00:00\",\"description\":\"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#primaryimage\",\"url\":\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg\",\"contentUrl\":\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg\",\"width\":\"827\",\"height\":\"1169\",\"caption\":\"Version Control with Subversion\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.booksofall.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Categories\",\"item\":\"https:\/\/www.booksofall.com\/de\/categories\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Version Control with Subversion\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.booksofall.com\/de\/#website\",\"url\":\"https:\/\/www.booksofall.com\/de\/\",\"name\":\"BooksOfAll German\",\"description\":\"Biggest IT eBooks library and learning resources - Free eBooks for programming, computing, artificial intelligence and more.\",\"publisher\":{\"@id\":\"https:\/\/www.booksofall.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.booksofall.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.booksofall.com\/de\/#organization\",\"name\":\"BooksOfAll German\",\"url\":\"https:\/\/www.booksofall.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.booksofall.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2022\/06\/booksofall-logo-2.png\",\"contentUrl\":\"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2022\/06\/booksofall-logo-2.png\",\"width\":166,\"height\":30,\"caption\":\"BooksOfAll German\"},\"image\":{\"@id\":\"https:\/\/www.booksofall.com\/de\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Version Control with Subversion - BooksOfAll German","description":"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/","og_locale":"de_DE","og_type":"article","og_title":"Version Control with Subversion - BooksOfAll German","og_description":"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!","og_url":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/","og_site_name":"BooksOfAll German","og_image":[{"url":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_image":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/","url":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/","name":"Version Control with Subversion - BooksOfAll German","isPartOf":{"@id":"https:\/\/www.booksofall.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#primaryimage"},"image":{"@id":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg","datePublished":"2023-05-10T01:58:35+00:00","description":"Version control with Subversion (SVN) is a software tool for tracking and managing changes in code, documents, and any other digital files. Learn more here!","breadcrumb":{"@id":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#primaryimage","url":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg","contentUrl":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2023\/05\/Version-Control-with-Subversion.jpg","width":"827","height":"1169","caption":"Version Control with Subversion"},{"@type":"BreadcrumbList","@id":"https:\/\/www.booksofall.com\/de\/version-control-with-subversion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.booksofall.com\/de\/"},{"@type":"ListItem","position":2,"name":"Categories","item":"https:\/\/www.booksofall.com\/de\/categories\/"},{"@type":"ListItem","position":3,"name":"Version Control with Subversion"}]},{"@type":"WebSite","@id":"https:\/\/www.booksofall.com\/de\/#website","url":"https:\/\/www.booksofall.com\/de\/","name":"BooksOfAll German","description":"Biggest IT eBooks library and learning resources - Free eBooks for programming, computing, artificial intelligence and more.","publisher":{"@id":"https:\/\/www.booksofall.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.booksofall.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.booksofall.com\/de\/#organization","name":"BooksOfAll German","url":"https:\/\/www.booksofall.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.booksofall.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2022\/06\/booksofall-logo-2.png","contentUrl":"https:\/\/www.booksofall.com\/de\/wp-content\/uploads\/sites\/9\/2022\/06\/booksofall-logo-2.png","width":166,"height":30,"caption":"BooksOfAll German"},"image":{"@id":"https:\/\/www.booksofall.com\/de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/product\/23753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/types\/product"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/media\/23758"}],"wp:attachment":[{"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/media?parent=23753"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/product_brand?post=23753"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/product_cat?post=23753"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/www.booksofall.com\/de\/wp-json\/wp\/v2\/product_tag?post=23753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}