U E D R , A S I H C RSS

Pragmatic Version Control WithCVS/Getting Started

1. Getting Started

1.1. Installing CVS

CVSμ„œλ²„ μ„μΉ˜λŠ” μ•Œμ•„μ„œ μž˜ν•΄λΌ. -_-; λ¦¬λˆ…μŠ€μ—μ„œλŠ” νŒ¨ν‚€μ§€λ‘œ μ„μΉ˜ν•˜λ©΄ 되고, μœˆλ„μš°μ—μ„œλŠ” μ•Œμ•„μ„œ λ°›μ•„μ„œ μ„μΉ˜ν•˜λ©΄ λœλ‹€. μ΄λΈ μ„œλ²„κ°€ 있으면 더 μ’‹λ‹€. λ‚΄ κ²½μš°μ—λŠ” λ°λΉ„μ•ˆ λ¦¬λˆ…μŠ€λΌ μ‚¬μš©ν•˜λŠ” κ΄€κ³„λ‘œ apt-get install cvs둜 κ°„λ‹¨νžˆ μ„μΉ˜λΌ λλƒˆλ‹€.

1.2. Creating a Repository

ν˜„μž¬ μš°λ¦¬λŠ” ν…ŒμŠ€νŠΈμš©μœΌλ‘œ CVSλΌ μ“°κΈ° λ•Œλ¬Έμ— CVS의 μ €μž₯μ†ŒλΌ μž„μ‹œλ‘œ λ§Œλ“€ ν•„μš”κ°€ μžˆλ‹€.
CVSμ €μž₯μ†ŒλΌ λ§Œλ“œλŠ” λͺ…령은 λ‹€μŒκ³Ό κ°™λ‹€.
~cpp 
Unix: cvs -d ~/sandbox init                     // λ‚˜μ˜ κ²½μš°μ—λŠ” /home/CVSHOME 둜 μ§€μ •ν•˜μ˜€λ‹€.
Wind: cvs -d d:sandbox init

1.3. CVS Commands

CVSν΄λΌμ΄μ–ΈνŠΈλŠ” ν˜„μž¬ μš°λ¦¬κ°€ μ“°λŠ” μ»€λ§¨λ“œ ν˜•νƒœμ˜ ν΄λΌμ΄μ–ΈνŠΈλ„ μžˆμ§€λ§Œ, GUIν˜•νƒœμ˜ TortoiseCVS, WinCVS등도 μžˆλ‹€. (sourceforge.netμ—μ„œ 확인) λ˜ν•œ IDE μžμ²΄κ°€ CVS ν΄λΌμ΄μ–ΈνŠΈμ˜ κΈ°λŠ₯을 ν•˜λŠ” 것듀도 μžˆλ‹€. (ex. eclipse, dev-cpp)

1.4. Creating a Simple Project

κ°„λ‹¨ν•œ ν”„λ‘œμ νŠΈλΌ CVS상에 λ§Œλ“€μž. μ˜ˆμ œλŠ” μ†ŒμŠ€λ‘œ λ³΄μ΄μ§€λŠ” μ•Šμ§€λ§Œ 크게 상관은 μ—†λ‹€.

color.text
~cpp 
black
brown
red
orange
yellow
green

number.text
~cpp 
zero
one
two
three
four

이 파일이 μ €μž₯된 ν΄λ”μ—μ„œ λ‹€μŒμ˜ λͺ…λ Ήμ–΄λΌ μ‹€ν–‰μ‹œν‚¨λ‹€.
~cpp 
tmpdir#cvs -d /home/CVSHOME/ import -m " " sesame sesame initial
importλŠ” ν”„λ‘œμ νŠΈλΌ μ €μž₯μ†Œμ— 넣을 κ²ƒμ΄λΌλŠ” νŒŒλΌλ©”ν„°μ΄λ‹€.
-m " " ν”„λ‘œμ νŠΈλΌ μž„ν¬νŠΈν• λ•Œ 기둝할 λ©”μ‹œμ§€μž„. (μ„œλ“œνŒŒν‹° μ½”λ“œλΌ μ‚¬μš©ν•˜λŠ” κ²½μš°μ— μœ λ¦¬ν•˜λ‹€.)
sesame μ €μž₯μ†Œμ•ˆμ—μ„œ ν”„λ‘œμ νŠΈμ˜ 이름
λ§ˆμ§€λ§‰ 2개의 νŒŒλΌλ©”ν„°(sesame initial) tag이닀.

μ΄λŸ°κ³Όμ •μ„ 마치면 CVS 루트 디렉토리에 ν”„λ‘œμ νŠΈκ°€ μ •μƒμ μœΌλ‘œ μƒμ„±λ˜μ—ˆλŠ”μ§€ ls λͺ…λ ΉμœΌλ‘œ ν™•μΈν•΄λ³΄μž.

1.5. Starting to Work With a Project

이제 μ €μž₯μ†Œμ— μ €μž₯된 νŒŒμΌμ„ 둜컬 μž‘μ—…κ³΅κ°„μ— μ²΄ν¬μ•„μ›ƒν•΄λ³΄μž. 이λΌμœ„ν•΄μ„œ 일단 ~/work λΌλŠ” λ””λ ‰ν† λ¦¬λΌ κ΅¬μ„±ν•˜μž.
~cpp 
#mkdir ~/work
#cd ~/work
#cvs -d /home/CVSHOME co sesame
cvs checkout: Updating sesame
U sesame/color.txt
U sesame/number.txt
~/workλΌ μ‘°μ‚¬ν•΄μ„œ ~/work/sesame 디렉토리에 μ •μƒμ μœΌλ‘œ μ €μž₯μ†Œμ˜ 파일이 μ²΄ν¬μ•„μ›ƒλ˜μ—ˆλ‹€λ©΄ 원본 νŒŒμΌμ„ μ‚­μ œν•œλ‹€.

1.6. Making Changes

color.txt 의 λ³€κ²½
~cpp 
black
brown
red
orange
yellow
blue
purple
gray
white
color.txtλΌ μœ„μ™€ 같이 λ³€κ²½ν•œλ’€μ— ν”„λ‘œν”„νŠΈμ—μ„œ λ‹€μŒμ˜ λͺ…λ Ήμ–΄λΌ μ‚¬μš©ν•΄λ³΄μž.


~cpp 
root@eunviho:~/tmpdir/sesame# cvs status color.txt 
===================================================================
File: color.txt         Status: Locally Modified

   Working revision:    1.1.1.1 Tue Aug  2 05:50:14 2005
   Repository revision: 1.1.1.1 /home/CVSHOME/sesame/color.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
μƒκΈ°μ˜ status μ˜΅μ…˜μœΌλ‘œ 확인이 κ°€λŠ₯ν•˜λ“이 cvsλŠ” μžλ™μœΌλ‘œ ν˜„μž¬μ˜ 파일이 둜컬 μž‘μ—…κ³΅κ°„μ—μ„œ μˆ˜μ •λ˜μ—ˆλ‹€λŠ” 사싀을 νŒλ‹¨ν•  수 μžˆλ‹€.


~cpp 
root@eunviho:~/tmpdir/sesame# cvs diff color.txt 
Index: color.txt
===================================================================
RCS file: /home/CVSHOME/sesame/color.txt,v
retrieving revision 1.1.1.1
diff -r1.1.1.1 color.txt
6a7,10
> blue
> purple
> gray
> white
λ˜ν•œ diff μ˜΅μ…˜μ„ μ΄μš©ν•΄μ„œ λ³€κ²½λœ 파일이 μ–΄λ–€ 변경이 μžˆμ—ˆλŠ”μ§€λΌ μ‘°μ‚¬ν•˜μ—¬ λ³΄μ—¬μ£ΌλŠ” μ˜΅μ…˜λ„ μ‘΄μž¬ν•œλ‹€.


~cpp 
root@eunviho:~/tmpdir/sesame# cvs diff --side-by-side color.txt 
Index: color.txt
===================================================================
RCS file: /home/CVSHOME/sesame/color.txt,v
retrieving revision 1.1.1.1
diff --side-by-side -r1.1.1.1 color.txt
black                                                           black
brown                                                           brown
red                                                             red
orange                                                          orange
yellow                                                          yellow
green                                                           green
                                                              > blue
                                                              > purple
                                                              > gray
                                                              > white
--side-by-side μ˜΅μ…˜μ„ μ΄μš©ν•˜λ©΄ 지역 버전과 μ €μž₯μ†Œλ²„μ „μ„ ν•œν™”λ©΄μ— 좜λ ₯ν•˜μ—¬μ„œ λΉ„κ΅λΌ ν•  수 μžˆλ‹€.

1.7. Updating the Repository

νŒŒμΌμ„ μˆ˜μ •, UnitTestλΌ κ±°μΉ˜λ©΄ μˆ˜μ •ν•œ λ‚΄μš©μ„ μ €μž₯μ†Œμ— μ €μž₯ν•΄μ•Όν•  것이닀.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs commit -m "고객이 4가지 색을 더 원함"
cvs commit: Examining .
/home/CVSHOME/sesame/color.txt,v  <--  color.txt
new revision: 1.2; previous revision: 1.1
λ³€κ²½λœ ν”„λ‘œμ νŠΈλŠ” commit μ˜΅μ…˜μœΌλ‘œ μ²΄ν¬μΈμ‹œν‚€λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. μ΄λ•Œ -m μ˜΅μ…˜μœΌλ‘œ λ³€κ²½λœ 사항에 λŒ€ν•œ 주석을 λ‹€λŠ” 것이 κ°€λŠ₯ν•˜λ©°, λ§Œμ•½ 주석을 달지 μ•Šμ„ κ²½μš°μ—λŠ” vi 에디터가 μ‹€ν–‰λ˜λ©΄μ„œ 주석을 μ €μž₯ν•  수 μžˆλŠ” 파일이 μ—΄λ¦°λ‹€.
(직접해보면 μ•ˆλ‹€. -_-;)


~cpp 
root@eunviho:~/tmpdir/sesame# cvs status color.txt 
===================================================================
File: color.txt         Status: Up-to-date

   Working revision:    1.2     Tue Aug  2 13:08:47 2005
   Repository revision: 1.2     /home/CVSHOME/sesame/color.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
commit 을 ν†΅ν•΄μ„œ μ €μž₯μ†ŒλΌ μ²΄ν¬μΈν•˜κ³ λ‚œλ’€ status둜 λ³€κ²½λœ 파일의 μ •λ³΄λΌ μΆœλ ₯ν•˜λ©΄ κ·Έ κ²°κ³Όκ°€ 반영된 것을 μ•Œ 수 μžˆλ‹€.


~cpp 
root@eunviho:~/tmpdir/sesame# cvs log color.txt 

RCS file: /home/CVSHOME/sesame/color.txt,v
Working file: 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
 
=============================================================================
logμ˜΅μ…˜μ„ ν†΅ν•΄μ„œ νŠΉμ •νŒŒμΌμ΄ μ–΄λ–€ μ‹μœΌλ‘œ 변경이 λ˜μ—ˆλŠ”μ§€λΌ μ•Œ 수 μžˆλ‹€.

1.8. When Worlds Collide

이제 ν•œκ°œμ˜ νŒŒμΌμ„ λ‘μ‚¬λžŒμ΄ λ™μ‹œμ— λ³€κ²½ν• λ•Œ μƒκΈ°λŠ” μƒν™©μ—λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³΄μž.
μ΄λŸ¬ν•œ κ²½μš°λΌ μ‚΄ν”ΌκΈ° μœ„ν•΄μ„œ 기쑴의 sesame μ΄λΌλŠ” λ””λ ‰ν† λ¦¬μ΄μ™Έμ˜ 곡간에 μ €μž₯μ†Œμ— μ €μž₯된 sesame을 λ°›μ•„μ•Όν•œλ‹€.
~cpp 
root@eunviho:~/tmpdir# cvs -d /home/CVSHOME/ co -d aladdin sesame
cvs checkout: Updating aladdin
U aladdin/color.txt
U aladdin/number.txt

μ΄λ ‡κ²Œν•˜λ©΄ 디렉토리에
~cpp 
root@eunviho:~/tmpdir# ll
total 8
drwxr-xr-x  3 root root 4096 2005-08-02 22:23 aladdin
drwxr-xr-x  3 root root 4096 2005-08-02 22:08 sesame
κ³Ό 같이 λ™μΌν•œ μ €μž₯μ†Œμ˜ ν”„λ‘œμ νŠΈκ°€ μ„œλ‘œλ‹€λ₯Έ λ””λ ‰ν† λ¦¬μ˜ 둜컬 μž‘μ—…κ³΅κ°„μ„ ν• λ‹Ήλ°›μ•˜λ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

sesame/number.txt
~cpp 
root@eunviho:~/tmpdir# vi sesame/number.txt
zero
one
two
three
four
five
six
상기와 같이 λ³€κ²½ν•œ νŒŒμΌμ„ 체크인 μ‹œν‚¨λ‹€.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs commit -m "μˆ«μžκ°€ 더 ν•„μš”ν–ˆλ‹€."
cvs commit: Examining .
/home/CVSHOME/sesame/number.txt,v  <--  number.txt
new revision: 1.2; previous revision: 1.1
sesame 폴더에 받아진 νŒŒμΌμ„ λ³€κ²½ν•˜μ—¬ 체크인 μ‹œμΌ°κΈ° λ•Œλ¬Έμ— 이제 aladdin 폴더에 μ‘΄μž¬ν•˜λŠ” νŒŒμΌλ“€μ€ 더이상 μ΅œμ‹  버전이 μ•„λ‹ˆλ‹€.


~cpp 
root@eunviho:~/tmpdir/aladdin# cvs status number.txt 
===================================================================
File: number.txt        Status: Needs Patch

   Working revision:    1.1.1.1 Tue Aug  2 05:50:14 2005
   Repository revision: 1.2     /home/CVSHOME/sesame/number.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
상기와 같이 확인을 해보면 aladdin/number.txt λŠ” 체크아웃을 ν†΅ν•΄μ„œ μ €μž₯μ†Œμ˜ μ†ŒμŠ€μ™€ λ™κΈ°ν™”λΌ ν•΄μ£Όμ–΄μ•Όν•œλ‹€λŠ” μƒνƒœλΌ λ‚˜νƒ€λ‚΄κ³  μžˆλ‹€.

μ΅œμ‹  버전이 μ•„λ‹Œ 둜컬 μž‘μ—…κ³΅κ°„μ˜ λ‚΄μš©κ³Ό μ €μž₯μ†Œμ˜ λ‚΄μš©μ„ λΉ„κ΅ν•œλ‹€
~cpp 
root@eunviho:~/tmpdir/aladdin# cvs diff -rHEAD number.txt     
Index: number.txt
===================================================================
RCS file: /home/CVSHOME/sesame/number.txt,v
retrieving revision 1.2
retrieving revision 1.1.1.1
diff -r1.2 -r1.1.1.1
6,7d5
< five
< six
-rHEADλŠ” ν˜„μž¬μ˜ branches에 μ‘΄μž¬ν•˜λŠ” κ°€μž₯ μ΅œμ‹ λ²„μ „μ˜ 것과 λΉ„κ΅ν•˜λŠ” μ˜΅μ…˜μ΄λ‹€. λ§Œμ•½ 이 μ˜΅μ…˜μ΄ μ—†λ‹€λ©΄ cvsλŠ” ν˜„μž¬ 받아진 지역 버전과 λ™μΌν•œ μ €μž₯μ†Œμƒμ— 기둝된 μ†ŒμŠ€μ™€ λΉ„κ΅λΌ ν•œλ‹€.
~cpp 
root@eunviho:~/tmpdir/aladdin# cvs diff number.txt 
μ €μž₯μ†Œμƒμ˜ aladdin κ³Ό λ™μΌν•œ λ²„μ „μ˜ number.txtλŠ” μ „ν˜€ λ³€ν™”κ°€ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— 좜λ ₯λ˜λŠ” λ‚΄μš©μ΄ μ—†λ‹€.

μ €μž₯μ†Œμ˜ μ΅œμ‹ λ²„μ „μ˜ λ‚΄μš©μ„ λ‘œμ»¬μ— λ°˜μ˜ν•˜κΈ°
~cpp 
root@eunviho:~/tmpdir/aladdin# cvs update
cvs update: Updating .
U number.txt
λ°˜μ˜λ˜λŠ” νŒŒμΌμ€ μ˜€λ‘œμ§€ μ΅œμ‹ λ²„μ „μ˜ 파일이 μ €μž₯μ†Œμ— μ‘΄μž¬ν•  κ²½μš°λ§Œμ΄λ‹€. 그렇지 μ•ŠμœΌλ©΄ νŒŒμΌμ€ λ‹€μ‹œ 받을 ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— 받지 μ•ŠλŠ”λ‹€.

1.9. Conflict Resolution

λ‹€μŒκ³Ό 같이 변경을 ν•΄μ„œ λ™μ‹œμ— λ‘μ‚¬λžŒμ΄ 파일의 μˆ˜μ •μž‘μ—…μ„ ν•˜λŠ” κ²½μš°λΌ κ°€μ •ν•΄λ³΄μž.

sesame/number.txt
~cpp 
root@eunviho:~/tmpdir# vi sesame/number.txt 
ZERO
one
two
three
four
five
six

sesame/number.txt
~cpp 
root@eunviho:~/tmpdir# vi aladdin/number.txt 
zero
one
two
three
four
five
SIX

μš°μ„  aladdin 의 νŒŒμΌλ“€μ„ μ²΄ν¬μΈν•œλ‹€.
~cpp 
root@eunviho:~/tmpdir/aladdin# cvs commit -m "make number six to be important"
cvs commit: Examining .
/home/CVSHOME/sesame/number.txt,v  <--  number.txt
new revision: 1.3; previous revision: 1.2

κ·Έλ ‡κ²Œ λ§Œλ“ λ’€μ— sesame의 νŒŒμΌμ„ μˆ˜μ •ν•œ μ‚¬λžŒμ΄ 체크인을 ν•œλ‹€κ³  μƒκ°ν•΄λ³΄μž.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs commit -m"make number zero to be emphasized"
cvs commit: Examining .
cvs commit: Up-to-date check failed for `number.txt'
cvs [commit aborted]: correct above errors first!
μƒκΈ°μ—μ„œ 보λ“이 μ—λŸ¬λΌ λ‚΄λ©΄μ„œ μ²΄ν¬μΈν•˜μ§€ λͺ»ν•œλ‹€.

이 κ²½μš°λŠ” λ™μ‹œμ— μˆ˜μ •μ΄ μΌμ–΄λ‚˜μ„œ μ €μž₯μ†Œμ˜ μ΅œμ‹ λ²„μ „μ΄ λ°˜μ˜λ˜μ§€ λͺ»ν–ˆκΈ° λ•Œλ¬Έμ— λ°œμƒν•œ 것이닀.
μš°μ„ μ€ λ‹€μŒμ²˜λŸΌ ν•΄λ³΄μž.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs update
cvs update: Updating .
RCS file: /home/CVSHOME/sesame/number.txt,v
retrieving revision 1.2
retrieving revision 1.3
Merging differences between 1.2 and 1.3 into number.txt
M number.txt

sesame/number.txt의 λ‚΄μš©μ„ ν™•μΈν•΄λ³΄μž
~cpp 
root@eunviho:~/tmpdir/sesame# vi number.txt 
ZERO
one
two
three
four
five
SIX
μƒκΈ°μ—μ„œ 보λ“이 cvsλŠ” λ„ˆλ¬΄λ„ 잘 λ³€κ²½λœ 뢀뢄을 νŒλ‹¨ν•΄μ„œ ν˜„μž¬μ˜ 둜컬 μ†ŒμŠ€μ— λ°˜μ˜μ‹œμΌœμ€λ‹€.

λ‘œμ»¬μ— 반영이 λ˜μ—ˆμœΌλ€λ‘œ
~cpp 
root@eunviho:~/tmpdir/sesame# cvs commit -m"make number zero to be emphasized"
cvs commit: Examining .
/home/CVSHOME/sesame/number.txt,v  <--  number.txt
new revision: 1.4; previous revision: 1.3
상기와 같이 정상적인 체크인이 κ°€λŠ₯ν•˜λ‹€. λ¬Όλ‘  aladdin ν΄λ”μ˜ λ‚΄μš©λ„ λ‹€μŒλ²ˆ μˆ˜μ •μ‹œμ—λŠ” 이와 같은 일이 λ°œμƒν•  것이닀.

1.9.1. λ°•μΉ˜κΈ° - λ³€κ²½ λ‚΄μš©μ΄ μΆ©λŒν•˜λŠ” 경우

μƒκΈ°μ˜ κ²½μš°μ—λŠ” 2가지 ν”„λ‘œκ·Έλž¨μ˜ 바뀐 뢀뢄이 λ™μΌν•œ μ„에 ν•΄λ‹Ήν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 큰 λ¬Έμ œμ—†μ΄ cvsκ°€ μ•Œμ•„μ„œ λ°˜μ˜μ„ ν•΄μ£Όμ—ˆλ‹€. κ·Έλ ‡λ‚˜ λ§Œμ•½ 변경뢀뢄이 λ™μΌν•œ 뢀뢄이라면 μ–΄λ–¨κΉŒ?

sesame/number.txt
~cpp 
root@eunviho:~/tmpdir# vi sesame/number.txt 
ZERO
ichi
two
three
four
five
SIX

aladdin/number.txt
~cpp 
root@eunviho:~/tmpdir# vi aladdin/number.txt 
ZERO
uno
two
three
four
five
SIX


~cpp 
root@eunviho:~/tmpdir/aladdin# cvs commit -m "users like italian word of one"
cvs commit: Examining .
/home/CVSHOME/sesame/number.txt,v  <--  number.txt
new revision: 1.5; previous revision: 1.4
.
.
root@eunviho:~/tmpdir/sesame# cvs commit -m "must be japanese of word one"
cvs commit: Examining .
cvs commit: Up-to-date check failed for `number.txt'
cvs [commit aborted]: correct above errors first!
.
.
root@eunviho:~/tmpdir/sesame# cvs update
cvs update: Updating .
RCS file: /home/CVSHOME/sesame/number.txt,v
retrieving revision 1.4
retrieving revision 1.5
Merging differences between 1.4 and 1.5 into number.txt
rcsmerge: warning: conflicts during merge
cvs update: conflicts found in number.txt
C number.txt
3λ²ˆμž¬μ—μ„œ μ•Œ 수 있λ“, λ™μΌν•œ μ„을 μˆ˜μ •ν•œ κ²½μš°μ—λŠ” 좩돌이 μΌμ–΄λ‚œλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.
μ΄λŸ°κ²½μš°μ— rcsmerge λŠ” κ·Έ 변경을 λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•œλ‹€.

sesame/number.txt
~cpp 
ZERO
<<<<<<< number.txt
ichi
=======
uno
>>>>>>> 1.5
two
three
four
five
SIX
이 경우 λ³€κ²½λœ λ‚΄μš©μ€ <<<<<<< >>>>>>> 의 κ°€μš΄λ°μ— μ‘΄μž¬ν•˜λŠ” λ‚΄μš©μ΄ μΆ©λŒμ„ μΌμœΌν‚¨ 뢀뢄이닀.

이런일이 λ°œμƒν•œ κ²½μš°μ—λŠ” μ–΄λ–€ 일이 λ°œμƒν–ˆλŠ”μ§€ 기둝을 μš°μ„ μ μœΌλ‘œ μ°Ύμ•„λ³΄μ•„μ•Όν•œλ‹€.
~cpp 
root@eunviho:~/tmpdir/sesame# cvs log -r1.5 number.txt 

RCS file: /home/CVSHOME/sesame/number.txt,v
Working file: number.txt
head: 1.5
branch:
locks: strict
access list:
symbolic names:
        initial: 1.1.1.1
        sesame: 1.1.1
keyword substitution: kv
total revisions: 6;     selected revisions: 1
description:
----------------------------
revision 1.5
date: 2005-08-02 13:46:44 +0000;  author: sapius;  state: Exp;  lines: +1 -1
users like italian word of one
=============================================================================
λ§ˆμ§€λ§‰ μ„Έκ°œμ˜ μ„μ—λŠ” 이전에 먼저체크인 된 μ†ŒμŠ€λΌ μˆ˜μ •ν•œ μ‚¬λžŒκ³Ό 그와 κ΄€λ ¨λœ 주석, λ³€κ²½λœ 라인의 정보가 좜λ ₯λœλ‹€.
이런 μ •λ³΄λΌ μ’…ν•©ν•΄μ„œ 이전 μ†ŒμŠ€μ˜ μˆ˜μ •ν•œ μ‚¬λžŒκ³Ό ν† μ˜λΌ ν†΅ν•΄μ„œ μ˜¬λ°”λ₯Έ κ²°κ³ΌλΌ μ–»μ–΄λ‚Ό 수 μžˆλ‹€.
이 κ²½μš°μ—λŠ” ichiλΌ μ“°κΈ°λ‘œ ν–ˆλ‹€κ³  κ°€μ •ν•˜μž. ichiμ΄μ™Έμ˜ λ‹€λ₯Έ λΆ€λΆ„μ˜ λ‚˜μš©μ„ λͺ¨λ‘ μ‚­μ œν•œλ‹€. 그리고 ν† μ˜ κ²°κ³Ό
twoλΌ due둜 μ“°κΈ°λ‘œ ν–ˆλ‹€κ³  ν•˜μž
~cpp 
root@eunviho:~/tmpdir/sesame# vi number.txt 
ZERO
ichi
due
three
four
five
SIX
.
.
root@eunviho:~/tmpdir/sesame# cvs commit -m "one is japanese, two is italian"
cvs commit: Examining .
/home/CVSHOME/sesame/number.txt,v  <--  number.txt
new revision: 1.6; previous revision: 1.5

μœ„μ™€ 같은 방식(λŠμŠ¨ν•œ 잠금)에 μ˜ν•΄μ„œ 버전 컀트둀이 κ°€λŠ₯ν•˜κΈ° λŒ€λ¬Έμ— λ™κΈ°ν™”λ‘œ μΈν•œ λ¬Έμ œλŠ” 거의 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

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