CVS´Â ´ëºÎºÐÀÇ Linux ¹èÆ÷º»¿¡ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î Linux¸¦ »ç¿ëÇÏ°í
ÀÖ´Ù¸é ÀÌ¹Ì CVS°¡ ¼³Ä¡ µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ¸¸ÀÏ CVS ¸í·ÉÀÌ ¾ø´Ù¸é http://www.cyclic.com/¿¡¼ Àû´çÇÑ
ÆÄÀÏÀ» ¹Þ¾Æ ¼³Ä¡ÇÏ¸é µÈ´Ù.
¿¡°Ô
Áö½ÃÇÒ ¸í·ÉÀÌ ¿À°Ô µÇ¸ç, °¢ ¸í·É¸¶´Ù ¿ä±¸ÇÏ´Â ÀÎÀÚ°¡ ÀÖÀ» ¼ö
ÀÖ´Ù. ½ÇÁ¦·Î »ç¿ëµÇ´Â ¸í·ÉÀÇ Á¾·ù¿Í ±â´É¿¡ ´ëÇؼ´Â »õ·Î¿î ¸í·ÉÀÌ
¼Ò°³µÉ ¶§¸¶´Ù ¾ð±ÞÇϵµ·Ï ÇÏ°Ú´Ù.
¸ðµç CVS ¸í·ÉÀº ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ¾Ë¾Æ¾ß ¼öÇàµÉ ¼ö ÀÖ´Ù. ¾Õ¿¡¼
º» ÀúÀå¼Ò ÃʱâÈÀÇ ¿¹¿¡¼µµ init ¸í·ÉÀ» »ç¿ëÇÏ¸é¼ -d
¿É¼ÇÀ¸·Î ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ¾Ë·Á ÁÖ°í ÀÖ´Ù. CVSÀÇ ´Ù¸¥ ¸í·Éµéµµ °°Àº
¿É¼ÇÀ¸·Î ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¶Ç´Ù¸¥ ¹æ¹ýÀº
CVSROOT
¶ó´Â ȯ°æº¯¼öÀÇ °ªÀ¸·Î ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ÁÖ´Â
°ÍÀÌ´Ù. ¿¹¸¦ µé¾î ÀúÀå¼ÒÀÇ À§Ä¡°¡ /home/cvsÀÎ
°æ¿ì,
shÀ̳ª
bash¸¦ ¾´´Ù¸é ´ÙÀ½ÀÇ ³»¿ëÀ» ÃʱâÈ
ÆÄÀÏ(.bash-profile µî)¿¡ ³Ö¾î ³õÀ¸¸é Æí¸®ÇÒ °ÍÀÌ´Ù.
CVSROOT=/home/cvs
export CVSROOT |
cshÀ̳ª
tcshÀ» ¾´´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
ÀÌ·¸°Ô ¼³Á¤À» ÇÏ°í ³ª¸é
-d
¿É¼Ç°ú ÀúÀå¼ÒÀÇ À§Ä¡¸¦
¸Å¹ø ÁÙ ÇÊ¿ä ¾øÀÌ ¹Ù·Î
cvs µÚ¿¡ ¿øÇÏ´Â ¸í·ÉÀ» ÁÖ¸é
µÈ´Ù.
°³¹ßÀÚ°¡ CVS ¸í·ÉÀ» ÀÌ¿ëÇÏ·Á ÇÏ´Â °æ¿ì °í·ÁÇØ¾ß ÇÒ »çÇ×ÀÌ Çϳª ´õ
ÀÖ´Ù. °³¹ßÀÚ°¡ ¾î¶² ¹æ½ÄÀ¸·Î ÀúÀå¼Ò°¡ À§Ä¡ÇÑ ±â°è¿¡ ¿¬°áÇϴ°¡ ÇÏ´Â
°ÍÀÌ´Ù. CVS´Â ´Ù¾çÇÑ ¿¬°á ¹æ½ÄÀ» Áö¿øÇϴµ¥, ¿©±â¿¡¼´Â ÁÖ·Î »ç¿ëµÇ´Â
¼¼ °¡Áö ¹æ½Ä¿¡ ´ëÇØ ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï
ÇÏÀÚ. ÀÌÇÏÀÇ ¿¹¿¡¼´Â ÆíÀÇ»ó -d
¿É¼ÇÀ¸·Î ÀúÀå¼ÒÀÇ
À§Ä¡¸¦ ÁöÁ¤ÇÏ°Ú´Ù. ¹°·Ð -d
¿É¼ÇÀº Ç×»ó
CVSROOT
ȯ°æº¯¼ö·Î ´ëÄ¡ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
¾Õ¿¡¼ ÀúÀå¼Ò¸¦ ÃʱâÈÇÑ °Í°ú °°Àº °æ¿ìÀÌ´Ù. °°Àº ±â°è¸¦ ¾²±â
¶§¹®¿¡ ÀúÀå¼Ò°¡ ÀÖ´Â µð·ºÅ丮 À̸§À» ÁÖ´Â °ÍÀ¸·Î ÃæºÐÇÏ´Ù. ¾Õ¿¡¼ ¸¸µç
ÀúÀå¼Ò¿¡ CVS ¸í·ÉÀ» ³»¸®·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
°³¹ßÀÚ°¡ ÀúÀå¼Ò¿Í ´Ù¸¥ ±â°è¸¦ »ç¿ëÇÒ °æ¿ì ÀϹÝÀûÀ¸·Î ¾²ÀÌ´Â
¹æ¹ýÀÌ´Ù. ¿©·µÀÌ ÁøÇàÇÏ´Â ÇÁ·ÎÁ§Æ®´Â ´ëºÎºÐ °³¹ßÀÚµéÀÌ ÀÚ½ÅÀÇ ±â°è¿¡¼
ÀÛ¾÷À» ÇÏ°Ô µÇ´Âµ¥, ÀÌ ¹æ½ÄÀ» ÀÌ¿ëÇÏ¸é ±×·¯ÇÑ °æ¿ì¿¡µµ ½±°Ô ÀúÀå¼Ò¸¦
°øÀ¯ÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. ÀÌ ¹æ¹ýÀ» ¾²·Á¸é ¸ÕÀú
sshÀ̳ª rshÀ» »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß
ÇÑ´Ù. ¿¹¸¦ µé¾î ÀúÀå¼Ò´Â cvs.webdox.co.krÀ̶õ ±â°è¿¡ ÀÖ°í, °³¹ßÀÚÀÇ
±â°è´Â birch.webdox.co.krÀ̶ó°í ÇÏÀÚ. °³¹ßÀÚ´Â cvs.webdox.co.kr¿¡
minskimÀ̶õ °èÁ¤À» °®°í ÀÖ°í, birch.webdox.co.kr¿¡ minÀ̶õ °èÁ¤À» °®°í
ÀÖ´Ù. ±×·¯¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î sshÀ» ¾µ ¼ö
ÀÖ´ÂÁö¸¦ ½ÃÇèÇØ º¼ ¼ö ÀÖ´Ù.
ssh -l minskim cvs.webdox.co.kr 'echo $PATH' |
rshÀ» ½ÃÇèÇØ º¸·Á¸é ¸í·É¾î¸¸
rsh·Î ¹Ù²ãÁÖ¸é µÈ´Ù.
À§ÀÇ ¸í·ÉÀÌ ¼öÇàµÈ´Ù¸é ssh(ȤÀº
rsh)À» ¾µ ¼ö ÀÖ´Â °ÍÀÌ´Ù. sshÀÌ
µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é cvs.webdox.co.krÀÇ sshd µ¿ÀÛ
¿©ºÎ¿Í ¼³Á¤ ÆÄÀÏÀ» Á¡°ËÇϵµ·Ï ÇÑ´Ù.
rshÀÌ µ¿ÀÛÇÏÁö
¾Ê´Â´Ù¸é cvs.webdox.co.kr¿¡ ·Î±×ÀÎÇÏ¿© .rhosts¶õ
ÆÄÀÏÀ» ¸¸µéÀÚ. .rhosts¿¡´Â ´ÙÀ½°ú °°Àº ³»¿ëÀÌ
ÀÖ¾î¾ß ÇÑ´Ù.
ÀÌÁ¦ ´Ù½Ã ÇÑ ¹ø
rsh ¸í·ÉÀ»
½ÃÇèÇغ¸ÀÚ. À̹ø¿¡µµ ¾È µÈ´Ù¸é cvs.webdox.co.kr¿¡¼
rshÀ» ÅëÇÑ Á¢¼ÓÀ» ¸·¾Æ ³õ¾ÒÀ» °¡´É¼ºÀÌ Å©¹Ç·Î
cvs.webdox.co.krÀÇ ³×Æ®¿÷ ¼³Á¤À» Á¡°ËÇϵµ·Ï ÇÑ´Ù.
sshÀ̳ª rshÀ» ¾µ ¼ö ÀÖ´Ù¸é
ÀúÀå¼Ò À§Ä¡¿¡ ´ÙÀ½°ú °°ÀÌ °èÁ¤°ú ±â°è À̸§À» Æ÷ÇÔ½ÃÄѼ CVS ¸í·ÉÀ»
»ç¿ëÇÒ ¼ö ÀÖ´Ù.
$ cvs -d :ext:minskim@cvs.webdox.co.kr:/home/cvs ¸í·É |
¿©±â¼ :ext:°¡
sshÀ̳ª
rshÀ»
ÀÌ¿ëÇÑ Á¢¼Ó ¹æ½ÄÀÓÀ» ³ªÅ¸³»´Â ±¸½ÇÀ» ÇÑ´Ù. ´Ù¸¸ ±âº»ÀûÀ¸·Î
cvs´Â :ext:·Î ½ÃÀÛÇÏ´Â ÀúÀå¼ÒÀÇ °æ¿ì
rshÀ» ÀÌ¿ëÇϹǷÎ,
sshÀ» ¾²·Á¸é
CVS_RSH
À̶ó´Â ȯ°æº¯¼ö¸¦
ssh·Î
¼³Á¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¹°·Ð
ssh ¿Ü¿¡µµ
rsh°ú °°Àº ¹æ½ÄÀ¸·Î µ¿ÀÛÇÏ´Â ´Ù¸¥ ¸í·ÉÀÌ ÀÖ´Ù¸é ±×
¸í·ÉÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
rshÀº Á¦»ïÀÚ°¡ ³×Æ®¿÷À»
ÅëÇØ ¾ÏÈ£¸¦ °¡·Îç ¼ö ÀÖÀ¸¹Ç·Î, º¸¾ÈÀÌ Áß¿ä½ÃµÇ´Â ȯ°æÀ̶ó¸é
sshÀ» »ç¿ëÇÒ °ÍÀ» ±ÇÇÑ´Ù.
¾ÏÈ£ ÀÎÁõ ¹æ½ÄÀº ¾ÕÀÇ µÎ ¹æ½Ä°ú´Â ´Þ¸® CVS ¸í·ÉÀ» »ç¿ëÇϱ⿡
¾Õ¼ ·Î±×ÀÎÀ» ÇØ¾ß ÇÑ´Ù. CVS·Î ÆÄÀÏÀ» Á¦°øÇÏ´Â °ø°³ ÇÁ·ÎÁ§Æ®µéÀÇ °æ¿ì
ȨÆäÀÌÁö¿¡¼ 'CVSROOT
¸¦ ...·Î ¼³Á¤ÇϽʽÿÀ'¶ó´Â ¹®±¸¸¦
º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ°ÍÀÌ ¹Ù·Î ¾ÏÈ£ ÀÎÁõ ¹æ½ÄÀÇ ÀúÀå¼Ò À§Ä¡ÀÌ´Ù.
cvs.webdox.co.krÀ̶õ ±â°èÀÇ /home/cvs¿¡ ÀúÀå¼Ò°¡
À§Ä¡ÇÏ°í minskimÀ̶õ CVS °èÁ¤ÀÌ ¸¸µé¾îÁ® ÀÖ´Ù¸é ´ÙÀ½°ú °°ÀÌ ·Î±×ÀÎÇÒ
¼ö ÀÖ´Ù.
$ cvs -d :pserver:minskim@cvs.webdox.or.kr:/home/cvs login |
±×·¯¸é ¾ÏÈ£¸¦ ¹°¾î¿À´Âµ¥ ¾ÏÈ£´Â
CVSROOT/passwd¿¡
CVS °èÁ¤À» Ãß°¡ÇÒ ¶§ »ç¿ëÇÑ °Í°ú °°´Ù. ÀúÀå¼Ò À§Ä¡ÀÇ :ext:¸¸
:pserver:·Î ¹Ù²î¾úÀ» »Ó, Çü½ÄÀº
sshÀ» ÀÌ¿ëÇÏ´Â
°æ¿ì¿Í µ¿ÀÏÇÔÀ» ¾Ë ¼ö ÀÖ´Ù.
ÀÏ´Ü ·Î±×ÀÎÀ» ÇÏ°í ³ª¸é ÀÎÁõ Á¤º¸°¡
.cvspass¶õ ÆÄÀÏ¿¡ ÀúÀåÀÌ µÇ¸ç, ÀÌÈķδ ¾ÏÈ£ ¾øÀÌ
CVS ¸í·ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
$ cvs -d :pserver:minskim@cvs.webdox.or.kr:/home/cvs ¸í·É |
»ç¿ë °¡´ÉÇÑ CVS ÀúÀå¼Ò°¡ ÀÖ°í, ¾î¶»°Ô ÀúÀå¼Ò¸¦ ÀÌ¿ëÇÏ´ÂÁö ¾Ë°í
ÀÖ´Ù¸é ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÒ ¸ðµç Áغñ°¡ ³¡³ ¼ÀÀÌ´Ù. ´õ±º´Ù³ª ±âÁ¸ÀÇ
ÇÁ·ÎÁ§Æ®¿¡ CVS¸¦ µµÀÔÇÏ·Á´Â °æ¿ì¶ó¸é ÀÌ¹Ì µð·ºÅ丮¿Í ÆÄÀϵéÀÌ ÀÖÀ»Å×´Ï
À̸¦ ÀúÀå¼Ò¿¡ ÀúÀåÇÏ´Â ¹æ¹ý¸¸ ¹è¿ì¸é µÈ´Ù. ÇÏÁö¸¸ óÀ½ ½ÃÀÛÇÏ´Â
ÇÁ·ÎÁ§Æ®¸¦ CVS·Î °ü¸®ÇÏ·Á ÇÑ´Ù¸é ¸ÕÀú µð·ºÅ丮 ±¸Á¶¸¦ Àß ¼³°èÇؾß
ÇÑ´Ù. ¹°·Ð ¾ðÁ¦¶óµµ CVS¸¦ ÀÌ¿ëÇؼ ÆÄÀÏÀÇ À§Ä¡¸¦ ¿Å±â°í »õ·Î¿î
µð·ºÅ丮¸¦ ¸¸µå´Â µîÀÇ ÀÏÀº °¡´ÉÇÏ´Ù. ÇÏÁö¸¸ óÀ½ºÎÅÍ µð·ºÅ丮 ±¸Á¶¿Í
°¢ µð·ºÅ丮¿¡ µé¾î°¥ ÆÄÀϵéÀ» Àß Á¤ÇØ ³õ´Â °ÍÀº Àüü ÇÁ·ÎÁ§Æ® °ü¸®¿¡µµ
µµ¿òÀ» ÁֹǷΠµÇµµ·ÏÀÌ¸é ³ªÁß¿¡ ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ À§Ä¡ º¯°æÀÌ »ý±âÁö
¾Êµµ·Ï ¼³°è¸¦ ÇÏ°í ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇϵµ·Ï ÇÏÀÚ.
¸ÕÀú ÇÒ ÀÏÀº ÇÁ·ÎÁ§Æ®ÀÇ À̸§À» Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ À̸§Àº
ÀúÀå¼Ò¿¡¼ ÀÌ ÇÁ·ÎÁ§Æ® °ü·Ã ÆÄÀϵéÀ» ÀúÀåÇÏ´Â µð·ºÅ丮ÀÇ À̸§À¸·Î
¾²ÀδÙ. ¿©±â¿¡¼´Â myprj¶õ À̸§À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¾î º¸±â·Î
ÇÏ°Ú´Ù. ÀÌÈÄ¿¡ ³ª¿Ã ¸ðµç ¿¹´Â ȯ°æº¯¼ö CVSROOT
°¡ Á¦´ë·Î
¼³Á¤µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. CVSROOT
¸¦ ¾î¶»°Ô ¼³Á¤Çؾß
Çϴ°¡¿¡ ´ëÇؼ´Â 4.1절ÀÇ ³»¿ëÀ» Âü°íÇϱ⠹ٶõ´Ù.
myprj¶õ µð·ºÅ丮°¡ ´ÙÀ½°ú °°ÀÌ µÇ¾î
ÀÖ´Ù°í ÇÏÀÚ.
$ cd myprj
$ ls
Hello.java README |
ÀúÀå¼Ò¿¡ »õ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ÀÌ µÎ ÆÄÀÏÀ» ÀúÀåÇϱâ À§Çؼ´Â import
¸í·ÉÀ» »ç¿ëÇÑ´Ù. import ¸í·ÉÀÇ »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.
$ cvs import -m "¸Þ½ÃÁö" ÇÁ·ÎÁ§Æ®À̸§ vender_tag release_tag |
'¸Þ½ÃÁö'´Â ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÏ¸é¼ ÀúÀå¼Ò¿¡ ±â·ÏÇÏ°í ½ÍÀº ³»¿ëÀ»
Àû¾îÁÖ¸é µÈ´Ù. CVS´Â ÆÄÀÏÀ» ÀúÀåÇÒ ¶§¸¶´Ù ¸Þ½ÃÁö¸¦ Àûµµ·Ï ÇÏ°í
ÀÖ´Ù. ÀÌ ³»¿ëÀ» ¿øÇÏ´Â ¶§¿¡ ´Ù½Ã º¼ ¼ö ÀÖÀ¸¹Ç·Î °³¹ßÀÚ°¡ ¾î¶² ÀÛ¾÷À»
Çß´ÂÁö¸¦ Àû¾î ³õÀ¸¸é ´Ù¸¥ °³¹ßÀÚµéÀÌ ÆÄÀÏÀÇ º¯°æ ³»¿ë, ÀÛ¾÷ Áøô
»óȲµîÀ» ÆľÇÇϴµ¥¿¡ µµ¿òÀ» ÁÙ ¼ö ÀÖ´Ù. µÚÀÇ µÎ ű״ Áö±Ý
´Ü°è¿¡¼´Â º° Àǹ̰¡ ¾øÀ¸¹Ç·Î Àû´çÇÑ ¸»À» ½á ÁÖ¸é µÈ´Ù. myprj¶õ
ÇÁ·ÎÁ§Æ®¸¦ ÀúÀå¼Ò¿¡ ¸¸µé±â À§Çؼ´Â ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÑ´Ù.
$ cvs import -m "ÇÁ·ÎÁ§Æ® ½ÃÀÛ" myprj webdox start
N myprj/Hello.java
N myprj/README
No conflicts created by this import |
¾Õ¿¡ ¸»ÇßµíÀÌ µÚÀÇ µÎ ´Ü¾î´Â º° Àǹ̰¡ ¾øÀ¸¹Ç·Î Å©°Ô ½Å°æ¾²Áö ¸»±â
¹Ù¶õ´Ù. ÀÌ ¸í·ÉÀ» ½ÇÇàÇϸé CVS´Â ÀúÀå¼Ò¿¡
myprj¶õ
µð·ºÅ丮¸¦ ¸¸µé°í, °Å±â¿¡
README¿Í
Hello.java¸¦ ÀúÀåÇÑ´Ù. ÀÌ ¿Ü¿¡µµ ¿É¼ÇÀ¸·Î ÁØ
¸Þ½ÃÁö¿Í °¢ ÆÄÀÏÀÇ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ ±â·ÏÇÏ°Ô µÈ´Ù. Ãâ·ÂµÇ´Â ¸Þ½ÃÁö¸¦
º¸¸é °¢ ÆÄÀÏ À̸§ ¾Õ¿¡ NÀ̶õ ±ÛÀÚ°¡ ÀÖ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. CVS´Â ƯÁ¤
¸í·É ¼öÇà½Ã¿¡ ÆÄÀϺ°·Î ¼öÇà °á°ú¸¦ ³ªÅ¸³½´Ù. NÀº »õ·Î¿î ÆÄÀÏÀÌ Ãß°¡µÈ
°ÍÀ» ÀǹÌÇÑ´Ù. ÀÌÈÄÀÇ ¿¹¿¡¼ ´Ù¸¥ °æ¿ìµéµµ º¸°Ô µÉ °ÍÀÌ´Ù. ¸¶Áö¸·
ÁÙ¿¡¼ conflict¶õ ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀ» ÀúÀå¼Ò¿¡ ÀúÀåÇÏ°Ô µÇ¸é
¾î¶² ÀÌÀ¯·Î ÀÌ¹Ì ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀÏ°ú Ãæµ¹À» ÀÏÀ¸Å°´Â °æ¿ì¸¦
¶æÇÑ´Ù. ´Ù¸¥ »ç¶÷ÀÌ ÀÛ¾÷Çؼ ÀúÀå¼Ò¿¡ ÀúÀåÇØ ³õÀº °ÍÀ» µ¤¾î¾²·Á
ÇѴٰųª ÇÏ´Â °æ¿ìÀε¥, ÀÚ¼¼ÇÑ °ÍÀº µÚ¿¡¼ conflict°¡ ¹ß»ýÇÏ´Â °æ¿ì¸¦
¿¹·Î µé¾î ¼³¸íÇÏ°Ú´Ù. ¿©±â¿¡¼´Â ÀúÀå¼Ò¿¡ ¾Æ¹« ÆÄÀϵµ ¾øÀ¸¹Ç·Î
Ãæµ¹(conflict)ÀÌ »ý±âÁö ¾Ê´Â °ÍÀÌ ´ç¿¬ÇÏ´Ù.
import ¸í·ÉÀ¸·Î ÇÁ·ÎÁ§Æ®¸¦ ÃʱâÈÇÏ°í ³ª¸é ´õ ÀÌ»ó ÇöÀç
µð·ºÅ丮¿¡ °®°í ÀÖ´Â °ÍµéÀ» »ç¿ëÇÏ¸é ¾È µÈ´Ù. ÇöÀç µð·ºÅ丮¿¡´Â CVS¿¡
°ü·ÃµÈ Á¤º¸°¡ ¾Æ¹« °Íµµ ¾ø±â ¶§¹®ÀÌ´Ù. ´ë½Å ÀúÀå¼Ò¿¡ ¸ðµç ³»¿ëÀÌ µé¾î
ÀÖÀ¸¹Ç·Î myprj µð·ºÅ丮 ÀÚü¸¦ ¿ÏÀüÈ÷ Áö¿ö¹ö·Áµµ
±¦Âú´Ù. ´ÙÀ½ Àý¿¡¼ ¼Ò°³ÇÒ ¸í·ÉµéÀ» ÀÌ¿ëÇؼ ¾ðÁ¦¶óµµ ´Ù½Ã ºÒ·¯¿Ã ¼ö°¡
ÀÖ´Ù. ÀÌ»óÀ¸·Î ÇÁ·ÎÁ§Æ® ÃʱâÈ´Â ¸ðµÎ ³¡³ °ÍÀ̸ç, ÀÌÈķδ °¢
°³¹ßÀÚµéÀÌ CVS¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®¸¦ ÁøÇà½ÃÅ°´Â Àϸ¸ÀÌ ³²¾Æ
ÀÖ´Ù.
ÀÌÁ¦ ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â °³¹ßÀÚÀÇ ÀÔÀå¿¡¼ ÇÁ·ÎÁ§Æ®¸¦
¹Ù¶óº¸ÀÚ. ¸ðµç ÇÊ¿äÇÑ ÆÄÀϵéÀº ÀúÀå¼Ò¿¡ °®Ãß¾îÁ® ÀÖ°í, ÇÁ·ÎÁ§Æ®
°ü¸®ÀڷκÎÅÍ ÀúÀå¼ÒÀÇ À§Ä¡¿Í ÇÁ·ÎÁ§Æ® À̸§µµ Å뺸¹Þ¾Ò´Ù. ±×·¯¸é
°³¹ßÀÚ´Â ¾ÕÀ¸·ÎÀÇ ÀÛ¾÷À» À§ÇØ ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ȯ°æº¯¼ö
CVSROOT
¿¡ ÀúÀåÇÏ°í, ÀÛ¾÷À» ½ÃÀÛÇÏ¸é µÈ´Ù. ´Ü, CVS´Â
ÆÄÀÏÀÇ º¯°æ ½Ã°¢À» ÂüÁ¶ÇÏ´Â °æ¿ì°¡ ¸¹À¸¹Ç·Î °¢ °³¹ßÀÚµéÀÌ »ç¿ëÇÏ´Â
±â°èÀÇ ½Ã°£À» ¼·Î ¸ÂÃß¾î ³õÀ» ÇÊ¿ä°¡ ÀÖ´Ù.
ÀÛ¾÷À» ½ÃÀÛÇϱâ À§Çؼ´Â ÆÄÀÏÀ» ¸¶À½´ë·Î º¯°æÇÏ°í ÀúÀåÇÏ¿©
Å×½ºÆ®ÇØ º¼ ¼ö ÀÖ´Â ÀÛ¾÷ °ø°£ÀÌ ÇÊ¿äÇÏ´Ù. ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀϵéÀ»
ºÒ·¯¿Í ³ª¸¸ÀÇ ÀÛ¾÷ °ø°£À» ¸¸µå´Â ¸í·ÉÀÌ checkoutÀÌ´Ù. ¾Õ¿¡¼ ¸¸µç
myprj¸¦ checkout ¸í·ÉÀ¸·Î ºÒ·¯ ¿ÀÀÚ.
$ cvs checkout myprj
cvs checkout: Updating myprj
U myprj/Hello.java
U myprj/README |
checkout ´ë½Å co¸¸ ½á Á־ µÈ´Ù. ¾Õ¿¡ ºÙÀº U´Â ÆÄÀÏÀÌ
°»½Å(update)µÇ¾úÀ½À» ÀǹÌÇÑ´Ù.
¸í·ÉÀ» ¼öÇàÇÏ°í ³ª¸é ÇöÀç µð·ºÅ丮¿¡ myprj¶õ µð·ºÅ丮°¡ »ý±ä´Ù. ÀÌ
µð·ºÅ丮°¡ ¹Ù·Î ÀÛ¾÷ °ø°£ÀÌ´Ù. ÀÌ ¾È¿¡¼ ÇÊ¿ä¿¡ µû¶ó ÆÄÀϵéÀ»
¼öÁ¤ÇÏ°í, À̸¦ ´Ù½Ã ÀúÀå¼Ò·Î ÀúÀåÇÏ¸é µÇ´Â °ÍÀÌ´Ù. ±×·¯¸é µð·ºÅ丮
¾È¿¡´Â ¾î¶² ÆÄÀϵéÀÌ µé¾î ÀÖÀ»±î?
$ cd myprj
$ ls
CVS Hello.java README |
ÇÁ·ÎÁ§Æ®¸¦ ÃʱâÈÇÒ ¶§ ÀÖ´ø ÆÄÀϵéÀÌ ±×´ë·Î µé¾î ÀÖ´Â °ÍÀ» º¼ ¼ö
ÀÖ´Ù. ÇÏÁö¸¸ Çϳª ´Þ¶óÁø °ÍÀÌ ÀÖ´Ù. CVS¶õ µð·ºÅ丮°¡ ¹Ù·Î
±×°ÍÀÌ´Ù. ¹Ù·Î ÀÌ µð·ºÅ丮¿¡ CVS°¡ ÆÄÀϵéÀ» °ü¸®Çϴµ¥¿¡ ÇÊ¿äÇÑ Á¤º¸°¡
±â·ÏµÈ´Ù. ¿¹¸¦ µé¸é °¢ ÆÄÀϵéÀÇ ¹öÁ¯, ÃÖÁ¾ ¼öÁ¤ ½Ã°¢, ÀúÀå¼ÒÀÇ À§Ä¡
µîÀÌ ÀÌ¿¡ ¼ÓÇÑ´Ù. ¾ÕÀ¸·Î ¿©·¯ CVS ¸í·ÉµéÀ» »ç¿ëÇÏ°Ô µÇ´Âµ¥, ±×¶§¸¶´Ù
CVS´Â ÀÌ µð·ºÅ丮ÀÇ Á¤º¸¸¦ Âü°íÇÏ¿© °¢ ¸í·ÉÀ» ¼öÇàÇÑ´Ù. ÇÏÁö¸¸
°³¹ßÀÚ°¡ ÀÌ µð·ºÅ丮ÀÇ ³»¿ë¿¡ ½Å°æ¾µ ÇÊ¿ä´Â ÀüÇô ¾ø´Ù. °ü½ÉÀÌ ÀÖ´Ù¸é
»ìÆ캸´Â °ÍÀº ÁÁÁö¸¸, ³»¿ëÀ» ÀÓÀÇ·Î º¯°æÇѴٰųª Çؼ´Â ¾È µÈ´Ù.
¸¸µé¾îÁø ÀÛ¾÷ °ø°£¿¡¼ ÀÛ¾÷À»
½ÃÀÛÇغ¸ÀÚ. Hello.javaÀÇ ³»¿ëÀÌ
´ÙÀ½°ú °°´Ù°í ÇÏÀÚ.
public class Hello {
public static void main(String args[]) {
}
} |
¿©±â¿¡ Àλ縻À» Ãâ·ÂÇÏ´Â ºÎºÐÀ» Ãß°¡Çغ¸ÀÚ. ¾Æ¹« ÆíÁý±â·Î³ª ÆÄÀÏÀ»
¿¾î ÀÛ¾÷ÇÏ¸é µÈ´Ù. CVS¸¦ »ç¿ëÇÑ´Ù°í Çصµ Ưº°ÇÑ ¿¡µðÅͳª ÅëÇÕ °³¹ß
ȯ°æÀ» ÇÊ¿ä·Î ÇÏÁö´Â ¾Ê´Â´Ù.
Hello.java¿¡
'¾È³çÇϼ¼¿ä?'¶ó°í Ãâ·ÂÇÏ´Â ¹®ÀåÀ» Ãß°¡Çß´Ù°í ÇÏÀÚ.
public class Hello {
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
}
} |
ÄÄÆÄÀÏÀ» Çؼ ½ÇÇàÀ» ÇØ º¸°í ¿¹»ó´ë·Î ½ÇÇàµÈ´Ù¸é ÀÌÁ¦ ÀÛ¾÷ ³»¿ëÀ»
ÀúÀå¼Ò¿¡ ÀúÀåÇØ¾ß ÇÑ´Ù. ±×·¡¾ß ´Ù¸¥ °³¹ßÀڵ鵵 Àλ縻ÀÌ Ãß°¡µÇ¾ú´Ù´Â
°ÍÀ» ¾Ë°Ô µÉ °ÍÀÌ´Ù. ÆÄÀÏÀÇ º¯µ¿ »çÇ×À» ÀúÀå¼Ò¿¡ ÀúÀåÇÏ´Â ¸í·ÉÀº
commitÀÌ´Ù.
$ cvs commit -m "Àλ縻 Ãß°¡" Hello.java
Checking in Hello.java;
/home/cvs/myprj/Hello.java,v <-- Hello.java
new revision: 1.2; previous revision: 1.1
done |
¾î¶² ¸í·ÉÀÎÁö ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
-m
Àº ¾ÕÀÇ
¿¹¿Í ¸¶Âù°¡Áö·Î ¸Þ½ÃÁö¸¦ ÀǹÌÇÑ´Ù. ÀÌ ¸í·ÉÀ¸·Î
Hello.java´Â 'Àλ縻 Ãß°¡'¶õ ¸Þ½ÃÁö¿Í ÇÔ²²
ÀúÀå¼Ò¿¡ ÀúÀåµÈ´Ù. ±×·¸´Ù°í ÀÌÀüÀÇ
Hello.java°¡
¾ø¾îÁö´Â °ÍÀº ¾Æ´Ï´Ù. CVS´Â °¢ ¹öÁ¯ÀÇ º¯°æ ³»¿ëÀ» ÆľÇÇÏ¿© ¾ðÁ¦¶óµµ
°³¹ßÀÚ°¡ ¿øÇÏ´Â ¹öÁ¯À» ²¨³» ÁÙ ¼ö ÀÖµµ·Ï ÆÄÀϵéÀ» ÀúÀåÇÑ´Ù. Ãâ·Â
°á°ú¸¦ º¸¸é ¿ø·¡ ÀÖ´ø
Hello.java´Â 1.1ÀÌ°í, »õ·Î
ÀúÀåµÈ
Hello.java´Â 1.2ÀÓÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÌ ¹øÈ£´Â
CVS°¡ ÀÚµ¿À¸·Î ºÙÀÌ´Â °ÍÀÌ¸ç º¯°æ »çÇ×ÀÌ ÀúÀåµÉ ¶§¸¶´Ù ¿Ã¶ó°¡¹Ç·Î °¢
ÆÄÀϸ¶´Ù ´Ù¸¦ ¼ö ÀÖ´Ù. ³ªÁß¿¡ ƯÁ¤ ¹öÁ¯ÀÌ ÇÊ¿äÇÏ´Ù¸é ÀÌ ¹øÈ£¸¦
ÀÌ¿ëÇؼ ºÒ·¯ ¿À¸é µÈ´Ù.
¸Ç ³¡ÀÇ ÆÄÀÏ À̸§Àº »ý·«ÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏ À̸§À» ÁÖÁö ¾ÊÀ¸¸é
CVS°¡ º¯°æµÈ ÆÄÀÏÀ» ¸ðµÎ ã¾Æ ÀúÀå¼Ò¿¡ ÀúÀåÇÑ´Ù. À̶§ ÀúÀåµÇ´Â ¸ðµç
ÆÄÀÏ¿¡´Â °°Àº ¸Þ½ÃÁö°¡ ºÙ°Ô µÈ´Ù. ÇÏÁö¸¸ ÆÄÀϸ¶´Ù ´Ù¸¥ ¸Þ½ÃÁö¸¦ ºÙÀÌ°í
½Í´Ù°Å³ª ƯÁ¤ ÆÄÀÏÀÇ º¯°æ ³»¿ë¸¸À» ÀúÀåÇÏ°í ½Í´Ù¸é À§ÀÇ ¿¹Ã³·³ ÆÄÀÏ
À̸§À» ¸í½ÃÇØ ÁÖ¾î¾ß ÇÑ´Ù.
commitÀ» ÇÒ ¶§ ÁÖÀÇÇÒ Á¡Àº ¹Ýµå½Ã Á¦´ë·Î µ¿ÀÛÇϴ°¡¸¦ È®ÀÎÇÏ°í
commitÀ» ÇØ¾ß ÇÑ´Ù´Â °ÍÀÌ´Ù. ÀÏ´Ü commitÀ» ÇÏ¸é ´Ù¸¥ °³¹ßÀڵ鵵 ³ªÀÇ
ÀÛ¾÷ °á°ú¸¦ ¹Þ¾Æ°¥ ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î ³»°¡ Á¦´ë·Î ÄÄÆÄÀÏÁ¶Â÷ µÇÁö ¾Ê´Â
ÆÄÀÏÀ» commitÀ¸·Î ÀúÀå¼Ò¿¡ ÀúÀåÇϸé ÀÌ ÆÄÀÏÀ» ¹Þ¾Æ°£ ´Ù¸¥ °³¹ßÀڵ鵵
ÄÄÆÄÀÏÀÌ ¾È µÇ´Â °á°ú¸¦ °¡Á®¿Ã °ÍÀÌ´Ù. ƯÈ÷³ª ¿©·¯ ÆÄÀÏÀ» º¯°æÇÏ°í
ÀϺΠÆÄÀϸ¸À» commitÇÏ´Â °æ¿ì¶ó¸é ´õ¿í ÁÖÀÇÇØ¾ß ÇÑ´Ù. °øµ¿ ÀÛ¾÷À» ÇÏ´Â
°æ¿ì¶ó¸é ÀÌ·¸°Ô ÀÚ½ÅÀÇ ºÎÁÖÀÇ·Î ´Ù¸¥ °³¹ßÀڵ鿡°Ô ÇÇÇظ¦ ÀÔÈ÷´Â ÀÏÀº
Àý´ë·Î »ï°¡¾ß ÇÑ´Ù. ´ë°³ÀÇ °æ¿ì º¯°æ ³»¿ë Àüü°¡ ¼·Î °ü·ÃÀÌ ÀÖ´Â
°æ¿ì°¡ ¸¹À¸¹Ç·Î ƯÁ¤ÇÑ ÀÎÀÚ¸¦ ÁÖÁö ¾Ê°í commit ¸í·ÉÀ» »ç¿ëÇÏ¿© ÀÛ¾÷
°ø°£ ÀüüÀÇ º¯°æ ³»¿ëÀÌ ÇѲ¨¹ø¿¡ ÀúÀå¼Ò¿¡ ÀúÀåµÇµµ·Ï ÇÏ´Â °ÍÀÌ
ÁÁ´Ù.
°øµ¿ ÀÛ¾÷¿¡¼ ÀÚ½ÅÀÇ ÀÛ¾÷ °á°ú¸¦ ÀúÀåÇÏ´Â ÀÏ ¸øÁö ¾Ê°Ô Áß¿äÇÑ
ÀÏÀº ´Ù¸¥ »ç¶÷ÀÇ ÀÛ¾÷ °á°ú¸¦ ¹Þ¾Æ¿À´Â ÀÏÀÌ´Ù. ÀÚ½ÅÀÌ ÀÛ¾÷ÇÑ ³»¿ëÀ»
¸ðµÎ ÀúÀåÇÑ »óŶó¸é ÀÛ¾÷ µð·ºÅ丮¸¦ Áö¿ö¹ö¸®°í checkout ¸í·ÉÀ¸·Î
»õ·Î¿î ÀÛ¾÷ °ø°£À» ¸¸µå´Â °Íµµ ÇÑ ¹æ¹ýÀÌ µÉ °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ´Â ¸ðµç
ÆÄÀÏÀ» »õ·Î ¹Þ¾Æ¿À¹Ç·Î ÀúÀå¼Ò¿ÍÀÇ ¿¬°áÀÌ ´À¸± °æ¿ì¿¡´Â »ó´çÇÑ ½Ã°£À»
±â´Ù·Á¾ß ÇÒ ¼öµµ ÀÖ´Ù. º¸´Ù ÁÁÀº ¹æ¹ýÀº update ¸í·ÉÀ» »ç¿ëÇÏ´Â
°ÍÀÌ´Ù. ÀÛ¾÷ÁßÀÌ´ø µð·ºÅ丮¿¡¼ ÀÌ ¸í·ÉÀ» ¾²¸é CVS¿¡ ÀúÀåµÈ ÆÄÀϵé Áß
³»°¡ ¹Þ¾Æ¿Â ÀÌÈÄ·Î º¯°æµÈ °Íµé¸¸À» ´Ù½Ã ¹Þ¾Æ ¿Â´Ù.
$ cvs update
cvs update: Updating . |
ÇöÀç ÀÛ¾÷ °ø°£¿¡ ÀÖ´Â ÆÄÀϵéÀÌ ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀÏ°ú ¸ðµÎ µ¿ÀÏÇϸé À§¿Í
°°ÀÌ º°´Ù¸¥ Ãâ·Â ¾øÀÌ ³¡³¯ °ÍÀÌ´Ù. ±×·¸´Ù¸é ÀÛ¾÷ °ø°£¿¡ ÀÖ´Â ÆÄÀÏÀ»
¼öÁ¤ÇÏ°í commitÀ» ÇÏÁö ¾ÊÀº »óŶó¸é ¾î¶² °á°ú°¡ ³ª¿À´ÂÁö º¸±â À§ÇØ
Hello.java¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤Çغ¸ÀÚ.
public class Hello {
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
System.out.println("¹Ý°©½À´Ï´Ù.");
}
} |
¿ø·¡ÀÇ ÆÄÀÏ¿¡ "¹Ý°©½À´Ï´Ù."¸¦ Ãâ·ÂÇÏ´Â ¹®ÀåÀ» Ãß°¡ÇÏ¿´´Ù. ÀÌÁ¦ update
¸í·ÉÀ» ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ ³ª¿Ã °ÍÀÌ´Ù.
$ cvs update
cvs update: Updating .
M Hello.java |
ÆÄÀÏ À̸§ ¾Õ¿¡ ÀÖ´Â ¿µ¹®ÀÚ(ÀÌ °æ¿ì´Â M)°¡ °¢ ÆÄÀϺ° »óŸ¦
¾Ë·ÁÁØ´Ù. MÀº ÆÄÀÏÀÌ º¯°æµÈ(modified) »óÅÂÀÓÀ» ÀǹÌÇÑ´Ù. Áï, ÆÄÀÏÀÇ
³»¿ëÀÌ ¿ø·¡ ÀúÀå¼Ò¿¡ ÀÖ´Â °Í°ú ´Þ¶óÁ³À» ¶§ MÀ» ½á¼ Ç¥½ÃÇÏ°Ô µÈ´Ù.
ÀúÀå¼ÒÀÇ ÆÄÀÏ°ú ÀÛ¾÷ °ø°£ÀÇ ÆÄÀÏÀÌ ´Þ¶óÁú ¼ö ÀÖ´Â ¶Ç ´Ù¸¥ °æ¿ì´Â
´Ù¸¥ »ç¶÷ÀÌ ÆÄÀÏÀ» º¯°æÇÏ¿© commit ¸í·ÉÀ¸·Î ÀúÀå¼Ò¿¡ ÀúÀåÇÑ
°æ¿ìÀÌ´Ù. ¿¹¸¦ µé¾î ¿ø·¡ÀÇ README ÆÄÀÏÀÌ ´ÙÀ½°ú °°¾Ò´Ù°í ÇÏÀÚ.
$ cat README
ÀÌ ÆÄÀÏÀº ¸Å¿ì Áß¿äÇÑ ³»¿ëÀ» ´ã°í ÀÖ½À´Ï´Ù. |
±×·±µ¥ ´Ù¸¥ °³¹ßÀÚ°¡ README ÆÄÀÏÀ» ´ÙÀ½°ú °°ÀÌ º¯°æÇÏ¿© ÀúÀå¼Ò¿¡
ÀúÀåÇÏ¿´´Ù.
$ cat README
ÀÌ ÆÄÀÏÀº ¸Å¿ì Áß¿äÇÑ ³»¿ëÀ» ´ã°í ÀÖ½À´Ï´Ù.
1999³â 12¿ù 11ÀÏ
$ cvs commit -m "³¯Â¥ Ãß°¡" README
Checking in README;
/home/cvs/myprj/README,v <-- README
new revision: 1.2; previous revision: 1.1
done |
ÀÌÁ¦ ³»°¡ update¸¦ ÇÏ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ º¼ ¼ö ÀÖ´Ù.
$ cat README
ÀÌ ÆÄÀÏÀº ¸Å¿ì Áß¿äÇÑ ³»¿ëÀ» ´ã°í ÀÖ½À´Ï´Ù.
$ cvs update
cvs update: Updating .
M Hello.java
U README |
README ¾Õ¿¡ ºÙÀº U´Â ÆÄÀÏÀÌ °»½ÅµÈ(updated) °ÍÀ» ÀǹÌÇÑ´Ù. ÀÌÁ¦ ³»
ÀÛ¾÷ °ø°£ÀÇ README°¡ ÀúÀå¼Ò¿¡ ÀúÀåµÈ ³»¿ë°ú °°°Ô °»½ÅµÈ °ÍÀ» º¼ ¼ö
ÀÖ´Ù.
$ cat README
ÀÌ ÆÄÀÏÀº ¸Å¿ì Áß¿äÇÑ ³»¿ëÀ» ´ã°í ÀÖ½À´Ï´Ù.
1999³â 12¿ù 11ÀÏ |
±×·¸´Ù¸é ÀÌ µÎ °æ¿ì°¡ È¥ÇÕµÈ °æ¿ì´Â ¾î¶² ÀÏÀÌ ¹ß»ýÇÒ±î? Áï, ´Ù¸¥
°³¹ßÀÚ°¡ ¼öÁ¤ÇÏ¿© ÀúÀå¼Ò¿¡ ÀúÀåÇÑ ÆÄÀÏÀ» ³ª ¿ª½Ã ¼öÁ¤ÇÑ ÈÄ update¸¦
ÇÏ´Â °æ¿ìÀÌ´Ù. ´Ù¸¥ °³¹ßÀÚ°¡ Hello.java¸¦ ´ÙÀ½°ú
°°ÀÌ main
ÇÔ¼ö ¾Õ¿¡ ÁÖ¼®À» ÇÑ ÁÙ Ãß°¡ÇÏ¿©
commitÀ» Çß´Ù°í »ý°¢Çغ¸ÀÚ.
$ cat Hello.java
public class Hello {
// main ÇÔ¼ö
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
}
}
$ cvs commit -m "ÁÖ¼® Ãß°¡" Hello.java
Checking in Hello.java;
/home/cvs/myprj/Hello.java,v <-- Hello.java
new revision: 1.3; previous revision: 1.2
done |
±×·± ´ÙÀ½ ³»°¡ update¸¦ ÇÏ¸é ´ÙÀ½°ú °°ÀÌ µÈ´Ù.
$ cat Hello.java
public class Hello {
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
System.out.println("¹Ý°©½À´Ï´Ù.");
}
}
$ cvs update
cvs update: Updating .
RCS file: /home/cvs/myprj/Hello.java,v
retrieving revision 1.2
retrieving revision 1.3
Merging differences between 1.2 and 1.3 into Hello.java
M Hello.java |
¿©±â¼ update ¸í·ÉÀº ÇöÀç µð·ºÅ丮ÀÇ
Hello.java´Â
1.2¿¡¼ ¼öÁ¤µÈ »óÅÂÀÌ°í, ÀúÀå¼Ò¿¡ ÀÖ´Â
Hello.java´Â 1.3À̱⠶§¹®¿¡ ÀúÀå¼ÒÀÇ ³»¿ëÀ»
°¡Áö°í 1.2¿Í 1.3ÀÇ Â÷À̸¦ ÆľÇÇÏ°Ô µÈ´Ù. ±× Â÷ÀÌ°¡ ÇÑ ÁÙÀÌ Ãß°¡µÈ
°ÍÀÓÀ» ¹ß°ßÇÏ°í ³ª¸é ±× Â÷À̸¦ ÇöÀç µð·ºÅ丮ÀÇ
Hello.java¿¡ ¹Ý¿µÇÑ´Ù. ÇÏÁö¸¸
Hello.java¿¡´Â "¹Ý°©½À´Ï´Ù."¸¦ Ãâ·ÂÇÏ´Â ÁÙµµ µé¾î
Àֱ⠶§¹®¿¡ ¿©ÀüÈ÷ ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀÏ°ú´Â ´Ù¸¥ »óÅÂÀÌ´Ù. µû¶ó¼
ÀúÀå¼Ò¿¡ ÀÖ´Â ³»¿ë¿¡¼ º¯°æµÇ¾ú´Ù´Â ÀǹÌÀÇ MÀ» Ãâ·ÂÇÏ´Â °ÍÀÌ´Ù.
½ÇÁ¦·Î
Hello.javaÀÇ ³»¿ëÀ» º¸¸é ´ÙÀ½°ú °°ÀÌ ¹Ù²ï
°ÍÀ» º¼ ¼ö ÀÖ´Ù.
$ cat Hello.java
public class Hello {
// main ÇÔ¼ö
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
System.out.println("¹Ý°©½À´Ï´Ù.");
}
} |
´Ù¸¥ °³¹ßÀÚ°¡ Ãß°¡ÇÑ ÁÖ¼®ÀÌ µé¾î ÀÖÀ¸¸é¼ ³»°¡ Ãß°¡ÇÑ ÁÙµµ ±×´ë·Î
ÀÖÀ½À» º¼ ¼ö ÀÖ´Ù. ÀÌ°ÍÀÌ CVSÀÇ °·ÂÇÑ ÀåÁ¡ÀÌ´Ù. Áï, ¼·Î ´Ù¸¥ µÎ
°³¹ßÀÚ°¡ °°Àº ÆÄÀÏÀ» ¼öÁ¤ÇÏ¿´´Âµ¥µµ, ¼·ÎÀÇ ÀÛ¾÷À» Çϳª·Î ÇÕÃÄÁÖ´Â
°ÍÀÌ´Ù. ÇÑ°¡Áö ÁÖÀÇÇÒ Á¡Àº, ¸¸ÀÏ update¸¦ ¼öÇàÇÒ ¶§
Hello.java¸¦ ¿¡µðÅÍ¿¡¼ ºÒ·¯ ÀÛ¾÷ÁßÀ̾ú´Ù¸é, °è¼Ó
¿¡µðÅÍ·Î ÀÛ¾÷À» ÇÑ ÈÄ ÀúÀåÇÒ ¶§ update¿¡ ÀÇÇØ º¯°æµÈ ³»¿ëÀ» µ¤¾î ¾µ
¼ö°¡ ÀÖ´Ù´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ ¿¡µðÅÍ´Â ÀÛ¾÷ÇÏ°í ÀÖ´Â ÆÄÀÏÀÌ ´Ù¸¥
ÇÁ·Î±×·¥¿¡ ÀÇÇØ º¯°æµÇ¸é ÀÌ »ç½ÇÀ» »ç¿ëÀÚ¿¡°Ô ¾Ë¸®°í, º¯°æµÈ ÆÄÀÏÀ»
´Ù½Ã ºÒ·¯¿Ã ¼ö ÀÖµµ·Ï ÇÏÁö¸¸, °£È¤ ±×·¸Áö ¸øÇÑ ¿¡µðÅ͵µ ÀÖÀ» ¼ö
ÀÖÀ¸¹Ç·Î Á¶½ÉÇϱ⠹ٶõ´Ù.
ºñ·Ï CVS°¡ µÎ °³¹ßÀÚÀÇ ÀÛ¾÷ ³»¿ëÀ» ÇÕÃÄ ÁÖ±â´Â ÇÏÁö¸¸ ¿©±â¿¡µµ
ÇÑ°è´Â ÀÖ´Ù. µÎ °³¹ßÀÚ°¡ °°Àº ºÎºÐÀ» ¼öÁ¤ÇÑ´Ù¸é CVS´Â ´©±¸ÀÇ º¯°æ
³»¿ëÀ» ÅÃÇØ¾ß ÇÏ´ÂÁö ¾Ë µµ¸®°¡ ¾ø´Ù. ÀÌ·± °æ¿ì¸¦ Ãæµ¹(conflict)À̶ó
Çϸç, CVS´Â ÀÌ »ç½ÇÀ» °³¹ßÀÚ¿¡°Ô ¾Ë·Á °³¹ßÀÚ°¡ ÀûÀýÇÑ Á¶Ä¡¸¦ ÃëÇÒ ¼ö
ÀÖµµ·Ï ÇÑ´Ù.
À§ÀÇ ¿¹¿¡¼ ´Ù¸¥ °³¹ßÀÚ°¡ ÀÛ¾÷À» °è¼ÓÇÏ¿© "ȯ¿µÇÕ´Ï´Ù."¸¦
Ãâ·ÂÇϵµ·Ï ¸¸µé°í, À̸¦ ÀúÀå¼Ò¿¡ ÀúÀåÇß´Ù°í ÇÏÀÚ. ±×·¯¸é ÀúÀå¼Ò¿¡´Â
´ÙÀ½°ú °°Àº ³»¿ëÀÌ µé¾î ÀÖÀ» °ÍÀÌ´Ù.
public class Hello {
// main ÇÔ¼ö
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
System.out.println("ȯ¿µÇÕ´Ï´Ù.");
}
} |
ÀÌ ¶§ ³»°¡ update¸¦ Çϸé Ãæµ¹ÀÌ ¹ß»ýÇÑ´Ù.
$ cvs update
cvs update: Updating .
RCS file: /home/cvs/myprj/Hello.java,v
retrieving revision 1.3
retrieving revision 1.4
Merging differences between 1.3 and 1.4 into Hello.java
rcsmerge: warning: conflicts during merge
cvs update: conflicts found in Hello.java
C Hello.java |
ÇöÀç µð·ºÅ丮ÀÇ
Hello.java´Â 1.3¿¡¼ º¯°æµÈ
»óÅÂ("¹Ý°©½À´Ï´Ù." Ãâ·Â Ãß°¡)ÀÌ´Ù. ÀúÀå¼Ò¿¡ ÀúÀåµÇ¾î ÀÖ´Â °ÍÀº
1.4À̹ǷΠCVS´Â ÀúÀå¼Ò¿¡ ÀÖ´Â 1.3°ú 1.4ÀÇ Â÷À̸¦ »ìÇÉ´Ù. µÑÀÇ Â÷ÀÌ´Â
´Ù¸¥ °³¹ßÀÚ¿¡ ÀÇÇØ "ȯ¿µÇÕ´Ï´Ù."¸¦ Ãâ·ÂÇÏ´Â ÁÙÀÌ Ãß°¡µÈ °ÍÀÌ´Ù. À̸¦
ÇöÀçµð·ºÅ丮ÀÇ
Hello.java¿¡ Ãß°¡ÇÏ·Á°í
½ÃµµÇÏÁö¸¸, ±× À§Ä¡¿¡ ÀÌ¹Ì ´Ù¸¥ ³»¿ë("¹Ý°©½À´Ï´Ù." Ãâ·Â)ÀÌ µé¾î°¡
ÀÖÀ½À» ¾Ë°Ô µÈ´Ù. °á±¹ CVS´Â Ãæµ¹(C·Î Ç¥½Ã)ÀÌ »ý°åÀ½À» ¾Ë¸®°í ¼öÇàÀ»
¸¶Ä£´Ù.
Hello.javaÀÇ ³»¿ëÀ» º¸¸é ¾îµð¿¡¼ ¾î¶²
Ãæµ¹ÀÌ ¹ß»ýÇß´ÂÁö CVS°¡ Ç¥½ÃÇØ ³õÀº °ÍÀ» ¹ß°ßÇÒ ¼ö ÀÖ´Ù.
$ cat Hello.java
public class Hello {
// main ÇÔ¼ö
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
<<<<<<< Hello.java
System.out.println("¹Ý°©½À´Ï´Ù.");
=======
System.out.println("ȯ¿µÇÕ´Ï´Ù.");
>>>>>>> 1.4
}
} |
<<<<<<<¿Í >>>>>>>
»çÀÌ°¡ Ãæµ¹ÀÌ ÀÏ¾î³ ºÎºÐÀÌ´Ù. ±× ºÎºÐÀº ´Ù½Ã µÎ ºÎºÐÀ¸·Î ³ª´µ´Âµ¥,
======= ÀÌÀü±îÁö°¡ ÇöÀç µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀÇ ³»¿ëÀÌ°í, ±× ÀÌÈÄ°¡
ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀÏÀÇ ³»¿ëÀÌ´Ù. °³¹ßÀÚ´Â ÀÌ°É º¸°í ¾î´À ÇÑ ÂÊÀ»
¾ø¾Ö°Å³ª µÎ ³»¿ëÀ» ÀûÀýÈ÷ ÇÕÄ£ ÈÄ ´Ù½Ã commitÀ» ÇØ ÁÖ¸é µÈ´Ù. ÀÌ °æ¿ì
"¹Ý°©½À´Ï´Ù."°¡ ´õ ¸¶À½¿¡ µé¾î "ȯ¿µÇÕ´Ï´Ù."¸¦ »èÁ¦Çϱâ·Î Çß´Ù¸é
´ÙÀ½°ú °°ÀÌ °íÄ¡°í commitÀ» ÇÑ´Ù.
$ cat Hello.java
public class Hello {
// main ÇÔ¼ö
public static void main(String args[]) {
System.out.println("¾È³çÇϼ¼¿ä?");
System.out.println("¹Ý°©½À´Ï´Ù.");
}
}
$ cvs commit -m "Àλ縻 º¯°æ" Hello.java
Checking in Hello.java;
/home/cvs/myprj/Hello.java,v <-- Hello.java
new revision: 1.5; previous revision: 1.4
done |
ÇÏÁö¸¸ ´Ù¸¥ °³¹ßÀÚ°¡ ¼öÁ¤ÇÑ ³»¿ëÀ» ±×´ë·Î ³ö µÎ°í ³»°¡ °íÄ£ ºÎºÐÀ»
¾ø¾Ö±â·Î Çß´Ù¸é µû·Î commitÀ» ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ÀÌ¹Ì ÀúÀå¼Ò¿¡ ±× ³»¿ëÀÌ
µé¾î Àֱ⠶§¹®ÀÌ´Ù.
Ãæµ¹Àº commit ½Ã¿¡µµ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ¾ÕÀÇ ¿¹¿¡¼ ´Ù¸¥ °³¹ßÀÚ°¡
"ȯ¿µÇÕ´Ï´Ù." Ãâ·Â ¹®ÀåÀ» Ãß°¡ÇÏ¿© commitÀ» ÇÑ ÈÄ, ³»°¡ update ´ë½Å
commitÀ» ÇÏ·Á Çß´Ù¸é, CVS´Â ´ÙÀ½°ú °°ÀÌ Ãæµ¹ÀÌ ¹ß»ýÇßÀ½À» ¾Ë·Á ÁÙ
°ÍÀÌ´Ù.
$ cvs commit -m "¹Ý°©½À´Ï´Ù Ãß°¡" Hello.java
cvs commit: Up-to-date check failed for `Hello.java'
cvs [commit aborted]: correct above errors first! |
ÀÌ·± ¸Þ½ÃÁö¸¦ º¸°Ô µÇ¸é update ¸í·ÉÀ¸·Î ¾îµð¿¡¼ Ãæµ¹ÀÌ ¹ß»ýÇß´ÂÁö¸¦
È®ÀÎÇÏ¸é µÈ´Ù. ±× °á°ú¿Í ¼öÁ¤ ¹æ¹ýÀº ¾Õ¿¡¼ ³ª¿Â °Í°ú µ¿ÀÏÇÏ´Ù.
Áö±Ý±îÁö´Â ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀÏÀ» ¼öÁ¤ÇÏ°í, ±× °á°ú¸¦ ´Ù½Ã
ÀúÀåÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸¾Ò´Ù. ÇÏÁö¸¸ ÀÛ¾÷À» ÇÏ´Ù º¸¸é »õ·Î¿î ÆÄÀÏÀ»
¸¸µé°Å³ª ±âÁ¸ÀÇ ÆÄÀÏÀ» Áö¿ö¾ß ÇÒ °æ¿ì°¡ »ý±ä´Ù. ÀÌ·± °æ¿ì¿¡ »ç¿ëÇÏ´Â
¸í·ÉÀÌ add¿Í deleteÀÌ´Ù. »ç¿ë ¹æ¹ýÀº ¸Å¿ì
°£´ÜÇÏ´Ù. Test.java¶õ ÆÄÀÏÀ» »õ·Î ¸¸µé·Á¸é ¸ÕÀú
ÇöÀç µð·ºÅ丮¿¡ Test.java¸¦ »ý¼ºÇÑ ÈÄ ´ÙÀ½°ú °°ÀÌ
ÇÏ¸é µÈ´Ù.
$ cvs add Test.java
cvs add: scheduling file `Test.java' for addition
cvs add: use 'cvs commit' to add this file permanently |
¸Þ½ÃÁö¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ add ¸í·É¸¸À¸·Î´Â ÀúÀå¼Ò¿¡
Test.java°¡ »ý±âÁö ¾Ê´Â´Ù. ÀúÀå¼Ò¸¦ º¯°æÇÏ´Â °ÍÀº
commit ¸í·É»ÓÀÌ´Ù. add ¸í·ÉÀº ´ÜÁö commit ¸í·É½Ã¿¡
Test.java¸¦ Ãß°¡ÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ±â·ÏÇØ ³õÀ»
»ÓÀÌ´Ù. ÀÌ »ç½ÇÀº update·Î È®ÀÎÇØ º¼ ¼öµµ ÀÖ´Ù.
$ cvs update
cvs update: Updating .
A Test.java |
¾ÕÀÇ A´Â Ãß°¡µÉ(added) ÆÄÀÏÀÓÀ» ÀǹÌÇÑ´Ù. ±×·¯¹Ç·Î Test.java´Â ³ªÁß¿¡
ÀÛ¾÷ ³»¿ë Àüü¸¦ commitÇÒ ¶§ ÀúÀå¼Ò¿¡ Ãß°¡µÉ °ÍÀÌ´Ù. ¾Æ´Ï¸é ¹Ì¸®
Test.java¸¦ ÀÎÀÚ·Î commitÀ» ÇÏ¿© ¹Ù·Î Ãß°¡µÇµµ·Ï
ÇÒ ¼öµµ ÀÖ´Ù.
$ cvs commit -m "»õ ÆÄÀÏ" Test.java
RCS file: /home/cvs/myprj/Test.java,v
done
Checking in Test.java;
/home/cvs/myprj/Test.java,v <-- Test.java
initial revision: 1.1
done |
Ãß°¡µÈ ÆÄÀÏÀº ´Ù¸¥ °³¹ßÀÚ°¡ update¸¦ ÇÒ ¶§ ±× °³¹ßÀÚÀÇ ÀÛ¾÷ °ø°£¿¡µµ
»ý°Ü³ª¸ç, ÆÄÀÏ ³»¿ëÀÌ °»½ÅµÇ´Â °Í°ú ¸¶Âù°¡Áö·Î U¸¦ ½á¼ Ç¥½ÃÇÑ´Ù.
$ cvs update
cvs update: Updating .
U Test.java |
ÆÄÀÏÀ» Áö¿ì´Â °Íµµ
¸¶Âù°¡ÁöÀÌ´Ù. Test.java¸¦ Áö¿ì·Á¸é ´ÙÀ½°ú °°ÀÌ
ÇÑ´Ù.
$ rm Test.java
$ cvs delete Test.java
cvs remove: scheduling `Test.java' for removal
cvs remove: use 'cvs commit' to remove this file permanently |
delete ¸í·ÉÀ» »ç¿ëÇϱâ Àü¿¡ ¹Ýµå½Ã ¸ÕÀú ÆÄÀÏÀ» ÀÛ¾÷ °ø°£¿¡¼
»èÁ¦ÇÏ¿©¾ß ÇÑ´Ù. ÀÌÁ¦ commit ¸í·ÉÀ» »ç¿ëÇϸé
Test.java´Â ÀúÀå¼Ò¿¡¼ »èÁ¦µÉ °ÍÀÌ´Ù. À̰͵µ
update·Î È®ÀÎÇØ º»´Ù¸é ´ÙÀ½°ú °°ÀÌ ³ª¿Ã °ÍÀÌ´Ù.
$ cvs update
cvs update: Updating .
R Test.java |
RÀº »èÁ¦µÉ(removed) ÆÄÀÏÀÓÀ» ³ªÅ¸³½´Ù. ÀÌÁ¦ commitÀ¸·Î ¿ÏÀüÈ÷ »èÁ¦ÇØ
º¸ÀÚ.
$ cvs commmit -m "»èÁ¦" Test.java
Removing Test.java;
/home/cvs/myprj/Test.java,v <-- Test.java
new revision: delete; previous revision: 1.1
done |
ÀÌ·¸°Ô »èÁ¦µÈ ÆÄÀÏÀº ÀÌÈÄ·Î ´Ù¸¥ °³¹ßÀÚ°¡ update¸¦ ÇÏ°Ô µÇ¸é ´ÙÀ½°ú
°°Àº ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ¸é¼ ±× °³¹ßÀÚÀÇ ÀÛ¾÷ µð·ºÅ丮¿¡¼µµ »èÁ¦µÈ´Ù.
$ cvs update
cvs update: Updating .
cvs update: warning: Test.java is not (any longer) pertinent |
±× µ¿¾ÈÀÇ ¿¹¿¡¼ º» ¹Ù¿Í °°ÀÌ CVS´Â ÀÛ¾÷ ³»¿ëÀ» ÀúÀå¼Ò¿¡ ÀúÀåÇÒ
¶§¸¶´Ù ¸Þ½ÃÁö¸¦ Àûµµ·Ï ÇÏ°í ÀÖ´Ù. ÀÌ ³»¿ëÀº ÀúÀå¼Ò¿¡ ÇÔ²² ÀúÀåµÇ¾î log
¸í·ÉÀ» ÀÌ¿ëÇÏ¸é ¾ðÁ¦¶óµµ ²¨³» º¼ ¼ö
ÀÖ´Ù. Hello.java¸¦ ¿¹·Î µé¾î º¸ÀÚ.
$ cvs log Hello.java
RCS file: /home/cvs/myprj/Hello.java,v
Working file: Hello.java
head: 1.5
branch:
locks: strict
access list:
symbolic names:
start: 1.1.1.1
webdox: 1.1.1
keyword substitution: kv
total revisions: 6; selected revisions: 6
description:
----------------------------
revision 1.5
date: 1999/12/12 04:04:23; author: minskim; state: Exp; lines: +1 -0
Àλ縻 º¯°æ
----------------------------
revision 1.4
date: 1999/12/12 04:03:50; author: sehkone; state: Exp; lines: +0 -1
ȯ¿µÇÕ´Ï´Ù Ãß°¡
----------------------------
revision 1.3
date: 1999/12/12 04:01:40; author: sehkone; state: Exp; lines: +2 -1
ÁÖ¼® Ãß°¡
----------------------------
revision 1.2
date: 1999/12/12 03:51:36; author: minskim; state: Exp; lines: +1 -0
Àλ縻 Ãß°¡
----------------------------
revision 1.1
date: 1999/12/12 03:50:48; author: minskim; state: Exp;
branches: 1.1.1;
Initial revision
----------------------------
revision 1.1.1.1
date: 1999/12/12 03:50:48; author: minskim; state: Exp; lines: +0 -0
ÇÁ·ÎÁ§Æ® ½ÃÀÛ
============================================================================= |
¸Å¹ø commitÀ» ÇÒ ¶§¸¶´Ù ³¯Â¥¿Í ½Ã°¢, ÀúÀåÇÑ »ç¶÷, ¸Þ½ÃÁö µîÀÌ ±â·ÏµÇ´Â
°ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ÀÌ·¸°Ô log ¸í·ÉÀ» ¾²¸é ¾ðÁ¦ ´©°¡ ¾î¶² ÀÛ¾÷À» Çß´ÂÁö¸¦
ÇÑ´«¿¡ ¾Ë ¼ö Àֱ⠶§¹®¿¡ ±×°£ÀÇ ÀÛ¾÷ ³»¿ëÀ» ½±°Ô ÆľÇÇÒ ¼ö ÀÖ´Ù. ÀÌ
±â´ÉÀ» Àß È°¿ëÇϱâ À§Çؼ´Â ¹«¾ùº¸´Ùµµ ¸Å¹ø commitÀ» ÇÒ ¶§ ¾Ë±â ½±°í
ÀÛ¾÷ ³»¿ëÀ» Àß ¹Ý¿µÇÒ ¼ö ÀÖ´Â ¸Þ½ÃÁö¸¦ Àû´Â °ÍÀÌ Áß¿äÇÏ´Ù.