<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://online.spectraqest.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=David.lucas</id>
	<title>QESTonline - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://online.spectraqest.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=David.lucas"/>
	<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php/Special:Contributions/David.lucas"/>
	<updated>2026-04-07T17:15:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QEST_Platform_4.5.2895&amp;diff=31357</id>
		<title>QEST Platform 4.5.2895</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QEST_Platform_4.5.2895&amp;diff=31357"/>
		<updated>2017-12-18T23:00:42Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QEST Platform 4.5.2895==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Bug/CR ID&lt;br /&gt;
!Customer Code&lt;br /&gt;
!Customer Reference&lt;br /&gt;
!Product(s) Modified&lt;br /&gt;
!Name&lt;br /&gt;
!Release Notes&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Bug#5760&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|AUCOF&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Cof16.125&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Hydrometer: Calculation corrections for AS/RMS tests&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|The following changes have been made to test screens Grading - Hydrometer [AS 1289.3.6.3] (ID 11021) and Grading - Hydrometer [RMS T190] (ID 11022)&lt;br /&gt;
* The Total Dry Mass of the hydrometer sub-sample will now be calculated according to formula 7(2) of the standard AS 1289.3.6.3&lt;br /&gt;
* New fields have been added to the Pretreatment tab to determine Mass of Dispersing Agent (g)&lt;br /&gt;
* A bug which caused the field Mass Before Pretreatment (g) to become unlocked has been fixed.&lt;br /&gt;
* The value of Mass After Pretreatment (g) will be adjusted using the Mass of Dispersing Agent (g) rather than the value of Dispersant Correction Ca.&lt;br /&gt;
* Mass After Pretreatment (g) will no longer overwrite the dry mass of the sub-sample after a split at the 2.36mm sieve&lt;br /&gt;
* The hydrometer reading/depth calibration will now be interpolated using a line of best fit of all calibrated points, rather than the two neighbouring point, when determining the value of correction factor F1&lt;br /&gt;
* Correction factor F2 will now be calculated rather than derived from a lookup table. This removes the restriction placed on the value of soil density.&lt;br /&gt;
* The calculation for Adj. Smaller than D (%) will now apply the soil density correction factor.&lt;br /&gt;
Additionally, a bug which caused the warning text to display incorrectly for some hydrometer tests has been fixed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6689&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|AUGCC &lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|CBR values are not updated correctly&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|An issue where changing Seating Deflection or Seating Load would not update CBR values correctly has been fixed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6827&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|AUPAR&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|CBR: Load Cell Reading Convertion&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|For Q113 CBR test screens, users can now directly record the force readings from a load cell and QESTLab will converts the values into Newton based on the force unit set for the selected load cell equipment.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
The following changes have been made as well:&lt;br /&gt;
- Drop-down boxes and edit boxes are now aligned in Force Indicator frame.&lt;br /&gt;
- A warning message will show up when users switching between different force indicators (proving ring and load cell) and any penetration results are entered.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Bug#6891&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|AUQMR&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|CBR: Negative correction&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Negative correction is no longer applied for CBR values on CBR test screens.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6994&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|INTERNAL&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|California Bearing Ratio - Import MDD result&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Pressing the Import button in the compaction section of the CBR screen now imports the MDD and OMC values from the specified sample instead of throwing a runtime error 91.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QEST_Platform_4.5.2895&amp;diff=31354</id>
		<title>QEST Platform 4.5.2895</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QEST_Platform_4.5.2895&amp;diff=31354"/>
		<updated>2017-12-18T22:55:20Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QEST Platform 4.5.2895==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Bug/CR ID&lt;br /&gt;
!Customer Code&lt;br /&gt;
!Customer Reference&lt;br /&gt;
!Product(s) Modified&lt;br /&gt;
!Name&lt;br /&gt;
!Release Notes&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Bug#5760&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|AUCOF&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Cof16.125&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Hydrometer: Calculation corrections for AS/RMS tests&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|The following changes have been made to test screens Grading - Hydrometer [AS 1289.3.6.3] (ID 11021) and Grading - Hydrometer [RMS T190] (ID 11022)&lt;br /&gt;
The Total Dry Mass of the hydrometer sub-sample will now be calculated according to formula 7(2) of the standard AS 1289.3.6.3&lt;br /&gt;
New fields have been added to the Pretreatment tab to determine Mass of Dispersing Agent (g)&lt;br /&gt;
A bug which caused the field Mass Before Pretreatment (g) to become unlocked has been fixed.&lt;br /&gt;
The value of Mass After Pretreatment (g) will be adjusted using the Mass of Dispersing Agent (g) rather than the value of Dispersant Correction Ca.&lt;br /&gt;
Mass After Pretreatment (g) will no longer overwrite the dry mass of the sub-sample after a split at the 2.36mm sieve&lt;br /&gt;
The hydrometer reading/depth calibration will now be interpolated using a line of best fit of all calibrated points, rather than the two neighbouring point, when determining the value of correction factor F1&lt;br /&gt;
Correction factor F2 will now be calculated rather than derived from a lookup table. This removes the restriction placed on the value of soil density.&lt;br /&gt;
The calculation for Adj. Smaller than D (%) will now apply the soil density correction factor.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Additionally, a bug which caused the warning text to display incorrectly for some hydrometer tests has been fixed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6689&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|AUGCC &lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|CBR values are not updated correctly&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|An issue where changing Seating Deflection or Seating Load would not update CBR values correctly has been fixed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6827&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|AUPAR&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|CBR: Load Cell Reading Convertion&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|For Q113 CBR test screens, users can now directly record the force readings from a load cell and QESTLab will converts the values into Newton based on the force unit set for the selected load cell equipment.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The following changes have been made as well:&lt;br /&gt;
- Drop-down boxes and edit boxes are now aligned in Force Indicator frame.&lt;br /&gt;
- A warning message will show up when users switching between different force indicators (proving ring and load cell) and any penetration results are entered.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Bug#6891&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|AUQMR&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|CBR: Negative correction&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Negative correction is no longer applied for CBR values on CBR test screens.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6994&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|INTERNAL&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|California Bearing Ratio - Import MDD result&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Pressing the Import button in the compaction section of the CBR screen now imports the MDD and OMC values from the specified sample instead of throwing a runtime error 91.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=Template:QEST_Platform_4.5.2895&amp;diff=31351</id>
		<title>Template:QEST Platform 4.5.2895</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=Template:QEST_Platform_4.5.2895&amp;diff=31351"/>
		<updated>2017-12-18T22:52:10Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QEST Platform 4.5.2895==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!Bug/CR ID&lt;br /&gt;
!Customer Code&lt;br /&gt;
!Customer Reference&lt;br /&gt;
!Product(s) Modified&lt;br /&gt;
!Name&lt;br /&gt;
!Release Notes&lt;br /&gt;
&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Bug#5760&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|AUCOF&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Cof16.125&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Hydrometer: Calculation corrections for AS/RMS tests&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|The following changes have been made to test screens Grading - Hydrometer [AS 1289.3.6.3] (ID 11021) and Grading - Hydrometer [RMS T190] (ID 11022)&lt;br /&gt;
The Total Dry Mass of the hydrometer sub-sample will now be calculated according to formula 7(2) of the standard AS 1289.3.6.3&lt;br /&gt;
New fields have been added to the Pretreatment tab to determine Mass of Dispersing Agent (g)&lt;br /&gt;
A bug which caused the field Mass Before Pretreatment (g) to become unlocked has been fixed.&lt;br /&gt;
The value of Mass After Pretreatment (g) will be adjusted using the Mass of Dispersing Agent (g) rather than the value of Dispersant Correction Ca.&lt;br /&gt;
Mass After Pretreatment (g) will no longer overwrite the dry mass of the sub-sample after a split at the 2.36mm sieve&lt;br /&gt;
The hydrometer reading/depth calibration will now be interpolated using a line of best fit of all calibrated points, rather than the two neighbouring point, when determining the value of correction factor F1&lt;br /&gt;
Correction factor F2 will now be calculated rather than derived from a lookup table. This removes the restriction placed on the value of soil density.&lt;br /&gt;
The calculation for Adj. Smaller than D (%) will now apply the soil density correction factor.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Additionally, a bug which caused the warning text to display incorrectly for some hydrometer tests has been fixed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6689&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|AUGCC &lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|CBR values are not updated correctly&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|An issue where changing Seating Deflection or Seating Load would not update CBR values correctly has been fixed.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6827&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|AUPAR&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|CBR: Load Cell Reading Convertion&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|For Q113 CBR test screens, users can now directly record the force readings from a load cell and QESTLab will converts the values into Newton based on the force unit set for the selected load cell equipment.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
The following changes have been made as well:&lt;br /&gt;
- Drop-down boxes and edit boxes are now aligned in Force Indicator frame.&lt;br /&gt;
- A warning message will show up when users switching between different force indicators (proving ring and load cell) and any penetration results are entered.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Bug#6891&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|AUQMR&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|CBR: Negative correction&lt;br /&gt;
|style=&amp;quot;background:white smoke;&amp;quot;|Negative correction is no longer applied for CBR values on CBR test screens.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Bug#6994&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|INTERNAL&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|QESTLab&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|California Bearing Ratio - Import MDD result&lt;br /&gt;
|style=&amp;quot;background:white;&amp;quot;|Pressing the Import button in the compaction section of the CBR screen now imports the MDD and OMC values from the specified sample instead of throwing a runtime error 91.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Creating_Build_4.0&amp;diff=29532</id>
		<title>QESTNET Internal:Creating Build 4.0</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Creating_Build_4.0&amp;diff=29532"/>
		<updated>2016-03-01T04:05:01Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QESTNET 4.0 Release Build Process (Fugro)==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Checkout the release-4.0 branch from qestnet repository.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure the branch is at the current origin head and all required commits for the build are present. This may mean a hotfix commit or a merge (--no-ff) branch dev4.0 into release-4.0.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open the QESTNET.sln and QESTField.sln. Ensure the QESTNET.Custom.Fugro.DataBackbone and QESTNET.Integration.Portal projects are loaded.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the AssemblyVersion and AssemblyFileVersion of all AssemblyInfo.cs files with the new version number in both solutions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build debug &amp;amp; release QESTNET:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Switch to debug.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Re-build the Schema Generator if required.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Upgrade the database you intend to build against, using the qestnet.upgrade tool built for this release. Run any required post-install scripts.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build the qestlab.data project. See [http://online.spectraqest.com/index.php?title=qestnet_internal:developer_setup_qestnet#build_qestlab.data build qestlab.data].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Re-build QESTNET.sln.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Switch to release.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Re-build QESTNET.sln.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run &#039;&#039;&#039;~\QESTNET\copy_all_to_libraries.bat&#039;&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a new folder &#039;&#039;&#039;v4.0.XX&#039;&#039;&#039; in &#039;&#039;&#039;~\Libraries\QESTNET\&#039;&#039;&#039; where XX is the build version number. Copy the Debug and Release folders also in this folder, into the new &#039;&#039;&#039;v4.0.XX&#039;&#039;&#039; folder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the build parameter in &#039;&#039;&#039;build-debug-x64.bat&#039;&#039;&#039; and &#039;&#039;&#039;build-release-x64.bat&#039;&#039;&#039; in &#039;&#039;&#039;~\QESTNET\QESTNET.Deployment\&#039;&#039;&#039; with the new build version number. E.g., &lt;br /&gt;
&amp;lt;blockquote&amp;gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe /t:Rebuild .\QESTNET.Deployment\QESTNET.Deployment.wixproj /p:Configuration=Release;QestnetVersion=&#039;&#039;&#039;4.0.18&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run &#039;&#039;&#039;build-release-x64.bat&#039;&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run &#039;&#039;&#039;package_release.bat&#039;&#039;&#039;. This will copy the installer to &#039;&#039;&#039;\\adls0003\Development\Product Distribution\QESTNET\&#039;&#039;&#039;. Move it to folder &#039;&#039;&#039;Fugro&#039;&#039;&#039;. This will make the release publicly available.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Switch the &#039;&#039;&#039;QESTField.sln&#039;&#039;&#039; to release. Publish the solution to a temporary folder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Zip the contents of the temporary folder and name the zip &#039;&#039;&#039;QESTField v4.0.XX.zip&#039;&#039;&#039; where XX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the zip file to &#039;&#039;&#039;\\adls0003\Development\Product Distribution\QEST Field\&#039;&#039;&#039;. This will make the release publicly available.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commit the qestnet branch changes to git with commit message &#039;&#039;&#039;Prepare release v4.0.XX&#039;&#039;&#039; where XX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Tag the commit with &#039;&#039;&#039;v4.0.XX&#039;&#039;&#039; where XX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Push the commit to github.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Push the tag to github (tags need to be pushed explicitly).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Inform appropriate parties of the new release build.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Have a cider as this should be automated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=29528</id>
		<title>QESTNET Internal:Developer Home</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=29528"/>
		<updated>2016-03-01T03:14:00Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page acts as a home for QESTNET developers and aims to provide easy access to all relevant information and processes.&lt;br /&gt;
&lt;br /&gt;
== For Managers ==&lt;br /&gt;
=== Installation / Usage Guides ===&lt;br /&gt;
[[Implementation:Main_Page|Should probably be linked off of this page eventually?]]&lt;br /&gt;
&lt;br /&gt;
Documentation is not officially released yet. It is currently inside the QESTNET GitHub repository. Eventually it will be automatically built into the Product Distribution folder, so anyone can access it. For now these are GitHub links to the most recent version of each. If you don&#039;t have a GitHub account, copies can be found in &amp;quot;\\adls0003\Development\Product Distribution\QESTNET Documentation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTField%204.1%20Installation%20Guide.docx QESTField 4.1 Installation Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTField%204.1%20Confiuration%20Guide.docx QESTField 4.1 Configuration Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTNET%204.1%20Installation%20Guide.docx QESTNET 4.1 Installation Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTNET%204.1%20Confiuration%20Guide.docx QESTNET 4.1 Configuration Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTField%20QESTNET%20Architecture%20%26%20System%20Requirements.pdf QESTField QESTNET Architecture and System Requirements]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTNET%204.1%20Console%20-%20Hanson%20Specific%20Draft.docx Using the QESTNET Console]&lt;br /&gt;
* [https://github.com/spectraqest/qestlab/raw/master/Documentation/QIntegrator%20Installation%20%26%20Configuration%20Guide.docx QIntegrator Plugin Installation and Configuration Guide]&lt;br /&gt;
&lt;br /&gt;
== For Developers ==&lt;br /&gt;
=== Developer Setup Guide ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Requirements|Requirements]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Git|Git]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Resharper|Resharper]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET|QESTNET]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTField|QESTField]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Console|QESTNET Console]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Tester|QESTNET Tester]]&lt;br /&gt;
&lt;br /&gt;
=== General Process Guides ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Git etiquette|Using Git]]&lt;br /&gt;
* [[Media:User Guide - ADLSV0010  - Dev DB Server.docx|Migrating and Using Databases on ADLSV0010]]&lt;br /&gt;
* [[QESTLab_Internal:SQL Script Guidelines|SQL Script Guidelines]]&lt;br /&gt;
&lt;br /&gt;
=== Development Process Guides ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_QESTNET_Changing_Branches Changing|QESTNET Branches]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_QESTNET_Creating_A_New_Workflow|Creating A New Workflow]]&lt;br /&gt;
&lt;br /&gt;
=== Builds ===&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;[http://online.spectraqest.com/index.php?title=QESTNET_Internal:Creating_Build_4.0 Build QESTNET v4.0 (Fugro)]&amp;lt;/LI&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;[https://github.com/spectraqest/qestnet Build QESTNET v4.1]&amp;lt;/LI&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Coding Knowledge Base ===&lt;br /&gt;
&lt;br /&gt;
==== Coding Guidelines ====&lt;br /&gt;
This section is intended to provide a set of guidelines that are helpful to people writing code in the QESTNET repository.&lt;br /&gt;
* [[QESTNET_Internal:Developer_Code_Comments|Code comments]]&lt;br /&gt;
&lt;br /&gt;
==== QESTNET / QESTField Codebase ====&lt;br /&gt;
* [[QESTNET_Internal:QESTNET_Projects_Quick_Reference_Guide|QESTNET Projects Quick Reference Guide]]&lt;br /&gt;
&lt;br /&gt;
==== QESTNET Integration ====&lt;br /&gt;
* [[QESTNET_Internal:Creating Integration Projects|Creating Integration Projects]]&lt;br /&gt;
* [[QESTNET_Internal:Integrator Project Structure|Integrator Project Structure]]&lt;br /&gt;
* [[QESTNET_Internal:Building_and_Installing_an_Integration_Project|Building and Installing an Integration Project]]&lt;br /&gt;
* [[QESTNET_Internal:QIntegrator Plugin|QESTLab Integration and the QIntegrator Plugin]]&lt;br /&gt;
&lt;br /&gt;
==== Fugro Data Backbone ====&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Service|Fugro Data Backbone Service]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro DBB_TestMapping_Guide|Fugro Data Backbone Test Mapping Step-by-step Guide]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Export_Test|Fugro Data Backbone Export Test]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Guidelines|{{PAGENAME}}]]&lt;br /&gt;
[[Category:QESTNET_Internal|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Internal|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=29527</id>
		<title>QESTNET Internal:Developer Home</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=29527"/>
		<updated>2016-03-01T03:12:51Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page acts as a home for QESTNET developers and aims to provide easy access to all relevant information and processes.&lt;br /&gt;
&lt;br /&gt;
== For Managers ==&lt;br /&gt;
=== Installation / Usage Guides ===&lt;br /&gt;
[[Implementation:Main_Page|Should probably be linked off of this page eventually?]]&lt;br /&gt;
&lt;br /&gt;
Documentation is not officially released yet. It is currently inside the QESTNET GitHub repository. Eventually it will be automatically built into the Product Distribution folder, so anyone can access it. For now these are GitHub links to the most recent version of each. If you don&#039;t have a GitHub account, copies can be found in &amp;quot;\\adls0003\Development\Product Distribution\QESTNET Documentation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTField%204.1%20Installation%20Guide.docx QESTField 4.1 Installation Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTField%204.1%20Confiuration%20Guide.docx QESTField 4.1 Configuration Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTNET%204.1%20Installation%20Guide.docx QESTNET 4.1 Installation Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTNET%204.1%20Confiuration%20Guide.docx QESTNET 4.1 Configuration Guide]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTField%20QESTNET%20Architecture%20%26%20System%20Requirements.pdf QESTField QESTNET Architecture and System Requirements]&lt;br /&gt;
* [https://github.com/spectraqest/qestnet/raw/alien/Documentation/QESTNET%204.1%20Console%20-%20Hanson%20Specific%20Draft.docx Using the QESTNET Console]&lt;br /&gt;
* [https://github.com/spectraqest/qestlab/raw/master/Documentation/QIntegrator%20Installation%20%26%20Configuration%20Guide.docx QIntegrator Plugin Installation and Configuration Guide]&lt;br /&gt;
&lt;br /&gt;
== For Developers ==&lt;br /&gt;
=== Developer Setup Guide ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Requirements|Requirements]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Git|Git]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Resharper|Resharper]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET|QESTNET]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTField|QESTField]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Console|QESTNET Console]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Tester|QESTNET Tester]]&lt;br /&gt;
&lt;br /&gt;
=== General Process Guides ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Git etiquette|Using Git]]&lt;br /&gt;
* [[Media:User Guide - ADLSV0010  - Dev DB Server.docx|Migrating and Using Databases on ADLSV0010]]&lt;br /&gt;
* [[QESTLab_Internal:SQL Script Guidelines|SQL Script Guidelines]]&lt;br /&gt;
&lt;br /&gt;
=== Development Process Guides ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_QESTNET_Changing_Branches Changing|QESTNET Branches]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_QESTNET_Creating_A_New_Workflow|Creating A New Workflow]]&lt;br /&gt;
&lt;br /&gt;
=== Builds ===&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;[http://online.spectraqest.com/index.php?title=QESTNET_Internal:Creating_Build_4.0 Build QESTNET v4.0 (Fugro)]&amp;lt;/LI&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;[https://github.com/spectraqest/qestnet Build QESTNET v4.1]&amp;lt;/LI&amp;gt;&amp;lt;/UL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Coding Knowledge Base ===&lt;br /&gt;
&lt;br /&gt;
==== Coding Guidelines ====&lt;br /&gt;
This section is intended to provide a set of guidelines that are helpful to people writing code in the QESTNET repository.&lt;br /&gt;
* [[QESTNET_Internal:Developer_Code_Comments|Code comments]]&lt;br /&gt;
&lt;br /&gt;
==== QESTNET / QESTField Codebase ====&lt;br /&gt;
* [[QESTNET_Internal:QESTNET_Projects_Quick_Reference_Guide|QESTNET Projects Quick Reference Guide]]&lt;br /&gt;
&lt;br /&gt;
==== QESTNET Integration ====&lt;br /&gt;
* [[QESTNET_Internal:Creating Integration Projects|Creating Integration Projects]]&lt;br /&gt;
* [[QESTNET_Internal:Integrator Project Structure|Integrator Project Structure]]&lt;br /&gt;
* [[QESTNET_Internal:Building_and_Installing_an_Integration_Project|Building and Installing an Integration Project]]&lt;br /&gt;
* [[QESTNET_Internal:QIntegrator Plugin|QESTLab Integration and the QIntegrator Plugin]]&lt;br /&gt;
&lt;br /&gt;
==== Fugro Data Backbone ====&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Service|Fugro Data Backbone Service]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro DBB_TestMapping_Guide|Fugro Data Backbone Test Mapping Step-by-step Guide]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Export_Test|Fugro Data Backbone Export Test]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Guidelines|{{PAGENAME}}]]&lt;br /&gt;
[[Category:QESTNET_Internal|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Internal|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET.Upgrade_Internal:Creating_Build_1.0&amp;diff=29447</id>
		<title>QESTNET.Upgrade Internal:Creating Build 1.0</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET.Upgrade_Internal:Creating_Build_1.0&amp;diff=29447"/>
		<updated>2016-01-29T00:54:30Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QESTNET.Upgrade 1.0 Release Build Process (Fugro 4.0)==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Checkout the approriate branch for the build from qestnet.upgrade repository. E.g. fugro-dbb.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure the branch is at the current origin head and all required commits for the build are present.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the build parameter in &#039;&#039;&#039;package_development.bat&#039;&#039;&#039; and &#039;&#039;&#039;package_release.bat&#039;&#039;&#039; in the root directory with the new build version number. E.g., &lt;br /&gt;
&amp;lt;blockquote&amp;gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.proj /t:SetVersion;RebuildAll /p:Configuration=Development;MajorVersion=1;MinorVersion=0;Build=&#039;&#039;&#039;205&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run &#039;&#039;&#039;package_release.bat&#039;&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy &#039;&#039;&#039;QESTNET.Upgrade.dll&#039;&#039;&#039;, &#039;&#039;&#039;QESTNET.Upgrade.UI.exe&#039;&#039;&#039; and  &#039;&#039;&#039;QESTNET.Upgrade.UI.exe.Config&#039;&#039;&#039; in &#039;&#039;&#039;~\QESTNET.Upgrade\bin\Release\&#039;&#039;&#039; to a temporary folder for zipping.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the folder (and contents) &#039;&#039;&#039;Scripts&#039;&#039;&#039; in the root directory to this temporary folder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the &#039;&#039;&#039;QESTNET.Upgrade.UI.exe.Config&#039;&#039;&#039; file to the below xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;startup useLegacyV2RuntimeActivationPolicy=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.0&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/startup&amp;gt;&lt;br /&gt;
   &amp;lt;appSettings&amp;gt;&lt;br /&gt;
      &amp;lt;add key=&amp;quot;manifestPath&amp;quot; value=&amp;quot;./Scripts/database_upgrade.qn.manifest&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/appSettings&amp;gt;&lt;br /&gt;
   &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;add name=&amp;quot;Example&amp;quot; connectionString=&amp;quot;data source=ADLS0007\CUSTOMER2008R2;initial catalog=QESTLab_EXAMPLE;integrated security=True;multipleactiveresultsets=True;Asynchronous Processing=True;App=QestnetUpgrade&amp;quot;/&amp;gt;--&amp;gt;&lt;br /&gt;
   &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Zip the contents of the temporary folder and name the zip &#039;&#039;&#039;QESTNET.Upgrade v1.0.XXX.zip&#039;&#039;&#039; where XXX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the zip file to &#039;&#039;&#039;\\adls0003\Development\Product Distribution\QESTNET.Upgrade\&#039;&#039;&#039;. This will make the release publicly available.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commit the qestnet.upgrade branch changes to git with commit message &#039;Prepare release v1.0.XXX&#039; where XXX is the build version number. The AssemblyVersion classes, database_upgrade.qn.manifest and package batch files would have changed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Tag the commit with &#039;v1.0.XXX&#039; where XXX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Push the commit to github.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Push the tag to github (tags need to be pushed explicitly).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Inform appropriate parties of the new release build.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Have a non-alcoholic beverage as this was too easy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET.Upgrade_Internal:Creating_Build_1.0&amp;diff=29446</id>
		<title>QESTNET.Upgrade Internal:Creating Build 1.0</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET.Upgrade_Internal:Creating_Build_1.0&amp;diff=29446"/>
		<updated>2016-01-29T00:51:23Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QESTNET.Upgrade 1.0 Release Build Process (Fugro 4.0)==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Checkout the approriate branch for the build from qestnet.ugprade repository. E.g. fugro-dbb.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the build parameter in &#039;&#039;&#039;package_development.bat&#039;&#039;&#039; and &#039;&#039;&#039;package_release.bat&#039;&#039;&#039; in the root directory with the new build version number. E.g., &lt;br /&gt;
&amp;lt;blockquote&amp;gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.proj /t:SetVersion;RebuildAll /p:Configuration=Development;MajorVersion=1;MinorVersion=0;Build=&#039;&#039;&#039;205&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run &#039;&#039;&#039;package_release.bat&#039;&#039;&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy &#039;&#039;&#039;QESTNET.Upgrade.dll&#039;&#039;&#039;, &#039;&#039;&#039;QESTNET.Upgrade.UI.exe&#039;&#039;&#039; and  &#039;&#039;&#039;QESTNET.Upgrade.UI.exe.Config&#039;&#039;&#039; in &#039;&#039;&#039;~\QESTNET.Upgrade\bin\Release\&#039;&#039;&#039; to a temporary folder for zipping.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the folder (and contents) &#039;&#039;&#039;Scripts&#039;&#039;&#039; in the root directory to this temporary folder.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Update the &#039;&#039;&#039;QESTNET.Upgrade.UI.exe.Config&#039;&#039;&#039; file to the below xml.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;startup useLegacyV2RuntimeActivationPolicy=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.0&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/startup&amp;gt;&lt;br /&gt;
   &amp;lt;appSettings&amp;gt;&lt;br /&gt;
      &amp;lt;add key=&amp;quot;manifestPath&amp;quot; value=&amp;quot;./Scripts/database_upgrade.qn.manifest&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/appSettings&amp;gt;&lt;br /&gt;
   &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;add name=&amp;quot;Example&amp;quot; connectionString=&amp;quot;data source=ADLS0007\CUSTOMER2008R2;initial catalog=QESTLab_EXAMPLE;integrated security=True;multipleactiveresultsets=True;Asynchronous Processing=True;App=QestnetUpgrade&amp;quot;/&amp;gt;--&amp;gt;&lt;br /&gt;
   &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Zip the contents of the temporary folder and name the zip &#039;&#039;&#039;QESTNET.Upgrade v1.0.XXX.zip&#039;&#039;&#039; where XXX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the zip file to &#039;&#039;&#039;\\adls0003\Development\Product Distribution\QESTNET.Upgrade\&#039;&#039;&#039;. This will make the release publicly available.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commit the qestnet.upgrade branch changes to git with commit message &#039;Prepare release v1.0.XXX&#039; where XXX is the build version number. The AssemblyVersion classes, database_upgrade.qn.manifest and package batch files would have changed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Tag the commit with &#039;v1.0.XXX&#039; where XXX is the build version number.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Push the commit to github.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Push the tag to github (tags need to be pushed explicitly).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Inform appropriate parties of the new release build.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Have a non-alcoholic beverage as this was too easy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET.Upgrade_Internal:Creating_Build_1.0&amp;diff=29445</id>
		<title>QESTNET.Upgrade Internal:Creating Build 1.0</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET.Upgrade_Internal:Creating_Build_1.0&amp;diff=29445"/>
		<updated>2016-01-29T00:43:00Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==QESTNET.Upgrade 1.0 Release Build Process (Fugro 4.0)==&lt;br /&gt;
#Checkout the approriate branch for the build from qestnet.ugprade repository. E.g. fugro-dbb.&lt;br /&gt;
#Update the build parameter in package_development.bat and package_release.bat in the root directory with the new build version number. E.g., &lt;br /&gt;
#: C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe build.proj /t:SetVersion;RebuildAll /p:Configuration=Development;MajorVersion=1;MinorVersion=0;Build=&#039;&#039;&#039;205&#039;&#039;&#039;&lt;br /&gt;
#Run package_release.bat.&lt;br /&gt;
#Copy QESTNET.Upgrade.dll, QESTNET.Upgrade.UI.exe and  QESTNET.Upgrade.UI.exe.Config in ~\QESTNET.Upgrade\bin\Release\ to a temporary folder for zipping.&lt;br /&gt;
#Copy the Scripts folder in the root directory to this temporary folder.&lt;br /&gt;
#Update the QESTNET.Upgrade.UI.exe.Config file to the below xml.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;configuration&amp;gt;&lt;br /&gt;
   &amp;lt;startup useLegacyV2RuntimeActivationPolicy=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
      &amp;lt;supportedRuntime version=&amp;quot;v4.0&amp;quot; sku=&amp;quot;.NETFramework,Version=v4.0&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/startup&amp;gt;&lt;br /&gt;
   &amp;lt;appSettings&amp;gt;&lt;br /&gt;
      &amp;lt;add key=&amp;quot;manifestPath&amp;quot; value=&amp;quot;./Scripts/database_upgrade.qn.manifest&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/appSettings&amp;gt;&lt;br /&gt;
   &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;
      &amp;lt;!--&amp;lt;add name=&amp;quot;Example&amp;quot; connectionString=&amp;quot;data source=ADLS0007\CUSTOMER2008R2;initial catalog=QESTLab_EXAMPLE;integrated security=True;multipleactiveresultsets=True;Asynchronous Processing=True;App=QestnetUpgrade&amp;quot;/&amp;gt;--&amp;gt;&lt;br /&gt;
   &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;
&amp;lt;/configuration&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
#Zip the contents of the temporary folder and name the zip QESTNET.Upgrade v1.0.XXX.zip where XXX is the build version number.&lt;br /&gt;
#Copy the zip file to \\adls0003\Development\Product Distribution\QESTNET.Upgrade\. This will make the release publicly available.&lt;br /&gt;
#Commit the qestnet.upgrade branch changes to git with commit message &#039;Prepare release v1.0.XXX&#039; where XXX is the build version number. The AssemblyVersion classes, database_upgrade.qn.manifest and package batch files would have changed.&lt;br /&gt;
#Tag the commit with &#039;v1.0.XXX&#039; where XXX is the build version number.&lt;br /&gt;
#Push the commit to github. &lt;br /&gt;
#Push the tag to github (tags need to be pushed explicitly).&lt;br /&gt;
#Inform appropriate parties of the new release build.&lt;br /&gt;
#Have a non-alcoholic beverage as this was too easy.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29372</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29372"/>
		<updated>2015-11-17T00:14:11Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
Complete the following steps within GitHub to fetch the QESTNET repository:&lt;br /&gt;
*Change the directory to your root GitHub folder (eg. cd /c/dev)&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Change the directory to the new qestnet folder (cd qestnet/)&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
=====Unhandled Login Fault Exception=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Go to &#039;&#039;&#039;Debug &amp;gt; Exceptions&#039;&#039;&#039;&lt;br /&gt;
**Find &#039;&#039;&#039;System.ServiceModel.FaultException`1&#039;&#039;&#039;&lt;br /&gt;
**Uncheck &#039;&#039;&#039;User-unhandled&#039;&#039;&#039;.&amp;lt;BR&amp;gt; This will stop the debugger breaking on a fault exception catch every time you login. It is on a &amp;quot;to do&amp;quot; list somewhere to fix... really I (DL) promise.&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.Sessions.Lab\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the project QESTNET.Service\QESTNET.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;&amp;lt;/span&amp;gt;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.Service\QESTNET\app.config&#039;&#039;&#039;&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.Service\QESTNET.Sessions\app.config&#039;&#039;&#039;&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.Custom\QESTNET.Custom.Fugro.DataBackbone.Tests\app.config&#039;&#039;&#039;&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.Sessions.Lab\Tester\app.config&#039;&#039;&#039;&lt;br /&gt;
**Check or change the storage location.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&amp;lt;add key=&amp;quot;fileStorePath&amp;quot; value=&amp;quot;&amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;C:\NEEDSTOEXIST&amp;lt;/span&amp;gt;&amp;quot; /&amp;gt;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*Open the program &#039;&#039;&#039;Windows PowerShell ISE&#039;&#039;&#039; with Administrator rights.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*In Visual Studio, right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file under QESTNET.Sessions.Lab\QESTLab.Data\Entities and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell Executable (C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell_ise.exe)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio. Run this file.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
** Right-click file name and select to exclude it from the menu.&amp;lt;br&amp;gt;[[Image:QESTNet_Build_Fugro_Exclude.png]]&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039;. If you cannot see this file, click the &amp;quot;Show All Files&amp;quot; button on the Solution Explorer toolbar.&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
**Errors in QESTNET.Custom are usually due to projects related to other customer&#039;s databases being compiled. Right click any Custom projects unrelated to the current customer&#039;s database you are connected to and select &amp;quot;Unload Project&amp;quot;.&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
**The batch file assumes naively that InstallUtil.exe is installed at &amp;quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe&amp;quot;. If it is not, you will need to change the batch file to suit your local machine. Do not commit these changes.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account (&amp;quot;sqaus\&#039;&#039;your.name&#039;&#039;&amp;quot;) or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Unload non-Fugro projects&lt;br /&gt;
**Highlight all non-Fugro Projects under &#039;&#039;&#039;QESTNET.Custom&#039;&#039;&#039;, right-click and &#039;&#039;&#039;Unload Projects&#039;&#039;&#039;&amp;lt;br&amp;gt;[[Image:QESTNet_Build_Fugro_UnloadNonFugroProjects.png]]&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET_Tester&amp;diff=29041</id>
		<title>QESTNET Internal:Developer Setup QESTNET Tester</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET_Tester&amp;diff=29041"/>
		<updated>2015-07-20T05:12:26Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET Tester===&lt;br /&gt;
The Tester project is a simple console application which allows you to directly call any code in QESTNET without using the QESTNET service. This can be useful for target testing, performance testing or bugs which are hard to track down through the QESTNET service.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\ QESTNET_with_tests.sln&#039;&#039;&#039;&lt;br /&gt;
*Set &#039;&#039;&#039;Tester&#039;&#039;&#039; as the Startup Project&lt;br /&gt;
* Open the App.Config file in the Tester project. Edit the connectionString to point to the desired QESTLab database.&lt;br /&gt;
*Start Debugging (&#039;&#039;&#039;F5&#039;&#039;&#039;)&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTField&amp;diff=29039</id>
		<title>QESTNET Internal:Developer Setup QESTField</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTField&amp;diff=29039"/>
		<updated>2015-07-20T03:51:59Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTField===&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTField MVC\QESTField.sln&#039;&#039;&#039;&lt;br /&gt;
** If the solution does not load, check that .NET Framework 4.5 and ASP.NET MVC 4 are installed on your local machine. Use the Visual Studio 2012 CD to repair the installation.&lt;br /&gt;
*Build the solution. There should not be any errors&lt;br /&gt;
*Go to &#039;&#039;&#039;Debug &amp;gt; Exceptions&#039;&#039;&#039;&lt;br /&gt;
**Find &#039;&#039;&#039;System.ServiceModel.FaultException`1&#039;&#039;&#039;&lt;br /&gt;
**Uncheck &#039;&#039;&#039;User-unhandled&#039;&#039;&#039;.&amp;lt;BR&amp;gt; This will stop the debugger breaking on a fault exception catch every time you login. It is on a &amp;quot;to do&amp;quot; list somewhere to fix... really I (DL) promise.&lt;br /&gt;
*Start Debugging (&#039;&#039;&#039;F5&#039;&#039;&#039;). &amp;lt;BR&amp;gt;This will launch a web browser. The choice of web browser is configured in Visual Studio where Start Debugging is. &amp;lt;BR&amp;gt;Google Chrome is the recommended choice for QESTField development. The browser will take you to the web address of a local ASP.NET Development Server which Visual Studio has spun up. The login page of QESTField should be displayed. &amp;lt;BR&amp;gt;You can login using any QESTLab login credentials which are available in the database and have permission to use QESTField.&lt;br /&gt;
**Error: &amp;quot;Underlying service failed to Open.&amp;quot; - Check the Event Viewer log. It is normally due to the QESTNET service credentials not having permission to access the QESTLab database.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTField&amp;diff=29038</id>
		<title>QESTNET Internal:Developer Setup QESTField</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTField&amp;diff=29038"/>
		<updated>2015-07-20T03:27:26Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTField===&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTField MVC\QESTField.sln&#039;&#039;&#039;&lt;br /&gt;
** If the solution does not load, check that .NET Framework 4.5 and ASP.NET MVC 4 are installed on your local machine.&lt;br /&gt;
*Build the solution. There should not be any errors&lt;br /&gt;
*Go to &#039;&#039;&#039;Debug &amp;gt; Exceptions&#039;&#039;&#039;&lt;br /&gt;
**Find &#039;&#039;&#039;System.ServiceModel.FaultException`1&#039;&#039;&#039;&lt;br /&gt;
**Uncheck &#039;&#039;&#039;User-unhandled&#039;&#039;&#039;.&amp;lt;BR&amp;gt; This will stop the debugger breaking on a fault exception catch every time you login. It is on a &amp;quot;to do&amp;quot; list somewhere to fix... really I (DL) promise.&lt;br /&gt;
*Start Debugging (&#039;&#039;&#039;F5&#039;&#039;&#039;). &amp;lt;BR&amp;gt;This will launch a web browser. The choice of web browser is configured in Visual Studio where Start Debugging is. &amp;lt;BR&amp;gt;Google Chrome is the recommended choice for QESTField development. The browser will take you to the web address of a local ASP.NET Development Server which Visual Studio has spun up. The login page of QESTField should be displayed. &amp;lt;BR&amp;gt;You can login using any QESTLab login credentials which are available in the database and have permission to use QESTField.&lt;br /&gt;
**Error: &amp;quot;Underlying service failed to Open.&amp;quot; - Check the Event Viewer log. It is normally due to the QESTNET service credentials not having permission to access the QESTLab database.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTField&amp;diff=29036</id>
		<title>QESTNET Internal:Developer Setup QESTField</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTField&amp;diff=29036"/>
		<updated>2015-07-20T03:15:15Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTField===&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTField MVC\QESTField.sln&#039;&#039;&#039;&lt;br /&gt;
** If the solution does not load, check that .NET Framework 4.5 and ASP.NET MVC 4 are installed on your local machine.&lt;br /&gt;
*Build the solution. There should not be any errors&lt;br /&gt;
*Go to &#039;&#039;&#039;Debug &amp;gt; Exceptions&#039;&#039;&#039;&lt;br /&gt;
**Find &#039;&#039;&#039;System.ServiceModel.FaultException`1&#039;&#039;&#039;&lt;br /&gt;
**Uncheck &#039;&#039;&#039;User-unhandled&#039;&#039;&#039;.&amp;lt;BR&amp;gt; This will stop the debugger breaking on a fault exception catch every time you login. It is on a &amp;quot;to do&amp;quot; list somewhere to fix... really I (DL) promise.&lt;br /&gt;
*Start Debugging (&#039;&#039;&#039;F5&#039;&#039;&#039;). &amp;lt;BR&amp;gt;This will launch a web browser. The choice of web browser is configured in Visual Studio where Start Debugging is. &amp;lt;BR&amp;gt;Google Chrome is the recommended choice for QESTField development. The browser will take you to the web address of a local ASP.NET Development Server which Visual Studio has spun up. The login page of QESTField should be displayed. &amp;lt;BR&amp;gt;You can login using any QESTLab login credentials which are available in the database and have permission to use QESTField.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29035</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29035"/>
		<updated>2015-07-20T02:27:05Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
**Errors in QESTNET.Custom are usually due to projects related to other customer&#039;s databases being compiled. Right click any Custom projects unrelated to the current customer&#039;s database you are connected to and select &amp;quot;Unload Project&amp;quot;.&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
**The batch file assumes naively that InstallUtil.exe is installed at &amp;quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe&amp;quot;. If it is not, you will need to change the batch file to suit your local machine. Do not commit these changes.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29034</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29034"/>
		<updated>2015-07-20T02:26:17Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
**Errors in QESTNET.Custom are usually due to projects related to other customer&#039;s databases being loaded. Right click any Custom projects unrelated to the current customer&#039;s database you are connected to and select &amp;quot;Unload Project&amp;quot;.&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
**The batch file assumes naively that InstallUtil.exe is installed at &amp;quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe&amp;quot;. If it is not, you will need to change the batch file to suit your local machine. Do not commit these changes.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29033</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29033"/>
		<updated>2015-07-20T02:11:27Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
**The batch file assumes naively that InstallUtil.exe is installed at &amp;quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe&amp;quot;. If it is not, you will need to change the batch file to suit your local machine. Do not commit these changes.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29032</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29032"/>
		<updated>2015-07-20T01:58:34Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Requirements&amp;diff=29031</id>
		<title>QESTNET Internal:Developer Setup Requirements</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Requirements&amp;diff=29031"/>
		<updated>2015-07-20T01:53:40Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*Install Visual Studio 2012 (or higher);&lt;br /&gt;
**This may take up to an hour to install depending on the initial state of your local machine.&lt;br /&gt;
**Opening ~\qestnet\QESTField MVC\QESTField.sln is normally a good guide to determine if Visual Studio installed correctly. The git setup guide and a clone of the qestnet repository will need to be completed before this solution is available on your local machine.&lt;br /&gt;
*Install ReSharper 9.1.1;&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29030</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29030"/>
		<updated>2015-07-20T01:36:44Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files.&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\bin\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29029</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=29029"/>
		<updated>2015-07-20T01:35:58Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are only errors which start &amp;quot;The command mkdir and end with &amp;quot;NET START QESTNET exited with code 2.&amp;quot;, continue on to the next step. Any other errors will need to be fixed before continuing.&lt;br /&gt;
&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\bin\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
*Check that the service is running. If the service is not running check the Event Viewer logs to determine why.&lt;br /&gt;
&lt;br /&gt;
=====Rebuild QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Requirements&amp;diff=28989</id>
		<title>QESTNET Internal:Developer Setup Requirements</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Requirements&amp;diff=28989"/>
		<updated>2015-07-17T02:45:04Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*Install Visual Studio 2012 (or higher);&lt;br /&gt;
**Opening ~\qestnet\QESTField MVC\QESTField.sln is normally a good guide to determine if Visual Studio installed correctly. The git setup guide and a clone of the qestnet repository will need to be completed before this solution is available on your local machine.&lt;br /&gt;
*Install ReSharper 9.1.1;&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Git&amp;diff=28988</id>
		<title>QESTNET Internal:Developer Setup Git</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Git&amp;diff=28988"/>
		<updated>2015-07-17T02:38:48Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial Setup ==&lt;br /&gt;
*Signup for a GitHub account www.github.com. Tell someone your username so they can add you to the appropriate SpectraQEST teams. For QESTNET you will need access to the qestnet repository.&lt;br /&gt;
*Download and install Git from http://git-scm.com/download. Windows has two possible ways to run git: choose msysgit instead of Cygwin. When installing, choose all the options that they recommend for Windows development. Install again to something like “C:\Program Files (x86)\Git”.&lt;br /&gt;
**You will be prompted about line ending conversions at some point. Use the auto-convert option, I think it’s the first option. It should produce the line “autocrlf = true” in the default config: “C:\Program Files (x86)\Git\etc\gitconfig”.&lt;br /&gt;
*You can now:&lt;br /&gt;
**Run the Git console using Git Bash, a shortcut (quotes included): &amp;quot;C:\Program Files (x86)\Git\bin\sh.exe&amp;quot; --login –i&lt;br /&gt;
**Run Git GUI using this entire command (quotes included) in a shortcut: &amp;quot;C:\Program Files (x86)\Git\bin\wish.exe&amp;quot; &amp;quot;C:\Program Files (x86)\Git\libexec\git-core\git-gui&amp;quot;&lt;br /&gt;
**A shortcut for both of these should have been created in the Start Menu automatically.&lt;br /&gt;
*Your global Git configuration file “.gitconfig” is found under “C:\Users\Your.Name\.gitconfig”. Setup your username and email by using the following commands in Git Bash:&lt;br /&gt;
**git config --global user.name “Your name”&lt;br /&gt;
**git config --global user.email your.name@spectraqest.com&lt;br /&gt;
*Download and install KDiff3 (this will be used as the merge tool for changes that can’t be automatically merged. Can maybe make it work with WinMerge, but haven’t tried.) This can be installed to the default location, something like “C:\Program Files (x86)\KDiff3”.&lt;br /&gt;
*Setup Git to use KDiff3 and optionally Notepad++ as your editor instead of Vim by editing the global .gitconfig file. I find it easier to edit manually in Notepad++ than using the console. Here’s an example of a config file:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[core]&lt;br /&gt;
	editor = &amp;quot;&#039;C:/Program Files (x86)/Notepad++/notepad++.exe&#039; -multiInst -nosession -noPlugin&amp;quot;&lt;br /&gt;
	autocrlf = true&lt;br /&gt;
[user]&lt;br /&gt;
	name = John Meegan&lt;br /&gt;
	email = john.meegan@spectraqest.com&lt;br /&gt;
[merge]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[mergetool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;br /&gt;
[diff]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[difftool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*Set up your public key: http://github.com/guides/providing-your-ssh-key . Note that the ~ directory in Git Bash corresponds to “C:\Users\Your.Name\”, so your SSH public key can be found in “C:\users\Your.Name\.ssh\id_rsa.pub” after you’ve generated it.&lt;br /&gt;
**By this point you will have a GitHub account and password, a private and public SSH key, and a password to access your private SSH key. This last password is just in case someone steals your computer, they cannot access your private key without a password. This prevents them from accessing anything you use your key for, such as GitHub, once you have added your public SSH key to GitHub.&lt;br /&gt;
*Make the folder “C:\dev\” on your C Drive for development work.&lt;br /&gt;
*Get a Git repository from GitHub via something like the following (note the URL comes from GitHub and changes depending on the project):&lt;br /&gt;
**cd /c/dev/&lt;br /&gt;
**git clone git@github.com:spectraqest/qestnet.upgrade.git&lt;br /&gt;
*That’s pretty much it. There are plenty of tools you can try out to assist with using Git if you wish. Two of the most popular are:&lt;br /&gt;
**GitHub for Windows: https://windows.github.com&lt;br /&gt;
**Atlassian SourceTree: http://www.sourcetreeapp.com/&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Resharper&amp;diff=28987</id>
		<title>QESTNET Internal:Developer Resharper</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Resharper&amp;diff=28987"/>
		<updated>2015-07-17T02:32:45Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Resharper==&lt;br /&gt;
===What is it?===&lt;br /&gt;
A third party extension for Visual Studio by JetBrains which is designed to make Visual Studio a better IDE and you more productive.&lt;br /&gt;
===Documention===&lt;br /&gt;
Go to https://www.jetbrains.com/resharper/help/Introduction__Index.html for Resharper Help.&lt;br /&gt;
===Options===&lt;br /&gt;
In Visual Studio open the menu item Resharper and select Options. Here is where all of Resharper&#039;s extensions can be turned on or off.&lt;br /&gt;
====Initial option setup====&lt;br /&gt;
*Code Inspection -&amp;gt; Inspection Severity -&amp;gt; XAML -&amp;gt; Set “Unresolved binding path when DataContext is known” to “Error”.  That will mean you get a full error if any of the bindings to entity properties in the XAML are not valid.&lt;br /&gt;
These are useful to reduce warning spam:&lt;br /&gt;
*Code Inspection -&amp;gt; Inspection Severity -&amp;gt; All -&amp;gt; Constraints Violations -&amp;gt; Namespace does not correspond to file location -&amp;gt; Set to &amp;quot;Do not show&amp;quot;.&lt;br /&gt;
*Code Editing -&amp;gt; C# -&amp;gt; Code Style -&amp;gt; Instance members qualification -&amp;gt; Use “this.” Qualifier for -&amp;gt; set  to Field, Property, Event, Method.  QN has liberal use of “this” and you’ll get warnings about them being unnecessary otherwise.&lt;br /&gt;
*Code Editing -&amp;gt; C# -&amp;gt; Naming Style -&amp;gt; Instance fields (private) -&amp;gt; Remove the underscore from the start of “lowerCamelCase”.  Again we don’t use these in QN so it will give warning about them.&lt;br /&gt;
===Solution Wide Analysis===&lt;br /&gt;
Once you have opened a solution in Visual Studio. Right click on the circle in the bottom right hand corner of Visual Studio. Select &amp;quot;Start Solution Wide Analysis&amp;quot;. This will turn on Resharper for this solution. It will be constantly running in the background. Any errors or warnings will be highlighted in the code like normal but can be accessed as well via the circle.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=28986</id>
		<title>QESTNET Internal:Developer Home</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=28986"/>
		<updated>2015-07-17T02:15:03Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page acts as a home for QESTNET developers and aims to provide easy access to all relevant information and processes.&lt;br /&gt;
&lt;br /&gt;
== For Developers ==&lt;br /&gt;
=== Developer Setup Guide ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Requirements|Requirements]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Git|Git]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET|QESTNET]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTField|QESTField]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Console|QESTNET Console]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Tester|QESTNET Tester]]&lt;br /&gt;
&lt;br /&gt;
=== Coding Guidelines ===&lt;br /&gt;
This section is intended to provide a set of guidelines that are helpful to people writing code in the QESTNET repository.&lt;br /&gt;
* [[QESTNET_Internal:Developer_Git etiquette|Git etiquette]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Resharper|Resharper]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Code_Comments|Code comments]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Coding Knowledge Base ===&lt;br /&gt;
&lt;br /&gt;
==== QESTNET Projects Quick Reference Guide ====&lt;br /&gt;
* [[QESTNET_Internal:QESTNET_Projects_Quick_Reference_Guide|QESTNET Projects]]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
&lt;br /&gt;
==== Classes, Controls, Modules ====&lt;br /&gt;
&lt;br /&gt;
==== Testing and Debugging ====&lt;br /&gt;
&lt;br /&gt;
==== Other ====&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Service|Fugro Data Backbone Service]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro DBB_TestMapping_Guide|Fugro Data Backbone Test Mapping Step-by-step Guide]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
== For Managers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Guidelines|{{PAGENAME}}]]&lt;br /&gt;
[[Category:QESTNET_Internal|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Internal|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=28985</id>
		<title>QESTNET Internal:Developer Home</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=28985"/>
		<updated>2015-07-17T02:14:37Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page acts as a home for QESTNET developers and aims to provide easy access to all relevant information and processes.&lt;br /&gt;
&lt;br /&gt;
== For Developers ==&lt;br /&gt;
=== Developer Setup Guide ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Requirements|Requirements]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Git|Git]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET|QESTNET]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTField|QESTField]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Console|QESTNET Console]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Tester|QESTNET Tester]]&lt;br /&gt;
&lt;br /&gt;
=== Coding Guidelines ===&lt;br /&gt;
This section is intended to provide a set of guidelines that are helpful to people writing code in the QESTNET repository.&lt;br /&gt;
* [[QESTNET_Internal:Developer_Git etiquette|Git etiquette]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Resharper|Resharper]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Code_Comments|Code comments]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Coding Knowledge Base ===&lt;br /&gt;
&lt;br /&gt;
==== QESTNET Projects Quick Reference Guide ====&lt;br /&gt;
* [[QESTNET_Internal:QESTNET_Projects_Quick_Reference_Guide|QESTNET Projects]]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
&lt;br /&gt;
==== Classes, Controls, Modules ====&lt;br /&gt;
&lt;br /&gt;
==== Testing and Debugging ====&lt;br /&gt;
&lt;br /&gt;
==== Other ====&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Service|Fugro Data Backbone Service]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro DBB_TestMapping_Guide|Fugro Data Backbone Test Mapping Step-by-step Guide]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
== For Managers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Guidelines|{{PAGENAME}}]]&lt;br /&gt;
[[Category:QESTNET_Internal|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Internal|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28977</id>
		<title>QESTNET Internal:Developer Git etiquette</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28977"/>
		<updated>2015-07-15T07:12:57Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to &amp;quot;git&amp;quot; started ==&lt;br /&gt;
===Understanding Git===&lt;br /&gt;
Even I’ve only seen the tip of the iceberg, but there are some major conceptual differences with both VSS and SVN that are worth knowing.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There’s a couple of good resources that I like:&lt;br /&gt;
*Git Magic - http://www-cs-students.stanford.edu/~blynn/gitmagic/&lt;br /&gt;
*HgInit - http://hginit.com/top/ (Really well written, but actually for Mercurial, not Git. But the products are so similar that I found this one really useful anyway).&lt;br /&gt;
*Stack Overflow - http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide (this question has a ton of links to other resources if you want them)&lt;br /&gt;
*Git Manual – you should be able to do “git help” from the command line to bring up the git manual.&lt;br /&gt;
The biggest difference between Git and VSS is VSS will create a local copy of a particular branch, but Git will create a copy of all of the branches as well as their entire histories. This means you can switch between them all without the server being involved. You can then change multiple branches and push all of them up to the server. You only ever “see” one branch at a time however, and switch between them using the “checkout” command. So instead of “checkin” and “checkout” going to and from the server, they are local commands. You then use push and fetch to go to and from the server. Google it, see the above links, or talk to one of us for more info.&lt;br /&gt;
===Command line vs. VS plugin===&lt;br /&gt;
Although there is a Git plugin for Visual Studio, I really don’t like it myself. Personally I think I’m getting along with Git much better with just the command line interface, which is faster in the long-run. So, once installed, I like to use “Git Bash” (available in the Start Menu). That opens up a Linux emulation, which I prefer because it has color-coding and shows your current branch etc; however, you can also run it directly from a Windows command line (assuming you installed Git with that option selected).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The main non-intuitive thing at first with Git Bash is that path names would be described like /c/dev/ and not “c:\dev\”.&lt;br /&gt;
===How do I check out a file? (and branching)===&lt;br /&gt;
Two major points of difference with VSS here. One, individual files are not checked out, rather the entire tree is. Two, “checking out” really means switching to another branch. Though Git has a “checkout” command, it is not really like the VSS checkout at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Git is very big on branching, mainly because branching and merging are trivial in Git where they’re not in other SCMs. So you have not just the shared branches for separating stable and development code, but also you create them in your local repository to separate any particular line of work you might be following. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A branch is always on your entire working tree; in other words, any changes at all that you make while in the context of a branch apply to that branch. Making individual branches allows you to work on several different tasks at once without them interfering with each other. For example, a good approach is to have a separate branch for each issue that you’re working on. When you’re done working on the issue, you commit that whole branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let’s say you’re working on a change to Program.cs, issue #5000. You might checkout a new branch just for working on that:&lt;br /&gt;
 git branch 5000_program_fix&lt;br /&gt;
 git checkout 5000_program_fix&lt;br /&gt;
(The above two commands can also be done with git checkout –b 5000_program_fix)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You start work on it, and modify Program.cs as you like. Suddenly, you’re told that issue #5055, a task to update the application readme.txt file, has to be done right away. So you commit your changes to the 5000_program_fix branch, and create a new branch for 5055_readme_fix.&lt;br /&gt;
 notepad.exe Program.cs&lt;br /&gt;
 git commit –a –m ‘Modified message on console main screen.’&lt;br /&gt;
 git checkout –b 5055_readme_fix dev&lt;br /&gt;
(Note: if you don’t supply the starting point of master, the new branch (5055) will be created as a sub-branch of the current branch (5000), and will include all of the changes already committed for 5000.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(Note 2: the “-a” in commit means “--all&amp;quot; and will automatically stage any changed files. See the git doco for more. It is not recommended unless you are sure you want all changed files included.)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You make the changes to the readme.txt and commit them. &lt;br /&gt;
 notepad.exe readme.txt&lt;br /&gt;
 git commit -a -m ‘Modified readme.txt with new instructions.’&lt;br /&gt;
Now you’ll find that you can switch between any of the three branches at will, and all of your work is separated correctly:&lt;br /&gt;
 git checkout dev (contains neither the changes to Program.cs or readme.txt)&lt;br /&gt;
 git checkout 5055_readme_fix (contains only the changes to the readme.txt)&lt;br /&gt;
 git checkout 5000_program_fix (contains only the changes to Program.cs)&lt;br /&gt;
===How do I check in a file? (merging and pushing)===&lt;br /&gt;
Actually we sort of saw this in the previous question; we use git commit to “check in” a file to the current branch. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
That’s not quite the end of the story though. For one, you’ve still got your changes in your own branch, like 5000_program_fix. So the first thing you should do once you’re happy with your fix is to merge it back into the development branch:&lt;br /&gt;
 git checkout dev&lt;br /&gt;
 git merge 5000_program_fix&lt;br /&gt;
If there are changes that can’t be automatically merged it should pop up the configured diff tool to let you do it manually. Otherwise, it just merges them in and automatically commits them (keeping your history of commits).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, though, that this is all still occurring on your local repository; since you got the repository from GitHub, there’s been no communication at all with an external server. So, in order to put them back on the “central” repository:&lt;br /&gt;
 git push origin dev&lt;br /&gt;
That will push all changes you’ve made to the dev branch up to the remote server.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Merging is a pretty common thing (just as common as branching really!). For example if a branch you’re working on needs a fix that you did in some other branch, just merge from that branch into the one you want.&lt;br /&gt;
===How do I see what I’ve changed?===&lt;br /&gt;
The easiest is to run Git Gui (or similar) and it will show you the changed files. If you want to use the console you can use:&lt;br /&gt;
 git status&lt;br /&gt;
 git status –u&lt;br /&gt;
See the manual for usage.&lt;br /&gt;
===Okay, but how do I see what’s changed in those files?===&lt;br /&gt;
In Git Gui, click on them. You can compare files in all sorts of ways, but most commonly may be between different branches, or different commits.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To view the differences in all of your uncommitted changes:&lt;br /&gt;
 git diff&lt;br /&gt;
To view the differences in your uncommitted changes for a specific file:&lt;br /&gt;
 git diff Program.cs&lt;br /&gt;
To view the differences between the master branch and the 5055 branch:&lt;br /&gt;
 git diff master 5055_readme_fix&lt;br /&gt;
To view the differences between the current version and 2 commits ago:&lt;br /&gt;
 git diff HEAD~2&lt;br /&gt;
There’s every other conceivable option you might need to compare too, those are just a very few basic ones.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You may also like to use the Git GUI for this, which provides a reasonably nice way of seeing complete file history of the entire repository – and generally much faster than SourceSafe does. Git GUI &amp;gt; Repository &amp;gt; Visualize … History.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Whoops, I made a mistake when committing! How do I undo it?&lt;br /&gt;
It’s quite alright to modify your own commits, since they still only exist in your own repository. The safest way is to use the reset command:&lt;br /&gt;
 git reset --soft HEAD^&lt;br /&gt;
To explain: HEAD^ indicates that we should reset back to the state of the previous commit; if you wanted to go back two commits, you could use HEAD^^ or HEAD~2. The --soft reset means that the files themselves will not be modified, which is generally what you want; if you do a --hard reset instead, the files themselves will revert to the state they were in before you modified them, so only do that if you really want to throw away those changes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After you’ve done a push it gets trickier because people may have pulled your mistake into their own repositories. In this case it’s generally recommended that you fix the mistake with another commit.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I need some cutting edge code that someone else is developing but which they haven’t pushed to the main repository. Can I get it?&lt;br /&gt;
Yes, you can pull from anyone’s repository, but I’m still working on the details of what’s required to allow our repositories to access each other. In the meantime, you could get the other person to push their branch up to the GitHub server and then you can pull from it. &lt;br /&gt;
===Where’s my Tools &amp;gt; Options menu?===&lt;br /&gt;
You have Git configuration options at the individual repository level, or at a global level (i.e. applies to all repositories). These are stored in configuration files, but are most easily accessible via the command line. For example to see all settings applying to the current repository:&lt;br /&gt;
 git config --list&lt;br /&gt;
Or if you want to see just your global settings:&lt;br /&gt;
 git config --list --global&lt;br /&gt;
Then if you want to change a setting, just issue the name and new value:&lt;br /&gt;
 git config core.autocrlf true&lt;br /&gt;
Again, if you’re changing a global setting, use the --global parameter. Repository-level settings will override global ones I think.&lt;br /&gt;
&lt;br /&gt;
===I’ve made a whole ton of commits, but it makes for a pretty messy history. Can I clean it all up?===&lt;br /&gt;
Yes, the easiest way is to use the rebase command. This usage is most well described here: http://stackoverflow.com/questions/347901/what-are-your-favorite-git-features-or-tricks/2047707#2047707.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Also note Linus Torvalds’ recommendations with rebase, namely that you only rebase your own work: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html. Though product managers may want to clean up the code of their developers if absolutely necessary. &lt;br /&gt;
&lt;br /&gt;
===Common Git Commands===&lt;br /&gt;
*git fetch – This will get the latest code from GitHub for all branches.&lt;br /&gt;
*git fetch &amp;lt;branchname&amp;gt; –  The same but for a specific branch.&lt;br /&gt;
*git checkout &amp;lt;branchname&amp;gt; –  Change to a specific branch on your local machine.&lt;br /&gt;
*git commit –  Create a new commit on your local machine.&lt;br /&gt;
*git commit –a –  Create a new commit on your local machine and automatically include all changed files. This will not add new files.&lt;br /&gt;
*git commit –m “message” –  Create a new commit on your local machine and use the supplied message for it.&lt;br /&gt;
*git commit --amend  – Change the message for the last commit you made.&lt;br /&gt;
*git push origin &amp;lt;branchname&amp;gt; –  Push changes for a specific branch to GitHub.&lt;br /&gt;
*git rebase &amp;lt;target_branchname&amp;gt; –  Rebase your currently checked out branch on top of the target branch.&lt;br /&gt;
*git rebase –i head~10 –  Rebase the last 10 commits interactively. This lets you change commit messages, re-order commits, squash multiple commits together, etc.&lt;br /&gt;
*git merge -–ff-only &amp;lt;branchname&amp;gt; –  A special type of merge just to update to more recent code.&lt;br /&gt;
*git mergetool –  Run the merge tool any time a rebase or merge fails and it needs manually consolidating.&lt;br /&gt;
&lt;br /&gt;
===Merge vs Rebase:===&lt;br /&gt;
&lt;br /&gt;
Merge joins 2 branches together:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
     A---B---C             branch 2&lt;br /&gt;
    /          \&lt;br /&gt;
D---E---F---G---H---       branch 1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rebase (based on the above) applies the changes for one branch on top of another:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
D---E---F---G---H---A---B---C---      branch 1, branch 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because rebasing is destructive, this should not be done for code that has already been pushed up to GitHub. This is for reorganising commits on your local machine to make them nicer to push up.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is most useful when you do a “git fetch” and discover someone else has pushed work up before you have. You then reapply your changes to the end of the history before pushing to GitHub.&lt;br /&gt;
&lt;br /&gt;
==Git workflow==&lt;br /&gt;
===Starting a new bug/change request===&lt;br /&gt;
*Checkout the development branch (e.g. alien) that the bug/change request will be added to.&lt;br /&gt;
**Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien or git fetch origin alien and git merge --ff-only origin/alien).&lt;br /&gt;
**Create a new branch using the bug/cr and some form of descriptor as the name (e.g. cr4321-tv-map or bug1234-tv-map-ucs).&lt;br /&gt;
**Checkout the new branch (git checkout cr4321-tv-map).&lt;br /&gt;
*Make regular commits to this branch as you are developing (git commit -a -m &#039;Commit message.&#039;).&lt;br /&gt;
**Once initial development is complete rebase the bug/cr branch to a single commit (git rebase -i origin/cr4321-tv-map).&lt;br /&gt;
**Review the files that you’ve changed, using git status and git diff to ensure there are no unexpected changes.&lt;br /&gt;
**The bug/cr branch can now be pushed to github for testing (git push origin cr4321-tv-map).&lt;br /&gt;
*The tester will fetch and checkout the cr/bug branch to test it and give feedback.&lt;br /&gt;
**At this point make any required changes on the branch. Commit and push to github so that the tester can re-test.&lt;br /&gt;
**Once all development is complete, checkout the development branch again (git checkout alien). Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien).&lt;br /&gt;
**Merge the bug/cr branch into the development branch, resolving any conflicts (git merge cr4321-tv-map).&lt;br /&gt;
**The development branch can now be pushed to github for integration testing (git push origin alien).&lt;br /&gt;
*The tester will fetch and checkout the development branch to test it and give feedback.&lt;br /&gt;
**Minor fixes required from integration testing can be made directly on the development branch. These should be no major problems but if there are the fixes should be made on the bug/cr branch and tested there first. This should be done with priority as the development branch may be &amp;quot;broken&amp;quot; until these changes are merged.&lt;br /&gt;
**Once integration testing is complete or if it is not required the bug/cr branch can be deleted locally and on github.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28976</id>
		<title>QESTNET Internal:Developer Git etiquette</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28976"/>
		<updated>2015-07-15T07:12:21Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to &amp;quot;git&amp;quot; started ==&lt;br /&gt;
===Understanding Git===&lt;br /&gt;
Even I’ve only seen the tip of the iceberg, but there are some major conceptual differences with both VSS and SVN that are worth knowing.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There’s a couple of good resources that I like:&lt;br /&gt;
*Git Magic - http://www-cs-students.stanford.edu/~blynn/gitmagic/&lt;br /&gt;
*HgInit - http://hginit.com/top/ (Really well written, but actually for Mercurial, not Git. But the products are so similar that I found this one really useful anyway).&lt;br /&gt;
*Stack Overflow - http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide (this question has a ton of links to other resources if you want them)&lt;br /&gt;
*Git Manual – you should be able to do “git help” from the command line to bring up the git manual.&lt;br /&gt;
The biggest difference between Git and VSS is VSS will create a local copy of a particular branch, but Git will create a copy of all of the branches as well as their entire histories. This means you can switch between them all without the server being involved. You can then change multiple branches and push all of them up to the server. You only ever “see” one branch at a time however, and switch between them using the “checkout” command. So instead of “checkin” and “checkout” going to and from the server, they are local commands. You then use push and fetch to go to and from the server. Google it, see the above links, or talk to one of us for more info.&lt;br /&gt;
===Command line vs. VS plugin===&lt;br /&gt;
Although there is a Git plugin for Visual Studio, I really don’t like it myself. Personally I think I’m getting along with Git much better with just the command line interface, which is faster in the long-run. So, once installed, I like to use “Git Bash” (available in the Start Menu). That opens up a Linux emulation, which I prefer because it has color-coding and shows your current branch etc; however, you can also run it directly from a Windows command line (assuming you installed Git with that option selected).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The main non-intuitive thing at first with Git Bash is that path names would be described like /c/dev/ and not “c:\dev\”.&lt;br /&gt;
===How do I check out a file? (and branching)===&lt;br /&gt;
Two major points of difference with VSS here. One, individual files are not checked out, rather the entire tree is. Two, “checking out” really means switching to another branch. Though Git has a “checkout” command, it is not really like the VSS checkout at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Git is very big on branching, mainly because branching and merging are trivial in Git where they’re not in other SCMs. So you have not just the shared branches for separating stable and development code, but also you create them in your local repository to separate any particular line of work you might be following. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A branch is always on your entire working tree; in other words, any changes at all that you make while in the context of a branch apply to that branch. Making individual branches allows you to work on several different tasks at once without them interfering with each other. For example, a good approach is to have a separate branch for each issue that you’re working on. When you’re done working on the issue, you commit that whole branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let’s say you’re working on a change to Program.cs, issue #5000. You might checkout a new branch just for working on that:&lt;br /&gt;
 git branch 5000_program_fix&lt;br /&gt;
 git checkout 5000_program_fix&lt;br /&gt;
(The above two commands can also be done with git checkout –b 5000_program_fix)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You start work on it, and modify Program.cs as you like. Suddenly, you’re told that issue #5055, a task to update the application readme.txt file, has to be done right away. So you commit your changes to the 5000_program_fix branch, and create a new branch for 5055_readme_fix.&lt;br /&gt;
 notepad.exe Program.cs&lt;br /&gt;
 git commit –a –m ‘Modified message on console main screen.’&lt;br /&gt;
 git checkout –b 5055_readme_fix dev&lt;br /&gt;
(Note: if you don’t supply the starting point of master, the new branch (5055) will be created as a sub-branch of the current branch (5000), and will include all of the changes already committed for 5000.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(Note 2: the “-a” in commit means “--all&amp;quot; and will automatically stage any changed files. See the git doco for more. It is not recommended unless you are sure you want all changed files included.)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You make the changes to the readme.txt and commit them. &lt;br /&gt;
 notepad.exe readme.txt&lt;br /&gt;
 git commit -a -m ‘Modified readme.txt with new instructions.’&lt;br /&gt;
Now you’ll find that you can switch between any of the three branches at will, and all of your work is separated correctly:&lt;br /&gt;
 git checkout dev (contains neither the changes to Program.cs or readme.txt)&lt;br /&gt;
 git checkout 5055_readme_fix (contains only the changes to the readme.txt)&lt;br /&gt;
 git checkout 5000_program_fix (contains only the changes to Program.cs)&lt;br /&gt;
===How do I check in a file? (merging and pushing)===&lt;br /&gt;
Actually we sort of saw this in the previous question; we use git commit to “check in” a file to the current branch. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
That’s not quite the end of the story though. For one, you’ve still got your changes in your own branch, like 5000_program_fix. So the first thing you should do once you’re happy with your fix is to merge it back into the development branch:&lt;br /&gt;
 git checkout dev&lt;br /&gt;
 git merge 5000_program_fix&lt;br /&gt;
If there are changes that can’t be automatically merged it should pop up the configured diff tool to let you do it manually. Otherwise, it just merges them in and automatically commits them (keeping your history of commits).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, though, that this is all still occurring on your local repository; since you got the repository from GitHub, there’s been no communication at all with an external server. So, in order to put them back on the “central” repository:&lt;br /&gt;
 git push origin dev&lt;br /&gt;
That will push all changes you’ve made to the dev branch up to the remote server.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Merging is a pretty common thing (just as common as branching really!). For example if a branch you’re working on needs a fix that you did in some other branch, just merge from that branch into the one you want.&lt;br /&gt;
===How do I see what I’ve changed?===&lt;br /&gt;
The easiest is to run Git Gui (or similar) and it will show you the changed files. If you want to use the console you can use:&lt;br /&gt;
 git status&lt;br /&gt;
 git status –u&lt;br /&gt;
See the manual for usage.&lt;br /&gt;
===Okay, but how do I see what’s changed in those files?===&lt;br /&gt;
In Git Gui, click on them. You can compare files in all sorts of ways, but most commonly may be between different branches, or different commits.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To view the differences in all of your uncommitted changes:&lt;br /&gt;
 git diff&lt;br /&gt;
To view the differences in your uncommitted changes for a specific file:&lt;br /&gt;
 git diff Program.cs&lt;br /&gt;
To view the differences between the master branch and the 5055 branch:&lt;br /&gt;
 git diff master 5055_readme_fix&lt;br /&gt;
To view the differences between the current version and 2 commits ago:&lt;br /&gt;
 git diff HEAD~2&lt;br /&gt;
There’s every other conceivable option you might need to compare too, those are just a very few basic ones.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You may also like to use the Git GUI for this, which provides a reasonably nice way of seeing complete file history of the entire repository – and generally much faster than SourceSafe does. Git GUI &amp;gt; Repository &amp;gt; Visualize … History.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Whoops, I made a mistake when committing! How do I undo it?&lt;br /&gt;
It’s quite alright to modify your own commits, since they still only exist in your own repository. The safest way is to use the reset command:&lt;br /&gt;
 git reset --soft HEAD^&lt;br /&gt;
To explain: HEAD^ indicates that we should reset back to the state of the previous commit; if you wanted to go back two commits, you could use HEAD^^ or HEAD~2. The --soft reset means that the files themselves will not be modified, which is generally what you want; if you do a --hard reset instead, the files themselves will revert to the state they were in before you modified them, so only do that if you really want to throw away those changes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After you’ve done a push it gets trickier because people may have pulled your mistake into their own repositories. In this case it’s generally recommended that you fix the mistake with another commit.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I need some cutting edge code that someone else is developing but which they haven’t pushed to the main repository. Can I get it?&lt;br /&gt;
Yes, you can pull from anyone’s repository, but I’m still working on the details of what’s required to allow our repositories to access each other. In the meantime, you could get the other person to push their branch up to the GitHub server and then you can pull from it. &lt;br /&gt;
===Where’s my Tools &amp;gt; Options menu?===&lt;br /&gt;
You have Git configuration options at the individual repository level, or at a global level (i.e. applies to all repositories). These are stored in configuration files, but are most easily accessible via the command line. For example to see all settings applying to the current repository:&lt;br /&gt;
 git config --list&lt;br /&gt;
Or if you want to see just your global settings:&lt;br /&gt;
 git config --list --global&lt;br /&gt;
Then if you want to change a setting, just issue the name and new value:&lt;br /&gt;
 git config core.autocrlf true&lt;br /&gt;
Again, if you’re changing a global setting, use the --global parameter. Repository-level settings will override global ones I think.&lt;br /&gt;
&lt;br /&gt;
===I’ve made a whole ton of commits, but it makes for a pretty messy history. Can I clean it all up?===&lt;br /&gt;
Yes, the easiest way is to use the rebase command. This usage is most well described here: http://stackoverflow.com/questions/347901/what-are-your-favorite-git-features-or-tricks/2047707#2047707.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Also note Linus Torvalds’ recommendations with rebase, namely that you only rebase your own work: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html. Though product managers may want to clean up the code of their developers if absolutely necessary. &lt;br /&gt;
&lt;br /&gt;
===Common Git Commands===&lt;br /&gt;
*git fetch – This will get the latest code from GitHub for all branches.&lt;br /&gt;
*git fetch &amp;lt;branchname&amp;gt; –  The same but for a specific branch.&lt;br /&gt;
*git checkout &amp;lt;branchname&amp;gt; –  Change to a specific branch on your local machine.&lt;br /&gt;
*git commit –  Create a new commit on your local machine.&lt;br /&gt;
*git commit –a –  Create a new commit on your local machine and automatically include all changed files. This will not add new files.&lt;br /&gt;
*git commit –m “message” –  Create a new commit on your local machine and use the supplied message for it.&lt;br /&gt;
*git commit --amend  – Change the message for the last commit you made.&lt;br /&gt;
*git push origin &amp;lt;branchname&amp;gt; –  Push changes for a specific branch to GitHub.&lt;br /&gt;
*git rebase &amp;lt;target_branchname&amp;gt; –  Rebase your currently checked out branch on top of the target branch.&lt;br /&gt;
*git rebase –i head~10 –  Rebase the last 10 commits interactively. This lets you change commit messages, re-order commits, squash multiple commits together, etc.&lt;br /&gt;
*git merge -–ff-only &amp;lt;branchname&amp;gt; –  A special type of merge just to update to more recent code.&lt;br /&gt;
*git mergetool –  Run the merge tool any time a rebase or merge fails and it needs manually consolidating.&lt;br /&gt;
&lt;br /&gt;
===Merge vs Rebase:===&lt;br /&gt;
&lt;br /&gt;
Merge joins 2 branches together:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
     A---B---C             branch 2&lt;br /&gt;
    /          \&lt;br /&gt;
D---E---F---G---H---       branch 1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rebase (based on the above) applies the changes for one branch on top of another:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
D---E---F---G---H---A---B---C---      branch 1, branch 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because rebasing is destructive, this should not be done for code that has already been pushed up to GitHub. This is for reorganising commits on your local machine to make them nicer to push up.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is most useful when you do a “git fetch” and discover someone else has pushed work up before you have. You then reapply your changes to the end of the history before pushing to GitHub.&lt;br /&gt;
&lt;br /&gt;
==Git workflow==&lt;br /&gt;
*Checkout the development branch (e.g. alien) that the bug/change request will be added to.&lt;br /&gt;
**Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien or git fetch origin alien and git merge --ff-only origin/alien).&lt;br /&gt;
**Create a new branch using the bug/cr and some form of descriptor as the name (e.g. cr4321-tv-map or bug1234-tv-map-ucs).&lt;br /&gt;
**Checkout the new branch (git checkout cr4321-tv-map).&lt;br /&gt;
*Make regular commits to this branch as you are developing (git commit -a -m &#039;Commit message.&#039;).&lt;br /&gt;
**Once initial development is complete rebase the bug/cr branch to a single commit (git rebase -i origin/cr4321-tv-map).&lt;br /&gt;
**Review the files that you’ve changed, using git status and git diff to ensure there are no unexpected changes.&lt;br /&gt;
**The bug/cr branch can now be pushed to github for testing (git push origin cr4321-tv-map).&lt;br /&gt;
*The tester will fetch and checkout the cr/bug branch to test it and give feedback.&lt;br /&gt;
**At this point make any required changes on the branch. Commit and push to github so that the tester can re-test.&lt;br /&gt;
**Once all development is complete, checkout the development branch again (git checkout alien). Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien).&lt;br /&gt;
**Merge the bug/cr branch into the development branch, resolving any conflicts (git merge cr4321-tv-map).&lt;br /&gt;
**The development branch can now be pushed to github for integration testing (git push origin alien).&lt;br /&gt;
*The tester will fetch and checkout the development branch to test it and give feedback.&lt;br /&gt;
**Minor fixes required from integration testing can be made directly on the development branch. These should be no major problems but if there are the fixes should be made on the bug/cr branch and tested there first. This should be done with priority as the development branch may be &amp;quot;broken&amp;quot; until these changes are merged.&lt;br /&gt;
**Once integration testing is complete or if it is not required the bug/cr branch can be deleted locally and on github.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Git&amp;diff=28975</id>
		<title>QESTNET Internal:Developer Setup Git</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_Git&amp;diff=28975"/>
		<updated>2015-07-15T07:11:56Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial Setup ==&lt;br /&gt;
*Signup for a GitHub account www.github.com. Tell someone your username so they can add you to the appropriate SpectraQEST team&lt;br /&gt;
*Download and install Git from http://git-scm.com/download. Windows has two possible ways to run git: choose msysgit instead of Cygwin. When installing, choose all the options that they recommend for Windows development. Install again to something like “C:\Program Files (x86)\Git”.&lt;br /&gt;
**You will be prompted about line ending conversions at some point. Use the auto-convert option, I think it’s the first option. It should produce the line “autocrlf = true” in the default config: “C:\Program Files (x86)\Git\etc\gitconfig”.&lt;br /&gt;
*You can now:&lt;br /&gt;
**Run the Git console using Git Bash, a shortcut (quotes included): &amp;quot;C:\Program Files (x86)\Git\bin\sh.exe&amp;quot; --login –i&lt;br /&gt;
**Run Git GUI using this entire command (quotes included) in a shortcut: &amp;quot;C:\Program Files (x86)\Git\bin\wish.exe&amp;quot; &amp;quot;C:\Program Files (x86)\Git\libexec\git-core\git-gui&amp;quot;&lt;br /&gt;
**A shortcut for both of these should have been created in the Start Menu automatically.&lt;br /&gt;
*Your global Git configuration file “.gitconfig” is found under “C:\Users\Your.Name\.gitconfig”. Setup your username and email by using the following commands in Git Bash:&lt;br /&gt;
**git config --global user.name “Your name”&lt;br /&gt;
**git config --global user.email your.name@spectraqest.com&lt;br /&gt;
*Download and install KDiff3 (this will be used as the merge tool for changes that can’t be automatically merged. Can maybe make it work with WinMerge, but haven’t tried.) This can be installed to the default location, something like “C:\Program Files (x86)\KDiff3”.&lt;br /&gt;
*Setup Git to use KDiff3 and optionally Notepad++ as your editor instead of Vim by editing the global .gitconfig file. I find it easier to edit manually in Notepad++ than using the console. Here’s an example of a config file:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[core]&lt;br /&gt;
	editor = &amp;quot;&#039;C:/Program Files (x86)/Notepad++/notepad++.exe&#039; -multiInst -nosession -noPlugin&amp;quot;&lt;br /&gt;
	autocrlf = true&lt;br /&gt;
[user]&lt;br /&gt;
	name = John Meegan&lt;br /&gt;
	email = john.meegan@spectraqest.com&lt;br /&gt;
[merge]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[mergetool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;br /&gt;
[diff]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[difftool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*Set up your public key: http://github.com/guides/providing-your-ssh-key . Note that the ~ directory in Git Bash corresponds to “C:\Users\Your.Name\”, so your SSH public key can be found in “C:\users\Your.Name\.ssh\id_rsa.pub” after you’ve generated it.&lt;br /&gt;
**By this point you will have a GitHub account and password, a private and public SSH key, and a password to access your private SSH key. This last password is just in case someone steals your computer, they cannot access your private key without a password. This prevents them from accessing anything you use your key for, such as GitHub, once you have added your public SSH key to GitHub.&lt;br /&gt;
*Make the folder “C:\dev\” on your C Drive for development work.&lt;br /&gt;
*Get a Git repository from GitHub via something like the following (note the URL comes from GitHub and changes depending on the project):&lt;br /&gt;
**cd /c/dev/&lt;br /&gt;
**git clone git@github.com:spectraqest/qestnet.upgrade.git&lt;br /&gt;
*That’s pretty much it. There are plenty of tools you can try out to assist with using Git if you wish. Two of the most popular are:&lt;br /&gt;
**GitHub for Windows: https://windows.github.com&lt;br /&gt;
**Atlassian SourceTree: http://www.sourcetreeapp.com/&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=28974</id>
		<title>QESTNET Internal:Developer Home</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Home&amp;diff=28974"/>
		<updated>2015-07-15T07:10:49Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page acts as a home for QESTNET developers and aims to provide easy access to all relevant information and processes.&lt;br /&gt;
&lt;br /&gt;
== For Developers ==&lt;br /&gt;
=== Developer Setup Guide ===&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Requirements|Requirements]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_Git|Git]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET|QESTNET]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTField|QESTField]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Console|QESTNET Console]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Setup_QESTNET Tester|QESTNET Tester]]&lt;br /&gt;
&lt;br /&gt;
=== Coding Style Guidelines ===&lt;br /&gt;
This section is intended to provide a set of guidelines that are helpful to people writing code in Spectra QEST. It includes notes on naming conventions, coding style, commenting, tips for performance, avoiding errors, and error handling.&lt;br /&gt;
* [[Development:Symbols|Symbols]]&lt;br /&gt;
* [[Naming conventions]]&lt;br /&gt;
* [[Development:Code_Commenting_Guidelines|Code commenting]]&lt;br /&gt;
* [[QESTNET_Internal:Developer_Git etiquette |Git etiquette]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Coding Knowledge Base ===&lt;br /&gt;
&lt;br /&gt;
==== QESTNET Projects Quick Reference Guide ====&lt;br /&gt;
* [[QESTNET_Internal:QESTNET_Projects_Quick_Reference_Guide|QESTNET Projects]]&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
&lt;br /&gt;
==== Classes, Controls, Modules ====&lt;br /&gt;
&lt;br /&gt;
==== Testing and Debugging ====&lt;br /&gt;
&lt;br /&gt;
==== Other ====&lt;br /&gt;
* [[QESTNET_Internal:Fugro_DBB_Service|Fugro Data Backbone Service]]&lt;br /&gt;
* [[QESTNET_Internal:Fugro DBB_TestMapping_Guide|Fugro Data Backbone Test Mapping Step-by-step Guide]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
== For Managers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Guidelines|{{PAGENAME}}]]&lt;br /&gt;
[[Category:QESTNET_Internal|{{PAGENAME}}]]&lt;br /&gt;
[[Category:Internal|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=28973</id>
		<title>QESTNET Internal:Developer Setup QESTNET</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Setup_QESTNET&amp;diff=28973"/>
		<updated>2015-07-15T07:09:15Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===QESTNET===&lt;br /&gt;
=====QESTNET Repository=====&lt;br /&gt;
*Clone the qestnet repository (git clone git@github.com:spectraqest/qestnet.git).&lt;br /&gt;
*Fetch the branch to be used for development (git fetch origin branch_name).&lt;br /&gt;
*Checkout the branch (git checkout branch_name).&lt;br /&gt;
&lt;br /&gt;
=====App Configuration=====&lt;br /&gt;
Config files often have ever changing information specific to your setup in them. As such files with extension &#039;&#039;&#039;.config&#039;&#039;&#039; are ignored by git. See &#039;&#039;&#039;.gitignore&#039;&#039;&#039; files for other files git will ignore. All config files have an associated default file. e.g., app.config has app.config.default. This will give a new setup a starting template. If you add additional configuration properties make sure the &#039;&#039;&#039;.default&#039;&#039;&#039; file is updated as this is the only one committed to git.&lt;br /&gt;
*Run the batch file &#039;&#039;&#039;~\qestnet\QESTNET\copy_default_config.bat&#039;&#039;&#039; &lt;br /&gt;
*The batch file will go through the qestnet repository and create &#039;&#039;&#039;.config&#039;&#039;&#039; files from the &#039;&#039;&#039;.default&#039;&#039;&#039; files&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Create QESTNET Service=====&lt;br /&gt;
*Run &#039;&#039;&#039;~\qestnet\QESTNET\bin\install_qestnet_debug.bat&#039;&#039;&#039;. This will create a QESTNET windows service on your machine.&lt;br /&gt;
*Open Services from the control panel. &lt;br /&gt;
*Right click the QESTNET service and select properties. Change the Log On permissions to your account or the windows NETWORK SERVICE account. If you use the NETWORK SERVICE account you will need to ensure it has the necessary permissions to ports and files the qestnet service will use. &lt;br /&gt;
*Start the service&lt;br /&gt;
[[Image:QESTNET Service.jpg]]&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====QESTLab Schema Generator Setup=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTLab.SchemaGenerator\ QESTLab.SchemaGenerator.sln&#039;&#039;&#039;.&lt;br /&gt;
**Build the solution, there should be no errors.&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
**Open the app.config file in the QESTNET project.&lt;br /&gt;
**Edit the QESTLab_Data connection string to point to the QESTLab database you want to connect to.&lt;br /&gt;
&#039;&#039;&amp;lt;add name=&amp;quot;QESTLab_Data&amp;quot; connectionString=&amp;quot;metadata=res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.csdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.ssdl|res://*/Spectra.QESTLab.Data.Entities.QESTLabModel.msl;provider=System.Data.SqlClient;provider connection string=&amp;amp;quot;data source=ADLD0031;initial catalog=fugro_20150320_qestlab;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&amp;amp;quot;&amp;quot; providerName=&amp;quot;System.Data.EntityClient&amp;quot; /&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Open the program Windows PowerShell ISE.&lt;br /&gt;
**Enter &#039;&#039;&#039;set-executionpolicy remotesigned&#039;&#039;&#039; into the console&lt;br /&gt;
**This comes up, click Yes&lt;br /&gt;
[[Image:QESTNET Service 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Right-click the &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039; file in QESTLab.Data and select Open With&lt;br /&gt;
**Click add new program (“Add...”)&lt;br /&gt;
**Enter the PowerShell folder (C:\WINDOWS\system32\WindowsPowerShell\v1.0)&lt;br /&gt;
**Click OK?&lt;br /&gt;
**Click “set as default” on the open with window.&lt;br /&gt;
**Click OK.&lt;br /&gt;
The file can now be run using PowerShell by double clicking on it in Visual Studio.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Build QESTLab.Data=====&lt;br /&gt;
The first time QESTLab.Data is built on a machine or if the bin is cleaned out for the project the following steps will need to be done. This is due to a circular reference that exists in QESTLab.Data. The QESTLab_Data_Views.tt references the QESTLab.Data.dll which is built using the QESTLab_Data_Views.tt output.&lt;br /&gt;
*Exclude &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; from the QESTLab.Data project&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Include &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; &lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select &#039;&#039;&#039;Run Custom Tool&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Update QESTLab.Data Schema=====&lt;br /&gt;
The following steps will update the QESTLab.Data schema to match the QESTLab database structure&lt;br /&gt;
*Run &#039;&#039;&#039;GenerateDataSchema.ps1&#039;&#039;&#039;&lt;br /&gt;
*Build QESTLab.Data project&lt;br /&gt;
*Right click &#039;&#039;&#039;QESTLab_Data_Views.tt&#039;&#039;&#039; and select Run Custom Tool&lt;br /&gt;
*Build QESTLab.Data project.&lt;br /&gt;
It is on the &amp;quot;to do&amp;quot; list to get the PowerShell script to do all the last three steps as well. This was initially a one click operation but no one can stop the inexorable march of progress.&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Build QESTNET=====&lt;br /&gt;
*Open &#039;&#039;&#039;~\qestnet\QESTNET\QESTNET.sln&#039;&#039;&#039;&lt;br /&gt;
*Build the solution. If there are no errors the QESTNET service has been successfully built and the service restarted.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28972</id>
		<title>QESTNET Internal:Developer Git etiquette</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28972"/>
		<updated>2015-07-15T07:03:22Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial Setup ==&lt;br /&gt;
*Signup for a GitHub account www.github.com. Tell someone your username so they can add you to the appropriate SpectraQEST team&lt;br /&gt;
*Download and install Git from http://git-scm.com/download. Windows has two possible ways to run git: choose msysgit instead of Cygwin. When installing, choose all the options that they recommend for Windows development. Install again to something like “C:\Program Files (x86)\Git”.&lt;br /&gt;
**You will be prompted about line ending conversions at some point. Use the auto-convert option, I think it’s the first option. It should produce the line “autocrlf = true” in the default config: “C:\Program Files (x86)\Git\etc\gitconfig”.&lt;br /&gt;
*You can now:&lt;br /&gt;
**Run the Git console using Git Bash, a shortcut (quotes included): &amp;quot;C:\Program Files (x86)\Git\bin\sh.exe&amp;quot; --login –i&lt;br /&gt;
**Run Git GUI using this entire command (quotes included) in a shortcut: &amp;quot;C:\Program Files (x86)\Git\bin\wish.exe&amp;quot; &amp;quot;C:\Program Files (x86)\Git\libexec\git-core\git-gui&amp;quot;&lt;br /&gt;
**A shortcut for both of these should have been created in the Start Menu automatically.&lt;br /&gt;
*Your global Git configuration file “.gitconfig” is found under “C:\Users\Your.Name\.gitconfig”. Setup your username and email by using the following commands in Git Bash:&lt;br /&gt;
**git config --global user.name “Your name”&lt;br /&gt;
**git config --global user.email your.name@spectraqest.com&lt;br /&gt;
*Download and install KDiff3 (this will be used as the merge tool for changes that can’t be automatically merged. Can maybe make it work with WinMerge, but haven’t tried.) This can be installed to the default location, something like “C:\Program Files (x86)\KDiff3”.&lt;br /&gt;
*Setup Git to use KDiff3 and optionally Notepad++ as your editor instead of Vim by editing the global .gitconfig file. I find it easier to edit manually in Notepad++ than using the console. Here’s an example of a config file:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[core]&lt;br /&gt;
	editor = &amp;quot;&#039;C:/Program Files (x86)/Notepad++/notepad++.exe&#039; -multiInst -nosession -noPlugin&amp;quot;&lt;br /&gt;
	autocrlf = true&lt;br /&gt;
[user]&lt;br /&gt;
	name = John Meegan&lt;br /&gt;
	email = john.meegan@spectraqest.com&lt;br /&gt;
[merge]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[mergetool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;br /&gt;
[diff]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[difftool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*Set up your public key: http://github.com/guides/providing-your-ssh-key . Note that the ~ directory in Git Bash corresponds to “C:\Users\Your.Name\”, so your SSH public key can be found in “C:\users\Your.Name\.ssh\id_rsa.pub” after you’ve generated it.&lt;br /&gt;
**By this point you will have a GitHub account and password, a private and public SSH key, and a password to access your private SSH key. This last password is just in case someone steals your computer, they cannot access your private key without a password. This prevents them from accessing anything you use your key for, such as GitHub, once you have added your public SSH key to GitHub.&lt;br /&gt;
*Make the folder “C:\dev\” on your C Drive for development work.&lt;br /&gt;
*Get a Git repository from GitHub via something like the following (note the URL comes from GitHub and changes depending on the project):&lt;br /&gt;
**cd /c/dev/&lt;br /&gt;
**git clone git@github.com:spectraqest/qestnet.upgrade.git&lt;br /&gt;
*That’s pretty much it. There are plenty of tools you can try out to assist with using Git if you wish. Two of the most popular are:&lt;br /&gt;
**GitHub for Windows: https://windows.github.com&lt;br /&gt;
**Atlassian SourceTree: http://www.sourcetreeapp.com/&lt;br /&gt;
&lt;br /&gt;
== How to &amp;quot;git&amp;quot; started ==&lt;br /&gt;
===Understanding Git===&lt;br /&gt;
Even I’ve only seen the tip of the iceberg, but there are some major conceptual differences with both VSS and SVN that are worth knowing.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There’s a couple of good resources that I like:&lt;br /&gt;
*Git Magic - http://www-cs-students.stanford.edu/~blynn/gitmagic/&lt;br /&gt;
*HgInit - http://hginit.com/top/ (Really well written, but actually for Mercurial, not Git. But the products are so similar that I found this one really useful anyway).&lt;br /&gt;
*Stack Overflow - http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide (this question has a ton of links to other resources if you want them)&lt;br /&gt;
*Git Manual – you should be able to do “git help” from the command line to bring up the git manual.&lt;br /&gt;
The biggest difference between Git and VSS is VSS will create a local copy of a particular branch, but Git will create a copy of all of the branches as well as their entire histories. This means you can switch between them all without the server being involved. You can then change multiple branches and push all of them up to the server. You only ever “see” one branch at a time however, and switch between them using the “checkout” command. So instead of “checkin” and “checkout” going to and from the server, they are local commands. You then use push and fetch to go to and from the server. Google it, see the above links, or talk to one of us for more info.&lt;br /&gt;
===Command line vs. VS plugin===&lt;br /&gt;
Although there is a Git plugin for Visual Studio, I really don’t like it myself. Personally I think I’m getting along with Git much better with just the command line interface, which is faster in the long-run. So, once installed, I like to use “Git Bash” (available in the Start Menu). That opens up a Linux emulation, which I prefer because it has color-coding and shows your current branch etc; however, you can also run it directly from a Windows command line (assuming you installed Git with that option selected).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The main non-intuitive thing at first with Git Bash is that path names would be described like /c/dev/ and not “c:\dev\”.&lt;br /&gt;
===How do I check out a file? (and branching)===&lt;br /&gt;
Two major points of difference with VSS here. One, individual files are not checked out, rather the entire tree is. Two, “checking out” really means switching to another branch. Though Git has a “checkout” command, it is not really like the VSS checkout at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Git is very big on branching, mainly because branching and merging are trivial in Git where they’re not in other SCMs. So you have not just the shared branches for separating stable and development code, but also you create them in your local repository to separate any particular line of work you might be following. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A branch is always on your entire working tree; in other words, any changes at all that you make while in the context of a branch apply to that branch. Making individual branches allows you to work on several different tasks at once without them interfering with each other. For example, a good approach is to have a separate branch for each issue that you’re working on. When you’re done working on the issue, you commit that whole branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let’s say you’re working on a change to Program.cs, issue #5000. You might checkout a new branch just for working on that:&lt;br /&gt;
 git branch 5000_program_fix&lt;br /&gt;
 git checkout 5000_program_fix&lt;br /&gt;
(The above two commands can also be done with git checkout –b 5000_program_fix)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You start work on it, and modify Program.cs as you like. Suddenly, you’re told that issue #5055, a task to update the application readme.txt file, has to be done right away. So you commit your changes to the 5000_program_fix branch, and create a new branch for 5055_readme_fix.&lt;br /&gt;
 notepad.exe Program.cs&lt;br /&gt;
 git commit –a –m ‘Modified message on console main screen.’&lt;br /&gt;
 git checkout –b 5055_readme_fix dev&lt;br /&gt;
(Note: if you don’t supply the starting point of master, the new branch (5055) will be created as a sub-branch of the current branch (5000), and will include all of the changes already committed for 5000.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(Note 2: the “-a” in commit means “--all&amp;quot; and will automatically stage any changed files. See the git doco for more. It is not recommended unless you are sure you want all changed files included.)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You make the changes to the readme.txt and commit them. &lt;br /&gt;
 notepad.exe readme.txt&lt;br /&gt;
 git commit -a -m ‘Modified readme.txt with new instructions.’&lt;br /&gt;
Now you’ll find that you can switch between any of the three branches at will, and all of your work is separated correctly:&lt;br /&gt;
 git checkout dev (contains neither the changes to Program.cs or readme.txt)&lt;br /&gt;
 git checkout 5055_readme_fix (contains only the changes to the readme.txt)&lt;br /&gt;
 git checkout 5000_program_fix (contains only the changes to Program.cs)&lt;br /&gt;
===How do I check in a file? (merging and pushing)===&lt;br /&gt;
Actually we sort of saw this in the previous question; we use git commit to “check in” a file to the current branch. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
That’s not quite the end of the story though. For one, you’ve still got your changes in your own branch, like 5000_program_fix. So the first thing you should do once you’re happy with your fix is to merge it back into the development branch:&lt;br /&gt;
 git checkout dev&lt;br /&gt;
 git merge 5000_program_fix&lt;br /&gt;
If there are changes that can’t be automatically merged it should pop up the configured diff tool to let you do it manually. Otherwise, it just merges them in and automatically commits them (keeping your history of commits).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, though, that this is all still occurring on your local repository; since you got the repository from GitHub, there’s been no communication at all with an external server. So, in order to put them back on the “central” repository:&lt;br /&gt;
 git push origin dev&lt;br /&gt;
That will push all changes you’ve made to the dev branch up to the remote server.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Merging is a pretty common thing (just as common as branching really!). For example if a branch you’re working on needs a fix that you did in some other branch, just merge from that branch into the one you want.&lt;br /&gt;
===How do I see what I’ve changed?===&lt;br /&gt;
The easiest is to run Git Gui (or similar) and it will show you the changed files. If you want to use the console you can use:&lt;br /&gt;
 git status&lt;br /&gt;
 git status –u&lt;br /&gt;
See the manual for usage.&lt;br /&gt;
===Okay, but how do I see what’s changed in those files?===&lt;br /&gt;
In Git Gui, click on them. You can compare files in all sorts of ways, but most commonly may be between different branches, or different commits.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To view the differences in all of your uncommitted changes:&lt;br /&gt;
 git diff&lt;br /&gt;
To view the differences in your uncommitted changes for a specific file:&lt;br /&gt;
 git diff Program.cs&lt;br /&gt;
To view the differences between the master branch and the 5055 branch:&lt;br /&gt;
 git diff master 5055_readme_fix&lt;br /&gt;
To view the differences between the current version and 2 commits ago:&lt;br /&gt;
 git diff HEAD~2&lt;br /&gt;
There’s every other conceivable option you might need to compare too, those are just a very few basic ones.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You may also like to use the Git GUI for this, which provides a reasonably nice way of seeing complete file history of the entire repository – and generally much faster than SourceSafe does. Git GUI &amp;gt; Repository &amp;gt; Visualize … History.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Whoops, I made a mistake when committing! How do I undo it?&lt;br /&gt;
It’s quite alright to modify your own commits, since they still only exist in your own repository. The safest way is to use the reset command:&lt;br /&gt;
 git reset --soft HEAD^&lt;br /&gt;
To explain: HEAD^ indicates that we should reset back to the state of the previous commit; if you wanted to go back two commits, you could use HEAD^^ or HEAD~2. The --soft reset means that the files themselves will not be modified, which is generally what you want; if you do a --hard reset instead, the files themselves will revert to the state they were in before you modified them, so only do that if you really want to throw away those changes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After you’ve done a push it gets trickier because people may have pulled your mistake into their own repositories. In this case it’s generally recommended that you fix the mistake with another commit.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I need some cutting edge code that someone else is developing but which they haven’t pushed to the main repository. Can I get it?&lt;br /&gt;
Yes, you can pull from anyone’s repository, but I’m still working on the details of what’s required to allow our repositories to access each other. In the meantime, you could get the other person to push their branch up to the GitHub server and then you can pull from it. &lt;br /&gt;
===Where’s my Tools &amp;gt; Options menu?===&lt;br /&gt;
You have Git configuration options at the individual repository level, or at a global level (i.e. applies to all repositories). These are stored in configuration files, but are most easily accessible via the command line. For example to see all settings applying to the current repository:&lt;br /&gt;
 git config --list&lt;br /&gt;
Or if you want to see just your global settings:&lt;br /&gt;
 git config --list --global&lt;br /&gt;
Then if you want to change a setting, just issue the name and new value:&lt;br /&gt;
 git config core.autocrlf true&lt;br /&gt;
Again, if you’re changing a global setting, use the --global parameter. Repository-level settings will override global ones I think.&lt;br /&gt;
&lt;br /&gt;
===I’ve made a whole ton of commits, but it makes for a pretty messy history. Can I clean it all up?===&lt;br /&gt;
Yes, the easiest way is to use the rebase command. This usage is most well described here: http://stackoverflow.com/questions/347901/what-are-your-favorite-git-features-or-tricks/2047707#2047707.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Also note Linus Torvalds’ recommendations with rebase, namely that you only rebase your own work: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html. Though product managers may want to clean up the code of their developers if absolutely necessary. &lt;br /&gt;
&lt;br /&gt;
===Common Git Commands===&lt;br /&gt;
*git fetch – This will get the latest code from GitHub for all branches.&lt;br /&gt;
*git fetch &amp;lt;branchname&amp;gt; –  The same but for a specific branch.&lt;br /&gt;
*git checkout &amp;lt;branchname&amp;gt; –  Change to a specific branch on your local machine.&lt;br /&gt;
*git commit –  Create a new commit on your local machine.&lt;br /&gt;
*git commit –a –  Create a new commit on your local machine and automatically include all changed files. This will not add new files.&lt;br /&gt;
*git commit –m “message” –  Create a new commit on your local machine and use the supplied message for it.&lt;br /&gt;
*git commit --amend  – Change the message for the last commit you made.&lt;br /&gt;
*git push origin &amp;lt;branchname&amp;gt; –  Push changes for a specific branch to GitHub.&lt;br /&gt;
*git rebase &amp;lt;target_branchname&amp;gt; –  Rebase your currently checked out branch on top of the target branch.&lt;br /&gt;
*git rebase –i head~10 –  Rebase the last 10 commits interactively. This lets you change commit messages, re-order commits, squash multiple commits together, etc.&lt;br /&gt;
*git merge -–ff-only &amp;lt;branchname&amp;gt; –  A special type of merge just to update to more recent code.&lt;br /&gt;
*git mergetool –  Run the merge tool any time a rebase or merge fails and it needs manually consolidating.&lt;br /&gt;
&lt;br /&gt;
===Merge vs Rebase:===&lt;br /&gt;
&lt;br /&gt;
Merge joins 2 branches together:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
     A---B---C             branch 2&lt;br /&gt;
    /          \&lt;br /&gt;
D---E---F---G---H---       branch 1&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rebase (based on the above) applies the changes for one branch on top of another:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
D---E---F---G---H---A---B---C---      branch 1, branch 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because rebasing is destructive, this should not be done for code that has already been pushed up to GitHub. This is for reorganising commits on your local machine to make them nicer to push up.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is most useful when you do a “git fetch” and discover someone else has pushed work up before you have. You then reapply your changes to the end of the history before pushing to GitHub.&lt;br /&gt;
&lt;br /&gt;
==Git workflow==&lt;br /&gt;
*Checkout the development branch (e.g. alien) that the bug/change request will be added to.&lt;br /&gt;
**Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien or git fetch origin alien and git merge --ff-only origin/alien).&lt;br /&gt;
**Create a new branch using the bug/cr and some form of descriptor as the name (e.g. cr4321-tv-map or bug1234-tv-map-ucs).&lt;br /&gt;
**Checkout the new branch (git checkout cr4321-tv-map).&lt;br /&gt;
*Make regular commits to this branch as you are developing (git commit -a -m &#039;Commit message.&#039;).&lt;br /&gt;
**Once initial development is complete rebase the bug/cr branch to a single commit (git rebase -i origin/cr4321-tv-map).&lt;br /&gt;
**Review the files that you’ve changed, using git status and git diff to ensure there are no unexpected changes.&lt;br /&gt;
**The bug/cr branch can now be pushed to github for testing (git push origin cr4321-tv-map).&lt;br /&gt;
*The tester will fetch and checkout the cr/bug branch to test it and give feedback.&lt;br /&gt;
**At this point make any required changes on the branch. Commit and push to github so that the tester can re-test.&lt;br /&gt;
**Once all development is complete, checkout the development branch again (git checkout alien). Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien).&lt;br /&gt;
**Merge the bug/cr branch into the development branch, resolving any conflicts (git merge cr4321-tv-map).&lt;br /&gt;
**The development branch can now be pushed to github for integration testing (git push origin alien).&lt;br /&gt;
*The tester will fetch and checkout the development branch to test it and give feedback.&lt;br /&gt;
**Minor fixes required from integration testing can be made directly on the development branch. These should be no major problems but if there are the fixes should be made on the bug/cr branch and tested there first. This should be done with priority as the development branch may be &amp;quot;broken&amp;quot; until these changes are merged.&lt;br /&gt;
**Once integration testing is complete or if it is not required the bug/cr branch can be deleted locally and on github.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28971</id>
		<title>QESTNET Internal:Developer Git etiquette</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28971"/>
		<updated>2015-07-15T07:01:23Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial Setup ==&lt;br /&gt;
*Signup for a GitHub account www.github.com. Tell someone your username so they can add you to the appropriate SpectraQEST team&lt;br /&gt;
*Download and install Git from http://git-scm.com/download. Windows has two possible ways to run git: choose msysgit instead of Cygwin. When installing, choose all the options that they recommend for Windows development. Install again to something like “C:\Program Files (x86)\Git”.&lt;br /&gt;
**You will be prompted about line ending conversions at some point. Use the auto-convert option, I think it’s the first option. It should produce the line “autocrlf = true” in the default config: “C:\Program Files (x86)\Git\etc\gitconfig”.&lt;br /&gt;
*You can now:&lt;br /&gt;
**Run the Git console using Git Bash, a shortcut (quotes included): &amp;quot;C:\Program Files (x86)\Git\bin\sh.exe&amp;quot; --login –i&lt;br /&gt;
**Run Git GUI using this entire command (quotes included) in a shortcut: &amp;quot;C:\Program Files (x86)\Git\bin\wish.exe&amp;quot; &amp;quot;C:\Program Files (x86)\Git\libexec\git-core\git-gui&amp;quot;&lt;br /&gt;
**A shortcut for both of these should have been created in the Start Menu automatically.&lt;br /&gt;
*Your global Git configuration file “.gitconfig” is found under “C:\Users\Your.Name\.gitconfig”. Setup your username and email by using the following commands in Git Bash:&lt;br /&gt;
**git config --global user.name “Your name”&lt;br /&gt;
**git config --global user.email your.name@spectraqest.com&lt;br /&gt;
*Download and install KDiff3 (this will be used as the merge tool for changes that can’t be automatically merged. Can maybe make it work with WinMerge, but haven’t tried.) This can be installed to the default location, something like “C:\Program Files (x86)\KDiff3”.&lt;br /&gt;
*Setup Git to use KDiff3 and optionally Notepad++ as your editor instead of Vim by editing the global .gitconfig file. I find it easier to edit manually in Notepad++ than using the console. Here’s an example of a config file:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[core]&lt;br /&gt;
	editor = &amp;quot;&#039;C:/Program Files (x86)/Notepad++/notepad++.exe&#039; -multiInst -nosession -noPlugin&amp;quot;&lt;br /&gt;
	autocrlf = true&lt;br /&gt;
[user]&lt;br /&gt;
	name = John Meegan&lt;br /&gt;
	email = john.meegan@spectraqest.com&lt;br /&gt;
[merge]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[mergetool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;br /&gt;
[diff]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[difftool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*Set up your public key: http://github.com/guides/providing-your-ssh-key . Note that the ~ directory in Git Bash corresponds to “C:\Users\Your.Name\”, so your SSH public key can be found in “C:\users\Your.Name\.ssh\id_rsa.pub” after you’ve generated it.&lt;br /&gt;
**By this point you will have a GitHub account and password, a private and public SSH key, and a password to access your private SSH key. This last password is just in case someone steals your computer, they cannot access your private key without a password. This prevents them from accessing anything you use your key for, such as GitHub, once you have added your public SSH key to GitHub.&lt;br /&gt;
*Make the folder “C:\dev\” on your C Drive for development work.&lt;br /&gt;
*Get a Git repository from GitHub via something like the following (note the URL comes from GitHub and changes depending on the project):&lt;br /&gt;
**cd /c/dev/&lt;br /&gt;
**git clone git@github.com:spectraqest/qestnet.upgrade.git&lt;br /&gt;
*That’s pretty much it. There are plenty of tools you can try out to assist with using Git if you wish. Two of the most popular are:&lt;br /&gt;
**GitHub for Windows: https://windows.github.com&lt;br /&gt;
**Atlassian SourceTree: http://www.sourcetreeapp.com/&lt;br /&gt;
&lt;br /&gt;
== How to &amp;quot;git&amp;quot; started ==&lt;br /&gt;
===Understanding Git===&lt;br /&gt;
Even I’ve only seen the tip of the iceberg, but there are some major conceptual differences with both VSS and SVN that are worth knowing.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There’s a couple of good resources that I like:&lt;br /&gt;
*Git Magic - http://www-cs-students.stanford.edu/~blynn/gitmagic/&lt;br /&gt;
*HgInit - http://hginit.com/top/ (Really well written, but actually for Mercurial, not Git. But the products are so similar that I found this one really useful anyway).&lt;br /&gt;
*Stack Overflow - http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide (this question has a ton of links to other resources if you want them)&lt;br /&gt;
*Git Manual – you should be able to do “git help” from the command line to bring up the git manual.&lt;br /&gt;
The biggest difference between Git and VSS is VSS will create a local copy of a particular branch, but Git will create a copy of all of the branches as well as their entire histories. This means you can switch between them all without the server being involved. You can then change multiple branches and push all of them up to the server. You only ever “see” one branch at a time however, and switch between them using the “checkout” command. So instead of “checkin” and “checkout” going to and from the server, they are local commands. You then use push and fetch to go to and from the server. Google it, see the above links, or talk to one of us for more info.&lt;br /&gt;
===Command line vs. VS plugin===&lt;br /&gt;
Although there is a Git plugin for Visual Studio, I really don’t like it myself. Personally I think I’m getting along with Git much better with just the command line interface, which is faster in the long-run. So, once installed, I like to use “Git Bash” (available in the Start Menu). That opens up a Linux emulation, which I prefer because it has color-coding and shows your current branch etc; however, you can also run it directly from a Windows command line (assuming you installed Git with that option selected).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The main non-intuitive thing at first with Git Bash is that path names would be described like /c/dev/ and not “c:\dev\”.&lt;br /&gt;
===How do I check out a file? (and branching)===&lt;br /&gt;
Two major points of difference with VSS here. One, individual files are not checked out, rather the entire tree is. Two, “checking out” really means switching to another branch. Though Git has a “checkout” command, it is not really like the VSS checkout at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Git is very big on branching, mainly because branching and merging are trivial in Git where they’re not in other SCMs. So you have not just the shared branches for separating stable and development code, but also you create them in your local repository to separate any particular line of work you might be following. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A branch is always on your entire working tree; in other words, any changes at all that you make while in the context of a branch apply to that branch. Making individual branches allows you to work on several different tasks at once without them interfering with each other. For example, a good approach is to have a separate branch for each issue that you’re working on. When you’re done working on the issue, you commit that whole branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let’s say you’re working on a change to Program.cs, issue #5000. You might checkout a new branch just for working on that:&lt;br /&gt;
 git branch 5000_program_fix&lt;br /&gt;
 git checkout 5000_program_fix&lt;br /&gt;
(The above two commands can also be done with git checkout –b 5000_program_fix)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You start work on it, and modify Program.cs as you like. Suddenly, you’re told that issue #5055, a task to update the application readme.txt file, has to be done right away. So you commit your changes to the 5000_program_fix branch, and create a new branch for 5055_readme_fix.&lt;br /&gt;
 notepad.exe Program.cs&lt;br /&gt;
 git commit –a –m ‘Modified message on console main screen.’&lt;br /&gt;
 git checkout –b 5055_readme_fix dev&lt;br /&gt;
(Note: if you don’t supply the starting point of master, the new branch (5055) will be created as a sub-branch of the current branch (5000), and will include all of the changes already committed for 5000.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(Note 2: the “-a” in commit means “--all&amp;quot; and will automatically stage any changed files. See the git doco for more. It is not recommended unless you are sure you want all changed files included.)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You make the changes to the readme.txt and commit them. &lt;br /&gt;
 notepad.exe readme.txt&lt;br /&gt;
 git commit -a -m ‘Modified readme.txt with new instructions.’&lt;br /&gt;
Now you’ll find that you can switch between any of the three branches at will, and all of your work is separated correctly:&lt;br /&gt;
 git checkout dev (contains neither the changes to Program.cs or readme.txt)&lt;br /&gt;
 git checkout 5055_readme_fix (contains only the changes to the readme.txt)&lt;br /&gt;
 git checkout 5000_program_fix (contains only the changes to Program.cs)&lt;br /&gt;
===How do I check in a file? (merging and pushing)===&lt;br /&gt;
Actually we sort of saw this in the previous question; we use git commit to “check in” a file to the current branch. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
That’s not quite the end of the story though. For one, you’ve still got your changes in your own branch, like 5000_program_fix. So the first thing you should do once you’re happy with your fix is to merge it back into the development branch:&lt;br /&gt;
 git checkout dev&lt;br /&gt;
 git merge 5000_program_fix&lt;br /&gt;
If there are changes that can’t be automatically merged it should pop up the configured diff tool to let you do it manually. Otherwise, it just merges them in and automatically commits them (keeping your history of commits).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, though, that this is all still occurring on your local repository; since you got the repository from GitHub, there’s been no communication at all with an external server. So, in order to put them back on the “central” repository:&lt;br /&gt;
 git push origin dev&lt;br /&gt;
That will push all changes you’ve made to the dev branch up to the remote server.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Merging is a pretty common thing (just as common as branching really!). For example if a branch you’re working on needs a fix that you did in some other branch, just merge from that branch into the one you want.&lt;br /&gt;
===How do I see what I’ve changed?===&lt;br /&gt;
The easiest is to run Git Gui (or similar) and it will show you the changed files. If you want to use the console you can use:&lt;br /&gt;
 git status&lt;br /&gt;
 git status –u&lt;br /&gt;
See the manual for usage.&lt;br /&gt;
===Okay, but how do I see what’s changed in those files?===&lt;br /&gt;
In Git Gui, click on them. You can compare files in all sorts of ways, but most commonly may be between different branches, or different commits.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To view the differences in all of your uncommitted changes:&lt;br /&gt;
 git diff&lt;br /&gt;
To view the differences in your uncommitted changes for a specific file:&lt;br /&gt;
 git diff Program.cs&lt;br /&gt;
To view the differences between the master branch and the 5055 branch:&lt;br /&gt;
 git diff master 5055_readme_fix&lt;br /&gt;
To view the differences between the current version and 2 commits ago:&lt;br /&gt;
 git diff HEAD~2&lt;br /&gt;
There’s every other conceivable option you might need to compare too, those are just a very few basic ones.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You may also like to use the Git GUI for this, which provides a reasonably nice way of seeing complete file history of the entire repository – and generally much faster than SourceSafe does. Git GUI &amp;gt; Repository &amp;gt; Visualize … History.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Whoops, I made a mistake when committing! How do I undo it?&lt;br /&gt;
It’s quite alright to modify your own commits, since they still only exist in your own repository. The safest way is to use the reset command:&lt;br /&gt;
 git reset --soft HEAD^&lt;br /&gt;
To explain: HEAD^ indicates that we should reset back to the state of the previous commit; if you wanted to go back two commits, you could use HEAD^^ or HEAD~2. The --soft reset means that the files themselves will not be modified, which is generally what you want; if you do a --hard reset instead, the files themselves will revert to the state they were in before you modified them, so only do that if you really want to throw away those changes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After you’ve done a push it gets trickier because people may have pulled your mistake into their own repositories. In this case it’s generally recommended that you fix the mistake with another commit.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I need some cutting edge code that someone else is developing but which they haven’t pushed to the main repository. Can I get it?&lt;br /&gt;
Yes, you can pull from anyone’s repository, but I’m still working on the details of what’s required to allow our repositories to access each other. In the meantime, you could get the other person to push their branch up to the GitHub server and then you can pull from it. &lt;br /&gt;
===Where’s my Tools &amp;gt; Options menu?===&lt;br /&gt;
You have Git configuration options at the individual repository level, or at a global level (i.e. applies to all repositories). These are stored in configuration files, but are most easily accessible via the command line. For example to see all settings applying to the current repository:&lt;br /&gt;
 git config --list&lt;br /&gt;
Or if you want to see just your global settings:&lt;br /&gt;
 git config --list --global&lt;br /&gt;
Then if you want to change a setting, just issue the name and new value:&lt;br /&gt;
 git config core.autocrlf true&lt;br /&gt;
Again, if you’re changing a global setting, use the --global parameter. Repository-level settings will override global ones I think.&lt;br /&gt;
&lt;br /&gt;
===I’ve made a whole ton of commits, but it makes for a pretty messy history. Can I clean it all up?===&lt;br /&gt;
Yes, the easiest way is to use the rebase command. This usage is most well described here: http://stackoverflow.com/questions/347901/what-are-your-favorite-git-features-or-tricks/2047707#2047707.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Also note Linus Torvalds’ recommendations with rebase, namely that you only rebase your own work: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html. Though product managers may want to clean up the code of their developers if absolutely necessary. &lt;br /&gt;
&lt;br /&gt;
===Common Git Commands===&lt;br /&gt;
*git fetch – This will get the latest code from GitHub for all branches.&lt;br /&gt;
*git fetch &amp;lt;branchname&amp;gt; –  The same but for a specific branch.&lt;br /&gt;
*git checkout &amp;lt;branchname&amp;gt; –  Change to a specific branch on your local machine.&lt;br /&gt;
*git commit –  Create a new commit on your local machine.&lt;br /&gt;
*git commit –a –  Create a new commit on your local machine and automatically include all changed files. This will not add new files.&lt;br /&gt;
*git commit –m “message” –  Create a new commit on your local machine and use the supplied message for it.&lt;br /&gt;
*git commit --amend  – Change the message for the last commit you made.&lt;br /&gt;
*git push origin &amp;lt;branchname&amp;gt; –  Push changes for a specific branch to GitHub.&lt;br /&gt;
*git rebase &amp;lt;target_branchname&amp;gt; –  Rebase your currently checked out branch on top of the target branch.&lt;br /&gt;
*git rebase –i head~10 –  Rebase the last 10 commits interactively. This lets you change commit messages, re-order commits, squash multiple commits together, etc.&lt;br /&gt;
*git merge -–ff-only &amp;lt;branchname&amp;gt; –  A special type of merge just to update to more recent code.&lt;br /&gt;
*git mergetool –  Run the merge tool any time a rebase or merge fails and it needs manually consolidating.&lt;br /&gt;
&lt;br /&gt;
===Merge vs Rebase:===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Merge joins 2 branches together:&lt;br /&gt;
&lt;br /&gt;
     A---B---C             branch 2&lt;br /&gt;
    /          \&lt;br /&gt;
D---E---F---G---H---       branch 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rebase (based on the above) applies the changes for one branch on top of another:&lt;br /&gt;
&lt;br /&gt;
D---E---F---G---H---A---B---C---      branch 1, branch 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because rebasing is destructive, this should not be done for code that has already been pushed up to GitHub. This is for reorganising commits on your local machine to make them nicer to push up.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is most useful when you do a “git fetch” and discover someone else has pushed work up before you have. You then reapply your changes to the end of the history before pushing to GitHub.&lt;br /&gt;
&lt;br /&gt;
==Git workflow==&lt;br /&gt;
*Checkout the development branch (e.g. alien) that the bug/change request will be added to.&lt;br /&gt;
**Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien or git fetch origin alien and git merge --ff-only origin/alien).&lt;br /&gt;
**Create a new branch using the bug/cr and some form of descriptor as the name (e.g. cr4321-tv-map or bug1234-tv-map-ucs).&lt;br /&gt;
**Checkout the new branch (git checkout cr4321-tv-map).&lt;br /&gt;
*Make regular commits to this branch as you are developing (git commit -a -m &#039;Commit message.&#039;).&lt;br /&gt;
**Once initial development is complete rebase the bug/cr branch to a single commit (git rebase -i origin/cr4321-tv-map).&lt;br /&gt;
**Review the files that you’ve changed, using git status and git diff to ensure there are no unexpected changes.&lt;br /&gt;
**The bug/cr branch can now be pushed to github for testing (git push origin cr4321-tv-map).&lt;br /&gt;
*The tester will fetch and checkout the cr/bug branch to test it and give feedback.&lt;br /&gt;
**At this point make any required changes on the branch. Commit and push to github so that the tester can re-test.&lt;br /&gt;
**Once all development is complete, checkout the development branch again (git checkout alien). Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien).&lt;br /&gt;
**Merge the bug/cr branch into the development branch, resolving any conflicts (git merge cr4321-tv-map).&lt;br /&gt;
**The development branch can now be pushed to github for integration testing (git push origin alien).&lt;br /&gt;
*The tester will fetch and checkout the development branch to test it and give feedback.&lt;br /&gt;
**Minor fixes required from integration testing can be made directly on the development branch. These should be no major problems but if there are the fixes should be made on the bug/cr branch and tested there first. This should be done with priority as the development branch may be &amp;quot;broken&amp;quot; until these changes are merged.&lt;br /&gt;
**Once integration testing is complete or if it is not required the bug/cr branch can be deleted locally and on github.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
	<entry>
		<id>http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28970</id>
		<title>QESTNET Internal:Developer Git etiquette</title>
		<link rel="alternate" type="text/html" href="http://online.spectraqest.com/index.php?title=QESTNET_Internal:Developer_Git_etiquette&amp;diff=28970"/>
		<updated>2015-07-15T06:59:35Z</updated>

		<summary type="html">&lt;p&gt;David.lucas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial Setup ==&lt;br /&gt;
*Signup for a GitHub account www.github.com. Tell someone your username so they can add you to the appropriate SpectraQEST team&lt;br /&gt;
*Download and install Git from http://git-scm.com/download. Windows has two possible ways to run git: choose msysgit instead of Cygwin. When installing, choose all the options that they recommend for Windows development. Install again to something like “C:\Program Files (x86)\Git”.&lt;br /&gt;
**You will be prompted about line ending conversions at some point. Use the auto-convert option, I think it’s the first option. It should produce the line “autocrlf = true” in the default config: “C:\Program Files (x86)\Git\etc\gitconfig”.&lt;br /&gt;
*You can now:&lt;br /&gt;
**Run the Git console using Git Bash, a shortcut (quotes included): &amp;quot;C:\Program Files (x86)\Git\bin\sh.exe&amp;quot; --login –i&lt;br /&gt;
**Run Git GUI using this entire command (quotes included) in a shortcut: &amp;quot;C:\Program Files (x86)\Git\bin\wish.exe&amp;quot; &amp;quot;C:\Program Files (x86)\Git\libexec\git-core\git-gui&amp;quot;&lt;br /&gt;
**A shortcut for both of these should have been created in the Start Menu automatically.&lt;br /&gt;
*Your global Git configuration file “.gitconfig” is found under “C:\Users\Your.Name\.gitconfig”. Setup your username and email by using the following commands in Git Bash:&lt;br /&gt;
**git config --global user.name “Your name”&lt;br /&gt;
**git config --global user.email your.name@spectraqest.com&lt;br /&gt;
*Download and install KDiff3 (this will be used as the merge tool for changes that can’t be automatically merged. Can maybe make it work with WinMerge, but haven’t tried.) This can be installed to the default location, something like “C:\Program Files (x86)\KDiff3”.&lt;br /&gt;
*Setup Git to use KDiff3 and optionally Notepad++ as your editor instead of Vim by editing the global .gitconfig file. I find it easier to edit manually in Notepad++ than using the console. Here’s an example of a config file:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[core]&lt;br /&gt;
	editor = &amp;quot;&#039;C:/Program Files (x86)/Notepad++/notepad++.exe&#039; -multiInst -nosession -noPlugin&amp;quot;&lt;br /&gt;
	autocrlf = true&lt;br /&gt;
[user]&lt;br /&gt;
	name = John Meegan&lt;br /&gt;
	email = john.meegan@spectraqest.com&lt;br /&gt;
[merge]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[mergetool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&lt;br /&gt;
[diff]&lt;br /&gt;
    tool = kdiff3&lt;br /&gt;
[difftool &amp;quot;kdiff3&amp;quot;]&lt;br /&gt;
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
*Set up your public key: http://github.com/guides/providing-your-ssh-key . Note that the ~ directory in Git Bash corresponds to “C:\Users\Your.Name\”, so your SSH public key can be found in “C:\users\Your.Name\.ssh\id_rsa.pub” after you’ve generated it.&lt;br /&gt;
**By this point you will have a GitHub account and password, a private and public SSH key, and a password to access your private SSH key. This last password is just in case someone steals your computer, they cannot access your private key without a password. This prevents them from accessing anything you use your key for, such as GitHub, once you have added your public SSH key to GitHub.&lt;br /&gt;
*Make the folder “C:\dev\” on your C Drive for development work.&lt;br /&gt;
*Get a Git repository from GitHub via something like the following (note the URL comes from GitHub and changes depending on the project):&lt;br /&gt;
**cd /c/dev/&lt;br /&gt;
**git clone git@github.com:spectraqest/qestnet.upgrade.git&lt;br /&gt;
*That’s pretty much it. There are plenty of tools you can try out to assist with using Git if you wish. Two of the most popular are:&lt;br /&gt;
**GitHub for Windows: https://windows.github.com&lt;br /&gt;
**Atlassian SourceTree: http://www.sourcetreeapp.com/&lt;br /&gt;
&lt;br /&gt;
== How to &amp;quot;git&amp;quot; started ==&lt;br /&gt;
===Understanding Git===&lt;br /&gt;
Even I’ve only seen the tip of the iceberg, but there are some major conceptual differences with both VSS and SVN that are worth knowing.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There’s a couple of good resources that I like:&lt;br /&gt;
*Git Magic - http://www-cs-students.stanford.edu/~blynn/gitmagic/&lt;br /&gt;
*HgInit - http://hginit.com/top/ (Really well written, but actually for Mercurial, not Git. But the products are so similar that I found this one really useful anyway).&lt;br /&gt;
*Stack Overflow - http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide (this question has a ton of links to other resources if you want them)&lt;br /&gt;
*Git Manual – you should be able to do “git help” from the command line to bring up the git manual.&lt;br /&gt;
The biggest difference between Git and VSS is VSS will create a local copy of a particular branch, but Git will create a copy of all of the branches as well as their entire histories. This means you can switch between them all without the server being involved. You can then change multiple branches and push all of them up to the server. You only ever “see” one branch at a time however, and switch between them using the “checkout” command. So instead of “checkin” and “checkout” going to and from the server, they are local commands. You then use push and fetch to go to and from the server. Google it, see the above links, or talk to one of us for more info.&lt;br /&gt;
===Command line vs. VS plugin===&lt;br /&gt;
Although there is a Git plugin for Visual Studio, I really don’t like it myself. Personally I think I’m getting along with Git much better with just the command line interface, which is faster in the long-run. So, once installed, I like to use “Git Bash” (available in the Start Menu). That opens up a Linux emulation, which I prefer because it has color-coding and shows your current branch etc; however, you can also run it directly from a Windows command line (assuming you installed Git with that option selected).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The main non-intuitive thing at first with Git Bash is that path names would be described like /c/dev/ and not “c:\dev\”.&lt;br /&gt;
===Hive in Git – Structure===&lt;br /&gt;
In theory, with only one version of the Hive ever live at a time, we should only need two branches: production (stable) and development. But for now, with the 0.7 and development branches so radically different, and 0.7 development still going on a bit, I’ve created independent branches for them both. We should be able to merge fairly easily between the branches anyway. If we need to later we might want to archive the 0.7 stuff away once we’re done with it. So, in short:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
stable&amp;lt;br&amp;gt;&lt;br /&gt;
|-- dev&amp;lt;br&amp;gt;&lt;br /&gt;
|-- dev0.7&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Don’t ever work directly on the stable branch, for the obvious reason that it means you’re whacking new stuff directly into a branch that is supposed to be stable. Instead make your own branches under the dev branches as required and then, when you’re happy with it, merge it into the dev branches. More on the workflow later.&lt;br /&gt;
===App.config / web.config files===&lt;br /&gt;
As suggested by Lief a while ago, there’s also a better way to separate our app.config files, which I thought would go well with new source control. The technique is shown in the test-repository-net application on GitHub, though it’ll take a little bit of work to do it in Hive and I won’t worry about doing it in the 0.7 branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Basically, it allows us to store prod / test versions of configuration in source control, but allows our local development environment to use config that’s not in source control.&lt;br /&gt;
===How do I check out a file? (and branching)===&lt;br /&gt;
Two major points of difference with VSS here. One, individual files are not checked out, rather the entire tree is. Two, “checking out” really means switching to another branch. Though Git has a “checkout” command, it is not really like the VSS checkout at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Git is very big on branching, mainly because branching and merging are trivial in Git where they’re not in other SCMs. So you have not just the shared branches for separating stable and development code, but also you create them in your local repository to separate any particular line of work you might be following. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
A branch is always on your entire working tree; in other words, any changes at all that you make while in the context of a branch apply to that branch. Making individual branches allows you to work on several different tasks at once without them interfering with each other. For example, a good approach is to have a separate branch for each issue that you’re working on. When you’re done working on the issue, you commit that whole branch.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Let’s say you’re working on a change to Program.cs, issue #5000. You might checkout a new branch just for working on that:&lt;br /&gt;
 git branch 5000_program_fix&lt;br /&gt;
 git checkout 5000_program_fix&lt;br /&gt;
(The above two commands can also be done with git checkout –b 5000_program_fix)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You start work on it, and modify Program.cs as you like. Suddenly, you’re told that issue #5055, a task to update the application readme.txt file, has to be done right away. So you commit your changes to the 5000_program_fix branch, and create a new branch for 5055_readme_fix.&lt;br /&gt;
 notepad.exe Program.cs&lt;br /&gt;
 git commit –a –m ‘Modified message on console main screen.’&lt;br /&gt;
 git checkout –b 5055_readme_fix dev&lt;br /&gt;
(Note: if you don’t supply the starting point of master, the new branch (5055) will be created as a sub-branch of the current branch (5000), and will include all of the changes already committed for 5000.)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(Note 2: the “-a” in commit means “--all&amp;quot; and will automatically stage any changed files. See the git doco for more. It is not recommended unless you are sure you want all changed files included.)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You make the changes to the readme.txt and commit them. &lt;br /&gt;
 notepad.exe readme.txt&lt;br /&gt;
 git commit -a -m ‘Modified readme.txt with new instructions.’&lt;br /&gt;
Now you’ll find that you can switch between any of the three branches at will, and all of your work is separated correctly:&lt;br /&gt;
 git checkout dev (contains neither the changes to Program.cs or readme.txt)&lt;br /&gt;
 git checkout 5055_readme_fix (contains only the changes to the readme.txt)&lt;br /&gt;
 git checkout 5000_program_fix (contains only the changes to Program.cs)&lt;br /&gt;
===How do I check in a file? (merging and pushing)===&lt;br /&gt;
Actually we sort of saw this in the previous question; we use git commit to “check in” a file to the current branch. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
That’s not quite the end of the story though. For one, you’ve still got your changes in your own branch, like 5000_program_fix. So the first thing you should do once you’re happy with your fix is to merge it back into the development branch:&lt;br /&gt;
 git checkout dev&lt;br /&gt;
 git merge 5000_program_fix&lt;br /&gt;
If there are changes that can’t be automatically merged it should pop up the configured diff tool to let you do it manually. Otherwise, it just merges them in and automatically commits them (keeping your history of commits).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Remember, though, that this is all still occurring on your local repository; since you got the repository from GitHub, there’s been no communication at all with an external server. So, in order to put them back on the “central” repository:&lt;br /&gt;
 git push origin dev&lt;br /&gt;
That will push all changes you’ve made to the dev branch up to the remote server.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Merging is a pretty common thing (just as common as branching really!). For example if a branch you’re working on needs a fix that you did in some other branch, just merge from that branch into the one you want.&lt;br /&gt;
===How do I see what I’ve changed?===&lt;br /&gt;
The easiest is to run Git Gui (or similar) and it will show you the changed files. If you want to use the console you can use:&lt;br /&gt;
 git status&lt;br /&gt;
 git status –u&lt;br /&gt;
See the manual for usage.&lt;br /&gt;
===Okay, but how do I see what’s changed in those files?===&lt;br /&gt;
In Git Gui, click on them. You can compare files in all sorts of ways, but most commonly may be between different branches, or different commits.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To view the differences in all of your uncommitted changes:&lt;br /&gt;
 git diff&lt;br /&gt;
To view the differences in your uncommitted changes for a specific file:&lt;br /&gt;
 git diff Program.cs&lt;br /&gt;
To view the differences between the master branch and the 5055 branch:&lt;br /&gt;
 git diff master 5055_readme_fix&lt;br /&gt;
To view the differences between the current version and 2 commits ago:&lt;br /&gt;
 git diff HEAD~2&lt;br /&gt;
There’s every other conceivable option you might need to compare too, those are just a very few basic ones.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You may also like to use the Git GUI for this, which provides a reasonably nice way of seeing complete file history of the entire repository – and generally much faster than SourceSafe does. Git GUI &amp;gt; Repository &amp;gt; Visualize … History.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Whoops, I made a mistake when committing! How do I undo it?&lt;br /&gt;
It’s quite alright to modify your own commits, since they still only exist in your own repository. The safest way is to use the reset command:&lt;br /&gt;
 git reset --soft HEAD^&lt;br /&gt;
To explain: HEAD^ indicates that we should reset back to the state of the previous commit; if you wanted to go back two commits, you could use HEAD^^ or HEAD~2. The --soft reset means that the files themselves will not be modified, which is generally what you want; if you do a --hard reset instead, the files themselves will revert to the state they were in before you modified them, so only do that if you really want to throw away those changes.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After you’ve done a push it gets trickier because people may have pulled your mistake into their own repositories. In this case it’s generally recommended that you fix the mistake with another commit.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
I need some cutting edge code that someone else is developing but which they haven’t pushed to the main repository. Can I get it?&lt;br /&gt;
Yes, you can pull from anyone’s repository, but I’m still working on the details of what’s required to allow our repositories to access each other. In the meantime, you could get the other person to push their branch up to the GitHub server and then you can pull from it. &lt;br /&gt;
===Where’s my Tools &amp;gt; Options menu?===&lt;br /&gt;
You have Git configuration options at the individual repository level, or at a global level (i.e. applies to all repositories). These are stored in configuration files, but are most easily accessible via the command line. For example to see all settings applying to the current repository:&lt;br /&gt;
 git config --list&lt;br /&gt;
Or if you want to see just your global settings:&lt;br /&gt;
 git config --list --global&lt;br /&gt;
Then if you want to change a setting, just issue the name and new value:&lt;br /&gt;
 git config core.autocrlf true&lt;br /&gt;
Again, if you’re changing a global setting, use the --global parameter. Repository-level settings will override global ones I think.&lt;br /&gt;
&lt;br /&gt;
===I’ve made a whole ton of commits, but it makes for a pretty messy history. Can I clean it all up?===&lt;br /&gt;
Yes, the easiest way is to use the rebase command. This usage is most well described here: http://stackoverflow.com/questions/347901/what-are-your-favorite-git-features-or-tricks/2047707#2047707.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Also note Linus Torvalds’ recommendations with rebase, namely that you only rebase your own work: http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html. Though product managers may want to clean up the code of their developers if absolutely necessary. &lt;br /&gt;
&lt;br /&gt;
===Common Git Commands===&lt;br /&gt;
*git fetch – This will get the latest code from GitHub for all branches.&lt;br /&gt;
*git fetch &amp;lt;branchname&amp;gt; –  The same but for a specific branch.&lt;br /&gt;
*git checkout &amp;lt;branchname&amp;gt; –  Change to a specific branch on your local machine.&lt;br /&gt;
*git commit –  Create a new commit on your local machine.&lt;br /&gt;
*git commit –a –  Create a new commit on your local machine and automatically include all changed files. This will not add new files.&lt;br /&gt;
*git commit –m “message” –  Create a new commit on your local machine and use the supplied message for it.&lt;br /&gt;
*git commit --amend  – Change the message for the last commit you made.&lt;br /&gt;
*git push origin &amp;lt;branchname&amp;gt; –  Push changes for a specific branch to GitHub.&lt;br /&gt;
*git rebase &amp;lt;target_branchname&amp;gt; –  Rebase your currently checked out branch on top of the target branch.&lt;br /&gt;
*git rebase –i head~10 –  Rebase the last 10 commits interactively. This lets you change commit messages, re-order commits, squash multiple commits together, etc.&lt;br /&gt;
*git merge -–ff-only &amp;lt;branchname&amp;gt; –  A special type of merge just to update to more recent code.&lt;br /&gt;
*git mergetool –  Run the merge tool any time a rebase or merge fails and it needs manually consolidating.&lt;br /&gt;
&lt;br /&gt;
===Merge vs Rebase:===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Merge joins 2 branches together:&lt;br /&gt;
&lt;br /&gt;
     A---B---C             branch 2&lt;br /&gt;
    /          \&lt;br /&gt;
D---E---F---G---H---       branch 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rebase (based on the above) applies the changes for one branch on top of another:&lt;br /&gt;
&lt;br /&gt;
D---E---F---G---H---A---B---C---      branch 1, branch 2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because rebasing is destructive, this should not be done for code that has already been pushed up to GitHub. This is for reorganising commits on your local machine to make them nicer to push up.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is most useful when you do a “git fetch” and discover someone else has pushed work up before you have. You then reapply your changes to the end of the history before pushing to GitHub.&lt;br /&gt;
&lt;br /&gt;
==Git workflow==&lt;br /&gt;
*Checkout the development branch (e.g. alien) that the bug/change request will be added to.&lt;br /&gt;
**Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien or git fetch origin alien and git merge --ff-only origin/alien).&lt;br /&gt;
**Create a new branch using the bug/cr and some form of descriptor as the name (e.g. cr4321-tv-map or bug1234-tv-map-ucs).&lt;br /&gt;
**Checkout the new branch (git checkout cr4321-tv-map).&lt;br /&gt;
*Make regular commits to this branch as you are developing (git commit -a -m &#039;Commit message.&#039;).&lt;br /&gt;
**Once initial development is complete rebase the bug/cr branch to a single commit (git rebase -i origin/cr4321-tv-map).&lt;br /&gt;
**Review the files that you’ve changed, using git status and git diff to ensure there are no unexpected changes.&lt;br /&gt;
**The bug/cr branch can now be pushed to github for testing (git push origin cr4321-tv-map).&lt;br /&gt;
*The tester will fetch and checkout the cr/bug branch to test it and give feedback.&lt;br /&gt;
**At this point make any required changes on the branch. Commit and push to github so that the tester can re-test.&lt;br /&gt;
**Once all development is complete, checkout the development branch again (git checkout alien). Pull or fetch from github the latest of the branch and ensure that your local copy is at the head (git pull origin alien).&lt;br /&gt;
**Merge the bug/cr branch into the development branch, resolving any conflicts (git merge cr4321-tv-map).&lt;br /&gt;
**The development branch can now be pushed to github for integration testing (git push origin alien).&lt;br /&gt;
*The tester will fetch and checkout the development branch to test it and give feedback.&lt;br /&gt;
**Minor fixes required from integration testing can be made directly on the development branch. These should be no major problems but if there are the fixes should be made on the bug/cr branch and tested there first. This should be done with priority as the development branch may be &amp;quot;broken&amp;quot; until these changes are merged.&lt;br /&gt;
**Once integration testing is complete or if it is not required the bug/cr branch can be deleted locally and on github.&lt;/div&gt;</summary>
		<author><name>David.lucas</name></author>
	</entry>
</feed>