{"id":6659,"date":"2014-03-06T05:56:48","date_gmt":"2014-03-06T13:56:48","guid":{"rendered":"http:\/\/localhost\/exoblog\/?p=6659"},"modified":"2014-03-06T05:56:48","modified_gmt":"2014-03-06T13:56:48","slug":"back-sources-version-control-systems-subversion-git","status":"publish","type":"post","link":"https:\/\/www.exoplatform.com\/blog\/back-sources-version-control-systems-subversion-git\/","title":{"rendered":"Back To The Sources &#8211; Version Control Systems: From Subversion to Git"},"content":{"rendered":"<p>Now that you have an <a href=\"https:\/\/www.exoplatform.com\/blog\/back-sources-organizing-900000-lines-code-projects\/\">overview of how our sources are organised<\/a> into (sub-)projects let\u2019s see where to find them.<\/p>\n<p><!--more--><\/p>\n<h2>From Subversion to Git<\/h2>\n<p>A little bit more than one year ago we switched all our projects sources from the centralised source control management tool <a href=\"https:\/\/subversion.apache.org\/\" target=\"_blank\" rel=\"noopener\">Subversion<\/a> to the distributed one <a href=\"https:\/\/git-scm.com\/\" target=\"_blank\" rel=\"noopener\">Git<\/a>. Even if it is always a challenge to change such tool which is the central piece of your development (you need to train your teams, adapt your tools and processes), it was necessary to improve our ability to quickly evolve, and manage long-term branches to develop new features or to maintain previous releases of the product (we\u2019ll see in a future article how we benefit from it nowadays with our acceptance infrastructure managing live instances deployment of feature branches currently developed).<\/p>\n<p>For the migration we didn\u2019t chose the possibility to run both systems in parallel to avoid to maintain them twice and to enforce our teams to switch to Git as soon as possible. I automated the conversion of all our projects from our old subversion (svn.exoplatform.org) and it occurred a week-end. I was really satisfied by <a href=\"https:\/\/github.com\/nirvdrum\/svn2git\" target=\"_blank\" rel=\"noopener\">svn2git<\/a> thus I wrote a little <a href=\"https:\/\/gist.github.com\/aheritier\/8824148\" target=\"_blank\" rel=\"noopener\">script<\/a> to do it.<\/p>\n<h2>Sources repositories<\/h2>\n<p>We are now hosting our projects on <a href=\"https:\/\/github.com\/\" target=\"_blank\" rel=\"noopener\">Github<\/a> in a dedicated organisation <a href=\"https:\/\/github.com\/exoplatform\/\" target=\"_blank\" rel=\"noopener\">exoplatform<\/a>. Unlike in Subversion where we stored everything in a unique repository, with Git we created one repository by project to better handle the lifecycle of each of them (with git when you create a branch it is for the whole repository unlike in subversion where it was for a subdirectory).<\/p>\n<p>The current list of repositories compounding eXo platform is the following :<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/exoplatform\/platform-public-distributions\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/platform-public-distributions\/<\/a> : Platform public distributions. Main project used to package the standalone community edition based on <a href=\"https:\/\/tomcat.apache.org\/\" target=\"_blank\" rel=\"noopener\">Apache Tomcat<\/a>.<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/platform\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/platform\/<\/a> : eXo Platform<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/integration\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/integration\/<\/a> : Integration of eXo services<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/calendar\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/calendar\/<\/a> : Calendar component<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/forum\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/forum\/<\/a> : Forum component<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/wiki\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/wiki\/<\/a> : Wiki component<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/social\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/social\/<\/a> : Social component<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/ecms\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/ecms\/<\/a> : Content management components<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/commons\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/commons\/<\/a> : Commons services<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/platform-ui\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/platform-ui\/<\/a> : UI customizations to overrride GateIn styles<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/jcr\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/jcr\/<\/a> : eXo JCR, Java Content Repository implementation of the JSR-170 standard<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/ws\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/ws\/<\/a> : Web Services component<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/core\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/core\/<\/a> : Core Services<\/li>\n<li><a href=\"https:\/\/github.com\/exoplatform\/kernel\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/exoplatform\/kernel\/<\/a> : Kernel component<\/li>\n<\/ul>\n<p><b>Note : <\/b>There is also <a href=\"https:\/\/www.jboss.org\/gatein\" target=\"_blank\" rel=\"noopener\">GateIn<\/a>, our portal layer, which is a project co-developed with <a href=\"https:\/\/www.redhat.com\/\" target=\"_blank\" rel=\"noopener\">RedHat<\/a> and whose source code is hosted on its own Github organisation : <a href=\"https:\/\/github.com\/gatein\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/gatein<\/a><\/p>\n<p><!--begin adv-events--><\/p>\n<div class=\"adv-events\" style=\"background: #476fad; padding: 30px 20px; color: white; border-radius: 3px;\">\n<div class=\"media\">\n<div class=\"pull-right\"><a href=\"#\"><br \/>\n<img decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-6587 alignright\" src=\"https:\/\/www.exoplatform.com\/blog\/wp-content\/uploads\/2014\/02\/how-to-make-the-most-of-eXo-platform41.png\" alt=\"make-the-most-out-of-eXo-platform4\" width=\"161\" height=\"85\"><br \/>\n<\/a><\/div>\n<div class=\"media-body\">\n<h4 class=\"media-heading\">Make the most out of eXo Platform 4<\/h4>\n<p>Register to the next webinar and get a complete overview of what you can do with eXo Platform 4. <strong><a href=\"https:\/\/www.exoplatform.com\/contact-us\/\">Reserve your seat now!<\/a><\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!--end adv-events--><\/p>\n","protected":false},"excerpt":{"rendered":"Now that you have an overview of how our sources are organised into (sub-)projects let\u2019s see where to find them.","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[699],"tags":[],"lang":"en","translations":{"en":6659},"pll_sync_post":[],"_links":{"self":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/6659"}],"collection":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/comments?post=6659"}],"version-history":[{"count":0,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/posts\/6659\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/media?parent=6659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/categories?post=6659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.exoplatform.com\/blog\/wp-json\/wp\/v2\/tags?post=6659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}