<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to SCM Repositories</title><link>https://forge.codesys.com/forge/wiki/SCM%2520Repositories/</link><description>Recent changes to SCM Repositories</description><language>en</language><lastBuildDate>Sat, 22 Sep 2018 08:11:47 -0000</lastBuildDate><atom:link href="https://forge.codesys.com/forge/wiki/SCM%20Repositories/feed" rel="self" type="application/rss+xml"></atom:link><item><title>SCM Repositories modified by Ingo</title><link>https://forge.codesys.com/forge/wiki/SCM%2520Repositories/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -52,6 +52,13 @@

 CODESYS SVN is usually a comercial add on for professionals. But it can be used for free to access repositories from CODESYS Forge. You can get it from the [CODESYS Store](https://store.codesys.com/codesys-svn.html).

+## Project version
+CODESYS is always backward compatible. So you can use an older library or project always with a newer version of CODESYS. So usually you should not encounter any compatibility problems between you and your users, as they can always use the most current version of CODESYS.
+
+But converting the projects and libraries forth and back all the time is no good idea. So when you are working with a small team on a project, you should decide to use one specific project format within the team.
+
+The contineous integration system on CODESYS Forge is obviously also based on a specific version. So check the [documentation](Continous Integration) if you work with that.
+
 # Git

 Git works in many respects very similar to SVN. In the following we will point out the conceptional differences when working in a Team.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ingo</dc:creator><pubDate>Sat, 22 Sep 2018 08:11:47 -0000</pubDate><guid isPermaLink="false">https://forge.codesys.com7c725eeee199316ca06d19ac5e69691222bf7191</guid></item><item><title>SCM Repositories modified by Ingo</title><link>https://forge.codesys.com/forge/wiki/SCM%2520Repositories/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -33,31 +33,19 @@

 A CODESYS project, which is imported into SVN or checked out from SVN has a connection to this repository, very similar to a folder which you checked out with one of the other SVN clients.

-You should avoid to work in the same repository with different clients. So you should not use the an SVN client like Tortoise SVN and CODESYS SVN on the same repository. The reason is, that the risk of committing specific files with the wrong tool is too high.
+You should avoid to work in the same repository with different clients. So you should not use an SVN client like Tortoise SVN and CODESYS SVN on the same repository. The reason is, that the risk of committing specific files with the wrong tool is too high.

-So, don't commit your libraries like this:
+To reduce this risk, you can use the tool [cforge](/tol/cforge) to checkout and update the repository on your PC, as cforge will not checkout internal files of CODESYS SVN.
+
+This is the layout, how cforge would commit the data, but which you should avoid when you maintain the repository without cforge:

 ~~~
 MyHeatingControl.project
 pumps.library
-sensors.libtary
+sensors.library
 MyHeatingControl/...
 pumps/...
 sensors/...
-~~~
-
-... but only commit it with CODESYS SVN:
-~~~
-MyHeatingControl/...
-pumps/...
-sensors/...
-~~~
-
-The CODESYS libraries are then only checked out on your PC:
-~~~
-MyHeatingControl.project
-pumps.library
-sensors.libtary
 ~~~

 It is recommended to use a separated repository for CODESYS projects. Separating the code which is maintained with different SVN clients makes the handling of branches and tags easier.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ingo</dc:creator><pubDate>Sat, 22 Sep 2018 08:03:43 -0000</pubDate><guid isPermaLink="false">https://forge.codesys.com418a9a8554cf5b2cc78d16dbc67428812e718273</guid></item><item><title>SCM Repositories modified by Ingo</title><link>https://forge.codesys.com/forge/wiki/SCM%2520Repositories/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -62,7 +62,7 @@

 It is recommended to use a separated repository for CODESYS projects. Separating the code which is maintained with different SVN clients makes the handling of branches and tags easier.

-CODESYS SVN is usually a comercial add on for professionals. But there is a free package, called [CODESYS SVN Forge](https://store.codesys.com/codesys-svn-forge.html), whcih you can use for free, if you connect only on CODESYS Forge.
+CODESYS SVN is usually a comercial add on for professionals. But it can be used for free to access repositories from CODESYS Forge. You can get it from the [CODESYS Store](https://store.codesys.com/codesys-svn.html).

 # Git

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ingo</dc:creator><pubDate>Wed, 25 Apr 2018 20:16:24 -0000</pubDate><guid isPermaLink="false">https://forge.codesys.com5dc3ddece321330f388f3242f42a9076dc120417</guid></item><item><title>SCM Repositories modified by codesys.com</title><link>https://forge.codesys.com/forge/wiki/SCM%2520Repositories/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -33,9 +33,9 @@

 A CODESYS project, which is imported into SVN or checked out from SVN has a connection to this repository, very similar to a folder which you checked out with one of the other SVN clients.

-For convenience, we recommend to check this binary project or library, containing this connection to SVN, additionally in. This way, you can maintain the CODESYS in its binary form, as well as the SVN sources in one repository.
+You should avoid to work in the same repository with different clients. So you should not use the an SVN client like Tortoise SVN and CODESYS SVN on the same repository. The reason is, that the risk of committing specific files with the wrong tool is too high.

-Here is a possible repository layout:
+So, don't commit your libraries like this:

 ~~~
 MyHeatingControl.project
@@ -46,9 +46,23 @@
 sensors/...
 ~~~

-It is recommended to use a separated repository for CODESYS projects. As you use with CODESYS SVN another SVN client for it as you use for your other code, it makes the handling of branches and tags easier.
+... but only commit it with CODESYS SVN:
+~~~
+MyHeatingControl/...
+pumps/...
+sensors/...
+~~~

-CODESYS SVN is usually a comercial add on for professionals. But there is community edition which can be freely used with CODESYS Forge.
+The CODESYS libraries are then only checked out on your PC:
+~~~
+MyHeatingControl.project
+pumps.library
+sensors.libtary
+~~~
+
+It is recommended to use a separated repository for CODESYS projects. Separating the code which is maintained with different SVN clients makes the handling of branches and tags easier.
+
+CODESYS SVN is usually a comercial add on for professionals. But there is a free package, called [CODESYS SVN Forge](https://store.codesys.com/codesys-svn-forge.html), whcih you can use for free, if you connect only on CODESYS Forge.

 # Git

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">codesys.com</dc:creator><pubDate>Mon, 08 Jan 2018 16:50:09 -0000</pubDate><guid isPermaLink="false">https://forge.codesys.comac0485fb496abc29c8c6ed7ff23cec14241bb192</guid></item><item><title>SCM Repositories modified by codesys.com</title><link>https://forge.codesys.com/forge/wiki/SCM%2520Repositories/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#subversion-svn"&gt;Subversion (SVN)&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#trunk"&gt;Trunk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tags"&gt;Tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#branches"&gt;Branches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#codesys"&gt;CODESYS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#git"&gt;Git&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#master"&gt;Master&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fork"&gt;Fork&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tags_1"&gt;Tags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#codesys-libraries"&gt;CODESYS Libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#merge-requests-aka-pull-requests"&gt;Merge Requests (aka Pull Requests)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
  
    &lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;General&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="/forge/wiki/User%20Accounts/"&gt;User Accounts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="/forge/wiki/Project%20Maintenance/"&gt;Project Maintenance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../Landing%20Page"&gt;Landing Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../SCM%20Repositories"&gt;Source Code Repositories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../Downloads"&gt;Downloads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../Tickets"&gt;Tickets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../IO%20Drivers"&gt;I/O Drivers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../Contribution"&gt;Contribution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HowTos&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="" href="../HowTo%20Project%20Look"&gt;Project Look&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../HowTo%20Project%20Structure"&gt;Project Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../HowTo%20Project%20Rights"&gt;Project Rights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="" href="../HowTo%20Wiki%20Index"&gt;Wiki Index&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;&lt;/div&gt;
  
&lt;/div&gt;


&lt;p&gt;For your project, you can choose between two different source code management systems. As CODESYS provides native support for SVN, we would always recommend that if you want to manage CODESYS projects.&lt;br/&gt;
In every other cases, git has the huge advantage, that you can work locally, make even local commits, and push everything to the master repository only after you are satisfied with the result.&lt;br/&gt;
Especially in distributed, open source projects, where all participants have their own goals, this is a huge advantage.&lt;/p&gt;
&lt;h1 id="subversion-svn"&gt;Subversion (SVN)&lt;/h1&gt;
&lt;p&gt;We recommend the use of the following tools:&lt;/p&gt;
&lt;p&gt;• SVN commandline tools&lt;br/&gt;
• TortoiseSVN&lt;br/&gt;
• CODESYS SVN&lt;/p&gt;
&lt;p&gt;In general you can work with the following workflow:&lt;/p&gt;
&lt;h2 id="trunk"&gt;Trunk&lt;/h2&gt;
&lt;p&gt;Use the folder "trunk" to write and commit all your code&lt;/p&gt;
&lt;h2 id="tags"&gt;Tags&lt;/h2&gt;
&lt;p&gt;After you are satisfied with the software and you want to prepare a release, you can tag your trunk to a specific version.&lt;br/&gt;
To do so, just use "svn copy" to copy "trunk" to "branchea/v1.0"&lt;/p&gt;
&lt;h2 id="branches"&gt;Branches&lt;/h2&gt;
&lt;p&gt;In Distributet Projects it is a good idea if not everyone is committing to the same trunk when they are developing larger features. It is recommended to create a "ticket" to describe the development and create a branch to develop this feature.&lt;br/&gt;
After finish and review by other project members, one can then "merge" this change into the trunk.&lt;/p&gt;
&lt;h2 id="codesys"&gt;CODESYS&lt;/h2&gt;
&lt;p&gt;CODESYS projects are usually saved in a propritary binary format. CODESYS SVN is an add on for CODESYS, which breaks this format out into several objects, which are then maintained in SVN. CODESYS itself is acting as the SVN client and the merge tool in this scenario.&lt;/p&gt;
&lt;p&gt;A CODESYS project, which is imported into SVN or checked out from SVN has a connection to this repository, very similar to a folder which you checked out with one of the other SVN clients.&lt;/p&gt;
&lt;p&gt;For convenience, we recommend to check this binary project or library, containing this connection to SVN, additionally in. This way, you can maintain the CODESYS in its binary form, as well as the SVN sources in one repository.&lt;/p&gt;
&lt;p&gt;Here is a possible repository layout:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;MyHeatingControl.project
pumps.library
sensors.libtary
MyHeatingControl/...
pumps/...
sensors/...
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;It is recommended to use a separated repository for CODESYS projects. As you use with CODESYS SVN another SVN client for it as you use for your other code, it makes the handling of branches and tags easier.&lt;/p&gt;
&lt;p&gt;CODESYS SVN is usually a comercial add on for professionals. But there is community edition which can be freely used with CODESYS Forge.&lt;/p&gt;
&lt;h1 id="git"&gt;Git&lt;/h1&gt;
&lt;p&gt;Git works in many respects very similar to SVN. In the following we will point out the conceptional differences when working in a Team.&lt;/p&gt;
&lt;p&gt;We recommend the use of the following tools:&lt;/p&gt;
&lt;p&gt;• Git command line&lt;br/&gt;
• Tortoise Git&lt;/p&gt;
&lt;p&gt;Note, CODESYS doesn't support Git at the moment. See the chapter below for more details.&lt;/p&gt;
&lt;h2 id="master"&gt;Master&lt;/h2&gt;
&lt;p&gt;This is the version of the repository where everyone is working on. It can be compared to the "trunk" in SVN.&lt;/p&gt;
&lt;h2 id="fork"&gt;Fork&lt;/h2&gt;
&lt;p&gt;Every larger change should be done in a fork, which can be compared to SVN "branches". A fork can later be merged to the master.&lt;/p&gt;
&lt;h2 id="tags_1"&gt;Tags&lt;/h2&gt;
&lt;p&gt;Contrary to SVN a Tag in Git doesn't create a nee Revision. It just names this Revision. Actually it is more similar to CVS labels.&lt;br/&gt;
Tags can be used to mark releases Versions. Release Tags shall only be used on the Master.&lt;/p&gt;
&lt;h1 id="codesys-libraries"&gt;CODESYS Libraries&lt;/h1&gt;
&lt;p&gt;CODESYS supports to store projects or libraries in SVN. As you need CODESYS to resolve conflicts it is always a good idea to use an own Repository for CODESYS libraries or projects.&lt;/p&gt;
&lt;h1 id="merge-requests-aka-pull-requests"&gt;Merge Requests (aka Pull Requests)&lt;/h1&gt;
&lt;p&gt;In Git you can place so called "Merge Requests", which are very similar to "Pull Requests" on GitHub.&lt;/p&gt;
&lt;p&gt;You are free to use those on CODESYS Forge for your project. But, as we propose a multi-repository project layout in combination with SVN for CODESYS projects, we don't suggest it.&lt;/p&gt;
&lt;p&gt;To track branches, which need to be integrated, we recommend the use of Tickets.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">codesys.com</dc:creator><pubDate>Thu, 04 Jan 2018 14:51:48 -0000</pubDate><guid isPermaLink="false">https://forge.codesys.combbf22ff2d95ec95a8cfd6f7cf3817d3132804755</guid></item></channel></rss>