<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CVS Tips &amp; Tricks Archives - scmGalaxy</title>
	<atom:link href="https://www.scmgalaxy.com/tutorials/tag/cvs-tips-tricks/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.scmgalaxy.com/tutorials/tag/cvs-tips-tricks/</link>
	<description>A Platform for Software Engineers</description>
	<lastBuildDate>Sat, 27 Feb 2021 09:55:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>How CVS will help to Realtime Developers ?</title>
		<link>https://www.scmgalaxy.com/tutorials/how-cvs-will-help-to-realtime-developers/</link>
					<comments>https://www.scmgalaxy.com/tutorials/how-cvs-will-help-to-realtime-developers/#comments</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Thu, 29 Jan 2009 13:21:36 +0000</pubDate>
				<category><![CDATA[CVS]]></category>
		<category><![CDATA[CVS Advantages for Developers]]></category>
		<category><![CDATA[CVS Benefits for Developers]]></category>
		<category><![CDATA[CVS Guide]]></category>
		<category><![CDATA[CVS Tips & Tricks]]></category>
		<category><![CDATA[CVS Tutorial for Developers]]></category>
		<category><![CDATA[Developers]]></category>
		<category><![CDATA[Developers Tools]]></category>
		<category><![CDATA[Help]]></category>
		<category><![CDATA[How]]></category>
		<category><![CDATA[Realtime]]></category>
		<category><![CDATA[Realtime Developers]]></category>
		<category><![CDATA[Tips]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2009/01/29/how-cvs-will-help-to-realtime-developers/</guid>

					<description><![CDATA[<p>CVS Tips &#38; Tricks The CVS commands here assume that you are using the command line version of CVS. Tips [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/how-cvs-will-help-to-realtime-developers/">How CVS will help to Realtime Developers ?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-3985 aligncenter" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2009/01/how-cvs-help-to-realtime-de.png" alt="how-cvs-will-help-to-realtime-developers" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2009/01/how-cvs-help-to-realtime-de.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2009/01/how-cvs-help-to-realtime-de-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></h1>
<h1><span style="color: #0000ff;"><b>CVS</b> Tips &amp; Tricks</span></h1>
<p>The <b>CVS</b> commands here assume that you are using the command line version of <b>CVS</b>. Tips and tricks for a specific <b>CVS</b> GUI are specific to each GUI and do not really belong here.</p>
<h2>Viewing the commit log of a file.</h2>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs log <i>filename</i></b></td>
</tr>
</tbody>
</table>
</div>
<h2>Show current status of a file.</h2>
<p>The status command will show you the latest version, the version in your working directory and if your local copy has been modified.</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs status <i>filename</i></b></td>
</tr>
</tbody>
</table>
</div>
<h2><span style="color: #0000ff;">Performing a <b>CVS</b> diff</span></h2>
<p>After developers have checked in updates to the code it may be beneficial to see what has changed, either to help solve bugs or to track changes. There are several option to do this.</p>
<ol>
<li><b>Perform a diff between complete branches: </b></li>
</ol>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ </b><b>cvs -q diff -u -r BRANCH1 -r BRANCH2 </b></td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><b>Perform a diff between a single file in two branches: </b></li>
</ol>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ </b><b>cvs -q diff -u -r BRANCH1 -r BRANCH2 filename </b></td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><b>Perform a diff between different versions of a file: </b></li>
</ol>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ </b><b>cvs -q diff -u -r version1 -r version2 filename </b></td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><b>Perform a diff between working version and most up to date file in database: </b></li>
</ol>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ </b><b>cvs -q diff -u filename </b></td>
</tr>
</tbody>
</table>
</div>
<ol>
<li><b>Perform a diff between working version and a specific database version: </b></li>
</ol>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ </b><b>cvs -q diff -u -r version filename </b></td>
</tr>
</tbody>
</table>
</div>
<h2><span style="color: #0000ff;"><b>Retrieving </b><b>CVS Information on Files</b></span></h2>
<p>To retrieve the current version and other relevant information about a file run:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs status filename </b></td>
</tr>
</tbody>
</table>
</div>
<p>To retrieve the entire change log pertaining to a file run:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs log filename </b></td>
</tr>
</tbody>
</table>
</div>
<h2><b><span style="color: #0000ff;">Retrieving CVS Files Based Upon Revision</span></b></h2>
<p>To retrieve a file from <b>CVS</b> based upon a revision number perform the following:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs -q up -Pd -r revision filename </b></td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>To get the revision number use the log command above</li>
</ul>
<h2><span style="color: #0000ff;"><b>Tag file in </b><b>CVS as a Release</b></span></h2>
<p>To tag files in <b>CVS</b> as a release perform the following:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs tag </b></td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>Run the command from within the release source dir.</li>
</ul>
<h2><span style="color: #0000ff;"><b>Creating a Branch</b></span></h2>
<p>I like to do the following before creating a branch:</p>
<p>See what tags are available and pick one.</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> -q log <i>filename</i></td>
</tr>
</tbody>
</table>
</div>
<p>Revert to a tagged version of HEAD.</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs -q up -r TAG_Version </b></td>
</tr>
</tbody>
</table>
</div>
<p>To create a branch in <b>CVS</b> perform the following:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>$ cvs tag -b </b></td>
</tr>
</tbody>
</table>
</div>
<p>Run the command from within the release source dir. This should be done in the top level directory of the project. The chosen_branch is something like BRANCH_36_BUG_.</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td><b>cvs -q up -r </b></td>
</tr>
<tr>
<td><b>$ </b><b>cvs -q status &lt;&#8211; confirm that the branch has specified as the tag </b></td>
</tr>
<tr>
<td><b>$ </b><b>cvs tag _mm_day_year &lt;&#8211; eg: BRANCH_12_BUG_12345_07_17_2009 </b></td>
</tr>
</tbody>
</table>
</div>
<h2><b><span style="color: #0000ff;">Reverting to a Branch</span></b></h2>
<p>To revert to a branch in <b>CVS</b> perform the following:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> -q <b>up &#8211;</b>r</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>Run the command from within the release source dir. This should be done in the top level directory of the project. The chosen_branch is something like BRANCH_BUG_.</li>
</ul>
<h2><b><span style="color: #0000ff;">Verifying you are in a branch</span></b></h2>
<p>To verify you are in a branch</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> -q status</td>
</tr>
</tbody>
</table>
</div>
<p>You will see that the branch is a sticky tag.</p>
<h2>Merge Current Branch with HEAD</h2>
<p>Ensure that you are in the branch by reverting to the branch and Verifying that you are in the branch.</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> update -j</td>
</tr>
</tbody>
</table>
</div>
<p>This will ensure that you are your branch is getting merged properly with HEAD so the only differences you see between your branch and the are changes that you made. You can verify this from your branch with:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> -q diff -u -r | less</td>
</tr>
</tbody>
</table>
</div>
<p>You will eventually have to commit your changes you should always do a tag on the branch after your commit.</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> tag</td>
</tr>
</tbody>
</table>
</div>
<h2>Merge HEAD into Current Branch Multiple Times (with tags) and without -kk option</h2>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> update -j -j</td>
</tr>
</tbody>
</table>
</div>
<p>This command will unfortunenately result in a lot of your ID tags getting changed at the top. Using the &#8211;kk option will avoid this problem. But then you won&#8217;t see which files have changed and You won&#8217;t know who last modified a file easily. After you run this command I recommend:</p>
<pre>$ vim `<b>cvs</b> up -d | grep '^C' | sed -e 's/^C //'`</pre>
<p>You may find the following page interesting as well: <a href="http://kb.wisc.edu/middleware/page.php?id=4087">http://kb.wisc.edu/middleware/page.php?id=4087</a></p>
<p>This will grab all of the conflicting files. You can save them with :w. And step through them with :bn. You can easily close them all with :wq!.</p>
<h2><span style="color: #0000ff;"><b>Merge HEAD into Current Branch Multiple Times (with tags)</b></span></h2>
<p>To merge current HEAD into a branch that has already had HEAD merged into it once, the differences between that last merge and current HEAD need to be gathered and applied to the branch. This is done by finding out when the last time HEAD was merged with the branch. Hopefully you tagged your branch. Repeat steps 1 and 2 from the previous section to create a tag for HEAD and to create a tag for your branch so you can have a backup/reference point. Then, perform the following if you have tagged the branch when merging the last time:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> update -kk -j -j</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>Run the command from within the branched version. is the old tag in HEAD from the last time you merged (the tag that you created in Step one from the previous section). If you in this case, the format will likely be the following:</li>
</ul>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> update -kk -j UPDATE_HEAD_36_BUG__06_16_2008 -j UPDATE_HEAD_36_BUG__07_23_2008</td>
</tr>
</tbody>
</table>
</div>
<p>The first tag is the one created the last time HEAD was merged into the branch. The second tag is one that should have been just created. This will take all the differences between the two tags, and bring them into the branch. The next time a merge from HEAD into the branch occurs, this latest tag will be the &#8220;old&#8221; tag, and the new tag will be created at the time of the merge.</p>
<p>The reason for tagging the branch before a join/merge like this is to create a reference point to revert to if the need ever arises. The -kk option removes rcsid tags so that the <b>cvs</b> tag at the top doesn&#8217;t get flagged as a conflict on every merge/join.</p>
<h2><span style="color: #0000ff;"><b>Merge HEAD into Current Branch Multiple Times (without tags)</b></span></h2>
<p>If no tags have been created for the branch when HEAD was merged into a branch at a previous time, an alternative is to use the daily build tag. Find the commit message of the last time HEAD was merged into the branch and was committed and select the daily build tag the day BEFORE that one (but only if the commit was before the daily build that day, i.e. before lunch time for GMT -06:00). An example is provided below on how to merge without tagging:</p>
<div>
<table class="mceItemTable" border="0">
<tbody>
<tr>
<td>$ <b>cvs</b> update -kk -j Tag_Branch -j HEAD&gt;</td>
</tr>
</tbody>
</table>
</div>
<p>Run the command from within the branched version.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<b>To Avoide network confusion :-</b></p>
<p>use :- alias cvs=`cvs -z9`</p>
<p>causes cvs to use compression level 6.</p>
<p>Good links for it:-</p>
<ul>
<li>http://datagrams.blogspot.com/2009/01/how-to-deploy-cvs-concurrent-versions.html</li>
</ul>
<ul>
<li>http://kb.wisc.edu/middleware/page.php?id=4087</li>
<li>http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs_10.html#SEC85</li>
<li>http://ximbiot.com/cvs/wiki/Special/Index</li>
<li><a class="system-pagebreak" title="CVS" href="http://ittipsandtrics.blogspot.com/search/label/CVS%20%28Concorrent%20Version%20System%29" target="_blank" rel="noopener">More Help!!</a></li>
</ul>
<p>Refer for more on This:-</p>
<p><a class="caption" title="CVS Configuration - Install CVS" href="http://ittipsandtrics.blogspot.com/search/label/CVS%20%28Concorrent%20Version%20System%29">          Click Me!!</a></p>
<p>Thanks,</p>
<p>-Amaresh Das</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/how-cvs-will-help-to-realtime-developers/">How CVS will help to Realtime Developers ?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/how-cvs-will-help-to-realtime-developers/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>What are the Best Practices of CVS?</title>
		<link>https://www.scmgalaxy.com/tutorials/cvs-best-practices-2/</link>
					<comments>https://www.scmgalaxy.com/tutorials/cvs-best-practices-2/#comments</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Thu, 29 Jan 2009 09:39:24 +0000</pubDate>
				<category><![CDATA[CVS]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Best Practices of CVs]]></category>
		<category><![CDATA[CVS Best Practices]]></category>
		<category><![CDATA[CVS Best Practices Guide]]></category>
		<category><![CDATA[CVS Best Practices Tips]]></category>
		<category><![CDATA[CVS Guide]]></category>
		<category><![CDATA[CVS Tips]]></category>
		<category><![CDATA[CVS Tips & Tricks]]></category>
		<category><![CDATA[CVS Tutorial]]></category>
		<category><![CDATA[list of CVS Best Practices]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[What]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2009/01/29/cvs-best-practices-2/</guid>

					<description><![CDATA[<p>CVS Best Practices   These are list of CVS Best Practices: * Don’t share workspaces Sharing workspaces compromises CVS’s ability [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/cvs-best-practices-2/">What are the Best Practices of CVS?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p align="center"><img decoding="async" class="alignnone size-full wp-image-3997" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2009/01/cvs-best-practices-1.png" alt="cvs-best-practices" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2009/01/cvs-best-practices-1.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2009/01/cvs-best-practices-1-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 14pt;">CVS Best Practices</span><span style="font-size: 10pt;"><br />
</span></p>
<p class="MsoNormal" style="text-align: center;" align="center"><span style="font-size: 10pt;"> </span></p>
<p class="MsoNormal"><strong>These are list of CVS Best Practices:</strong></p>
<p class="MsoNormal"><strong>* Don’t share workspaces</strong></p>
<p class="MsoNormal">Sharing workspaces compromises CVS’s ability to track activity by user or task.</p>
<p class="MsoNormal"><strong>* Don’t work outside of managed workspaces</strong></p>
<p class="MsoNormal">CVS can only track work in progress when it takes place within managed workspaces. Never copy files from others sandboxes or even from outside your sandbox since you may overwrite somebody else’s code.</p>
<p class="MsoNormal"><strong>* Don’t use jello views</strong></p>
<p class="MsoNormal">A file in your workspace should not change unless you explicitly cause the change. A &#8220;jello view&#8221; is a workspace where file changes are caused by external events beyond your control e.g. workspace built upon a tree of symbolic links to files in another workspace.</p>
<p class="MsoNormal"><strong>* Stay in sync with the codeline</strong></p>
<p class="MsoNormal">The quality of your work depends largely on how well it meshes with others work. In other words, as changes are checked into the codeline, you should update your workspace and integrate those changes with yours. Update your code at least once in the morning daily.</p>
<p class="MsoNormal"><strong>* Checkin code daily</strong></p>
<p class="MsoNormal">Integrating your development work with other peoples&#8217; work also requires you to check in your changes regularly. Don’t keep your new code lying in your workspace for many days at a time. This may lead to many conflicts at a later stage when you try to merge.</p>
<p class="MsoNormal"><strong>* Never check in without compiling and testing your code</strong></p>
<p class="MsoNormal"><strong>* Always update your modules/ files and resolve any conflicts before committing</strong></p>
<p class="MsoBodyText">* After committing changes, diff with previous version to make sure you did not accidentally overwrite anybody else’s code</p>
<p class="MsoNormal"><strong>* If you overwrite somebody else’s code, rollback</strong></p>
<p class="MsoBodyText">* Always communicate any changes you commit, to all those concerned with the module/ file that was changed</p>
<p class="MsoNormal"><strong>* Always add comments when committing changes</strong></p>
<p class="MsoNormal">Good and meaningful comments make it easy for others to know exactly what was changed. For e.g. if it’s a bug fix it should have a Bug Number.</p>
<p class="MsoNormal"><strong>* Add whitespaces with discretion</strong></p>
<p class="MsoNormal">Changes to whitespaces cause unnecessary updates to happen and may show conflicts during merges</p>
<p class="MsoNormal">
<p>The post <a href="https://www.scmgalaxy.com/tutorials/cvs-best-practices-2/">What are the Best Practices of CVS?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/cvs-best-practices-2/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
