<?xml version='1.0' encoding='utf-8' ?>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>Sample use case</title>
		<style type="text/css">
			.tip {border: 1px solid #090;background-color: #dfd;margin: 20px;padding: 0px 6px 0px 6px;}
			.note {border: 1px solid #F0C000;background-color: #FFFFCE;margin: 20px;padding: 0px 6px 0px 6px;}
			.info {border: 1px solid #3c78b5;background-color: #D8E4F1;margin: 20px;padding: 0px 6px 0px 6px;}
			.warning {border: 1px solid #c00;background-color: #fcc;margin: 20px;padding: 0px 6px 0px 6px;}
			.panel {border: 1px solid #ccc;background-color: #FFFFCE;margin: 10px;padding: 0px 6px 0px 6px;}
</style>
		<link type="text/css" rel="stylesheet" href="../resources/bootstrap.css"/>
		<link type="text/css" rel="stylesheet" href="../resources/custom.css"/>
	</head>
	<body>
		<h1 id="EMF_Compare_.E2.80.94__Sample_use_case">EMF Compare —  Sample use case</h1>
		<p>Version 3.1.0.201506080946</p>
		<div class="toc">
			<h3 class="toc-title">Table of Contents</h3>
			<ol style="list-style: none">
				<li>
					<a href="#Creating_a_model">Creating a model</a>
				</li>
				<li>
					<a href="#Branching">Branching</a>
				</li>
				<li>
					<a href="#Merge">Merge</a>
				</li>
			</ol>
		</div>
		<p>With the following, we'll follow the life cycle of a metamodel describing a very basic library as it evolves separately in different branches. This will allow us to give more concrete examples of how EMF Compare can be used, and how it can help you.</p>
		<h2 id="Creating_a_model">Creating a model</h2>
		<p>For this test, we'll suppose that you are trying to use EMF Compare on UML models shared under git. This will not go in details about UML and Git. We'll assume that you know how to manipulate an UML model, create or clone a git repository, share a project under it and use standard Git operations.</p>
		<p>The name of our sample project will be "library". It contains a single folder "model" containing two models :</p>
		<ul>
			<li>library_Types.uml will contain our primitive types,</li>
			<li>library.uml will contain our actual model.</li>
		</ul>
		<p>The two models will be committed to our git clone. The whole thing looks like this :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Setup.png"/>
		</p>
		<p>The model itself is a very simple library. Graphically speaking :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Model.png"/>
		</p>
		<p>Now that this initial model file has been committed, we'd like to improve it a little. For example :</p>
		<ul>
			<li>Add an 
				<i>alias</i> property to the 
				<i>Writer</i> class,
			</li>
			<li>Add a new 
				<i>History</i> Category,
			</li>
			<li>Rename the 
				<i>pages</i> property of 
				<i>Book</i> into 
				<i>length</i>.
			</li>
		</ul>
		<p>Our model now looks like this :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Model_Changed.png"/>
		</p>
		<p>But how do we know exactly what changed? Let's compare this with the file from the Git Index :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_1.png"/>
		</p>
		<p>This will open a comparison editor that initially looks like the following :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_2.png"/>
		</p>
		<p>There are three main areas of interest in this editor.</p>
		<ol>
			<li>Displays a structured list of the differences detected between the current version of the model and the version that lies in the Git Index.</li>
			<li>This will react to the selections in (1) and display the 
				<i>left</i> side of this comparison. As a rule of thumb, the 
				<i>left</i> is the 
				<i>local</i> version of the model. In this example, 
				<i>left</i> will then be the version we have modified in our workspace. This is originally filled with the first difference that is selected in the top panel (1), more on this section in the example just below.
			</li>
			<li>As above, this will react to selections in (1), but this time it will display the 
				<i>right</i> side of the comparison. This is generally the 
				<i>remote</i> version of the model; the version to which we've compared ours. In this case, this will represent the version of the model as it is in the Git Index. This is originally empty, more on this section in the example just below.
			</li>
		</ol>
		<p>As stated above, (2) and (3) are initially filled with the values of the difference selected in the top panel (1). These two panels are there to display more information about the differences detected between our models. Let's select another difference displayed in (1) :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_3.png"/>
		</p>
		<ol>
			<li>We've selected the difference corresponding to the addition of attribute 
				<b>alias</b> in the class 
				<b>Writer</b>. A double-click on this difference updated our two panes below.
			</li>
			<li>
				<b>alias</b> has been added to the properties of Class 
				<b>Writer</b>. In the model, this corresponds to a change to the reference 
				<i>ownedAttributes</i> of the 
				<i>Writer</i> Class. This sub-panel indicates the actual reference that was changed in oder to remind us of the context.
			</li>
			<li>This displays all values of the reference outlined in (2) as they are in the 
				<i>left</i> model. This is where we see the new value, 
				<b>alias</b> outlined.
			</li>
			<li>As for (2), this will display the context of the selected difference. The same reference will usually be displayed in both (2) and (4).</li>
			<li>This panel displays all values of the reference outlined in (4) as they are in the 
				<i>right</i> model. In here, we see the location of 
				<b>alias</b> outlined as an empty space. This rectangle is where the new value will be added if we merge it... Though in this case, it is not possible to merge towards the 
				<i>right</i> : it is a version located on a repository and is thus non-editable.
			</li>
		</ol>
		<p>This is useful in order to determine exactly what changed in our version, but serves no other purpose : merging changes here would only mean reverting back our modifications to the "clean" state from the repository. Let's commit our changes.</p>
		<h2 id="Branching">Branching</h2>
		<p>Now, we'd like to create a new feature for our library : we'd like clients to be able to borrow our books. We'll branch our repository in order to create this new feature and name this new branch 
			<i>borrowables</i> :
		</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_4.png"/>
		</p>
		<p>Starting right away, we add the necessary new concepts to our model to represent the possibility of lending books. We "may" later need to have more than books to be lendable, so let's make a 
			<i>Borrowable</i> interface to hold this concept. We'll also need a 
			<i>Person</i> class, as well as a new data type to represent the person's birth date :
		</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_5.png"/>
		</p>
		<p>In a tree viewer, our models now look like (highlighted in red, the concepts we added with this step) :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_6.png"/>
		</p>
		<p>However, while we are working on our 
			<i>borrowables</i> branch, the 
			<i>master</i> branch may still evolve : other people on the project might be adding new concepts of their own, or we could be switching to the main branch for a high priority fix ourselves. Let's imagine that two features have been added since we branched our repository. First, someone needed to have the library hold not only Books, but also Magazines. Second, we needed the publication date of our Books and magazines to be recorded.
		</p>
		<p>The first of these two commits will add the following concepts to our 
			<i>master</i> branch's model :
		</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_7.png"/>
		</p>
		<p>While the second only adds a primitive type and a property :</p>
		<p>
			<img border="0" src="../images/EMF_Compare_Use_Compare_8.png"/>
		</p>
		<h2 id="Merge">Merge</h2>
		<p>If you have followed to this point, we now have two diverging branches, 
			<i>master</i> and 
			<i>borrowables</i> which both hold a different version of our 
			<i>library.uml</i> model. Here is how these two models look like at this point :
		</p>
		<table border="1" cellpadding="5" cellspacing="0">
			<tr>
				<th align="center">Master</th>
				<th align="center">Borrowables</th>
			</tr>
			<tr>
				<td>
					<img align="middle" border="0" src="../images/EMF_Compare_Use_Compare_Master.png"/>
				</td>
				<td>
					<img align="middle" border="0" src="../images/EMF_Compare_Use_Compare_5.png"/>
				</td>
			</tr>
		</table>
		<p>Before we continue working on our Borrowables branch, we'd like to retrieve all modifications that have been pushed to master. With the "Borrowables" branch checked out, we'll use the 
			<i>Compare With &gt; Branch, Tag or Reference</i> action :
		</p>
		<p>
			<img align="middle" border="0" src="../images/EMF_Compare_Use_Compare_With_Master_1.png"/>
		</p>
		<p>and compare with master :</p>
		<p>
			<img align="middle" border="0" src="../images/EMF_Compare_Use_Compare_With_Master_2.png"/>
		</p>
		<p>This shows us all differences between our local copy and the master branch that were made since the 'branching' point.</p>
		<p>
			<img align="middle" border="0" src="../images/EMF_Compare_Merge.png"/>
		</p>
		<p>Same as previously, you can navigate through the differences via the top panel, the structural view. There are three main kind of elements displayed here. 
			<b>Regular</b> elements, that mimic the containment tree of your input models, are there to separate the various differences and let you know where they were actually detected. Then there are 
			<b>incoming</b> differences, decorated with a blue arrow (
			<img border="0" src="../images/EMF_Compare_Incoming_Change.gif"/>) or a derived icon, and 
			<b>outgoing</b> differences decorated with a green arrow (
			<img border="0" src="../images/EMF_Compare_Outgoing_Change.gif"/>) or a derived icon.
		</p>
		<pre>* <b>Incoming</b> differences are changes that were made in the remote branch (here, <i>master</i>) since the branching point (common ancestor).
* <b>Outgoing</b> differences are changes that were made in the local copy (here, the <i>borrowables</i> branch) since the branching point.
</pre>
		<p>There are no conflicts here, since UML uses computed identifiers (XMI ID) for the model elements. Thus, what looks like a conflict (the "Date" type that's been added on both branch in the types packages) is actually two distinct differences.</p>
		<p>The interface also lets you display the common ancestor of both models through the 
			<img border="0" src="../images/EMF_Compare_Ancestor.gif"/> icon. For example, if we select the 
			<b>Book</b> class, we can see how it looks like on all three versions :
		</p>
		<p>
			<img align="middle" border="0" src="../images/EMF_Compare_Merge_Book_Ancestor.png"/>
		</p>
		<p>You can navigate through the differences using the appropriate actions, either the previous (
			<img border="0" src="../images/EMF_Compare_Prev_Diff.gif"/>) or the next (
			<img border="0" src="../images/EMF_Compare_Next_Diff.gif"/>) difference.
		</p>
		<p>The remaining two actions are those that actually interest us here we can either merge all non-conflicting differences to the local copy through 
			<img border="0" src="../images/EMF_Compare_Copy_All.gif"/> or merge them one after the other through 
			<img border="0" src="../images/EMF_Compare_Copy.gif"/>.
		</p>
		<p>Merging 
			<b>all</b> differences is not what we seek : we want to keep the changes we made locally, not revert them to the state they had before the branching point (which is their current state on 
			<i>master</i>, the right side). We will then select all 
			<i>incoming</i> differences one after the other and merge them one by one. This gives us our merged model :
		</p>
		<p>
			<img align="middle" border="0" src="../images/EMF_Compare_Merged.png"/>
		</p>
		<p>Notice that 
			<i>merged</i> differences are displayed in 
			<i>italics</i> and have a distinct icon. All that's left is to save, our model now contains both our local changes and the changes that were made on master.
		</p>
		<p>Part of 
			<a href="../index.html">EMF Compare Documentation</a>
		</p>
		<p>Version 3.1.0.201506080946</p>
	</body>
</html>