CVS »ç¿ë ±è¹Î½Ä 1999³â 12¿ù 12ÀÏ 1. ¼Ò°³ CVS´Â °¢Á¾ ÆÄÀÏÀÇ ¹öÁ¯À» ½±°Ô °ü¸®ÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â µµ±¸ÀÌ´Ù. µ¶ÀÚµé Áß¿¡´Â ¾ÆÁ÷ ¹öÁ¯ °ü¸®ÀÇ Çʿ伺À» Å©°Ô ´À³¢Áö ¸øÇÏ´Â »ç¶÷µµ ¸¹ÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸ CVS°¡ Á¦°øÇÏ´Â ±â´ÉµéÀ» Á÷Á¢ º¸°í ±× Æí¸®ÇÔÀ» üÇèÇØ º»´Ù¸é, ¾ÕÀ¸·Î´Â CVS ¾øÀÌ ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÑ´Ù´Â °ÍÀº »ó»óÇÒ ¼öµµ ¾ø´Â ÀÏÀÌ µÉ °ÍÀÌ´Ù. ¿¹¸¦ µé¾î °£´ÜÇÑ ÇÁ·Î±×·¥À» Çϳª ÀÛ¼ºÇÑ´Ù°í ÇÏÀÚ. ºñ±³Àû °£´ÜÇØ º¸ÀÌ´Â ¹®Á¦¿©¼­ °ð¹Ù·Î ÄÚµùÀ» ½ÃÀÛÇÏ¿© ÇϷ縸¿¡ ÀÛ¾÷À» ¸¶ÃÆ´Ù. ÇÏÁö¸¸ ½ÇÇàÇغ¸´Ï ÀǵµÇÑ ¹Ù´ë·Î °á°ú°¡ ³ª¿ÀÁö ¾Ê´Â´Ù. ¿øÀÎÀÌ ¹«¾ùÀÎÁö ¾Ë¾Æ³»±â À§ÇØ À̺κРÀúºÎºÐÀ» ¶â¾î°íÄ¡´Ù º¸¸é óÀ½ÀÇ ¸ð½ÀÀº °ÅÀÇ Ã£¾Æº¼ ¼ö ¾ø´Â º¹ÀâÇÑ ÄÚµå·Î º¯Çعö¸°´Ù. ÇÏÁö¸¸ °á±¹ ¹ß°ßÇÏ´Â °ÍÀº »ç¼ÒÇÑ ½Ç¼ö, ÀÌÁ¦ ±× µ¿¾ÈÀÇ ÀÛ¾÷À» ¸ðµÎ ¿ø·¡´ë·Î µ¹·Á³õÀ¸·Á ÇÏÁö¸¸ ÀÌ°Í ¿ª½Ã ¹ö±×¸¦ Àâ´Â ÀÏ ¸øÁö ¾Ê°Ô ¾î·Á¿î ÀÏÀÌ´Ù. ³ª¸§´ë·Î ¹Ù²î¾ú´Ù°í »ý°¢µÇ´Â ºÎºÐÀ» º¹±¸ÇغÁµµ Á¦´ë·Î µÇÁö ¾Ê°í, °á±¹¿¡´Â óÀ½ºÎÅÍ ´Ù½Ã ÄÚµùÇØ ¹ö¸°´Ù. ¸¸ÀÏ ÀÌ ¶§ óÀ½ÀÇ Äڵ带 ¹é¾÷ÇØ ³õ¾Ò´Ù¸é ã¾Æ³½ ¹ö±×¸¸À» °íÄ¡°í ÀÛ¾÷À» °è¼Ó ÁøÇàÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÏÁö¸¸ ±×·¸´Ù°í Çؼ­ ¸Å ÀÛ¾÷ ´Ü°è¸¶´Ù Äڵ带 ¹é¾÷ÇØ ³õ´Â´Ù¸é Á¶±Ý¸¸ Áö³ªµµ ¼ö¾øÀÌ ¸¹Àº ÆÄÀϵéÀÌ »ý°Ü³¯ °ÍÀÌ´Ù. ÀÌ·± ÆÄÀϵéÀº °ø°£µµ ¸¹ÀÌ Â÷ÁöÇÒ »Ó´õ·¯ ±× ¸¹Àº ÆÄÀϵéÀ» °ü¸®ÇÏ´Â °Í ÀÚü°¡ ¶Ç´Ù¸¥ ¹®Á¦°¡ µÉ °ÍÀÌ´Ù. CVS´Â ¹Ù·Î ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇØ ÁØ´Ù. CVS¸¦ ÀÌ¿ëÇÏ¸é ¸Å ÀÛ¾÷ ´Ü°è¸¶´Ù Äڵ带 ÀúÀåÇÒ ¼ö ÀÖÀ½Àº ¹°·Ð, ¿øÇÏ´Â ´Ü°èÀÇ Äڵ带 ¾ðÁ¦¶óµµ ²¨³» º¼ ¼ö ÀÖ´Ù. °Ô´Ù°¡ CVS´Â °¢ ´Ü°è¿¡¼­ º¯°æµÈ ºÎºÐ¸¸À» ÀúÀåÇϱ⠶§¹®¿¡ ÀúÀå °ø°£µµ ¸¹ÀÌ ÇÊ¿ä·Î ÇÏÁö ¾Ê´Â´Ù. ¶ÇÇÑ °¢ ´Ü°è¸¶´Ù ÀÛ¾÷ÇÑ ³»¿ëÀ» ±Û·Î Àû¾î ÇÔ²² ÀúÀåÇÒ ¼ö ÀÖÀ¸¹Ç·Î °³¹ß ³»¿ëÀ» ÇÑ´«¿¡ ¾Ë¾Æº¼ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. CVSÀÇ ¶Ç´Ù¸¥ ÀåÁ¡Àº ¿©·µÀÌ °øµ¿À¸·Î ÁøÇàÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡¼­ ³ªÅ¸³­´Ù. »ç½Ç ¿©·¯¸íÀÌ ÇÔ²² ÀÛ¾÷ÇÏ´Ù º¸¸é °¢ÀÚ ÀÚ±âÀÇ ÀÛ¾÷ ÆÄÀÏÀ» °®°Ô µÇ±â ¶§¹®¿¡ ¾Æ¹«¸® ÁÖÀǸ¦ ÇÏ¿©µµ ´Ù¸¥ »ç¶÷ÀÌ º¯°æÇØ ³õÀº °ÍÀ» µ¤¾î ¾²´Â ÀÏÀÌ Á¾Á¾ ¹ß»ýÇÏ°Ô µÈ´Ù. ±×·¸´Ù°í ÀÛ¾÷À» Àß ³ª´©¾î °¢°¢ÀÌ ¼­·Î ´Ù¸¥ ÆÄÀϸ¸À» °®°í ÀÛ¾÷Çϵµ·Ï ÇÏ´Â °Íµµ ½±Áö ¾Ê´Ù. óÀ½¿¡´Â °¢±â ´Ù¸¥ ÆÄÀÏÀ» ´Ù·çµµ·Ï ÀÏÀ» ³ª´©Áö¸¸ Á¶±Ý Áö³ª´Ùº¸¸é ¼­·Î°¡ »ó´ë¹æÀÇ ÆÄÀÏÀ» °íÃľ߸¸ ÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ½¬¿î ´ë¾ÈÀº ÇÑ ÆÄÀÏÀ» ÀÛ¾÷ÇÏ´Â µ¿¾È ´Ù¸¥ »ç¶÷Àº ±× ÆÄÀÏÀ» °Çµå¸®Áö ¸øÇÏ°Ô ÇÏ´Â °ÍÀÌÁö¸¸, ÀÌ·² °æ¿ì ÆÄÀÏÀ» ¼öÁ¤ÇÏ°í ½Í¾îµµ ´Ù¸¥ °³¹ßÀÚ°¡ ±× ÆÄÀÏÀ» ¼öÁ¤ÇÏ°í ÀÖ´Ù¸é ±× ÀÛ¾÷ÀÌ ³¡³¯ ¶§±îÁö ±â´Ù·Á¾ß Çϱ⠶§¹®¿¡ Àüü ÀÛ¾÷ È¿À²ÀÌ ¶³¾îÁö°Ô µÈ´Ù. ¹Ý¸é CVS´Â ½ÉÁö¾î °°Àº ÆÄÀϵµ ¿©·¯ »ç¶÷ÀÌ ÇÔ²² ÀÛ¾÷ÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. °¢ÀÚ ÇÑ ÆÄÀÏ ³»ÀÇ ´Ù¸¥ ºÎºÐÀ» ¼öÁ¤ÇÑ´Ù¸é CVS°¡ ±× ³»¿ëÀ» Çϳª·Î ÇÕÃÄ ÁÙ °ÍÀÌ´Ù. ¹°·Ð µÎ »ç¶÷ÀÌ µ¿½Ã¿¡ °°Àº ÁÙÀ» °íÄ£´Ù¸é CVS°¡ ±×°ÍÀ» ÇÕÃÄÁÙ µµ¸®´Â ¾ø´Ù. ÇÏÁö¸¸ ±×·² °æ¿ì¶óµµ ¼­·Î °°Àº ÁÙÀ» °íÃÆÀ½À» °³¹ßÀÚ¿¡°Ô ¾Ë·ÁÁÖ°í ±× ³»¿ëµµ º¸¿©Á־ °³¹ßÀÚ°¡ ÀûÀýÇÑ Á¶Ä¡¸¦ ÃëÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. »Ó¸¸¾Æ´Ï¶ó CVS´Â Unix ȯ°æÀº ¹°·Ð, Windows³ª Macintosh¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖ¾î °¢ °³¹ßÀÚµéÀÌ ¿øÇϴ ȯ°æ¿¡¼­ ÀÛ¾÷ÇÒ ¼ö ÀÖ´Ù. CVS´Â ÀÌ¹Ì ´ë´Ù¼öÀÇ °ø°³ ÇÁ·ÎÁ§Æ®¿¡¼­ »ç¿ëµÇ¾î ±× È¿´ÉÀ» ÀÔÁõÇÏ¿´´Ù. ½ÇÁ¦·Î ¿ì¸®°¡ ¾Ë°í ÀÖ´Â ´ëºÎºÐÀÇ °ø°³ ÇÁ·ÎÁ§Æ®°¡ CVS¸¦ »ç¿ëÇÑ´Ù. Apache HTTP server, Mozilla µîÀÌ ´ëÇ¥ÀûÀÎ ¿¹ÀÌ´Ù. ÀÌ·¯ÇÑ °ø°³ ÇÁ·ÎÁ§Æ®µéÀº ´ëºÎºÐ ÇöÀç °³¹ß ÁßÀÎ ³»¿ëÀ» CVS¸¦ ÅëÇØ ¸ðµç »ç¶÷µéÀÌ ¹Þ¾Æ º¼ ¼ö ÀÖµµ·Ï ÇÏ°í ÀÖ´Ù. ±×·¸±â ¶§¹®¿¡ CVS¸¦ ÇÁ·ÎÁ§Æ®¿¡ µµÀÔÇÏ´Â °æ¿ì°¡ ¾Æ´Ï¶ó ÇÏ´õ¶óµµ ÀÌ·± °³¹ß ¹öÁ¯À» ¹Þ¾Æ º¸°í ½Í´Ù¸é CVSÀÇ »ç¿ë¹ýÀ» ÀÍÇô µÑ ÇÊ¿ä°¡ ÀÖ´Ù. 2. µ¿ÀÛ ¹æ½Ä 2.1. ÀúÀå¼Ò ¿©·¯ ¸íÀÌ ÇÔ²² ÀÛ¾÷ÇÒ ¼ö Àִ ȯ°æÀ» Á¦°øÇÏ·Á¸é ¾î¶°ÇÑ ¿ä¼Ò°¡ ÇÊ¿äÇÒ±î? °¡Àå ¸ÕÀú ¶°¿À¸£´Â °ÍÀº °°ÀÌ ÀÛ¾÷ÇÏ´Â ÆÄÀÏÀ» º¸°üÇÒ Àå¼ÒÀÏ °ÍÀÌ´Ù. CVS´Â ÀÌ·¯ÇÑ ¿ªÇÒÀ» ÇÏ´Â °÷À» ÀúÀå¼Ò(repository)¶ó ºÎ¸¥´Ù. ±×·¸´Ù°í Ưº°ÇÑ µ¥ÀÌÅͺ£À̽º³ª ´Ù¸¥ ÀúÀå ¸Åü¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ±×Àú ÇϳªÀÇ µð·ºÅ丮¿¡ ºÒ°úÇÏ´Ù. ÀÌ µð·ºÅ丮¿¡´Â CVSÀÇ Àü¹ÝÀûÀÎ ¼³Á¤ »çÇ×°ú °¢ ÇÁ·ÎÁ§Æ®ÀÇ ÆÄÀϵé(¹®¼­, ÇÁ·Î±×·¥ µî)Àº ¹°·Ð, °¢ ÆÄÀÏÀÇ ¹öÁ¯ °ü¸®¿¡ ÇÊ¿äÇÑ Á¤º¸, ÆÄÀϺ° ÀÛ¾÷ ±â·ÏµéÀ» ÀúÀåÇÏ°Ô µÈ´Ù. ¿©±â¿¡ ÀÖ´Â ÆÄÀϵéÀº ¸ðµÎ CVS°¡ °ü¸®ÇϹǷΠ»ç¿ëÀÚ´Â ÀÌ ÆÄÀϵéÀ» Á÷Á¢ °Çµå¸± ÇÊ¿ä°¡ ÀüÇô ¾ø´Ù. 2.2. ÇÁ·ÎÁ§Æ® ½ÃÀÛ ÀÏ´Ü ÀúÀå¼Ò¸¦ ¸¸µé°í ³ª¸é ÀÌÈķδ ¿©·¯ ÇÁ·ÎÁ§Æ®µéÀÌ ±× ÀúÀå¼Ò¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. CVS¸¦ ÀÌ¿ëÇÏ·Á´Â »ç¿ëÀڴ óÀ½ ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇϴµ¥¿¡ ÇÊ¿äÇÑ ÆÄÀÏ ¹× ±âº» µð·ºÅ丮 ±¸Á¶¸¦ ÀÚ½ÅÀÇ ÀÛ¾÷ µð·ºÅ丮¿¡ ¸¸µé°í, À̸¦ ÀúÀå¼Ò·Î ¿Å±æ ¼ö ÀÖ´Ù. ±×·¯¸é ÀúÀå¼Ò¿¡´Â »õ·Î¿î µð·ºÅ丮°¡ ¸¸µé¾îÁö°í ÀÌ °÷Àº ¾ÕÀ¸·Î ÇÁ·ÎÁ§Æ® ÁøÇàÀ» À§ÇÑ °ø°£À¸·Î »ç¿ëµÈ´Ù. ¿©±â±îÁö°¡ ¿Ï·áµÇ¸é ÇÁ·ÎÁ§Æ® ½ÃÀÛÀ» À§ÇÑ ¸ðµç Áغñ°¡ ³¡³­ °ÍÀÌ´Ù. ÀÌÈķδ ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â »ç¶÷µé °¢°¢ÀÇ ¸òÀÌ´Ù. 2.3. °³¹ßÀÚ °¢ÀÚÀÇ ÇÁ·ÎÁ§Æ® ÁøÇà ÀúÀå¼Ò¿¡ ÇÁ·ÎÁ§Æ®¸¦ À§ÇÑ °ø°£ÀÌ ¸¶·ÃµÇ°í ³ª¸é ½ÇÁ¦·Î ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â °³¹ßÀÚ´Â ¾î¶»°Ô CVS¸¦ ÀÌ¿ëÇÏ¸é µÉ±î? ÀúÀå¼ÒÀÇ ³»¿ëÀ» °¡Áö°í Á÷Á¢ ÀÛ¾÷ÇÒ ¼ö´Â ¾øÀ¸¹Ç·Î ¿ì¼± ÀúÀå¼Ò¿¡ ÀÖ´Â ³»¿ëÀ» º¹»çÇÏ¿© ÀÚ½ÅÀÇ ÀÛ¾÷ µð·ºÅ丮¸¦ ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ °úÁ¤À» CVS¿¡¼­´Â checkoutÀ̶ó°í ÇÑ´Ù. checkoutÀ¸·Î ¸¸µé¾îÁø ÀÛ¾÷ µð·ºÅ丮´Â ÀڽŸ¸ÀÇ ÀÛ¾÷ °ø°£ÀÌ µÇ¸ç, °³¹ßÀÚ´Â ±× ÆÄÀϵéÀ» ¸¶À½´ë·Î º¯°æÇÒ ¼ö ÀÖ´Ù. ÀÌÈķδ °è¼Ó ÀÛ¾÷À» ÁøÇàÇϸ鼭 CVSÀÇ ¸í·ÉÀ» ÀÌ¿ëÇÏ¿© ÀÚ½ÅÀÇ ÀÛ¾÷ °á°ú¸¦ ÀúÀå¼Ò·Î ¿Å±â°í, ´Ù¸¥ »ç¶÷ÀÌ ÀúÀå¼Ò¿¡ ¿Ã·Á ³õÀº ÀÛ¾÷ °á°ú¸¦ ¹Þ¾Æ¿À´Â Àϸ¸À» ¹Ýº¹ÇÏ¸é µÈ´Ù. °øµ¿ ÀÛ¾÷À¸·Î ÀÎÇØ »ý±æ ¼ö ÀÖ´Â ¹®Á¦µéÀÇ ´ëºÎºÐÀº CVS°¡ ÇØ°áÇØ ÁÙ °ÍÀÌ´Ù. 2.4. ¿ä¾à CVS¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÏ´Â ÀýÂ÷´Â ´ÙÀ½°ú °°´Ù. 1. ÀúÀå¼Ò¸¦ ÃʱâÈ­ÇÑ´Ù. (CVS °ü¸®ÀÚ) 2. ÇÁ·ÎÁ§Æ®¸¦ ÃʱâÈ­ÇÑ´Ù. (ÇÁ·ÎÁ§Æ® °ü¸®ÀÚ) 3. ÀÛ¾÷ °ø°£À» ¸¶·ÃÇÑ´Ù. (°³¹ßÀÚ) 4. ½ÇÁ¦ ÀÛ¾÷ (°³¹ßÀÚ) 5. ÀÚ½ÅÀÇ ÀÛ¾÷ ³»¿ëÀ» ÀúÀå¼Ò¿¡ ÀúÀåÇÏ°í ´Ù¸¥ °³¹ßÀÚÀÇ ÀÛ¾÷ ³»¿ëÀ» ¹Þ¾Æ¿Â´Ù. (°³¹ßÀÚ) 1¹øÀº óÀ½ CVS¸¦ ¼³Ä¡ÇÒ ¶§ ÇÑ ¹ø¸¸ ÇØ ÁÖ¸é µÇ°í, 2¹øÀº »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÒ ¶§¸¶´Ù ÇÊ¿äÇÑ ÀÛ¾÷ÀÌ´Ù. °¢ °³¹ßÀÚ´Â 3¹øÀ» ¼öÇàÇÑ ÈÄ 4¹ø°ú 5¹ø °úÁ¤À» µÇÇ®ÀÌÇϸç ÀÛ¾÷À» ÁøÇàÇÏ°Ô µÈ´Ù. 3. ±âº»ÀûÀÎ »ç¿ë ¹æ¹ý CVS°¡ ¾î¶² °ÍÀÌ°í ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö¸¦ ¾Ë¾ÒÀ¸´Ï °¢ ´Ü°èº°·Î CVS¸¦ »ç¿ëÇÏ´Â ¹ýÀ» ¾Ë¾Æº¸°Ú´Ù. ÀÌ Àý¿¡¼­´Â CVSÀÇ ¸ðµç ±â´ÉÀ» ¼³¸íÇϱ⺸´Ù´Â ÀÚÁÖ »ç¿ëµÇ´Â ±â´ÉÀ» ¿¹¿Í ÇÔ²² ¼³¸íÇÑ´Ù. ¿©±â¿¡¼­ ¼³¸íÇÏ´Â ³»¿ë Á¤µµ¸¸ °¡Áö°íµµ ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼­ CVS¸¦ »ç¿ëÇÏ´Â µ¥¿¡´Â ¹«¸®°¡ ¾øÀ» °ÍÀÌ´Ù. CVS´Â ´ëºÎºÐÀÇ Linux ¹èÆ÷º»¿¡ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î Linux¸¦ »ç¿ëÇÏ°í ÀÖ´Ù¸é ÀÌ¹Ì CVS°¡ ¼³Ä¡ µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. ¸¸ÀÏ CVS ¸í·ÉÀÌ ¾ø´Ù¸é http://www.cyclic.com/ ¿¡¼­ Àû´çÇÑ ÆÄÀÏÀ» ¹Þ¾Æ ¼³Ä¡ÇÏ¸é µÈ´Ù. CVS¸¦ ÀÌ¿ëÇÏ´Â ¸ðµç °úÁ¤Àº cvs ¸í·ÉÀ» ÅëÇØ ÀÌ·ç¾îÁø´Ù. cvs ¸í·ÉÀÇ ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù. $ cvs [cvs ¿É¼Ç] ¸í·É [¸í·É ¿É¼Ç°ú ÀÎÀÚ] ¸í·É ºÎºÐ¿¡´Â ½ÇÁ¦·Î cvs¿¡°Ô Áö½ÃÇÒ ¸í·ÉÀÌ ¿À°Ô µÇ¸ç, °¢ ¸í·É¸¶´Ù ¿ä±¸ÇÏ´Â ÀÎÀÚ°¡ ÀÖÀ» ¼ö ÀÖ´Ù. ½ÇÁ¦·Î »ç¿ëµÇ´Â ¸í·ÉÀÇ Á¾·ù¿Í ±â´É¿¡ ´ëÇؼ­´Â »õ·Î¿î ¸í·ÉÀÌ ¼Ò°³µÉ ¶§¸¶´Ù ¾ð±ÞÇϵµ·Ï ÇÏ°Ú´Ù. 3.1. ÀúÀå¼Ò ÃʱâÈ­ CVS¸¦ »ç¿ëÇϱâ À§Çؼ­ °¡Àå ¸ÕÀú ÇÒ ÀÏÀº °¢ ÇÁ·ÎÁ§Æ®ÀÇ ÆÄÀϵéÀ» ÀúÀåÇÒ ÀúÀå¼Ò(repository)ÀÇ À§Ä¡¸¦ Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀúÀå¼Ò¸¦ ÀÌ¿ëÇÒ ÇÁ·ÎÁ§Æ®µéÀÇ ±Ô¸ð¸¦ °í·ÁÇÏ¿© ÃæºÐÇÑ °ø°£À» °¡Áø µð·ºÅ丮¸¦ ÀúÀå¼Ò·Î ¾²µµ·Ï ÇÑ´Ù. ÀúÀå¼Ò¸¦ /home/CVS¿¡ ¸¸µé±â·Î Çß´Ù¸é ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­ÇÒ ¼ö ÀÖ´Ù. # cvs -d /home/CVS init ¿©±â¼­ -d´Â ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ³ªÅ¸³»¸ç, ¸¶Áö¸·ÀÇ init°¡ CVS ¸í·ÉÀÌ´Ù. ¹°·Ð ÀÌ ¸í·ÉÀ» »ç¿ëÇϱâ À§Çؼ­´Â /home¿¡ ¾²±â ±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù. ±×·¯¹Ç·Î ´ë°³ÀÇ °æ¿ì ÀúÀå¼ÒÀÇ ÃʱâÈ­´Â root ±ÇÇÑÀ» °¡Áø ¾¾½ºÅÛ °ü¸®ÀÚ°¡ ÇÏ°Ô µÈ´Ù. ¸í·ÉÀÌ ½ÇÇàµÇ°í ³ª¸é /home¿¡ CVS¶õ µð·ºÅ丮°¡ »ý±â°í, ±× ¾È¿¡´Â CVSROOT¶õ µð·ºÅ丮°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ CVSROOT µð·ºÅ丮´Â CVSÀÇ °¢Á¾ ¼³Á¤ ³»¿ëÀ» ´ã°í ÀÖ´Â µð·ºÅ丮ÀÌ´Ù. ´Ù½Ã ¸»ÇÏÁö¸¸ ÀúÀå¼Ò(/home/CVS)ÀÇ ÆÄÀϵéÀ» Á÷Á¢ °Çµå¸®´Â °ÍÀº Àý´ë·Î ÇÇÇØ¾ß ÇÑ´Ù. ÀÌ ÆÄÀϵéÀ» º¯°æÇÏ°í ½Í´Ù¸é cvs ¸í·ÉÀ» ÀÌ¿ëÇØ¾ß ÇÑ´Ù. ÀúÀå¼Ò¸¦ ¸¸µé¾úÀ¸¸é CVS¸¦ ÀÌ¿ëÇÒ °³¹ßÀڵ鿡°Ô ÀúÀå¼Ò°¡ ÀÖ´Â µð·ºÅ丮¿¡ ¾²±â ±ÇÇÑÀ» ÁÖ¾î¾ß ÇÑ´Ù. ±×·¯±â À§ÇØ °³¹ßÀÚµéÀ» ¸ðµÎ °°Àº ±×·ì(¿¹: cvs)ÀÇ ±¸¼º¿øÀ¸·Î ¸¸µç´Ù. ÀÌ´Â ¾¾½ºÅÛº°·Î Á¸ÀçÇÏ´Â ±×·ì °ü¸® µµ±¸¸¦ ÀÌ¿ëÇϰųª groupadd¿Í °°Àº ¸í·ÉÀ¸·Î cvs¶ó´Â ±×·ìÀ» ¸¸µé°í, ±×·ì °ü¸® µµ±¸¸¦ ¾²°Å³ª /etc/group ÆÄÀÏÀ» Á÷Á¢ ¼öÁ¤ÇÏ¿© °³¹ßÀÚµéÀ» ±× ±×·ì¿¡ Ãß°¡ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î minskim°ú sehkoneÀ̶ó´Â »ç¿ëÀÚ¸¦ cvs ±×·ì¿¡ Ãß°¡ÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ÁÙÀÌ /etc/group¿¡ »ý±æ °ÍÀÌ´Ù. cvs:*:510:minskim,sehkone ÀÌÁ¦ ´ÙÀ½ ¸í·ÉÀ¸·Î µð·ºÅ丮ÀÇ ±ÇÇÑÀ» ¿­¾î ÁÖ¸é µÈ´Ù. # chgrp -R cvs /home/CVS # chmod -R g+w /home/CVS ÀÌÈķδ cvs ±×·ì¿¡ ¼ÓÇÑ °³¹ßÀÚ´Â ÀÌ ÀúÀå¼Ò¸¦ ¸¶À½´ë·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. 3.2. ÀúÀå¼Ò ÀÌ¿ë ¸ðµç CVS ¸í·ÉÀº ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ¾Ë¾Æ¾ß ¼öÇàµÉ ¼ö ÀÖ´Ù. ¾Õ¿¡¼­ º» ÀúÀå¼Ò ÃʱâÈ­ÀÇ ¿¹¿¡¼­µµ init ¸í·ÉÀ» »ç¿ëÇϸ鼭 -d ¿É¼ÇÀ¸·Î ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ¾Ë·Á ÁÖ°í ÀÖ´Ù. CVSÀÇ ´Ù¸¥ ¸í·Éµéµµ °°Àº ¿É¼ÇÀ¸·Î ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¶Ç´Ù¸¥ ¹æ¹ýÀº CVSROOT¶ó´Â ȯ°æº¯¼öÀÇ °ªÀ¸·Î ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ÁÖ´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î shÀ̳ª bash¸¦ ¾´´Ù¸é ´ÙÀ½ÀÇ ³»¿ëÀ» ÃʱâÈ­ ÆÄÀÏ(.bash-profile µî)¿¡ ³Ö¾î ³õÀ¸¸é Æí¸®ÇÒ °ÍÀÌ´Ù. CVSROOT=/home/CVS export CVSROOT cshÀ̳ª tcshÀ» ¾´´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. setenv CVSROOT /home/CVS ÀÌ·¸°Ô ¼³Á¤À» ÇÏ°í ³ª¸é -d ¿É¼Ç°ú ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ¸Å¹ø ÁÙ ÇÊ¿ä ¾øÀÌ ¹Ù·Î cvs µÚ¿¡ ¿øÇÏ´Â ¸í·ÉÀ» ÁÖ¸é µÈ´Ù. °³¹ßÀÚ°¡ CVS ¸í·ÉÀ» ÀÌ¿ëÇÏ·Á ÇÏ´Â °æ¿ì °í·ÁÇØ¾ß ÇÒ »çÇ×ÀÌ Çϳª ´õ ÀÖ´Ù. °³¹ßÀÚ°¡ ¾î¶² ¹æ½ÄÀ¸·Î ÀúÀå¼Ò°¡ À§Ä¡ÇÑ ±â°è¿¡ ¿¬°áÇϴ°¡ ÇÏ´Â °ÍÀÌ´Ù. CVS´Â ´Ù¾çÇÑ ¿¬°á ¹æ½ÄÀ» Áö¿øÇϴµ¥, ¿©±â¿¡¼­´Â ÁÖ·Î »ç¿ëµÇ´Â ¼¼ °¡Áö ¹æ½Ä¿¡ ´ëÇØ ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. 3.2.1. ÀúÀå¼Ò¿Í °³¹ßÀÚ°¡ °°Àº ±â°è¸¦ ¾µ °æ¿ì ¾Õ¿¡¼­ ÀúÀå¼Ò¸¦ ÃʱâÈ­ÇÑ °Í°ú °°Àº °æ¿ìÀÌ´Ù. °°Àº ±â°è¸¦ ¾²±â ¶§¹®¿¡ ÀúÀå¼Ò°¡ ÀÖ´Â µð·ºÅ丮 À̸§À» ÁÖ´Â °ÍÀ¸·Î ÃæºÐÇÏ´Ù. ¾Õ¿¡¼­ ¸¸µç ÀúÀå¼Ò¿¡ CVS ¸í·ÉÀ» ³»¸®·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. $ cvs -d /home/CVS ¸í·É 3.2.2. °³¹ßÀÚ°¡ rsh À» ÀÌ¿ëÇÏ´Â °æ¿ì °³¹ßÀÚ°¡ ÀúÀå¼Ò¿Í ´Ù¸¥ ±â°è¸¦ »ç¿ëÇÒ °æ¿ì ÀϹÝÀûÀ¸·Î ¾²ÀÌ´Â ¹æ¹ýÀÌ´Ù. ¿©·µÀÌ ÁøÇàÇÏ´Â ÇÁ·ÎÁ§Æ®´Â ´ëºÎºÐ °³¹ßÀÚµéÀÌ ÀÚ½ÅÀÇ ±â°è¿¡¼­ ÀÛ¾÷À» ÇÏ°Ô µÇ´Âµ¥, ÀÌ ¹æ½ÄÀ» ÀÌ¿ëÇÏ¸é ±×·¯ÇÑ °æ¿ì¿¡µµ ½±°Ô ÀúÀå¼Ò¸¦ °øÀ¯ÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. ÀÌ ¹æ¹ýÀ» ¾²·Á¸é ¸ÕÀú rshÀ» »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ÀúÀå¼Ò´Â cvs.webdox.co.krÀ̶õ ±â°è¿¡ ÀÖ°í, °³¹ßÀÚÀÇ ±â°è´Â birch.webdox.co.krÀ̶ó°í ÇÏÀÚ. °³¹ßÀÚ´Â cvs.webdox.co.kr¿¡ minskimÀ̶õ °èÁ¤À» °®°í ÀÖ°í, birch.webdox.co.kr¿¡ minÀ̶õ °èÁ¤À» °®°í ÀÖ´Ù. ±×·¯¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î rshÀ» ¾µ ¼ö ÀÖ´ÂÁö¸¦ ½ÃÇèÇØ º¼ ¼ö ÀÖ´Ù. rsh -l minskim cvs.webdox.co.kr 'echo $PATH' µÚÀÇ ¸í·ÉÀÌ ¼öÇàµÈ´Ù¸é rshÀ» ¾µ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¸¸ÀÏ ±×·¸Áö ¾Ê´Ù¸é cvs.webdox.co.kr¿¡ ·Î±×ÀÎÇÏ¿© .rhosts¶õ ÆÄÀÏÀ» ¸¸µéÀÚ. .rhosts¿¡´Â ´ÙÀ½°ú °°Àº ³»¿ëÀÌ ÀÖ¾î¾ß ÇÑ´Ù. birch.webdox.co.kr min ÀÌÁ¦ ´Ù½Ã ÇÑ ¹ø À§ÀÇ rsh ¸í·ÉÀ» ½ÃÇèÇغ¸ÀÚ. À̹ø¿¡µµ ¾È µÈ´Ù¸é cvs.webdox.co.kr¿¡¼­ rshÀ» ÅëÇÑ Á¢¼ÓÀ» ¸·¾Æ ³õ¾ÒÀ» °¡´É¼ºÀÌ Å©´Ù. ÀÌ´Â cvs.webdox.co.krÀÇ °ü¸®ÀÚ¿¡°Ô ¹®ÀÇÇÏ¿© ÇØ°áÇÏ¿©¾ß ÇÑ´Ù. rshÀ» ¾µ ¼ö ÀÖ´Ù¸é CVS ¸í·ÉÀ» ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. $ cvs -d :ext:minskim@cvs.webdox.co.kr:/home/CVS ¸í·É ¸¸ÀÏ rsh°ú °°Àº ¹æ½ÄÀ¸·Î µ¿ÀÛÇÏ´Â ´Ù¸¥ ¸í·ÉÀÌ ÀÖ´Ù¸é ±× ¸í·ÉÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ´ëÇ¥ÀûÀÎ °ÍÀÌ sshÀÌ´Ù. ƯÈ÷ ´©±º°¡ ³×Æ®¿÷À» ÅëÇØ Àü´ÞµÇ´Â °èÁ¤ÀÇ ¾ÏÈ£¸¦ °¡·Îç À§ÇèÀÌ ÀÖ´Ù¸é rsh ´ë½Å sshÀ» »ç¿ëÇÏ¿© ±× À§ÇèÀ» ÁÙÀÏ ¼ö ÀÖ´Ù. ±×·¯±â À§Çؼ­´Â CVS_RSH¶ó´Â ȯ°æº¯¼ö¸¦ ssh·Î ¼±¾ðÇØÁÖ¸é µÈ´Ù. ÀÌ °æ¿ì ÀúÀå¼Ò°¡ ÀÖ´Â ±â°è¿¡¼­´Â .rhosts ÆÄÀÏÀ» ¸¸µé ÇÊ¿ä´Â ¾ø´Â ´ë½Å sshd µîÀÌ µ¹°í ÀÖ¾î¾ß ÇÑ´Ù. 3.2.3. ¾ÏÈ£ ÀÎÁõ ¹æ½Ä ÀÌ¿ë ÇÁ·ÎÁ§Æ®¿¡ Á÷Á¢ ÀÌ¿ëÇÏÁö ¾Ê´õ¶óµµ CVS°¡ ÇÊ¿äÇÑ °æ¿ì´Â CVS¸¦ »ç¿ëÇÏ´Â ¿©·¯ °ø°³ ÇÁ·ÎÁ§Æ®µéÀÇ ÃֽŠÇÁ·Î±×·¥µéÀ» ¹Þ¾Æ ¿À´Â °æ¿ìÀÏ °ÍÀÌ´Ù. °³¹ßÀÌ »¡¸® ÁøÇàµÇ´Â ÇÁ·ÎÁ§Æ®µéÀº ´ëºÎºÐ CVS¸¦ ÅëÇØ ÇÁ·Î±×·¥À» ¹Þ¾Æ °¥ ¼ö ÀÖµµ·Ï ÇÏ°í ÀÖ´Ù. ÀÌ·± ÇÁ·ÎÁ§Æ®µéÀÇ È¨ÆäÀÌÁö¿¡¼­´Â ÀúÀå¼ÒÀÇ À§Ä¡ÀÌ´Ù. MozillaÀÇ ÃֽŠsource¸¦ ¹Þ¾Æ º¸°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. $ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login ±×·¯¸é ¾ÏÈ£¸¦ ¹°¾î¿À´Âµ¥ ¾ÏÈ£´Â anonymousÀÌ´Ù. ÀÏ´Ü ·Î±×ÀÎÀ» ÇÏ°í ³ª¸é ÀÎÁõ Á¤º¸°¡ .cvspass¶õ ÆÄÀÏ¿¡ ÀúÀåÀÌ µÇ¸ç, ÀÌÈķδ ¾ÏÈ£ ¾øÀÌ CVS ¸í·ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. $ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot ¸í·É 3.3. ÇÁ·ÎÁ§Æ® ÃʱâÈ­ »ç¿ë °¡´ÉÇÑ CVS ÀúÀå¼Ò°¡ ÀÖ°í, ¾î¶»°Ô ÀúÀå¼Ò¸¦ ÀÌ¿ëÇÏ´ÂÁö ¾Ë°í ÀÖ´Ù¸é ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÒ ¸ðµç Áغñ°¡ ³¡³­ ¼ÀÀÌ´Ù. ´õ±º´Ù³ª ±âÁ¸ÀÇ ÇÁ·ÎÁ§Æ®¿¡ CVS¸¦ µµÀÔÇÏ·Á´Â °æ¿ì¶ó¸é ÀÌ¹Ì µð·ºÅ丮¿Í ÆÄÀϵéÀÌ ÀÖÀ»Å×´Ï À̸¦ ÀúÀå¼Ò¿¡ ÀúÀåÇÏ´Â ¹æ¹ý¸¸ ¹è¿ì¸é µÈ´Ù. ÇÏÁö¸¸ óÀ½ ½ÃÀÛÇÏ´Â ÇÁ·ÎÁ§Æ®¸¦ CVS·Î °ü¸®ÇÏ·Á ÇÑ´Ù¸é ¸ÕÀú µð·ºÅ丮 ±¸Á¶¸¦ Àß ¼³°èÇØ¾ß ÇÑ´Ù. ¹°·Ð ¾ðÁ¦¶óµµ CVS¸¦ ÀÌ¿ëÇؼ­ ÆÄÀÏÀÇ À§Ä¡¸¦ ¿Å±â°í »õ·Î¿î µð·ºÅ丮¸¦ ¸¸µå´Â µîÀÇ ÀÏÀº °¡´ÉÇÏ´Ù. ÇÏÁö¸¸ óÀ½ºÎÅÍ µð·ºÅ丮 ±¸Á¶¿Í °¢ µð·ºÅ丮¿¡ µé¾î°¥ ÆÄÀϵéÀ» Àß Á¤ÇØ ³õ´Â °ÍÀº Àüü ÇÁ·ÎÁ§Æ® °ü¸®¿¡µµ µµ¿òÀ» ÁֹǷΠµÇµµ·ÏÀÌ¸é ³ªÁß¿¡ ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ À§Ä¡ º¯°æÀÌ »ý±âÁö ¾Êµµ·Ï ¼³°è¸¦ ÇÏ°í ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇϵµ·Ï ÇÏÀÚ. ¸ÕÀú ÇÒ ÀÏÀº ÇÁ·ÎÁ§Æ®ÀÇ À̸§À» Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀÌ À̸§Àº ÀúÀå¼Ò¿¡¼­ ÀÌ ÇÁ·ÎÁ§Æ® °ü·Ã ÆÄÀϵéÀ» ÀúÀåÇÏ´Â µð·ºÅ丮ÀÇ À̸§À¸·Î ¾²ÀδÙ. ¿©±â¿¡¼­´Â myprj¶õ À̸§À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¾î º¸±â·Î ÇÏ°Ú´Ù. ÀÌÈÄ¿¡ ³ª¿Ã ¸ðµç ¿¹´Â ȯ°æº¯¼ö CVSROOT°¡ Á¦´ë·Î ¼³Á¤µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÑ´Ù. CVSROOT¸¦ ¾î¶»°Ô ¼³Á¤ÇØ¾ß Çϴ°¡¿¡ ´ëÇؼ­´Â ¾Õ ÀýÀÇ ³»¿ëÀ» Âü°íÇϱ⠹ٶõ´Ù. 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¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®¸¦ ÁøÇà½ÃÅ°´Â Àϸ¸ÀÌ ³²¾Æ ÀÖ´Ù. 3.4. ÇÁ·ÎÁ§Æ® ÁøÇà ÀÌÁ¦ ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â °³¹ßÀÚÀÇ ÀÔÀå¿¡¼­ ÇÁ·ÎÁ§Æ®¸¦ ¹Ù¶óº¸ÀÚ. ¸ðµç ÇÊ¿äÇÑ ÆÄÀϵéÀº ÀúÀå¼Ò¿¡ °®Ãß¾îÁ® ÀÖ°í, ÇÁ·ÎÁ§Æ® °ü¸®ÀڷκÎÅÍ ÀúÀå¼ÒÀÇ À§Ä¡¿Í ÇÁ·ÎÁ§Æ® À̸§µµ Å뺸¹Þ¾Ò´Ù. ±×·¯¸é °³¹ßÀÚ´Â ¾ÕÀ¸·ÎÀÇ ÀÛ¾÷À» À§ÇØ ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ȯ°æº¯¼ö CVSROOT¿¡ ÀúÀåÇÏ°í, ÀÛ¾÷À» ½ÃÀÛÇÏ¸é µÈ´Ù. ´Ü, CVS´Â ÆÄÀÏÀÇ º¯°æ ½Ã°¢À» ÂüÁ¶ÇÏ´Â °æ¿ì°¡ ¸¹À¸¹Ç·Î °¢ °³¹ßÀÚµéÀÌ »ç¿ëÇÏ´Â ±â°èÀÇ ½Ã°£À» ¼­·Î ¸ÂÃß¾î ³õÀ» ÇÊ¿ä°¡ ÀÖ´Ù. 3.4.1. ÀÛ¾÷ °ø°£ »ý¼º (checkout) ÀÛ¾÷À» ½ÃÀÛÇϱâ À§Çؼ­´Â ÆÄÀÏÀ» ¸¶À½´ë·Î º¯°æÇÏ°í ÀúÀåÇÏ¿© Å×½ºÆ®ÇØ º¼ ¼ö ÀÖ´Â ÀÛ¾÷ °ø°£ÀÌ ÇÊ¿äÇÏ´Ù. ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀϵéÀ» ºÒ·¯¿Í ³ª¸¸ÀÇ ÀÛ¾÷ °ø°£À» ¸¸µå´Â ¸í·ÉÀÌ 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´Â ÀÌ µð·ºÅ丮ÀÇ Á¤º¸¸¦ Âü°íÇÏ¿© °¢ ¸í·ÉÀ» ¼öÇàÇÑ´Ù. ÇÏÁö¸¸ °³¹ßÀÚ°¡ ÀÌ µð·ºÅ丮ÀÇ ³»¿ë¿¡ ½Å°æ¾µ ÇÊ¿ä´Â ÀüÇô ¾ø´Ù. °ü½ÉÀÌ ÀÖ´Ù¸é »ìÆ캸´Â °ÍÀº ÁÁÁö¸¸, ³»¿ëÀ» ÀÓÀÇ·Î º¯°æÇѴٰųª Çؼ­´Â ¾È µÈ´Ù. 3.4.2. ÀÛ¾÷ ³»¿ëÀÇ ÀúÀå (commit) ¸¸µé¾îÁø ÀÛ¾÷ °ø°£¿¡¼­ ÀÛ¾÷À» ½ÃÀÛÇغ¸ÀÚ. 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 ¸í·ÉÀ» »ç¿ëÇÏ¿© ÀÛ¾÷ °ø°£ ÀüüÀÇ º¯°æ ³»¿ëÀÌ ÇѲ¨¹ø¿¡ ÀúÀå¼Ò¿¡ ÀúÀåµÇµµ·Ï ÇÏ´Â °ÍÀÌ ÁÁ´Ù. 3.4.3. ÀúÀå¼ÒÀÇ ÆÄÀÏ ¹Þ¾Æ¿À±â (update) °øµ¿ ÀÛ¾÷¿¡¼­ ÀÚ½ÅÀÇ ÀÛ¾÷ °á°ú¸¦ ÀúÀåÇÏ´Â ÀÏ ¸øÁö ¾Ê°Ô Áß¿äÇÑ ÀÏÀº ´Ù¸¥ »ç¶÷ÀÇ ÀÛ¾÷ °á°ú¸¦ ¹Þ¾Æ¿À´Â ÀÏÀÌ´Ù. ÀÚ½ÅÀÌ ÀÛ¾÷ÇÑ ³»¿ëÀ» ¸ðµÎ ÀúÀåÇÑ »óŶó¸é ÀÛ¾÷ µð·ºÅ丮¸¦ Áö¿ö¹ö¸®°í 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¿¡ ÀÇÇØ º¯°æµÈ ³»¿ëÀ» µ¤¾î ¾µ ¼ö°¡ ÀÖ´Ù´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ ¿¡µðÅÍ´Â ÀÛ¾÷ÇÏ°í ÀÖ´Â ÆÄÀÏÀÌ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÇÇØ º¯°æµÇ¸é ÀÌ »ç½ÇÀ» »ç¿ëÀÚ¿¡°Ô ¾Ë¸®°í, º¯°æµÈ ÆÄÀÏÀ» ´Ù½Ã ºÒ·¯¿Ã ¼ö ÀÖµµ·Ï ÇÏÁö¸¸, °£È¤ ±×·¸Áö ¸øÇÑ ¿¡µðÅ͵µ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î Á¶½ÉÇϱ⠹ٶõ´Ù. 3.4.4. Ãæµ¹ÀÇ ÇØ°á ºñ·Ï 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 ¸í·ÉÀ¸·Î ¾îµð¿¡¼­ Ãæµ¹ÀÌ ¹ß»ýÇß´ÂÁö¸¦ È®ÀÎÇÏ¸é µÈ´Ù. ±× °á°ú¿Í ¼öÁ¤ ¹æ¹ýÀº ¾Õ¿¡¼­ ³ª¿Â °Í°ú µ¿ÀÏÇÏ´Ù. 3.4.5. ÆÄÀÏÀÇ Ãß°¡/»èÁ¦ (add/delete) Áö±Ý±îÁö´Â ÀúÀå¼Ò¿¡ ÀÖ´Â ÆÄÀÏÀ» ¼öÁ¤ÇÏ°í, ±× °á°ú¸¦ ´Ù½Ã ÀúÀåÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸¾Ò´Ù. ÇÏÁö¸¸ ÀÛ¾÷À» ÇÏ´Ù º¸¸é »õ·Î¿î ÆÄÀÏÀ» ¸¸µé°Å³ª ±âÁ¸ÀÇ ÆÄÀÏÀ» Áö¿ö¾ß ÇÒ °æ¿ì°¡ »ý±ä´Ù. ÀÌ·± °æ¿ì¿¡ »ç¿ëÇÏ´Â ¸í·ÉÀÌ 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 3.4.6. ÀÛ¾÷ ±â·Ï ¿­¶÷ (log) ±× µ¿¾ÈÀÇ ¿¹¿¡¼­ º» ¹Ù¿Í °°ÀÌ 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À» ÇÒ ¶§ ¾Ë±â ½±°í ÀÛ¾÷ ³»¿ëÀ» Àß ¹Ý¿µÇÒ ¼ö ÀÖ´Â ¸Þ½ÃÁö¸¦ Àû´Â °ÍÀÌ Áß¿äÇÏ´Ù. 4. ÀÌ ¹®¼­¿¡ ´ëÇÏ¿© ÀÌ ¹®¼­ÀÇ ÃÖ½ÅÆÇÀº WebDox ¿¡¼­ ã¾Æ º¼ ¼ö ÀÖÀ¸¸ç, HTML ¹× PS ÇüÅ·ΠÁ¦°øµÈ´Ù.