{"id":3053,"date":"2020-02-05T10:01:50","date_gmt":"2020-02-05T09:01:50","guid":{"rendered":"https:\/\/www.puls200.de\/?p=3053"},"modified":"2020-02-12T07:33:51","modified_gmt":"2020-02-12T06:33:51","slug":"svn-to-git-part-ii","status":"publish","type":"post","link":"https:\/\/www.puls200.de\/?p=3053","title":{"rendered":"SVN to Git (Part II)"},"content":{"rendered":"\n<p>Das SVN Repository nach Git zu \u00fcberf\u00fchren ist schon nicht schlecht, nur reicht das in vielen F\u00e4llen nicht ganz aus. In \"klassischen\" VCS Systemen sind h\u00e4ufig mehrere Projekte enthalten, wie auch in meinem SVN Repository. In Git empfiehlt es sich jedoch, f\u00fcr jedes Projekt ein eigenes Repository anzulegen. Der Hintergrund ist, dass es nicht m\u00f6glich ist, Branches und Merges nur auf einem Teil des Repositories auszuf\u00fchren. Wenn z.B. in einer Struktur \"Projekte\" Unterverzeichnisse mit den Projekten \"A\", \"B\" und \"C\" existieren, kann in git nicht z.B. \"C\" master nach \"C\" v. 1.0 gebrancht werden. Durch die \"leichte\" Bauart der Repositories ist es aber kein Problem, f\u00fcr die Unterprojekte jeweils eigene Repositories anzulegen. Ein weiterer Vorteil ist, dass damit auch Abh\u00e4ngigkeiten offensichtlicher werden, was zu sauberem Arbeiten verleitet.<\/p>\n\n\n\n<p>Was kann man also machen? Die Vorgehensweise ist grob die: Das von SVN <a href=\"https:\/\/www.puls200.de\/?p=3045\" rel=\"noopener noreferrer\" target=\"_blank\">im ersten Teil<\/a> erzeugte \"gro\u00dfe\" Repository wird zun\u00e4chst noch einmal geklont. Dann werden die unerw\u00fcnschten Teilprojekte herausgetrennt, so dass nur noch das relevante Projekt \u00fcbrig bleibt. Dieses Repository wird dann noch einmal sauber in ein neues, endg\u00fcltiges Repository geklont.<br \/>\nZu meinem Beispiel soll ein Repo erzeugt werden, dass nur das Projekt \"C\" enth\u00e4lt.<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow\">\n<p><\/p>\n<\/div><\/div>\n\n\n\n<p>Das von SVN erzeugte Repository in ein tempor\u00e4res Repository klonen und in das Verzeichnis wechseln<code> <\/code><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; notranslate\" title=\"\">\n git clone git_svn\/ git_svn.tmp\/\n cd git_svm.tmp\n<\/pre><\/div>\n\n\n<p>Abtrennen der Projekte A und B<br \/> <\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; notranslate\" title=\"\">\ngit filter-branch --prune-empty --index-filter &#039;git rm --cached --ignore-unmatch A\/* B\/*&#039; HEAD\n<\/pre><\/div>\n\n\n<p>Der jetzt entstandene \"Rest\" wird zu einem neuen Repository. Das Zwischen-Repository kann danach gel\u00f6scht werden. Bitte beachten: Ab jetzt ist ein Update per git svn fetch nicht mehr m\u00f6glich, da die remote Beziehung nicht mehr besteht.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; title: ; notranslate\" title=\"\">\ncd ..\ngit clone git_svn.tmp\/ new\/path\/to\/C\nrm -rf git_svn.tmp\/\n<\/pre><\/div>\n\n\n<p>In diesem Zusammenhang m\u00f6chte ich auf das neue sch\u00f6ne Syntax-Highlighting ab diesem Post aufmerksam machen, das durch das Plugin <a rel=\"noreferrer noopener\" aria-label=\"Syntax Highlighter Evolved (opens in a new tab)\" href=\"https:\/\/wordpress.org\/plugins\/syntaxhighlighter\/\" target=\"_blank\">Syntax Highlighter Evolved<\/a> erzeugt wird. Das klappte erst durch die Umstellung auf den neuen WordPress-Editor, mit dem ich bis heute nicht zurecht kam. Grund war, dass der Schalter f\u00fcr das Hinzuf\u00fcgen von Blocks immer ausgegraut war. \u00c4rger! Die L\u00f6sung ist einfach wie idiotisch: In den User Einstellungen \" Disable the visual editor when writing \" erst deaktivieren, speichern und dann wieder anhaken und speichern. Dann funktioniert es. Das liegt vermutlich an einem etwas defekten zur\u00fcckliegenden WordPress-Update.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das SVN Repository nach Git zu \u00fcberf\u00fchren ist schon nicht schlecht, nur reicht das in vielen F\u00e4llen nicht ganz aus. In &#8220;klassischen&#8221; VCS Systemen sind h\u00e4ufig mehrere Projekte enthalten, wie auch in meinem SVN Repository. In Git empfiehlt es sich &hellip; <a href=\"https:\/\/www.puls200.de\/?p=3053\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[65,4,24],"tags":[67,68],"_links":{"self":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/3053"}],"collection":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3053"}],"version-history":[{"count":12,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/3053\/revisions"}],"predecessor-version":[{"id":3068,"href":"https:\/\/www.puls200.de\/index.php?rest_route=\/wp\/v2\/posts\/3053\/revisions\/3068"}],"wp:attachment":[{"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.puls200.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}