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.0279 sec