U E D R , A S I H C RSS

Pragmatic Version Control WithCVS/CommonCVS Commands

1. Common CVS Commands

ด žฅ—„œŠ” šฐฆฌ€ cvs ดšฉํ•ด„œ ํ•˜Š” ž‘—…˜ 90ํ„ํŠธ ฐจ€ํ•˜Š” Œ€€„˜ ช… –ด ‹คฃฌ‹ค.
(ดฒˆžฅด ด …—„œ €žฅ ํŽ˜ด€ˆ˜€ งŽ€ žฅด‹ค. Œ€žต 4~50 ํŽ˜ด€  •„ด‹ค. ด •„Œ€งŒ ณดฉด cvs ‚ฌšฉํ•˜Š”ฐ ํฐ ฌดฆฌŠ” —†„ “ํ•˜‹ค.)

1.1. Checking Things Out

~cpp 
root@eunviho:~/tmp2# cvs co sesame sesame2
cvs checkout: Updating sesame
U sesame/color.txt
U sesame/number.txt
cvs checkout: Updating sesame2
U sesame2/color.txt
U sesame2/number.txt
cvs server —„œ sesame sesame2 2ฐœ˜ ชจ“ˆด‚˜ ํ•˜œ„ ชจ“ˆ„ ํ•˜‚˜ด ƒ˜ ™ํ•œ ด„˜ €—ญ ”” ‰ํ† ฆฌกœ € ธ˜ฎ

~cpp 
root@eunviho:~/tmp2# cvs co sesame2/sesame2
cvs checkout: Updating sesame2/sesame2
U sesame2/sesame2/color.txt
U sesame2/sesame2/number.txt
cvs checkout: Updating sesame2/sesame2/templates
U sesame2/sesame2/templates/test.test
 €žฅ†Œ— กดžฌํ•˜Š” ํ•˜œ„ ชจ“ˆ˜ ”” ‰ํ† ฆฌ•ˆ—„œ €„งŒ„ ฒดํฌ•„›ƒํ•œ‹ค.

-r : ํŠ •ํ•œ ฐœฐœํŒ„ ฒดํฌ•„›ƒ. „ „ฒˆํ˜ธ ํ˜€ ฆฌํ‘œกœ € •.
CVSŠ” HEAD, BASEŠ” 2ฐœ˜ ฆฌํ‘œ ž™œกœ  œณตํ•œ‹ค.
HEAD :  €žฅ†Œ—„œ €žฅ ตœ‹  „ „. Œ€€„˜ ช… –ด˜ ธฐณธด‹ค.
BASE : งˆ€ง‰œกœ ํ˜„žฌ ”” ‰ํ† ฆฌ— ฒดํฌ•„›ƒœ ฐœ •ํŒ
-D : ‚ งœ ดšฉํ•ด„œ ฒดํฌ•„›ƒ.

~cpp 
root@eunviho:~/tmp2# cvs log sesame
cvs log: Logging sesame

RCS file: /home/CVSHOME/sesame/color.txt,v
Working file: sesame/color.txt
head: 1.2
branch:
locks: strict
access list:
symbolic names:
        initial: 1.1.1.1
        sesame: 1.1.1
keyword substitution: kv
total revisions: 3;     selected revisions: 3
description:
----------------------------
revision 1.2
date: 2005-08-02 13:16:58 +0000;  author: sapius;  state: Exp;  lines: +4 -0
ยฐíยฐยดÀÌ 4ยคยกÁö »öÀ» ยดõ ยฟรธÇÔ
----------------------------
revision 1.1
date: 2005-08-02 05:50:14 +0000;  author: sapius;  state: Exp;
branches:  1.1.1;
Initial revision
----------------------------
revision 1.1.1.1
date: 2005-08-02 05:50:14 +0000;  author: sapius;  state: Exp;  lines: +0 -0
 
=============================================================================
.
.
.
root@eunviho:~/tmp2# cvs co -r 1.1 sesame
cvs checkout: Updating sesame
U sesame/color.txt
U sesame/number.txt
ํŒŒ˜ ‚ดšฉ„ ํ™•ธํ•˜ฉด checkout œ ํŒŒด 1.1„ „˜ ฒƒž„„ ํ™•ธํ•  ˆ˜ žˆ‹ค.

cvs € ธ‹ํ•˜Š” ‚ งœ˜ ํ˜•ํƒœ
ISO8601 2003-06-04
20030604
2003-06-04 20:12
2003-06-04T20:12
2003-06-04 20:12Z
2003-06-05 20:12:00-0500
E-Mail format Mon Jun 9 17:12:56 CDT 2003
Mon, Jun 9 17:12:56 2003
Jun 9 17:12:56 2003
June 9, 2003
Relative 1 day ago
27 minutes ago
last monday
yesterday
third week ago

1.2. Keeping Up To Date

‹คˆ˜˜ ํ”„กœทธž˜จธ“คด ํ”„กœ ํŠธ „ํ–‰ํ•˜Š” ƒํ™ฉํ•˜—„œŠ” ‚ด€ ํ”„กœทธžจ„ ‹ ํ•˜ณ  žˆŠ” ™•ˆ ‹คฅธ ํ”„กœทธž˜จธ“ค„ ํ”„กœทธžจ˜ ‹ „ ํ•  €Šฅ„ด Œ€‹จํžˆ †’‹ค. งŒ•ฝ ‹ ธฐ€ ธธ–ด„‹คฉด ํ”„กœทธž˜จธ€ ฒ˜ฆฌํ•ด•ํ•  merge ž‘—…ด ƒ‹ํ•  ฒƒด‹ค. •Œฌธ— ธฐ œกœ ํ”„กœ ํŠธ checkout ํ•˜Š” ฒƒด ค‘š”ํ•˜‹ค.

cvs update -d files or directory : ํ˜„žฌ ”” ‰ํ† ฆฌ— กดžฌํ•˜Š” ชจ“  ํŒŒ ํด”  €žฅ†Œ˜ ตœ‹ „ „œกœ ฒดํฌ•„›ƒ. -d ˜ต…˜€ ถ”€œ ”” ‰ํ† ฆฌ€ กดžฌํ•˜Š” ฒฝšฐ— cvs€ ํ˜„žฌ ํด”— ž™œกœ ํด” งŒ“ค–ด„œ ฒดํฌ•„›ƒ ‹œํ‚จ‹ค.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs update -d template
cvs update: Updating template
U template/file1.java
root@eunviho:~/tmpdir/sesame# cvs update
cvs update: Updating .
U number.txt
cvs update: Updating template
update „ค‘—Š” €ฒฝœ ‚ฌํ•ญ— Œ€ํ•œ ํŠด‚ฌํ•ญ˜  •ณด€ ฐ™ด ถœ ฅœ‹ค.
‹คŒ€ ทธŸฌํ•œ ˜ˆฌธด‹ค.
~cpp 
StarterKit> cvs update
? SourceCode/tmpdoc.ilg
? SourceCode/tmpdoc.toc
cvs server: Updating .
RCS file: /home/CVSROOT/PP/doc/StarterKit/pragprog.sty,v
retrieving revision 1.16
retrieving revision 1.17
Merging differences between 1.16 and 1.17 into pragprog.sty
M pragprog.sty
cvs server: Updating SourceCode
A SourceCode/CommonCommands.tip
M SourceCode/HowTo.tip
A SourceCode/Releases.tip
cvs server: Updating SourceCode/images
cvs server: Updating UnitTest
P UnitTest/DesignIssues.tip
U UnitTest/InAProject.tip
P UnitTest/Introduction.tip
cvs server: Updating UnitTest/code
U UnitTest/code/Age.java
U UnitTest/code/TestMyStack.java
U UnitTest/code/testdata.txt
cvs server: Updating UnitTest/code/rev1
cvs server: Updating UnitTest/code/rev2
cvs server: Updating UnitTest/code/rev3
cvs server: Updating util
? : ž‘—…ณต„—Š” กดžฌํ•˜‚˜ CVS€ •Œ€ชปํ•˜Š” ํŒŒ
A : €—ญ—„œ ถ”€˜—ˆœ‚˜ •„ง  €žฅ†Œ— ฒดํฌธ •ˆจ
M : €—ญ—„œ ˆ˜ •œ ํŒŒ
U,P :  €žฅ†Œ— กดžฌํ•˜Š” „ „ด €—ญ ณต„˜ „ „ณด‹ค ตœ‹ ด–ด„œ ‹ จ
C : ํŒŒ˜ €ํ•ฉค‘— ถฉŒ„ œํ‚ด


~cpp 
cvs ˜ ™ž‘ฐฉ‹˜ ดํ•ด
cvs Š” ‹จ ช… ด •„‹ˆ —ฌŸฌ ํ•˜œ„ ‹œŠคํ…œ˜ ง‘ํ•ฉฒดกœ ดํ•ดํ•˜Š” ฒƒด ํŽธํ•˜‹ค.
˜ˆ “ค–ด„œ

cvs -q -d /home/CVSHOME checkout -d temp
    -- ----------------          -------
    |          |                     |
quiet mode repository      checkout destination

œ„™€ ฐ™ด ™ํ•œ ˜ต…˜ด€งŒ œ„˜— ”ฐ„œ ทธ ˜ธํ•˜Š” ฐ”€ ‹คฅธ ฒฐ€ ‚˜˜จ‹ค.

1.3. Adding Files and Directories

cvs add : ํŒŒด‚˜ ”” ‰ํ† ฆฌ  €žฅ†Œ— ถ”€ํ•œ‹ค.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs add template2
Directory /home/CVSHOME/sesame/template2 added to the repository

root@eunviho:~/tmpdir/sesame# cd template2/

root@eunviho:~/tmpdir/sesame/template2# cvs add test.txt  
cvs add: scheduling file `test.txt' for addition
cvs add: use `cvs commit' to add this file permanently

root@eunviho:~/tmpdir/sesame/template2# cvs commit -m "new file added"
cvs commit: Examining .
/home/CVSHOME/sesame/template2/test.txt,v  <--  test.txt
initial revision: 1.1

1.3.1. CVS and binary files

CVSŠ” ํ”„กœทธžจ †ŒŠค ฝ”“œ, XML “ ํ…ŠคํŠธ ํŒŒ„ œ„กœํ•ด„œ „„˜—ˆ‹ค.
  • ฐ”€ €„งŒ„  €žฅํ•˜ธฐ •Œฌธ—  „ฒด ฆฌ„ „œ †ŒŠค ‹ค €€ฉด„œ„ šฉŸ‰ด  ˆ•ฝ
  • œ ‹‰Šค, œˆ„šฐ˜ „ ตฌ„ฌธž ตฌ„ํ•œ‹ค.
  • ํŠ • ํ‚ค›Œ“œ Œ€ฒดํ•˜Š” ฐฉฒ•œกœ ํŒŒ— „„ ‹ฌ•„€‹ค. („ถ”ฒœ)

ํ•˜€งŒ ฐ”ด„ˆฆฌ˜ ฒฝšฐ—Š” ฌธ œ€ ฐœƒํ•œ‹ค.
  • ฐ”ด„ˆฆฌ Œ€ƒœกœŠ” ™ž‘
  • „ฐ”ฟˆด —†Š” ฐ”ด„ˆฆฌ—„œ งŒ•ฝ œˆ„šฐ‹˜ ฐ”ด„ˆฆฌ €„„ œ ‹‰Šค ‹œกœ ฐ”‹คฉด ฐ”ด„ˆฆฌ€ งˆ ฒƒด‹ค.
  • ฐ”ด„ˆฆฌ ํŒŒ— CVS ํ‚ค›Œ“œ€ “ค–ดžˆ‹คฉด ดฒƒด ˜ํ™˜˜–ด„œ ฌธ œ€ ฐœƒํ•˜ฒŒ œ‹ค.

cvs add -kb File : € •œ ํŒŒ— Œ€ํ•ด„œŠ” ฐœ •ํŒ งˆ”” ํŒŒ˜  „ฒด  €žฅํ•˜ณ  ธฐํƒ€ ฒ˜ฆฌ ํ•˜€ •ŠŠ”‹ค.

งŒ•ฝ ฐ”ด„ˆฆฌ ํŒŒ„ -kb˜ต…˜„ € •Š€ ƒํƒœ—„œ add ‹œ‹คฉด ด ฐ”พธŠ” ฐฉฒ•„ กดžฌํ•œ‹ค.

งˆ•…ํ•œ งˆด„ˆฆฌ€ —†–ด„œ …˜ ‚ดšฉ„ ดšฉ
~cpp 
work> cvs add DataFormat.doc #<-- forgot the -kb option
cvs add: scheduling file โ€˜DataFormat.docโ€™ for addition
cvs add: use โ€™cvs commitโ€™ to add this file permanently

work> mv DataFormat.doc Temp.doc
work> cvs remove DataFormat.doc
cvs remove: removed โ€˜DataFormat.docโ€™

work> mv Temp.doc DataFormat.doc
work> cvs add -kb DataFormat.doc #<-- use the option
cvs add: scheduling file โ€˜DataFormat.docโ€™ for addition
cvs add: use โ€™cvs commitโ€™ to add this file permanently

work> cvs commit -m "Add new data format document"

œ„™€Š” ‹คฅดฒŒ -kb„ •„ ํ•˜€ •Š€ ƒํƒœ—„œ checkout„ ดธ ํ•œ ƒํƒœฉด
‹คŒ ฐ™€  •„ ํ†ตํ•ด„œ ณตตฌ€ €Šฅํ•˜‹ค.
~cpp 
work> # reset the flag in the repository
work> cvs admin -kb DataFormat.doc
work> # then reset the flags in our workspace
work> cvs update -A DataFormat.doc
work> # copy a known good copy over this file
work> cp ?/docs/DataFormat.doc DataFormat.doc
work> # and save this back in the repository
work> cvs commit -m "Reset -kb flag"

note) ฐ”ด„ˆฆฌ ž ‚ฌšฉํ•œ‹คฉด cvswrappers — Œ€ํ•ด„œ •Œ•„ณดž.
BOOK …˜ 76ํŽ˜ด€— กดžฌํ•œ‹ค.

1.4. Ignoring Certain Files

ฐœฐœ„ ํ•˜Š” „ค‘—Š” —ฌŸฌฐœ˜ ค‘„ ‹จ„˜ ํŒŒ“ค(.obj, .class ““)ด ƒ„œ‹ค. ดŸฐ ํŒŒ€ ตณ€ CVS  €žฅ†Œ— ณด€ํ•˜Š” ฒƒด •„‹ˆ กœปฌ—  €žฅํ•ด ‘ณ  ‚ฌšฉž€ ํ•„š”ํ•  •Œงˆ‹ค ƒˆกœ ƒ„‹œํ‚คŠ” ฒƒด ˜ณ€ ด‹ค. ‹คํ–‰ํžˆ cvs Š” ดŸฌํ•œ „ „ •ํ•˜Š” ฒƒด €Šฅํ•˜‹ค.
.cvsignore file
~cpp 
dummy.java
*.class
*.log
*.obj
กœปฌ ž‘—…ณต„—  €žฅํ•ด‘ฉด  €žฅœ .cvsignore ธฐฐ˜ํ•ด„œ cvsŠ” ทธŸฐ ํŒŒ„ ฌด‹œํ•˜ฒŒœ‹ค.
ด ‡ฒŒ  €žฅœ .cvsignore  €žฅ†Œ— ˜ฌ ค‘ฉด ทธ  €žฅ†Œ ฐฉฌธํ•˜Š” ชจ“  ‚ฌšฉž“ค„ ™ํ•œ ฌด‹œ „ •ํ•˜—„œ ž‘—…ํ•˜Š” ฒƒด €Šฅํ•˜‹ค.
~cpp 
root@eunviho:~/tmpdir/sesame#cvs add .cvsignore
root@eunviho:~/tmpdir/sesame#cvs commit -m"dummy write. ignore class, log, obj" .cvsignore

1.5. Renaming Files

cvs—„œ ํŒŒ, ”” ‰ํ† ฆฌ˜ ด„„ ฐ”พธŠ” ํŠ„ํ•œ ˜ต…˜€ —†‹ค.
ฐฉฒ•€ ‹จ€ กœปฌ ณต„˜ ํŒŒด„„ ฐ”พธณ   €žฅ†Œ‚ด˜ ธฐกด˜ ํŒŒ“ค„ ‚ญ œํ•œ’ค กœปฌณต„˜ ด„ด ฐ”€ ํŒŒ“ค„  €žฅ†Œ— ถ”€ํ•˜Š” ฐฉฒ•ฟด‹ค.
~cpp 
root@eunviho:~/tmp/sesame# mv color.txt color_renamed.txt
root@eunviho:~/tmp/sesame# cvs remove color.txt
cvs remove: scheduling `color.txt' for removal
cvs remove: use `cvs commit' to remove this file permanently
root@eunviho:~/tmp/sesame# cvs add color_renamed.txt 
cvs add: scheduling file `color_renamed.txt' for addition
cvs add: use `cvs commit' to add this file permanently
root@eunviho:~/tmp/sesame# cvs commit -m "color.txt renamed"
cvs commit: Examining .
cvs commit: Examining template
cvs commit: Examining template2
/home/CVSHOME/sesame/color.txt,v  <--  color.txt
new revision: delete; previous revision: 1.2
/home/CVSHOME/sesame/color_renamed.txt,v  <--  color_renamed.txt
initial revision: 1.1
ด ‡ฒŒ €ฆฌ ํ•˜ฒŒ˜ฉด ›ž˜ กดžฌํ–ˆ˜ color.txtŠ” ํŒŒ— กดžฌํ•˜Š” ธฐกด˜ ธฐก“คด ‚ญ œ˜–ด„œ ทธ ํŒŒ˜ ฐํŒŒ„ color_rename.txt˜ กœทธกœ ดšฉํ•˜Š” ฒƒด ถˆ€ํ•˜‹ค. ธฐกด ”ฐกœ ณด€˜ธฐ •Œฌธด‹ค.
~cpp 
root@eunviho:~/tmp/sesame# cvs status color.txt
===================================================================
File: no file color.txt         Status: Up-to-date

   Working revision:    No entry for color.txt
   Repository revision: 1.3     /home/CVSHOME/sesame/Attic/color.txt,v
œ„—„œ ณด“ color_renamed.txtŠ” ํŒŒ˜ „ „ด 1.1ธ ฒƒ— ฐ˜ํ•ด„œ color.txt€ 1.3„ „ž„„ ํ™•ธํ•  ˆ˜ žˆ‹ค.

1.6. Renaming a Directory

1.7. Seeing Whatโ€™s Changed

1.8. Handling Merge Conflicts

1.9. Committing Changes

1.10. Examining Change History

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:01
Processing time 0.0612 sec