<?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>Help Archives - scmGalaxy</title>
	<atom:link href="https://www.scmgalaxy.com/tutorials/tag/help/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.scmgalaxy.com/tutorials/tag/help/</link>
	<description>A Platform for Software Engineers</description>
	<lastBuildDate>Sat, 27 Feb 2021 09:55:40 +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 to configure and use SSH authentication system server CVS</title>
		<link>https://www.scmgalaxy.com/tutorials/how-to-configure-and-use-ssh-authentication-system-server-cvs/</link>
					<comments>https://www.scmgalaxy.com/tutorials/how-to-configure-and-use-ssh-authentication-system-server-cvs/#respond</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Tue, 20 Apr 2010 12:19:22 +0000</pubDate>
				<category><![CDATA[CVS]]></category>
		<category><![CDATA[configure]]></category>
		<category><![CDATA[Configure CVS with SSH]]></category>
		<category><![CDATA[CVS with SSH Configuration]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Help]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Instructions]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Reference]]></category>
		<category><![CDATA[Setup CVS through SSH]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Steps]]></category>
		<category><![CDATA[System server]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Use SSH with CVS]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2010/04/20/how-to-configure-and-use-ssh-authentication-system-server-cvs/</guid>

					<description><![CDATA[<p>How to configure and use SSH authentication system server CVS cvs (Concurrent Version System) is a very popular version control [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/how-to-configure-and-use-ssh-authentication-system-server-cvs/">How to configure and use SSH authentication system server CVS</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-4374" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/04/ssh-authentication-system-s.png" alt="ssh-with-cvs" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/04/ssh-authentication-system-s.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/04/ssh-authentication-system-s-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p><strong>How to configure and use SSH authentication system server CVS</strong></p>
<p>cvs (Concurrent Version System) is a very popular version control tool. Although its function as Perforce, Subversion and other powerful, but because of its easy configuration, simple to use and the introduction of longer, so in all a kind of software project widely used.</p>
<p>first is to install FreeBSD, and application security patches. This step is very simple, download a FreeBSD (the upcoming 5.2-RELEASE is a good choice, in this article was published, this version may have been able to download a) of the mini iso burning CD-ROM, then you can install the (choose “Minimum” installation). Note that, in order to be able to use ssh authentication, be sure to install the crypto. Configure the network for this machine, so after the restart just fine.</p>
<p>then install the necessary package. FreeBSD 4.x built-in perl, but in 5.x in, perl be deleted from the basic system. In order to better use, including ACL, commit mail, and a number feature, you must install perl.</p>
<p>I personally recommend using the ports in the 5.8.x version of perl. Before installing, first of all convinced that the system does not perl 5.6.x installed, the new system, they can safely execute the following command:</p>
<p>This will remove the existing any package. In general, the majority of FreeBSD users use cvsup to update the system, but the release of the CD, cvsup-without-gui is not included, while the ordinary cvsup package requires a series of X11 libraries. To avoid trouble, consider the following two different ways to complete the first code update:</p>
<div></div>
<p><strong>1, using the FreeBSD&#8217;s cvs to synchronize code: </strong></p>
<p>cvs-d: pserver: anoncvs@anoncvs.jp.FreeBSD.org: / home / ncvs login</p>
<p>enter “anoncvs”, Enter</p>
<p>cd / usr</p>
<p>cvs-R-d: pserver: anoncvs@anoncvs.jp.FreeBSD.org: / home / ncvs export-r RELENG_5_2 src ports</p>
<p>Note: If you are not using 5.2-RELEASE, please make appropriate amendments to RELENG_5_2 (for example ,4-STABLE is RELENG_4, – CURRENT is the HEAD, etc.)</p>
<p><strong>2, install cvsup-without-gui: </strong></p>
<p>pkg_add-r cvsup-without-gui</p>
<p>then use cvsup to synchronize code, space is limited, I will not repeat them</p>
<p>I recommend the first method, of course, the second method should be faster, and does not require manually compiling cvsup. Subsequently, the installation of Perl 5.8.x:</p>
<p>cd / usr / ports / lang / perl5.8 &amp; &amp; make all install clean &amp; &amp; rehash</p>
<p>Then we will face a very serious problem: ports inside use.perl script does not know the system had not installed perl, so the time to be wrong in the implementation – this time, just make a symbolic link to perl on it. Well, the implementation:</p>
<p>use.perl port</p>
<p>This script will help you complete use.perl modify configuration files (such as / etc / make.conf) and a series of work. Here is not the table, a little profile about OpenSSH (sshd) configuration, in general, add the following two lines:</p>
<p><strong>Protocol 2 </strong></p>
<p><strong>PasswordAuthentication no </strong></p>
<p>the benefits of doing so: ( 1) only allow ssh2 protocol log, which can provide better security (2) does not allow password login, which no doubt will increase security.</p>
<p><strong>1, create a cvs repository </strong></p>
<p>Well, pre-configuration is basically over. Do not forget to create a user for the cvs group, for example, ncvs, as well as a cvs repository for the management of users, such as the repoman (which of course is ncvs that group), and then create a directory to save the cvs repository, in this case , we put it into / home / ncvs in:</p>
<p>rm-rf / home / ncvs</p>
<p>mkdir-p / home / ncvs</p>
<p>chown-R repoman: ncvs / home / ncvs</p>
<p>chmod-R 775 / home / ncvs</p>
<p>next step is to initialize the repository, and simple to implement:</p>
<p>su-l repoman</p>
<p>cvs-d / home / ncvs init</p>
<p>on it.</p>
<p>present, all the FreeBSD version of cvs are included in the safety of the existence of a small vulnerability, although this flaw only in local use, but we recommend that you put it back on is to find / usr / src / contrib / cvs / src / expand_path.c in</p>
<p>return current_parsed_root-&gt; original;</p>
<p>line, turning it into a</p>
<p>return current_parsed_root-&gt; directory;</p>
<p>Of course, the next step is to re-make world kernel of. Need to note is that if you are using a 5-CURRENT, also need to modify some code for it to reach 5.2-RELEASE as performance (-CURRENT in a large number of debugging options turned on), specific methods will not go into here.</p>
<p><strong>2, the configuration commitmail and ACL </strong></p>
<p>then configure cvs commitmail and ACL. I personally think that commitmail the team software development a very important thing to cvs, it is especially important because cvs is not atomic submit function, but commitmail just enough to make up for this.</p>
<p>FreeBSD development team used a very good perl script to complete commitmail function, while the hook they use cvs to achieve a simple access control function (ACL). I use the cvs repository based on FreeBSD&#8217;s CVSROOT, and made a few changes.</p>
<p>use the CVSROOT cover your CVSROOT, and you also need to freebsd directory mailsend.c which compiled the results into the / usr / local / bin (the script assumes that the CVSROOT in this matter). In addition, the CVSROOT need some modifications before it is put into use (for example, machine name, etc.). These settings can be found in the cfg_local.pm inside:</p>
<p>$ MAILADDRS = &#8216;cvs- all@example.org &#8216;;</p>
<p>commitmail this is the place to be sent to.</p>
<p>$ MAIL_BRANCH_HDR = “X-Phantasm-CVS-Branch”;</p>
<p>this is to be added to the commitmail head of information, if you use the mailing list, then it can help mailing list automatically sorted.</p>
<p>$ MAILBANNER = “The Phantasm Studio repository”;</p>
<p>this soon in commitmail said that they commit to which a repository.</p>
<p>if ($ hostname = ~ / ^ cvs \. Example \. Org $ / i)</p>
<p>commit to this is to determine the host name</p>
<p>$ CVSWEB_URL = “http://cvsweb.example.org/cgi-bin/cvsweb.cgi”;</p>
<p>This is cvsweb services at</p>
<p>a brief CVSROOT in the other documents</p>
<p>avail: the file used to control access to user group.</p>
<p>access: This file is used to control who can perform cvs operations.</p>
<p>exclude: This file is used to control those files do not need to check the cvs tag</p>
<p>options: this file used to control the commencement of cvs tag, for example, can define $ Phantasm $, etc.</p>
<p><strong>3, configuration of users and restrict ssh permissions </strong></p>
<p>ssh authentication using a more vexing question is, ssh means that users have a system account, and that they be able to log in.. If configured properly, they can get a shell, it is natural to be a potential security risk.</p>
<p>must therefore be very careful in handling the ssh cvs authentication issue. The underlying principle is: any action against the user, unless we allow them to do so.</p>
<p>create a user in accordance with the following rules:</p>
<p>user&#8217;s” primary “group is ncvs (This will not only restrict the user&#8217;s permission, so we can more easily control the other users in the cvs repository which can not be free to commit)</p>
<p>users do not use password authentication, which will ease because they do not properly set up ftp and other safety hazards caused by</p>
<p>still give the user a shell, the “shell” can be a perl script, it only allow the implementation of the beginning of the command cvs</p>
<p>then allow users to use openssh&#8217;s ssh-keygen to generate your own key pair. OpenSSH in most * BSD and Linux distributions can be found in, if the user uses the Windows Desktop, you need to install cygwin (in particular, the installation of net in OpenSSH), of course, the implementation of the command is the same:</p>
<p>ssh-keygen-t dsa-b 2048</p>
<p>for the paranoid security enthusiasts, can consider later in 2048 will be replaced by-b 4096. Of course, under the barrel theory, if you are a paranoid, then obviously you should be forced to use all the partners are also at least as long as your key:)</p>
<p>, the administrator should be user (committer) the key into the server, the user corresponding to the authorized_keys file in the folder inside. For example, one of my public key as follows:</p>
<p>ssh-dss AAAAB3NzaC1kc3MAAAEBAL +1 jinOw +86 RcTEaSM5/Hz4Lr9tIS0IQsX8ebo</p>
<p>TwLzWnqpOHRh2KBCGn/e0xGCIAai7PGz7c + SZCvrLiRvG9mCsMMMue8ZIL + QF4OAmMd</p>
<p>Cz8Qoyg0cc4YXImOd + UEpdOX29PC4aMAz28v/GO2yf58/Qa49Clfq1kHa/8q3IAgs9o</p>
<p>W95 / ArG + IWFOsN1Tv9nh4XJb5AQjpa5uMlB5SEmvKGTXQ2oYiRVIxL8vzHL6MtO/8×1</p>
<p>j8 + RioSH6FCpEXS7UJbYxE7vF3m5Fa5o6g2dIZewphsleOeHkvYJ442Hqvsly3p4 +4 N</p>
<p>dvim4bY2HMDha5r5zeTV8tTlOz4wQVgKyWoEAAAAVAINGzX7uU0vR8l63qhBhUeWGZt</p>
<p>C9AAABADWiO +9 bvV7DApsn08LR1eoEnMjJFQgEfGlbV + EvZHkO0bkHZAdRIKtVmgNUw</p>
<p>G6uufykkt2Tb + q5SbVNZkzeaFVv4ZMtnjSvEPIZrEXcQFFguGk1it5v5EYcmq4G8 + j1</p>
<p>BFTVHef4b1wMTSt11WtEz0LUYncuZ6LA48/WGTuZiSm8JkchgVm8HhR9NqjdeFJH8sO</p>
<p>RUhUBoxyWjo/hv7zFg7HqoJGzeNfrEhFg36psR2RDaRvSP0vN1W2q4j5OZy3gB6ZyVt</p>
<p>nsEPl1HELhlaCFifmdz1LVxDx + FyPy6wMsPQLTmB1g6N1J6PWy3qCTJ0NyQgarSt3 / A</p>
<p>TQ0InF1BOdJn8QAAAEAPb1OgswuMHdEsHk2ETZVmOKOkI9Rjf72vjZ3xG45iEbCH/7p</p>
<p>aTP8OQmJMW9FD4MHjdmtktPVYXDIa9Hj/IM44zhfMHEdKs9LlFUK5dBgNUps + yPj2Ns</p>
<p>Mr2rl771ODR0mB52FwrXm1FCmNTM7WQpFOEy/QhtZRpHK +7 / YZp7PBggt17Fw7rbjP2</p>
<p>zhWnZluoSKLgvfkhxhJuOMm/ElNJx2c + XHdxPqI3eR5UxzLNjDUNh59I8 + h + E69bFB3</p>
<p>b2uhKqziziHOQcqoH5r0Kud / DBBE79lU3mRUF8FQNygCRh/V3yFzed40rc0nF0PQpNZ</p>
<p>6zodDTJByrm6vX5wr2lI4RgA9w == bitripper@grimreaper.delphij.net</p>
<p>Description: public key is not allowed off-line, here is convenient for typesetting. We have just opened to the user shell, which is still potential pitfalls, so we tighten security in this regard, the public key by adding the following text before the project:</p>
<p>command = “/ usr / bin / cvs – allow-root = / home / ncvs server”</p>
<p>So, the whole line should look like this:</p>
<p>command =” / usr / bin / cvs – allow-root = / home / ncvs server “ssh-dss AAAAB</p>
<p>…… …………………..</p>
<p>X5wr2lI4RgA9w == bitripper@grimreaper.delphij.net</p>
<p>ssh this command means that up on the implementation of / usr / bin / cvs – allow-root = / home / ncvs server this command, and can only perform this command. Thus, unless there are loopholes in the cvs itself, otherwise, can not really cut out through ssh shell. – Allow-root limits the ability to use the repository, so users can not easily specify the other repository, thus trying to undermine the security will become more difficult. If you need multiple repository, you can specify the number of allow-root parameter.</p>
<p>be noted is that if users have multiple public key, you need to specify each public key before the command.</p>
<p><strong>4, configuration cvsweb </strong></p>
<p>configuration cvsweb is quite simple. First install the apache (I tried 1.3.x and 2.0.x), configure the ready, from the port which install cvsweb on it:</p>
<p>cd / usr / ports / devel / cvsweb &amp; &amp; make all installl clean</p>
<p>and then to modify it configuration file:</p>
<p>cd / usr / local / etc / cvsweb</p>
<p>vi cvsweb.conf</p>
<p>find</p>
<p>;</p>
<p>@ CVSrepositories = (</p>
<p>line, follow the example of an increase in following their own repository, For example:</p>
<p>&#8216;ncvs&#8217; =&gt; [&#8216; New CVS Repository &#8216;,&#8217; / home / ncvs&#8217;],</p>
<p>write the number of how many, of course, @ CVSrepositories the first to directly access cvsweb.cgi when the repository.</p>
<p>in FreeBSD 5.1-CURRENT development process carried out by some of the changes caused by the ports in the cvsweb not normally call the cvs and rcs tools, which will cause it to not work properly. To solve this problem, can be found from the following web site the latest version of cvsweb:</p>
<p>http://www.freebsd.org/projects/cvsweb.html</p>
<p>the author of this writing, the latest cvsweb version is 2.9.1 beta. Before the installation, need to install the other two port:</p>
<p>cd / usr/ports/devel/p5-IPC-Run &amp; &amp; make all install clean</p>
<p>cd / usr/ports/net/p5-URI &amp; &amp; make all install clean</p>
<p>then downloaded tbz file unpack, copy to the appropriate location (cgi-bin and related images directory) can be used.</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/how-to-configure-and-use-ssh-authentication-system-server-cvs/">How to configure and use SSH authentication system server CVS</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/how-to-configure-and-use-ssh-authentication-system-server-cvs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Running MSBuild 4.0 and MSBuild 3.5 on Continuous Integration</title>
		<link>https://www.scmgalaxy.com/tutorials/running-msbuild-40-and-msbuild-35-on-continuous-integration/</link>
					<comments>https://www.scmgalaxy.com/tutorials/running-msbuild-40-and-msbuild-35-on-continuous-integration/#comments</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Tue, 09 Mar 2010 13:37:44 +0000</pubDate>
				<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Msbuild]]></category>
		<category><![CDATA[CI server]]></category>
		<category><![CDATA[Continuous]]></category>
		<category><![CDATA[Continuous Integration server]]></category>
		<category><![CDATA[Continuous Integration using MSBuild]]></category>
		<category><![CDATA[Continuous Integration with MSBuild]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Help]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[MSBuild 3.5]]></category>
		<category><![CDATA[MSBuild 4.0]]></category>
		<category><![CDATA[Run]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2010/03/09/running-msbuild-40-and-msbuild-35-on-continuous-integration/</guid>

					<description><![CDATA[<p>With Visual Studio 2010 RC released recently, we jumped on the release and began to code with VS2010.  One issue [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/running-msbuild-40-and-msbuild-35-on-continuous-integration/">Running MSBuild 4.0 and MSBuild 3.5 on Continuous Integration</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignnone size-full wp-image-4127 aligncenter" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/03/msbuild-40-and-msbuild-35-o.png" alt="msbuild-40-and-msbuild-35" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/03/msbuild-40-and-msbuild-35-o.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/03/msbuild-40-and-msbuild-35-o-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>With Visual Studio 2010 RC released recently, we jumped on the release and began to code with VS2010.  One issue that popped up was that now all builds were targeting MSBuild 4.0.</p>
<p>That doesn’t seem to be a big problem until our CruiseControl CI server kicked in, downloaded our updated code and failed building the upgraded projects.</p>
<p>Fortunately there is a very quick solution to this little problem.  There are a couple of requirements.</p>
<p>1. You need to have VS2010 RC installed somewhere<br />
2. You need to download the .Net Framework 4.0 (I recommend the full version and not just the Client Profile, it ensures you don’t miss anything)</p>
<p><b>To fix, do the following:</b></p>
<p>1. download and install the .Net Framework 4.0 on the CI server (then restart the server)<br />
2. on the computer where VS2010 RC is installed go to the following path:<br />
%programfiles%\MSBuild\Microsoft\VisualStudio<br />
3. copy the v10.0 folder located in that directory into the CI server at the same path (or wherever our MSbuild path is on the CI server)<br />
4. Once that is done, edit the ccnet.config file at the tag and change it to the new .Net 4.0 Framework installed (you should only need to change the section “\v3.5\” to “\v4.0.xxxxx\”</p>
<p>Hope this helps</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/running-msbuild-40-and-msbuild-35-on-continuous-integration/">Running MSBuild 4.0 and MSBuild 3.5 on Continuous Integration</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/running-msbuild-40-and-msbuild-35-on-continuous-integration/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<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 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>
	</channel>
</rss>
