<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=PragmaticVersionControlWithCVS%2FGetting_Started</id>
	<title>PragmaticVersionControlWithCVS/Getting Started - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=PragmaticVersionControlWithCVS%2FGetting_Started"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;action=history"/>
	<updated>2026-05-14T16:09:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;diff=87553&amp;oldid=prev</id>
		<title>Maintenance script: Repair MoniWiki formatting after migration</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;diff=87553&amp;oldid=prev"/>
		<updated>2026-03-29T00:34:27Z</updated>

		<summary type="html">&lt;p&gt;Repair MoniWiki formatting after migration&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:34, 29 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== CVS Commands ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== CVS Commands ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CVS클라이언트는 현재 우리가 쓰는 커맨드 형태의 클라이언트도 있지만, GUI형태의 TortoiseCVS, WinCVS등도 있다. (sourceforge.net에서 확인) 또한 IDE 자체가 CVS 클라이언트의 기능을 하는 것들도 있다. (ex. eclipse, dev-cpp)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CVS클라이언트는 현재 우리가 쓰는 커맨드 형태의 클라이언트도 있지만, GUI형태의 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;TortoiseCVS&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;, WinCVS등도 있다. (sourceforge.net에서 확인) 또한 IDE 자체가 CVS 클라이언트의 기능을 하는 것들도 있다. (ex. eclipse, dev-cpp)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Creating a Simple Project ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Creating a Simple Project ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-84784:rev-87553 --&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;diff=84784&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0003 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;diff=84784&amp;oldid=prev"/>
		<updated>2026-03-27T00:29:04Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0003 pages from live compare&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:29, 27 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l261&quot;&gt;Line 261:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 261:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Examining .&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Examining .&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Up-to-date check failed for `number.txt&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Up-to-date check failed for `number.txt&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;commit aborted&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;: correct above errors first!&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;commit aborted&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;: correct above errors first!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;상기에서 보듯이 에러를 내면서 체크인하지 못한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;상기에서 보듯이 에러를 내면서 체크인하지 못한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l324&quot;&gt;Line 324:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 324:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Examining .&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Examining .&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Up-to-date check failed for `number.txt&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs commit: Up-to-date check failed for `number.txt&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/del&gt;commit aborted&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/del&gt;: correct above errors first!&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  cvs &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#91;&lt;/ins&gt;commit aborted&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;#93;&lt;/ins&gt;: correct above errors first!&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  .&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  .&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  .&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  .&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l396&quot;&gt;Line 396:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 396:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[PragmaticVersionControlWithCVS]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[PragmaticVersionControlWithCVS]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;diff=37550&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:24, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=PragmaticVersionControlWithCVS/Getting_Started&amp;diff=37550&amp;oldid=prev"/>
		<updated>2021-02-07T05:24:01Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[PragmaticVersionControlWithCVS/WhatIsVersionControl]]&lt;br /&gt;
| [[PragmaticVersionControlWithCVS/HowTo]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
== Installing CVS ==&lt;br /&gt;
CVS서버 설치는 알아서 잘해라. -_-; 리눅스에서는 패키지로 설치하면 되고, 윈도우에서는 알아서 받아서 설치하면 된다. 이미 서버가 있으면 더 좋다. 내 경우에는 데비안 리눅스를 사용하는 관계로 apt-get install cvs로 간단히 설치를 끝냈다.&lt;br /&gt;
&lt;br /&gt;
== Creating a Repository ==&lt;br /&gt;
현재 우리는 테스트용으로 CVS를 쓰기 때문에 CVS의 저장소를 임시로 만들 필요가 있다.&lt;br /&gt;
CVS저장소를 만드는 명령은 다음과 같다.&lt;br /&gt;
 Unix: cvs -d ~/sandbox init                     // 나의 경우에는 /home/CVSHOME 로 지정하였다.&lt;br /&gt;
 Wind: cvs -d d:sandbox init&lt;br /&gt;
&lt;br /&gt;
== CVS Commands ==&lt;br /&gt;
CVS클라이언트는 현재 우리가 쓰는 커맨드 형태의 클라이언트도 있지만, GUI형태의 TortoiseCVS, WinCVS등도 있다. (sourceforge.net에서 확인) 또한 IDE 자체가 CVS 클라이언트의 기능을 하는 것들도 있다. (ex. eclipse, dev-cpp)&lt;br /&gt;
&lt;br /&gt;
== Creating a Simple Project ==&lt;br /&gt;
간단한 프로젝트를 CVS상에 만들자. 예제는 소스로 보이지는 않지만 크게 상관은 없다.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;color.text&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 black&lt;br /&gt;
 brown&lt;br /&gt;
 red&lt;br /&gt;
 orange&lt;br /&gt;
 yellow&lt;br /&gt;
 green&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;number.text&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 zero&lt;br /&gt;
 one&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
&lt;br /&gt;
이 파일이 저장된 폴더에서 다음의 명령어를 실행시킨다.&lt;br /&gt;
 tmpdir#cvs -d /home/CVSHOME/ import -m &amp;quot; &amp;quot; sesame sesame initial&lt;br /&gt;
import는 프로젝트를 저장소에 넣을 것이라는 파라메터이다. &lt;br /&gt;
-m &amp;quot; &amp;quot; 프로젝트를 임포트할때 기록할 메시지임. (서드파티 코드를 사용하는 경우에 유리하다.)&lt;br /&gt;
sesame 저장소안에서 프로젝트의 이름&lt;br /&gt;
마지막 2개의 파라메터(sesame initial) tag이다.&lt;br /&gt;
&lt;br /&gt;
이런과정을 마치면 CVS 루트 디렉토리에 프로젝트가 정상적으로 생성되었는지 ls 명령으로 확인해보자.&lt;br /&gt;
&lt;br /&gt;
== Starting to Work With a Project ==&lt;br /&gt;
이제 저장소에 저장된 파일을 로컬 작업공간에 체크아웃해보자. 이를위해서 일단 ~/work 라는 디렉토리를 구성하자.&lt;br /&gt;
 #mkdir ~/work&lt;br /&gt;
 #cd ~/work&lt;br /&gt;
 #cvs -d /home/CVSHOME co sesame&lt;br /&gt;
 cvs checkout: Updating sesame&lt;br /&gt;
 U sesame/color.txt&lt;br /&gt;
 U sesame/number.txt&lt;br /&gt;
~/work를 조사해서 ~/work/sesame 디렉토리에 정상적으로 저장소의 파일이 체크아웃되었다면 원본 파일을 삭제한다.&lt;br /&gt;
&lt;br /&gt;
== Making Changes ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;color.txt 의 변경&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 black&lt;br /&gt;
 brown&lt;br /&gt;
 red&lt;br /&gt;
 orange&lt;br /&gt;
 yellow&lt;br /&gt;
 blue&lt;br /&gt;
 purple&lt;br /&gt;
 gray&lt;br /&gt;
 white&lt;br /&gt;
color.txt를 위와 같이 변경한뒤에 프로프트에서 다음의 명령어를 사용해보자.&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs status color.txt &lt;br /&gt;
 ===================================================================&lt;br /&gt;
 File: color.txt         Status: Locally Modified&lt;br /&gt;
 &lt;br /&gt;
    Working revision:    1.1.1.1 Tue Aug  2 05:50:14 2005&lt;br /&gt;
    Repository revision: 1.1.1.1 /home/CVSHOME/sesame/color.txt,v&lt;br /&gt;
    Sticky Tag:          (none)&lt;br /&gt;
    Sticky Date:         (none)&lt;br /&gt;
    Sticky Options:      (none)&lt;br /&gt;
상기의 &amp;#039;&amp;#039;&amp;#039;status&amp;#039;&amp;#039;&amp;#039; 옵션으로 확인이 가능하듯이 cvs는 자동으로 현재의 파일이 로컬 작업공간에서 수정되었다는 사실을 판단할 수 있다.&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs diff color.txt &lt;br /&gt;
 Index: color.txt&lt;br /&gt;
 ===================================================================&lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/color.txt,v&lt;br /&gt;
 retrieving revision 1.1.1.1&lt;br /&gt;
 diff -r1.1.1.1 color.txt&lt;br /&gt;
 6a7,10&lt;br /&gt;
 &amp;amp;gt; blue&lt;br /&gt;
 &amp;amp;gt; purple&lt;br /&gt;
 &amp;amp;gt; gray&lt;br /&gt;
 &amp;amp;gt; white&lt;br /&gt;
또한 &amp;#039;&amp;#039;&amp;#039;diff&amp;#039;&amp;#039;&amp;#039; 옵션을 이용해서 변경된 파일이 어떤 변경이 있었는지를 조사하여 보여주는 옵션도 존재한다.&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs diff --side-by-side color.txt &lt;br /&gt;
 Index: color.txt&lt;br /&gt;
 ===================================================================&lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/color.txt,v&lt;br /&gt;
 retrieving revision 1.1.1.1&lt;br /&gt;
 diff --side-by-side -r1.1.1.1 color.txt&lt;br /&gt;
 black                                                           black&lt;br /&gt;
 brown                                                           brown&lt;br /&gt;
 red                                                             red&lt;br /&gt;
 orange                                                          orange&lt;br /&gt;
 yellow                                                          yellow&lt;br /&gt;
 green                                                           green&lt;br /&gt;
                                                               &amp;amp;gt; blue&lt;br /&gt;
                                                               &amp;amp;gt; purple&lt;br /&gt;
                                                               &amp;amp;gt; gray&lt;br /&gt;
                                                               &amp;amp;gt; white&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;--side-by-side&amp;#039;&amp;#039;&amp;#039; 옵션을 이용하면 지역 버전과 저장소버전을 한화면에 출력하여서 비교를 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
== Updating the Repository ==&lt;br /&gt;
파일을 수정, UnitTest를 거치면 수정한 내용을 저장소에 저장해야할 것이다.&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs commit -m &amp;quot;고객이 4가지 색을 더 원함&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 /home/CVSHOME/sesame/color.txt,v  &amp;amp;lt;--  color.txt&lt;br /&gt;
 new revision: 1.2; previous revision: 1.1&lt;br /&gt;
변경된 프로젝트는 &amp;#039;&amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&amp;#039; 옵션으로 체크인시키는 것이 가능하다. 이때 &amp;#039;&amp;#039;&amp;#039;-m&amp;#039;&amp;#039;&amp;#039; 옵션으로 변경된 사항에 대한 주석을 다는 것이 가능하며, 만약 주석을 달지 않을 경우에는 vi 에디터가 실행되면서 주석을 저장할 수 있는 파일이 열린다.&lt;br /&gt;
&amp;#039;&amp;#039;(직접해보면 안다. -_-;)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs status color.txt &lt;br /&gt;
 ===================================================================&lt;br /&gt;
 File: color.txt         Status: Up-to-date&lt;br /&gt;
 &lt;br /&gt;
    Working revision:    1.2     Tue Aug  2 13:08:47 2005&lt;br /&gt;
    Repository revision: 1.2     /home/CVSHOME/sesame/color.txt,v&lt;br /&gt;
    Sticky Tag:          (none)&lt;br /&gt;
    Sticky Date:         (none)&lt;br /&gt;
    Sticky Options:      (none)&lt;br /&gt;
commit 을 통해서 저장소를 체크인하고난뒤 status로 변경된 파일의 정보를 출력하면 그 결과가 반영된 것을 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs log color.txt &lt;br /&gt;
 &lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/color.txt,v&lt;br /&gt;
 Working file: color.txt&lt;br /&gt;
 head: 1.2&lt;br /&gt;
 branch:&lt;br /&gt;
 locks: strict&lt;br /&gt;
 access list:&lt;br /&gt;
 symbolic names:&lt;br /&gt;
         initial: 1.1.1.1&lt;br /&gt;
         sesame: 1.1.1&lt;br /&gt;
 keyword substitution: kv&lt;br /&gt;
 total revisions: 3;     selected revisions: 3&lt;br /&gt;
 description:&lt;br /&gt;
 ----------------------------&lt;br /&gt;
 revision 1.2&lt;br /&gt;
 date: 2005-08-02 13:16:58 +0000;  author: sapius;  state: Exp;  lines: +4 -0&lt;br /&gt;
 고객이 4가지 색을 더 원함&lt;br /&gt;
 ----------------------------&lt;br /&gt;
 revision 1.1&lt;br /&gt;
 date: 2005-08-02 05:50:14 +0000;  author: sapius;  state: Exp;&lt;br /&gt;
 branches:  1.1.1;&lt;br /&gt;
 Initial revision&lt;br /&gt;
 ----------------------------&lt;br /&gt;
 revision 1.1.1.1&lt;br /&gt;
 date: 2005-08-02 05:50:14 +0000;  author: sapius;  state: Exp;  lines: +0 -0&lt;br /&gt;
  &lt;br /&gt;
 =============================================================================&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;log&amp;#039;&amp;#039;&amp;#039;옵션을 통해서 특정파일이 어떤 식으로 변경이 되었는지를 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
== When Worlds Collide ==&lt;br /&gt;
이제 한개의 파일을 두사람이 동시에 변경할때 생기는 상황에대해서 살펴보자.&lt;br /&gt;
이러한 경우를 살피기 위해서 기존의 sesame 이라는 디렉토리이외의 공간에 저장소에 저장된 sesame을 받아야한다.&lt;br /&gt;
 root@eunviho:~/tmpdir# cvs -d /home/CVSHOME/ co -d aladdin sesame&lt;br /&gt;
 cvs checkout: Updating aladdin&lt;br /&gt;
 U aladdin/color.txt&lt;br /&gt;
 U aladdin/number.txt&lt;br /&gt;
&lt;br /&gt;
이렇게하면 디렉토리에 &lt;br /&gt;
 root@eunviho:~/tmpdir# ll&lt;br /&gt;
 total 8&lt;br /&gt;
 drwxr-xr-x  3 root root 4096 2005-08-02 22:23 aladdin&lt;br /&gt;
 drwxr-xr-x  3 root root 4096 2005-08-02 22:08 sesame&lt;br /&gt;
과 같이 동일한 저장소의 프로젝트가 서로다른 디렉토리의 로컬 작업공간을 할당받았다는 것을 알 수 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sesame/number.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir# vi sesame/number.txt&lt;br /&gt;
 zero&lt;br /&gt;
 one&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 six&lt;br /&gt;
상기와 같이 변경한 파일을 체크인 시킨다.&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs commit -m &amp;quot;숫자가 더 필요했다.&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 /home/CVSHOME/sesame/number.txt,v  &amp;amp;lt;--  number.txt&lt;br /&gt;
 new revision: 1.2; previous revision: 1.1&lt;br /&gt;
sesame 폴더에 받아진 파일을 변경하여 체크인 시켰기 때문에 이제 aladdin 폴더에 존재하는 파일들은 더이상 최신 버전이 아니다.&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/aladdin# cvs status number.txt &lt;br /&gt;
 ===================================================================&lt;br /&gt;
 File: number.txt        Status: Needs Patch&lt;br /&gt;
 &lt;br /&gt;
    Working revision:    1.1.1.1 Tue Aug  2 05:50:14 2005&lt;br /&gt;
    Repository revision: 1.2     /home/CVSHOME/sesame/number.txt,v&lt;br /&gt;
    Sticky Tag:          (none)&lt;br /&gt;
    Sticky Date:         (none)&lt;br /&gt;
    Sticky Options:      (none)&lt;br /&gt;
상기와 같이 확인을 해보면 aladdin/number.txt 는 체크아웃을 통해서 저장소의 소스와 동기화를 해주어야한다는 상태를 나타내고 있다.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;최신 버전이 아닌 로컬 작업공간의 내용과 저장소의 내용을 비교한다&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir/aladdin# cvs diff -rHEAD number.txt     &lt;br /&gt;
 Index: number.txt&lt;br /&gt;
 ===================================================================&lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/number.txt,v&lt;br /&gt;
 retrieving revision 1.2&lt;br /&gt;
 retrieving revision 1.1.1.1&lt;br /&gt;
 diff -r1.2 -r1.1.1.1&lt;br /&gt;
 6,7d5&lt;br /&gt;
 &amp;amp;lt; five&lt;br /&gt;
 &amp;amp;lt; six&lt;br /&gt;
-rHEAD는 현재의 branches에 존재하는 가장 최신버전의 것과 비교하는 옵션이다. 만약 이 옵션이 없다면 cvs는 현재 받아진 지역 버전과 동일한 저장소상에 기록된 소스와 비교를 한다.&lt;br /&gt;
 root@eunviho:~/tmpdir/aladdin# cvs diff number.txt &lt;br /&gt;
저장소상의 aladdin 과 동일한 버전의 number.txt는 전혀 변화가 없었기 때문에 출력되는 내용이 없다.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;저장소의 최신버전의 내용을 로컬에 반영하기&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir/aladdin# cvs update&lt;br /&gt;
 cvs update: Updating .&lt;br /&gt;
 U number.txt&lt;br /&gt;
반영되는 파일은 오로지 최신버전의 파일이 저장소에 존재할 경우만이다. 그렇지 않으면 파일은 다시 받을 필요가 없기 때문에 받지 않는다.&lt;br /&gt;
&lt;br /&gt;
== Conflict Resolution ==&lt;br /&gt;
다음과 같이 변경을 해서 동시에 두사람이 파일의 수정작업을 하는 경우를 가정해보자.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sesame/number.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir# vi sesame/number.txt &lt;br /&gt;
 ZERO&lt;br /&gt;
 one&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 six&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sesame/number.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir# vi aladdin/number.txt &lt;br /&gt;
 zero&lt;br /&gt;
 one&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 SIX&lt;br /&gt;
&lt;br /&gt;
우선 aladdin 의 파일들을 체크인한다.&lt;br /&gt;
 root@eunviho:~/tmpdir/aladdin# cvs commit -m &amp;quot;make number six to be important&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 /home/CVSHOME/sesame/number.txt,v  &amp;amp;lt;--  number.txt&lt;br /&gt;
 new revision: 1.3; previous revision: 1.2&lt;br /&gt;
&lt;br /&gt;
그렇게 만든뒤에 sesame의 파일을 수정한 사람이 체크인을 한다고 생각해보자.&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs commit -m&amp;quot;make number zero to be emphasized&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 cvs commit: Up-to-date check failed for `number.txt&amp;#039;&lt;br /&gt;
 cvs [commit aborted]: correct above errors first!&lt;br /&gt;
상기에서 보듯이 에러를 내면서 체크인하지 못한다.&lt;br /&gt;
&lt;br /&gt;
이 경우는 동시에 수정이 일어나서 저장소의 최신버전이 반영되지 못했기 때문에 발생한 것이다.&lt;br /&gt;
우선은 다음처럼 해보자.&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs update&lt;br /&gt;
 cvs update: Updating .&lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/number.txt,v&lt;br /&gt;
 retrieving revision 1.2&lt;br /&gt;
 retrieving revision 1.3&lt;br /&gt;
 Merging differences between 1.2 and 1.3 into number.txt&lt;br /&gt;
 M number.txt&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sesame/number.txt의 내용을 확인해보자&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# vi number.txt &lt;br /&gt;
 ZERO&lt;br /&gt;
 one&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 SIX&lt;br /&gt;
상기에서 보듯이 cvs는 너무도 잘 변경된 부분을 판단해서 현재의 로컬 소스에 반영시켜준다.&lt;br /&gt;
&lt;br /&gt;
로컬에 반영이 되었으므로 &lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs commit -m&amp;quot;make number zero to be emphasized&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 /home/CVSHOME/sesame/number.txt,v  &amp;amp;lt;--  number.txt&lt;br /&gt;
 new revision: 1.4; previous revision: 1.3&lt;br /&gt;
상기와 같이 정상적인 체크인이 가능하다. 물론 aladdin 폴더의 내용도 다음번 수정시에는 이와 같은 일이 발생할 것이다.&lt;br /&gt;
&lt;br /&gt;
=== 박치기 - 변경 내용이 충돌하는 경우 ===&lt;br /&gt;
상기의 경우에는 2가지 프로그램의 바뀐 부분이 동일한 줄에 해당하지 않기 때문에 큰 문제없이 cvs가 알아서 반영을 해주었다. 그렇나 만약 변경부분이 동일한 부분이라면 어떨까?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sesame/number.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir# vi sesame/number.txt &lt;br /&gt;
 ZERO&lt;br /&gt;
 ichi&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 SIX&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;aladdin/number.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 root@eunviho:~/tmpdir# vi aladdin/number.txt &lt;br /&gt;
 ZERO&lt;br /&gt;
 uno&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 SIX&lt;br /&gt;
&lt;br /&gt;
 root@eunviho:~/tmpdir/aladdin# cvs commit -m &amp;quot;users like italian word of one&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 /home/CVSHOME/sesame/number.txt,v  &amp;amp;lt;--  number.txt&lt;br /&gt;
 new revision: 1.5; previous revision: 1.4&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs commit -m &amp;quot;must be japanese of word one&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 cvs commit: Up-to-date check failed for `number.txt&amp;#039;&lt;br /&gt;
 cvs [commit aborted]: correct above errors first!&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs update&lt;br /&gt;
 cvs update: Updating .&lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/number.txt,v&lt;br /&gt;
 retrieving revision 1.4&lt;br /&gt;
 retrieving revision 1.5&lt;br /&gt;
 Merging differences between 1.4 and 1.5 into number.txt&lt;br /&gt;
 rcsmerge: warning: conflicts during merge&lt;br /&gt;
 cvs update: conflicts found in number.txt&lt;br /&gt;
 C number.txt&lt;br /&gt;
3번재에서 알 수 있듯, 동일한 줄을 수정한 경우에는 충돌이 일어난다는 것을 알 수 있다.&lt;br /&gt;
이런경우에 rcsmerge 는 그 변경을 다음과 같이 표현한다.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sesame/number.txt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 ZERO&lt;br /&gt;
 &amp;amp;lt;&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;&amp;amp;lt;&amp;amp;lt; number.txt&lt;br /&gt;
 ichi&lt;br /&gt;
 =======&lt;br /&gt;
 uno&lt;br /&gt;
 &amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; 1.5&lt;br /&gt;
 two&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 SIX&lt;br /&gt;
이 경우 변경된 내용은 &amp;#039;&amp;#039;&amp;#039;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#039;&amp;#039;&amp;#039;의 가운데에 존재하는 내용이 충돌을 일으킨 부분이다.&lt;br /&gt;
&lt;br /&gt;
이런일이 발생한 경우에는 어떤 일이 발생했는지 기록을 우선적으로 찾아보아야한다.&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs log -r1.5 number.txt &lt;br /&gt;
 &lt;br /&gt;
 RCS file: /home/CVSHOME/sesame/number.txt,v&lt;br /&gt;
 Working file: number.txt&lt;br /&gt;
 head: 1.5&lt;br /&gt;
 branch:&lt;br /&gt;
 locks: strict&lt;br /&gt;
 access list:&lt;br /&gt;
 symbolic names:&lt;br /&gt;
         initial: 1.1.1.1&lt;br /&gt;
         sesame: 1.1.1&lt;br /&gt;
 keyword substitution: kv&lt;br /&gt;
 total revisions: 6;     selected revisions: 1&lt;br /&gt;
 description:&lt;br /&gt;
 ----------------------------&lt;br /&gt;
 revision 1.5&lt;br /&gt;
 date: 2005-08-02 13:46:44 +0000;  author: sapius;  state: Exp;  lines: +1 -1&lt;br /&gt;
 users like italian word of one&lt;br /&gt;
 =============================================================================&lt;br /&gt;
마지막 세개의 줄에는 이전에 먼저체크인 된 소스를 수정한 사람과 그와 관련된 주석, 변경된 라인의 정보가 출력된다.&lt;br /&gt;
이런 정보를 종합해서 이전 소스의 수정한 사람과 토의를 통해서 올바른 결과를 얻어낼 수 있다.&lt;br /&gt;
이 경우에는 ichi를 쓰기로 했다고 가정하자. ichi이외의 다른 부분의 나용을 모두 삭제한다. 그리고 토의 결과&lt;br /&gt;
two를 due로 쓰기로 했다고 하자&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# vi number.txt &lt;br /&gt;
 ZERO&lt;br /&gt;
 ichi&lt;br /&gt;
 due&lt;br /&gt;
 three&lt;br /&gt;
 four&lt;br /&gt;
 five&lt;br /&gt;
 SIX&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 root@eunviho:~/tmpdir/sesame# cvs commit -m &amp;quot;one is japanese, two is italian&amp;quot;&lt;br /&gt;
 cvs commit: Examining .&lt;br /&gt;
 /home/CVSHOME/sesame/number.txt,v  &amp;amp;lt;--  number.txt&lt;br /&gt;
 new revision: 1.6; previous revision: 1.5&lt;br /&gt;
&lt;br /&gt;
위와 같은 방식(느슨한 잠금)에 의해서 버전 커트롤이 가능하기 대문에 동기화로 인한 문제는 거의 발생하지 않는다.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[PragmaticVersionControlWithCVS]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>