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