{"id":3693,"date":"2019-09-20T16:08:58","date_gmt":"2019-09-20T14:08:58","guid":{"rendered":"http:\/\/medtech-ingenieur.de\/?p=3693"},"modified":"2021-08-06T14:37:05","modified_gmt":"2021-08-06T13:37:05","slug":"software-artefakte-fuer-automatische-versionierung","status":"publish","type":"post","link":"https:\/\/medtech-ingenieur.de\/en\/software-artefakte-fuer-automatische-versionierung\/","title":{"rendered":"Automatically version software artifacts"},"content":{"rendered":"<h2>What is the problem?<\/h2>\n<p>When we develop embedded software, the ideal is that we specify, implement, integrate, test and then deliver according to the V-model. In real projects, however, things are somewhat different. Software is usually developed incrementally. During development, there are always intermediate stages with different features that have varying levels of maturity. It would of course be ideal for only hardware with tested, stable software versions to leave the developer&#039;s desk. Unfortunately, this is often not possible due to the project plan and the other project participants. For example, it can happen that the hardware developer quickly needs software for EMC testing, or the project manager absolutely wants to demonstrate the new GUI to the customer tomorrow. The resulting immature versions are often distributed throughout the company in this way or even sent to the customer. Then, after a few weeks, the hardware suddenly makes its way back to the software developer&#039;s desk with a note that a problem occurred during use.<\/p>\n<p>Typically, the project manager will assign the developer the task of investigating this issue. If the developer can then determine the software version, they may be able to point out that it&#039;s a bug that has already been fixed. However, assigning embedded software versions is often not that easy.<\/p>\n<p>To solve this problem, the usual approach is to record the current software version for every piece of hardware in circulation. For example, you can create pages via a ticket system or in the project wiki where each piece of hardware is assigned a current location and a software version number. Such hardware trackers sound good at first. But upon closer consideration, this approach practically invites errors. It&#039;s quicker than you think that someone outside the software department will ask the developer to quickly deploy the latest version, or even to make a change beforehand.<\/p>\n<p>So the SW developer always has the problem when he wants to assign the SW version that he cannot answer the following questions:<\/p>\n<ul>\n<li>Is the software version listed in the tracker really correct?<\/li>\n<li>Does the version really correspond 1:1 to a specific state in the repository or are there local changes?<\/li>\n<li>Which build configuration was used to build the software?<\/li>\n<\/ul>\n<h2>How can the problem be solved?<\/h2>\n<p>To address this problem, it makes sense to add a version stamp to the software itself. The first thing you should do when you want to version your software is to create a constant. This might look something like this:<\/p>\n<pre lang=\"c\">#define REVISION &quot;1.01&quot;<\/pre>\n<p>The idea isn&#039;t bad. However, one should be aware that manual versioning will always run into the problems described above. Therefore, versioning should be done automatically. I&#039;d like to briefly present a simple example here, using a microcontroller software developed in Eclipse:<\/p>\n<h2>Step 1: Get the repository version into the software<\/h2>\n<p>The best way to track the status of a software is to use the repository version instead of a traditional version number. This could be, for example, the SVN revision or the GIT hash. In Eclipse, the revision is relatively easy to use as a constant. Let&#039;s look at this using SVN as an example:<\/p>\n<h2><a href=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3701 size-full\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png\" alt=\"\" width=\"841\" height=\"598\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png 841w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-300x213.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-768x546.png 768w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-100x71.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-150x107.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-200x142.png 200w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-450x320.png 450w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648-600x427.png 600w\" sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><\/a><\/h2>\n<p>With the marked macro, we create a constant string that consists of the following points<\/p>\n<ul>\n<li>${ConfigName}: This is the name of our build configuration. In our case, &quot;Debug&quot;<\/li>\n<li>$(shell svnversion -n \u201a .\\..&#039;): This is the current SVN revision of the project folder.\n<ul>\n<li>shell: execute a command line command<\/li>\n<li>svnrevision: Returns the SVN revision of a folder. Of course, our system must understand this command for this to work. Anyone who thinks it&#039;s enough to have Tortoise SVN installed on their PC will be disappointed. Tortoise may have the appropriate command-line commands, but it doesn&#039;t support the classic SVN command-line commands. The easiest way to get these is to install the free &quot;SlikSVN Windows client&quot; and create the SlikSVN &quot;bin&quot; folder in the system environment variables under &quot;PATH.&quot;<\/li>\n<li>&quot;.\\..&quot;: This is the path of the project folder relative to the output folder of my build configuration. In this case, from the &quot;Debug&quot; folder. This is the folder where the debug configuration artifacts end up after building my software.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Once I have created this macro, I get the following value for the SVN_REV macro when debugging:<\/p>\n<p><a href=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3702 size-full\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297.png\" alt=\"\" width=\"636\" height=\"300\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297.png 636w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297-300x142.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297-100x47.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297-150x71.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297-200x94.png 200w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297-450x212.png 450w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/SVN_REV-e1567755173297-600x283.png 600w\" sizes=\"auto, (max-width: 636px) 100vw, 636px\" \/><\/a><\/p>\n<p>But what does &quot;6427:6431M&quot; mean? This is the SVN revision range. This means that I have files from SVN revisions 6427 to 6431 in my project folder. If I were to reset my locally checked-out SVN folder to a specific revision, it would simply show a number. The &quot;M&quot; means that there are local changes in my project folder. So, with this string, I know almost everything I need to know to determine the origin of the software. That&#039;s pretty cool, but it can be even better.<\/p>\n<h2>Step 2: Define a fixed location in memory<\/h2>\n<p>With step 1, I ensured that the revision is always known in my software. This means I can display this string on the screen, for example, or query it via a communication interface. If that&#039;s enough for me, I can stop here. However, I can improve the whole thing by assigning a fixed number in memory to the version string. This way, it can also be read by the bootloader, for example.<\/p>\n<p>For the version number, I first create a memory area in the flash in the linker file:<\/p>\n<pre lang=\"c\">\/* Memories definition *\/ MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 160K FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 262140 VER (rx) : ORIGIN = 0x0803FFE0, LENGTH = 28 }<\/pre>\n<p>And further down:<\/p>\n<pre lang=\"c\">\/* SVN revision goes here *\/ .app_ver_str : { KEEP(*(.app_ver_str)) } &gt; VER<\/pre>\n<p>Then I have to add the following line to my code.<\/p>\n<pre lang=\"c\">const char __attribute__((section(&quot;.app_ver_str&quot;))) VER[] = SVN_REV;<\/pre>\n<p>With this line, I automatically write the constant I created in step 1 to the &quot;app_ver_str&quot; section during linking. I placed this section in the &quot;VER&quot; memory area. So, as soon as I rebuild my software, the linker automatically places my version string at address 0x80FFE0. If you want to verify this, just look at the .hex file:<\/p>\n<p><a href=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-3707 size-full\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576.png\" alt=\"\" width=\"812\" height=\"48\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576.png 812w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-300x18.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-768x45.png 768w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-100x6.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-150x9.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-200x12.png 200w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-450x27.png 450w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/Folie6-e1567761501576-600x35.png 600w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><\/a><\/p>\n<p>If we enter the whole thing into a hex-to-ASCII converter, of which there are plenty available online, we get our revision string &quot;Debug_6427:6431M&quot; again. This has the pleasant side effect that I can also assign .hex files that might be in circulation by simply opening them with an editor.<\/p>\n<h2>Conclusion<\/h2>\n<p>There are many reasons to automatically version your software. Anyone setting up a new software project should set something up as quickly as possible, before software whose version can no longer be assigned is in circulation. The approach demonstrated here can, of course, also be applied to non-Eclipse-based IDEs like Keil or IAR. Furthermore, the whole process can be implemented just as well (if not better) with GIT.<\/p>","protected":false},"excerpt":{"rendered":"<p>Was ist das Problem? Wenn wir Embedded Software entwickeln ist die Wunschvorstellung das wir nach V-Modell spezifizieren, implementieren, integrieren, testen und anschlie\u00dfend ausliefern. In realen Projekten sieht das aber nat\u00fcrlich etwas anders aus. In der Regel wird Software inkrementell entwickelt. W\u00e4hrend der Entwicklung gibt es immer Zwischenst\u00e4nde mit unterschiedlichen Features, die unterschiedlich ausgereift sind. W\u00fcnschenswert [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3701,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","tve_updated_post":"","tve_custom_css":"","tve_user_custom_css":"","tve_globals":{},"tcb2_ready":1,"tcb_editor_enabled":0,"tve_landing_page":"","_tve_header":"","_tve_footer":""},"categories":[6,8],"tags":[353,352,21,38,30,351],"class_list":["post-3693","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","category-tools","tag-eclipse","tag-git","tag-mikrocontroller","tag-software","tag-svn","tag-versionierung","post-wrapper","thrv_wrapper"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Software Artefakte automatisch versionieren - MEDtech Ingenieur GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/medtech-ingenieur.de\/en\/software-artefakte-fuer-automatische-versionierung\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Software Artefakte automatisch versionieren - MEDtech Ingenieur GmbH\" \/>\n<meta property=\"og:description\" content=\"Was ist das Problem? Wenn wir Embedded Software entwickeln ist die Wunschvorstellung das wir nach V-Modell spezifizieren, implementieren, integrieren, testen und anschlie\u00dfend ausliefern. In realen Projekten sieht das aber nat\u00fcrlich etwas anders aus. In der Regel wird Software inkrementell entwickelt. W\u00e4hrend der Entwicklung gibt es immer Zwischenst\u00e4nde mit unterschiedlichen Features, die unterschiedlich ausgereift sind. W\u00fcnschenswert [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/medtech-ingenieur.de\/en\/software-artefakte-fuer-automatische-versionierung\/\" \/>\n<meta property=\"og:site_name\" content=\"MEDtech Ingenieur GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/medtechIngenieur\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-20T14:08:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-06T13:37:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png\" \/>\n\t<meta property=\"og:image:width\" content=\"841\" \/>\n\t<meta property=\"og:image:height\" content=\"598\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bj\u00f6rn Schmitz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MedtechIng\" \/>\n<meta name=\"twitter:site\" content=\"@MedtechIng\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bj\u00f6rn Schmitz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/\"},\"author\":{\"name\":\"Bj\u00f6rn Schmitz\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/person\\\/d8d57dae1a037203802f980694210c96\"},\"headline\":\"Software Artefakte automatisch versionieren\",\"datePublished\":\"2019-09-20T14:08:58+00:00\",\"dateModified\":\"2021-08-06T13:37:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/\"},\"wordCount\":1096,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/version-1-e1567754425648.png\",\"keywords\":[\"Eclipse\",\"GIT\",\"Mikrocontroller\",\"Software\",\"SVN\",\"Versionierung\"],\"articleSection\":[\"Software\",\"Tools\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/\",\"name\":\"Software Artefakte automatisch versionieren - MEDtech Ingenieur GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/version-1-e1567754425648.png\",\"datePublished\":\"2019-09-20T14:08:58+00:00\",\"dateModified\":\"2021-08-06T13:37:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#primaryimage\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/version-1-e1567754425648.png\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/version-1-e1567754425648.png\",\"width\":841,\"height\":598},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/software-artefakte-fuer-automatische-versionierung\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software Artefakte automatisch versionieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#website\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\",\"name\":\"MEDtech Ingenieur GmbH\",\"description\":\"Ingenieursdienstleister f\u00fcr Medizintechnik\",\"publisher\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\"},\"alternateName\":\"MEDtech\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/medtech-ingenieur.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\",\"name\":\"MEDtech Ingenieur\",\"alternateName\":\"MEDtech\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/logo-700x700-1.png\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/logo-700x700-1.png\",\"width\":700,\"height\":700,\"caption\":\"MEDtech Ingenieur\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/medtechIngenieur\",\"https:\\\/\\\/x.com\\\/MedtechIng\",\"https:\\\/\\\/www.instagram.com\\\/medtech.ingenieure\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/37871229\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/person\\\/d8d57dae1a037203802f980694210c96\",\"name\":\"Bj\u00f6rn Schmitz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/220b9f0a28245f1734df66dc6a1279c867b612a6f80e83450554b93475740ff1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/220b9f0a28245f1734df66dc6a1279c867b612a6f80e83450554b93475740ff1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/220b9f0a28245f1734df66dc6a1279c867b612a6f80e83450554b93475740ff1?s=96&d=mm&r=g\",\"caption\":\"Bj\u00f6rn Schmitz\"},\"description\":\"Seit Juli 2017 geh\u00f6re ich zum MEDtech-Ingenieur Team und bin hier vor allem als Firmwareentwickler t\u00e4tig. Schon in k\u00fcrzester Zeit konnte ich an vielen spannenden Projekten aus dem Bereich Medizintechnik, aber auch aus anderen Bereichen mitwirken.\",\"sameAs\":[\"https:\\\/\\\/www.medtech-ingenieur.de\"],\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/en\\\/author\\\/bjoern\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatically version software artifacts - MEDtech Ingenieur GmbH","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:\/\/medtech-ingenieur.de\/en\/software-artefakte-fuer-automatische-versionierung\/","og_locale":"en_US","og_type":"article","og_title":"Software Artefakte automatisch versionieren - MEDtech Ingenieur GmbH","og_description":"Was ist das Problem? Wenn wir Embedded Software entwickeln ist die Wunschvorstellung das wir nach V-Modell spezifizieren, implementieren, integrieren, testen und anschlie\u00dfend ausliefern. In realen Projekten sieht das aber nat\u00fcrlich etwas anders aus. In der Regel wird Software inkrementell entwickelt. W\u00e4hrend der Entwicklung gibt es immer Zwischenst\u00e4nde mit unterschiedlichen Features, die unterschiedlich ausgereift sind. W\u00fcnschenswert [&hellip;]","og_url":"https:\/\/medtech-ingenieur.de\/en\/software-artefakte-fuer-automatische-versionierung\/","og_site_name":"MEDtech Ingenieur GmbH","article_publisher":"https:\/\/www.facebook.com\/medtechIngenieur","article_published_time":"2019-09-20T14:08:58+00:00","article_modified_time":"2021-08-06T13:37:05+00:00","og_image":[{"width":841,"height":598,"url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png","type":"image\/png"}],"author":"Bj\u00f6rn Schmitz","twitter_card":"summary_large_image","twitter_creator":"@MedtechIng","twitter_site":"@MedtechIng","twitter_misc":{"Written by":"Bj\u00f6rn Schmitz","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#article","isPartOf":{"@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/"},"author":{"name":"Bj\u00f6rn Schmitz","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/person\/d8d57dae1a037203802f980694210c96"},"headline":"Software Artefakte automatisch versionieren","datePublished":"2019-09-20T14:08:58+00:00","dateModified":"2021-08-06T13:37:05+00:00","mainEntityOfPage":{"@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/"},"wordCount":1096,"commentCount":1,"publisher":{"@id":"https:\/\/medtech-ingenieur.de\/#organization"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#primaryimage"},"thumbnailUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png","keywords":["Eclipse","GIT","Mikrocontroller","Software","SVN","Versionierung"],"articleSection":["Software","Tools"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/","url":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/","name":"Automatically version software artifacts - MEDtech Ingenieur GmbH","isPartOf":{"@id":"https:\/\/medtech-ingenieur.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#primaryimage"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#primaryimage"},"thumbnailUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png","datePublished":"2019-09-20T14:08:58+00:00","dateModified":"2021-08-06T13:37:05+00:00","breadcrumb":{"@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#primaryimage","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2019\/09\/version-1-e1567754425648.png","width":841,"height":598},{"@type":"BreadcrumbList","@id":"https:\/\/medtech-ingenieur.de\/software-artefakte-fuer-automatische-versionierung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/medtech-ingenieur.de\/"},{"@type":"ListItem","position":2,"name":"Software Artefakte automatisch versionieren"}]},{"@type":"WebSite","@id":"https:\/\/medtech-ingenieur.de\/#website","url":"https:\/\/medtech-ingenieur.de\/","name":"MEDtech Ingenieur GmbH","description":"Engineering service provider for medical technology","publisher":{"@id":"https:\/\/medtech-ingenieur.de\/#organization"},"alternateName":"MEDtech","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/medtech-ingenieur.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/medtech-ingenieur.de\/#organization","name":"MEDtech Engineer","alternateName":"MEDtech","url":"https:\/\/medtech-ingenieur.de\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/logo\/image\/","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/01\/logo-700x700-1.png","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/01\/logo-700x700-1.png","width":700,"height":700,"caption":"MEDtech Ingenieur"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/medtechIngenieur","https:\/\/x.com\/MedtechIng","https:\/\/www.instagram.com\/medtech.ingenieure\/","https:\/\/www.linkedin.com\/company\/37871229\/"]},{"@type":"Person","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/person\/d8d57dae1a037203802f980694210c96","name":"Bj\u00f6rn Schmitz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/220b9f0a28245f1734df66dc6a1279c867b612a6f80e83450554b93475740ff1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/220b9f0a28245f1734df66dc6a1279c867b612a6f80e83450554b93475740ff1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/220b9f0a28245f1734df66dc6a1279c867b612a6f80e83450554b93475740ff1?s=96&d=mm&r=g","caption":"Bj\u00f6rn Schmitz"},"description":"I&#039;ve been part of the MEDtech engineering team since July 2017, primarily working as a firmware developer. In a very short time, I&#039;ve been able to work on many exciting projects in the medical technology field, as well as in other areas.","sameAs":["https:\/\/www.medtech-ingenieur.de"],"url":"https:\/\/medtech-ingenieur.de\/en\/author\/bjoern\/"}]}},"_links":{"self":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/3693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/comments?post=3693"}],"version-history":[{"count":25,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/3693\/revisions"}],"predecessor-version":[{"id":5817,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/3693\/revisions\/5817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/media\/3701"}],"wp:attachment":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/media?parent=3693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/categories?post=3693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/tags?post=3693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}