PragmaticVersionControlWithCVS/AccessingTheRepository | PragmaticVersionControlWithCVS/UsingTagsAndBranches |
Contents
|
1. Common CVS Commands ¶
์ด ์ฅ์์๋ ์ฐ๋ฆฌ๊ฐ cvs๋ฅผ ์ด์ฉํด์ ํ๋ ์์
์ 90ํผ์ผํธ๋ฅผ ์ฐจ์งํ๋ ๋๋ถ๋ถ์ ๋ช
๋ น์ด๋ฅผ ๋ค๋ฃฌ๋ค.
(์ด๋ฒ์ฅ์ด ์ด ์ฑ ์์ ๊ฐ์ฅ ํ์ด์ง์๊ฐ ๋ง์ ์ฅ์ด๋ค. ๋๋ต 4~50 ํ์ด์ง ์ ๋์ด๋ค. ์ด์ ๋๊น์ง๋ง ๋ณด๋ฉด cvs ์ฌ์ฉํ๋๋ฐ ํฐ ๋ฌด๋ฆฌ๋ ์์ ๋ฏํ๋ค.)
(์ด๋ฒ์ฅ์ด ์ด ์ฑ ์์ ๊ฐ์ฅ ํ์ด์ง์๊ฐ ๋ง์ ์ฅ์ด๋ค. ๋๋ต 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๊ฐ์ ๊ผฌ๋ฆฌํ๋ฅผ ์๋์ผ๋ก ์ ๊ณตํ๋ค.
-D : ๋ ์ง๋ฅผ ์ด์ฉํด์ ์ฒดํฌ์์. HEAD : ์ ์ฅ์์์ ๊ฐ์ฅ ์ต์ ๋ฒ์ . ๋๋ถ๋ถ์ ๋ช
๋ น์ด์ ๊ธฐ๋ณธ์ด๋ค.
BASE : ๋ง์ง๋ง์ผ๋ก ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ฒดํฌ์์๋ ๊ฐ์ ํ
BASE : ๋ง์ง๋ง์ผ๋ก ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์ฒดํฌ์์๋ ๊ฐ์ ํ
~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๊ฐ ํ์ฌ ํด๋์ ์๋์ผ๋ก ํด๋๋ฅผ ๋ง๋ค์ด์ ์ฒดํฌ์์ ์ํจ๋ค.
๋ค์์ ๊ทธ๋ฌํ ์๋ฌธ์ด๋ค.
A : ์ง์ญ์์ ์ถ๊ฐ๋์์ผ๋ ์์ง ์ ์ฅ์์ ์ฒดํฌ์ธ ์๋จ
M : ์ง์ญ์์ ์์ ๋ ํ์ผ
U,P : ์ ์ฅ์์ ์กด์ฌํ๋ ๋ฒ์ ์ด ์ง์ญ ๊ณต๊ฐ์ ๋ฒ์ ๋ณด๋ค ์ต์ ์ด์ด์ ๊ฐฑ์ ๋จ
C : ํ์ผ์ ๋ณํฉ์ค์ ์ถฉ๋์ ์ผ์ผํด
~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 templateupdate ๋์ค์๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ ๋ํ ํน์ด์ฌํญ์ ์ ๋ณด๊ฐ ๊ฐ์ด ์ถ๋ ฅ๋๋ค.
๋ค์์ ๊ทธ๋ฌํ ์๋ฌธ์ด๋ค.
~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 ํค์๋๊ฐ ๋ค์ด์๋ค๋ฉด ์ด๊ฒ์ด ์นํ๋์ด์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๋ง์ฝ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ -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ํ์ด์ง์ ์กด์ฌํ๋ค.
BOOK ์ฑ ์ 76ํ์ด์ง์ ์กด์ฌํ๋ค.
1.4. Ignoring Certain Files ¶
๊ฐ๋ฐ์ ํ๋ ๋์ค์๋ ์ฌ๋ฌ๊ฐ์ ์ค๊ฐ ๋จ๊ณ์ ํ์ผ๋ค(.obj, .class ๋ฑ๋ฑ)์ด ์์ฑ๋๋ค. ์ด๋ฐ ํ์ผ์ ๊ตณ์ง CVS ์ ์ฅ์์ ๋ณด๊ดํ๋ ๊ฒ์ด ์๋๋ผ ๋ก์ปฌ์ ์ ์ฅํด ๋๊ณ ์ฌ์ฉ์๊ฐ ํ์ํ ๋๋ง๋ค ์๋ก ์์ฑ์ํค๋ ๊ฒ์ด ์ณ์ ์ผ์ด๋ค. ๋คํํ cvs ๋ ์ด๋ฌํ ์ผ์ ์ค์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
.cvsignore file
์ด๋ ๊ฒ ์ ์ฅ๋ .cvsignore ๋ฅผ ์ ์ฅ์์ ์ฌ๋ ค๋๋ฉด ๊ทธ ์ ์ฅ์๋ฅผ ๋ฐฉ๋ฌธํ๋ ๋ชจ๋ ์ฌ์ฉ์๋ค๋ ๋์ผํ ๋ฌด์ ์ค์ ํ์์ ์์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
.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๋ฒ์ ์์ ํ์ธํ ์ ์๋ค.