·Î±×ÀÎ | ȸ¿ø°¡ÀÔ (´º½º·¹ÅͽÅû) | SITEMAP
   
  °³¹ß   Ç÷§Æû   ½Ã½ºÅÛ   ¸Å´ÏÁö¸ÕÆ®   Àüü±â»ç  
ÀÚ¹Ù
´å³Ý
C/C++
DB
¸ðµ¨¸µ
À¥°³¹ß
±âŸ
À¯´Ð½º/¸®´ª½º
À©µµ¿ì
±âŸ
¼­¹ö
³×Æ®¿öÅ©
º¸¾È
±âŸ
BM
PM
±âŸ
 
±â»çÀúÀå
0
 
¸¶ÀÌ ½ºÅ©·¦
[óÀ½ºÎÅÍ ´Ù½Ã ¹è¿ì´Â ¸®´ª½º] ¨ê Çʼö ¼Ò½º¹öÀü °ü¸®Åø

¼ÕÁ¤¿ì   2004/11/16 06:04:01 PM
Untitled Document
¿¬Àç¼ø¼­
1ȸ. °³¹ßÀÚ¸¦ À§ÇÑ ¸®´ª½º ¼³Ä¡¿Í ±âº» ¸í·É¾î
2ȸ. °í±Þ ¸®´ª½º ¸í·É¾î¿Í Áß¿ä ½Ã½ºÅÛ °ü¸®
3ȸ. °³¹ßÀÚ¸¦ À§ÇÑ vim ÆíÁý±â »ç¿ë¹ý
4ȸ. ¿ÀǼҽº ÇÁ·ÎÁ§Æ®ÀÇ Çʼö °³¹ßÅø Ȱ¿ë <³¡>
[Áöµð³ÝÄÚ¸®¾Æ]¸®´ª½º °³¹ßÀڵ鿡°Ô Áß¿äÇÑ °Í ÁßÀÇ Çϳª°¡ ¿ÀǼҽº ÇÁ·ÎÁ§Æ® ÁøÇàÀÌ´Ù. »ç½Ç ±¹³»¿¡¼­µµ ¿ÀǼҽº ÇÁ·ÎÁ§Æ®´Â ¸¹Àº »ç¶÷µéÀÌ °ü½ÉÀ» °®°í ÀÖÁö¸¸ ¸·»ó ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â »ç¶÷µéÀÇ ¼ýÀÚ´Â ¿©ÀüÈ÷ ºÎÁ·ÇÏ´Ù. ¿©±â¼­´Â ¿©·¯ °³¹ßÀÚµéÀÌ µ¿½Ã¿¡ ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÒ ¶§ °ÅÀÇ ÇʼöÀûÀ¸·Î ¾²ÀÌ´Â diff, patch, CVS(Concurrent Versions System)¿Í °°Àº ¼Ò½ºÄÚµå ¹öÀü °ü¸®Åø¿¡ ´ëÇØ »ìÆì º¸°í ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÒ ¶§ ¾Ë¾ÆµÎ¸é ÁÁÀº Ư¼ºÀ̳ª ÀÛ¾÷ ¹æ½Ä¿¡ ´ëÇØ¼­µµ ¾Ë¾Æ º»´Ù.

¿ÀǼҽº ÇÁ·ÎÁ§Æ®¶õ µµ´ëü ¾î¶² °ÍÀϱî? ¸®´ª½º¿Í ¿ÀǼҽºÀÇ ºÎ»ó°ú ´õºÒ¾î ¿ÀǼҽº °³¹ß ¹æ½ÄÀº ±âÁ¸ÀÇ »ó¿ë ¼ÒÇÁÆ®¿þ¾î °³¹ß ¹æ½Ä¿¡ ºñÇØ ÀûÀº ºñ¿ëÀ¸·Î ¾çÁúÀÇ ¼ÒÇÁÆ®¿þ¾î¸¦ °³¹ßÇÒ ¼ö ÀÖÀ¸¸ç ¼ÒÇÁÆ®¿þ¾î ½ÃÀå µ¶Á¡ÀÇ ¹®Á¦°¡ ¾ø´Ù´Â ÀǰßÀÌ ¼³µæ·ÂÀ» °è¼Ó ³ô¿©°¡°í ÀÖ´Ù.

±×·¯³ª ÇÊÀÚ°¡ º¸±â¿¡´Â ¿ÀǼҽº °³¹ß ¹æ½ÄÀº ±× È¿À²¼ºÀ» ³íÀÇÇϱâ Àü¿¡ ¿Ö ÀÌ·± ½ÄÀÇ °³¹ß ¹æ½ÄÀÌ ¸¸µé¾î Á³À¸¸ç ¿Ö ¿ÀǼҽº ½ºÅ¸ÀÏÀÇ °³¹ß ¹æ½ÄÀÌ ÀÚ¿¬½º·´°Ô Á¤ÂøµÇ¾ú´ÂÁö¸¦ ÀÌÇØÇÏ´Â °ÍÀÌ ´õ¿í Áß¿äÇÏ´Ù°í »ý°¢ÇÑ´Ù. ÇÊÀÚÀÇ ÀǰßÀ¸·Î´Â ¿ÀǼҽº´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¼ÒÇÁÆ®¿þ¾î ±× ÀÚü°¡ Áö´Ñ Ư¼º¿¡ ¸Âµµ·Ï ÀÚ¿¬½º·´°Ô °³¹ßÇÏ´Â ÇÑ ¹æ¹ýÀ̶ó°í »ý°¢ÇÑ´Ù.

´ç¿¬ÇÑ ¾ê±âÁö¸¸ ¾î¶°ÇÑ ¼ÒÇÁÆ®¿þ¾îÀÇ ¼Ò½ºÄڵ带 °ø°³ÇÏ¸é ±× ¼ÒÇÁÆ®¿þ¾î°¡ °è¼Ó ¹Ù²î¾î ³ª°¥ ¼ö ÀÖ´Â ±æÀÌ ¿­¸®°Ô µÈ´Ù. ¼Ò½ºÄڵ带 °ø°³Çؼ­ °³¹ß ÀÛ¾÷À» ÁøÇàÇÏ´Â ¿ÀǼҽº °³¹ß ¹æ¹ýÀÌ µÎµå·¯Áö°Ô ³ªÅ¸³­ °ÍÀº 1970³â´ë ÃÊ AT&T¿¡¼­ ÀÚ»çÀÇ ¿î¿µÃ¼Á¦ÀÎ À¯´Ð½ºÀÇ ¼Ò½ºÄڵ带 °ø°³ÇÑ ÀÌÈĺÎÅͶó°í º¸´Â °ÍÀÌ Á¤¼³ÀÌ´Ù. AT&T¿¡¼­´Â ´ëÇаú °°Àº ±³À°, ¿¬±¸ ±â°ü¿¡ ÀÚ»çÀÇ Á¦Ç°ÀÎ À¯´Ð½º¸¦ °ø±ÞÇϸ鼭 µ·À» ¹Þ°í ¼Ò½ºÄڵ带 ±×´ë·Î Á¦°øÇÏ´Â ¶óÀ̼±½º ¹æ½ÄÀ» ÃëÇß´Ù.

¼ÒÇÁÆ®¿þ¾î¸¦ ¹èÆ÷ÇÒ ¶§ ¼Ò½º°¡ ¾Æ´Ñ ¹ÙÀ̳ʸ®¸¦ ÁÖ·Î ¹èÆ÷ÇÏ´Â Áö±ÝÀ¸·Î¼­´Â ¾ð¶æ »ó»óÇϱ⠾î·Á¿î °üÇàÀÏ ¼öµµ ÀÖÁö¸¸ ÄÄÇ»ÅÍÀÇ Á¾·ù°¡ ÅëÀϵǾî ÀÖÁö ¾Ê°í, ¼Ò¼öÀÇ Àü¹®°¡ Áý´Ü¿¡¼­ À¯´Ð½º¸¦ ÁÖ·Î »ç¿ëÇß´Ù´Â Á¡À» »ý°¢ÇØ º»´Ù¸é AT&T ÀÔÀå¿¡¼­ À¯Áöº¸¼ö ºñ¿ëÀ» ÁÙ¿©ÁÖ´Â ÀÌ·¯ÇÑ ¼Ò½ºÄÚµå ÇüÅÂÀÇ ¹èÆ÷´Â ³ª¸§´ë·Î ÇÕ¸®ÀûÀÎ ¼±ÅÃÀ̶ó°íµµ ÇÒ ¼ö ÀÖ°Ú´Ù.

±×·¯³ª ¿©±â¼­ ¿¹»óÇÏÁö ¸øÇÑ ÀÏÀÌ ¹ú¾îÁø °ÍÀÌ ÀÌµé »ç¿ëÀÚ, ȤÀº »ç¿ëÀÚÀ̸鼭 °³¹ßÀÚÀ̱⵵ ÇÑ »ç¶÷µéÀÌ ¸¶À½´ë·Î ¶â¾î°íÄ¡°í µ¡ºÙÀ̱⠽ÃÀÛÇÑ ÄÚµåµéÀÌ ¿À¸®Áö³Î AT&T À¯´Ð½ºº¸´Ù ¿ÀÈ÷·Á ´õ Áß¿äÇÑ À§Ä¡¸¦ Â÷ÁöÇÏ°Ô µÈ °ÍÀÌ´Ù(BSD À¯´Ð½ºÀÇ ¹ßÀüµµ ÀÌ·¯ÇÑ °ü½À¿¡ »Ñ¸®¸¦ µÎ°í ÀÖ´Ù).

µû¶ó¼­ ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î³ª ¿ÀǼҽº¿Í °°Àº ¿ë¾îµéÀº ¼ÒÇÁÆ®¿þ¾î °³¹ß ¹æ½ÄÀÇ Ãø¸é¿¡¼­ º¼ ¶§ ÀÌ¹Ì Á¸ÀçÇϰí ÀÖ´ø °³¹ß ¹æ½ÄÀ» »õ·Ó°Ô ÀçÁ¶¸íÇϰí ÀÖ´Ù°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÀÚÀ¯ ¼ÒÇÁÆ®¿þ¾î¿¡¼­´Â ¼Ò½ºÄڵ尡 °ø°³µÈ ¼ÒÇÁÆ®¿þ¾îÀÇ º¸È£¿¡ Á» ´õ ÁßÁ¡À» µÎ°í ÀÖÀ¸¸ç ¿ÀǼҽº¿¡¼­´Â ¼Ò½ºÄڵ尡 °ø°³µÈ ä·Î °³¹ßµÇ´Â ¼ÒÇÁÆ®¿þ¾îÀÇ °³¹ß È¿À²¼º¿¡ Á» ´õ °ü½ÉÀ» ÁýÁßÇÏ´Â ÆíÀÌ´Ù. ¾î´À °æ¿ìÀÌµç °£¿¡, ¼Ò½ºÄڵ带 °ø°³Çؼ­ °³¹ßÀÚÀÇ Âü¿©¸¦ À̲ø¾î ³»´Â ¼ÒÇÁÆ®¿þ¾î °³¹ß ¹æ½ÄÀº º¯ÇÔÀÌ ¾øÀ¸¸ç, ¿ÀǼҽº¶ó´Â ´Ü¾î°¡ ¾Æ¿¹ ¾ø´ø ½ÃÀý¿¡µµ À̰ÍÀº ¸¶Âù°¡ÁöÀÎ °ÍÀÌ´Ù.

±×·¸´Ù¸é, ÀÌÁ¦ °£´ÜÇÑ »óȲ Çϳª¸¦ °¡Á¤ÇØ º¸±â·Î ÇÏÀÚ. ¿©·¯ºÐµéÀÌ Ãʱâ À¯´Ð½º ½ÃÀý ´ëÇÐ Àü»ê½Ç¿¡ ±Ù¹«ÇÏ´ø µµÁß À¯´Ð½º°¡ µµÀԵǾú´Ù°í »ý°¢Çغ¸ÀÚ. °íµÈ Æ÷ÆÃ°ú ¼³Á¤ ÀÛ¾÷ ³¡¿¡ ½Ã½ºÅÛÀÌ Á¦´ë·Î µ¹¾Æ°¡±â ½ÃÀÛÇߴµ¥ ÀÌ ¿ÍÁß¿¡¼­ ¹ö±×¸¦ Çϳª ¹ß°ßÇÏ°í ±× ºÎºÐÀÇ ¼Ò½ºÄڵ带 ¼öÁ¤Çß´Ù. ÀÌ·² ¶§ ´ÙÀ½ ¹öÀüÀÇ À¯´Ð½º¿¡ ¿©·¯ºÐµéÀÌ °íÄ£ ºÎºÐÀÌ ¹Ý¿µµÇµµ·Ï ÇÏ·Á¸é ¾î¶»°Ô ÇØ¾ß ÇÒ±î?

ÀÌ·² ¶§ °¡Àå »ó½ÄÀûÀÎ ÇØ¹ýÀº °íÄ£ ºÎºÐÀÇ ¼Ò½ºÄڵ带 ¿øÀúÀÚ¿¡°Ô º¸³»ÁÖ¸é µÉ °ÍÀÌ´Ù. ±×¸®°í ±× ¹æ¹ýÀ¸·Î °¡Àå Æí¸®ÇÑ °ÍÀº ¾Æ¸¶µµ À̸ÞÀÏÀÌ ÁÁÀ» °ÍÀÌ´Ù. ÀÎÅͳÝÀÌ ¾ø´ø ½ÃÀýÀ̶ó¸é ¾Æ¸¶µµ ÀÏ¹Ý ¸ÞÀÏÀ» ÀÌ¿ëÇßÀ» °ÍÀÌ´Ù. ¾à°£Àº ³í¿ÜÀÇ À̾߱âÁö¸¸, ÀÎÅÍ³Ý ÃÊâ±â¿¡´Â ±¹³»¿¡¼­ À¯Áî³Ý ´º½º±×·ì¿¡ ¿Ã¶ó¿Â ±ÛÀ» º¸±â À§ÇØ Á¤±âÀûÀ¸·Î ´º½º¼­¹ö µ¥ÀÌÅÍ ¹é¾÷À» ¿Ü±¹¿¡¼­ ÀÚ±â Å×ÀÌÇÁ¿¡ ¹Þ¾Æ ¼ÒÆ÷·Î Àü¼Û¹Þ±âµµ Çß´Ù°í ÇÑ´Ù. ¾î·µç ÀÌ·¯ÇÑ À̸ÞÀÏÀÇ °£ÆíÇÔ ´öºÐ¿¡ À̸ÞÀÏÀº ¿ÀǼҽº °³¹ß ÀÛ¾÷¿¡¼­ °¡Àå Áß¿äÇÑ Åë½Å ¼ö´ÜÀÌ¸ç ÆÐÄ¡ Àü¼Û ¼ö´ÜÀ¸·Î ÀÚ¸® Àâ°Ô µÈ´Ù.

¿©±â¼­ Çϳª »ý°¢ÇØ ºÁ¾ß ÇÒ °ÍÀÌ ¿øÀúÀÚÀÇ ÀÔÀåÀÌ´Ù. ÀÌ·¸°Ô ÆÐÄ¡¸¦ ´ã°í ÀÖ´Â ¸ÞÀÏÀÇ ¼ýÀÚ°¡ ÀûÀ» ¶§´Â ¿øÀúÀÚ´Â ±×Àú Àü¼ÛµÈ ÆÐÄ¡¸¦ °í¸¿°Ô ¹Þ¾Æ Àû¿ëÇϱ⸸ ÇÏ¸é µÇ°ÚÁö¸¸ ÆÐÄ¡ÀÇ ¼ýÀÚ°¡ ´Ã¾î³ª°í, °°Àº ¹ö±×¿¡ ´ëÇØ¼­µµ µÎ Á¾·ù ÀÌ»óÀÇ Áߺ¹ ÆÐÄ¡°¡ »ý±â°Ô µÇ¸é ¾î¶² ÆÐÄ¡¸¦ ¼±ÅÃÇÒ °ÍÀÎÁö, ±×¸®°í ¸ðÀº ÆÐÄ¡¸¦ ¾î¶»°Ô ÅëÇÕÇØ¼­ ÇϳªÀÇ ¼Ò½ºÄÚµå Æ®¸®·Î ¸¸µé°í ±×°ÍÀ» ¹èÆ÷(public release)ÇÒ °ÍÀÎÁö ¼±ÅÃÇØ¾ß ÇÏ´Â ¹®Á¦°¡ »ý±ä´Ù. ÀÌ·± °æ¿ì, º¸Åë ¿ÀǼҽº°èÀÇ °ü½ÀÀº ¿øÀúÀÚ, ȤÀº ÇÁ·ÎÁ§Æ® ¸®´õ¿¡°Ô ¾î¶² ÆÐÄ¡¸¦ ¹Þ¾ÆµéÀÏ °ÍÀÎÁöÀÇ °áÁ¤±ÇÀ» ¸Ã°Ü¹ö¸®´Â °æÇâÀÌ ÀÖ´Ù. ÀÌ·² ¶§ ¿øÀúÀÚ³ª ÇÁ·ÎÁ§Æ® ¸®´õ´Â ¡®ÀÚºñ·Î¿î µ¶ÀçÀÚ(benevolent dictator)¡¯¶ó´Â ¿ªÇÒÀ» ¸Ã°Ô µÇ´Â °ÍÀÌ´Ù.

¶ÇÇÑ, ÆÐÄ¡°¡ Àü¼ÛµÉ ¶§ »ç¶÷µé¸¶´Ù ÅëÀϵÇÁö ¾ÊÀº ¹æ½ÄÀ¸·Î ÆÐÄ¡¸¦ Àü¼ÛÇÏ°Ô µÇ¸é ÇÁ·ÎÁ§Æ® ¸®´õÀÇ ÀÔÀå¿¡¼­´Â ¿©·¯ Á¾·ùÀÇ ÆÐÄ¡¸¦ ÇϳªÀÇ ¼Ò½ºÄÚµå Æ®¸®¿¡ Àû¿ë½ÃŰ´Â µ¥ ¸¹Àº È¥¶õÀ» °Þ°Ô µÉ °ÍÀÌ´Ù. À̸¦ ÇØ°áÇϱâ À§ÇØ µîÀåÇÑ ½ÉÇÃÇÑ µµ±¸°¡ ¹Ù·Î diff¿Í patchÀÌ´Ù.

diff¿Í patch
diff´Â À¯´Ð½º »ç¿ëÀÚ Æ©Å丮¾ó¿¡µµ °¡²û¾¿ µîÀåÇÏ´Â °£´ÜÇÑ À¯Æ¿¸®Æ¼ÀÌ´Ù. diffÀÇ ¿ªÇÒÀº µÎ ÆÄÀϰ£ÀÇ Â÷ÀÌÁ¡À» º¸¿©ÁÖ´Â µ¥ ¼Ò½ºÄÚµåÀÇ ¹Ù²ï ºÎºÐÀ» º¸¿© ÁÙ ¶§ ¸¹ÀÌ ¾²ÀδÙ. patch´Â ÀÌ·¯ÇÑ diffÀÇ Ãâ·Â °á°ú¸¦ ÀÌ¿ëÇØ¼­ ÀÌ ¹Ù²ï ºÎºÐÀ» ¿ø·¡ÀÇ ¼Ò½ºÄڵ忡 ¾÷µ¥ÀÌÆ®ÇÒ ¶§ ¾²´Â À¯Æ¿¸®Æ¼ÀÌ´Ù.

diffÀÇ ÀϹݿë¹ý
¿ì¼±, diffÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

diff [options] from-file to-file

diff´Â µÎ °³ÀÇ ÆÄÀÏÀ» ÇÊ¿ä·Î ÇѴٴµ¥ ÁÖÀÇÇÏÀÚ. from-fileÀº ¿ø·¡ÀÇ ÆÄÀÏ, Áï ±¸ ¹öÀüÀÇ ÆÄÀÏÀ̸ç, to-fileÀº »õ·ÎÀÌ ¹Ù²ï »õ ¹öÀüÀÇ ÆÄÀÏÀÌ´Ù. diff´Â ÀÌ·¸°Ô Çϸé from-file¿¡¼­ to-file·Î ¾î¶°ÇÑ º¯È­°¡ ÀÖ¾ú´ÂÁö¸¦ Ãâ·ÂÇØ ÁØ´Ù. from-file°ú to-fileÀº ¸ðµÎ µð·ºÅ丮°¡ ¿Ã ¼öµµ Àִµ¥ µð·ºÅ丮°¡ ¿À´Â °æ¿ì´Â Á¶±Ý µÚ¿¡ »ìÆìº¸±â·Î ÇÏÀÚ. Âü°í·Î °£´ÜÇÑ ¿¹Á¦ hello1.c¿Í hello2.cÀÇ ¿¹¸¦ µé¾îº¸ÀÚ. ´ÙÀ½¿¡¼­ º¼ ¼ö ÀÖµíÀÌ hello2.c´Â hello1.c¿¡¼­ hello, world ºÎºÐÀÌ hello, the world of linux·Î ´ëÄ¡µÇ¾ú°í ±× ¾Æ·§ÁÙ¿¡ °ø¹é ¶óÀÎ Çϳª¿Í printf("Testing one two three.\n");°¡ Ãß°¡µÇ¾úÀ½À» º¼ ¼ö ÀÖ´Ù.

*** hello1.c:
#include
#include
main()
{
    printf("hello, world.\n");
}

*** hello2.c:
#include
main()
{
    printf("hello, the world of Linux.\n");
    printf("Testing one two three.\n");
}

diff °á°ú´Â ´ÙÀ½°ú °°´Ù.

$ diff hello1.c hello2.c
2d1
< #include
6c5,7
<     printf("hello, world.\n");
---
>     printf("hello, the world of Linux.\n");
>
>     printf("Testing one two three.\n");

ù ÁÙÀÇ 2d1Àº hello1ÀÇ µÎ ¹øÂ° ÁÙ¿¡¼­ ÇÑ ÁÙÀ» »èÁ¦(delete)ÇÏ´Â º¯È­°¡ ÀϾ´Ù´Â ÀǹÌÀÌ´Ù. ±×¸®°í Á¶±Ý ¾Æ·¡ÀÇ 6c5,7Àº hello1ÀÇ 6¹øÂ° ÁÙÀ» ¾Æ·§ºÎºÐÀ¸·Î ¹Ù²Ù´Âµ¥(change) ±× °á°ú°¡ 5¹øÂ°ºÎÅÍ 7¹øÂ° ¶óÀαîÁö µé¾î°¡°Ô µÈ´Ù´Â ÀǹÌÀÌ´Ù. ±×·¯³ª ½ÇÁ¦·Î ÇÁ·Î±×·¥ ¼Ò½ºÄڵ忡¼­´Â ¿À¸®Áö³Î diffÀÇ °á°ú¹°º¸´Ù´Â unified formatÀÇ diff Ãâ·ÂÀ» ¾²´Â °æ¿ì°¡ ¸¹´Ù. unified formatÀ» ¾²·Á¸é diff¿¡ -u ¿É¼ÇÀ» Ãß°¡ÇÑ´Ù.

$ diff -u hello1.c hello2.c
--- hello1.c    Tue Aug  3 14:34:46 2004
+++ hello2.c    Tue Aug  3 13:25:49 2004
@@ -1,7 +1,8 @@
#include
-#include

main()
{
-    printf("hello, world.\n");
+    printf("hello, the world of Linux.\n");
+
+    printf("Testing one two three.\n");
}

Âü°í·Î unified format¿¡¼­´Â º¯°æµÇ´Â ºÎºÐ¸¸ÀÌ ¾Æ´Ñ º¯°æµÇ´Â ºÎºÐ ±ÙóÀÇ ³»¿ë(context)µµ °°ÀÌ Ãâ·ÂµÊÀ» º¼ ¼ö ÀÖ´Ù. »ç¶÷ÀÌ Á» ´õ ÀÐ±â Æí¸®ÇÑ context format Ãâ·Â ¿É¼ÇÀÎ -c¸¦ »ç¿ëÇÑ °á°ú´Â ´ÙÀ½°ú °°´Ù. context format ¿ª½Ã ¹Ù²î´Â ºÎºÐ ±ÙóÀÇ ³»¿ëµµ Âü°íÇϱâ ÁÁ°Ô Ãâ·ÂÀ» ÇØ ÁØ´Ù. ¾î·°Å³ª ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡¼­´Â diff¸¦ ¾µ ¶§ ÁÖ·Î -u ¿É¼ÇÀ» ºÙÀδٴ Á¡À» ²À ¿Ü¿ö µÎµµ·Ï ÇÏÀÚ.

$ diff -c hello1.c hello2.c
*** hello1.c    Tue Aug  3 14:34:46 2004
--- hello2.c    Tue Aug  3 13:25:49 2004
***************
*** 1,7 ****
  #include
- #include
  
  main()
  {
!     printf("hello, world.\n");
  }
--- 1,8 ----
  #include
  
  main()
  {
!     printf("hello, the world of Linux.\n");
!
!     printf("Testing one two three.\n");
  }

ÀÌ·¸°Ô diff·Î ¼Ò½ºÄÚµåÀÇ º¯°æµÈ ºÎºÐÀ» ÀúÀåÇÑ ´ÙÀ½ À̰ÍÀ» ¿øÀúÀÚ¿¡°Ô ¸ÞÀÏ·Î º¸³»¸é µÈ´Ù.

$ diff -u hello1.c hello2.c > hello.diff

¿©·¯ °³ÀÇ ¼Ò½º ÆÄÀÏÀ» diff·Î ºñ±³Çϱâ
¾ÕÀÇ °æ¿ì´Â ¼Ò½ºÄÚµå ÆÄÀÏ Çϳª¸¸ÀÌ º¯°æµÇ¾úÁö¸¸ »óȲ¿¡ µû¶ó¼­´Â ÆÐÄ¡ °úÁ¤¿¡ ¿©·¯ ÆÄÀÏÀÌ ¼öÁ¤µÇ°í »õ·Î¿î ÆÄÀÏÀÌ Ãß°¡µÇ´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. diff´Â µð·ºÅ丮 ´ÜÀ§ÀÇ ÆÄÀÏ ºñ±³µµ °¡´ÉÇÏ´Ù. ¿ì¼±, ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

$ pwd
/home/foobar
$ ls -F
src1/  src2/            # src1Àº ¿øº», src2´Â »õ·Î¿î ±â´É Ãß°¡º»
$ ls src1
hello1.c  hello2.c
$ ls src2
hello1.c  hello2.c  hello3.c
$ more src1/*c
::::::::::::::
src1/hello1.c
::::::::::::::
#include
#include

main()
{
    printf("hello, world.\n");
}
::::::::::::::
src1/hello2.c
::::::::::::::
#include

main()
{
    printf("hello, the world of Linux.\n");

    printf("Testing one two three.\n");
}
$ more src2/*c
::::::::::::::
src2/hello1.c
::::::::::::::
#include

main()
{
    printf("hello, world.\n");
}
::::::::::::::
src2/hello2.c
::::::::::::::
#include

main()
{
    printf("hello, the world of Linux.\n");

    printf("Testing one two three four.\n");
}
::::::::::::::
src2/hello3.c
::::::::::::::
#include
#include

main()
{
    /* needs to be filled in */
}

src2¿¡¼­´Â hello3.c ÆÄÀÏÀÌ »õ·Î Ãß°¡µÇ¾úÀ¸¸ç, hello2.c¿¡¼­ ¼öÁ¤ ºÎºÐÀÌ ÀÖ°í, hello1.c¿¡¼­ ºüÁø ºÎºÐÀÌ ÀÖ´Ù. ÀÌ µÎ µð·ºÅ丮 »çÀÌ¿¡¼­ diff¸¦ ½ÇÇàÇÏ·Á¸é ´ÙÀ½°ú °°Àº ¸í·ÉÀ» ¾´´Ù.

$ pwd
/home/foobar
$ ls -F
src1/ src2/             # °æ·Î¸¦ Á¦´ë·Î È®ÀÎÇÑ µÚ diff¸¦ ½ÇÇàÇÑ´Ù
$ diff -urN src1 src2
diff -urN src1/hello1.c src2/hello1.c
--- src1/hello1.c       Tue Aug  3 14:34:46 2004
+++ src2/hello1.c       Tue Aug  3 13:35:44 2004
@@ -1,5 +1,4 @@
#include
-#include

main()
{
diff -urN src1/hello2.c src2/hello2.c
--- src1/hello2.c       Tue Aug  3 13:25:49 2004
+++ src2/hello2.c       Tue Aug  3 13:35:57 2004
@@ -4,5 +4,5 @@
{
     printf("hello, the world of Linux.\n");

-    printf("Testing one two three.\n");
+    printf("Testing one two three four.\n");
}
diff -urN src1/hello3.c src2/hello3.c
--- src1/hello3.c       Thu Jan  1 09:00:00 1970
+++ src2/hello3.c       Tue Aug  3 13:37:02 2004
@@ -0,0 +1,7 @@
+#include
+#include
+
+main()
+{
+    /* needs to be filled in */
+}

diff ¸í·É¿¡¼­ -r ¿É¼ÇÀº recursive ¿É¼ÇÀ¸·Î ¼­ºê µð·ºÅ丮±îÁö diff°¡ ¸ðµÎ Ž»öÇ϶ó´Â ÀǹÌÀ̰í, -N ¿É¼ÇÀº hello3.c¿Í °°ÀÌ »õ·Î ¸¸µé¾îÁø ÆÄÀϱîÁöµµ Æ÷ÇÔÇØ diff Ãâ·ÂÀ» »ý¼ºÇ϶ó´Â Àǹ̴Ù. ÀÌ ¿É¼Ç ¿ª½Ã -urNÀ¸·Î ¿Ü¿ö µÎ´Â °ÍÀÌ ÁÁ´Ù.

patch »ç¿ëÇϱâ
ÀÌ·¸°Ô ¸¸µé¾îÁø diffÀÇ °á°ú¹°Àº patch ¸í·ÉÀ» ÅëÇØ¼­ ¿øÀúÀÚÀÇ ¼Ò½ºÄÚµå·Î ¾÷µ¥ÀÌÆ®µÈ´Ù. patch ¸í·ÉÀº -p ¿É¼Ç¸¸ Á¤È®È÷ ÀÌÇØÇÏ¸é »ç¿ëÇϴµ¥ ¹«¸®°¡ ¾ø´Ù.
-p ¿É¼ÇÀº strip ¿É¼ÇÀ̶ó°í ºÎ¸£´Âµ¥ diff ÆÄÀÏ¿¡ ¸í½ÃµÇ¾î ÀÖ´Â µð·ºÅ丮¿¡¼­ ¸î ´Ü°è¸¦ ¹þ°Ü(strip)³¾ °ÍÀΰ¡¸¦ °áÁ¤ÇÑ´Ù. -p0 ¿É¼ÇÀº µð·ºÅ丮 ´Ü°è¸¦ Çϳªµµ ¹þ°Ü³»Áö ¾Ê°Ú´Ù´Â °ÍÀ̰í, -p1 ¿É¼ÇÀº ÇÑ ´Ü°è¸¦ ¹þ°Ü³½´Ù´Â ÀǹÌÀ̰í -p2´Â µÎ ´Ü°è¸¦ ÀǹÌÇÑ´Ù. ½±°Ô ÀÌÇØÇϱâ À§ÇØ <Ç¥ 1>¸¦ º¸ÀÚ. foobar/include/net µð·ºÅ丮°¡ ÀÖ´Ù°í ÇÒ ¶§ p ¿É¼ÇÀ» Àû¿ëÇÏ¸é ´ÙÀ½°ú °°ÀÌ µð·ºÅ丮°¡ ¹þ°ÜÁ® ³ª°£´Ù.

p0 foobar/include/net
p1 include/net
p2 net

À̰ÍÀÌ diff·Î »ý¼º½ÃŲ ÆÐÄ¡¸¦ Àû¿ëÇÒ ¶§ ¾î¶² Àǹ̸¦ °¡Áö°Ô µÉ±î? ¿ì¼±, ÆÄÀÏ µÎ °³¸¦ ºñ±³ÇßÀ» ¶§ »ý¼ºµÈ diff ÆÐÄ¡¿Í µð·ºÅ丮 µÎ °³¸¦ ºñ±³ÇßÀ» ¶§ »ý¼ºµÈ diff ÆÐÄ¡ÀÇ Çì´õ ºÎºÐÀ» ºñ±³Çغ¸ÀÚ.

¡ß ÆÄÀÏ µÎ °³¸¦ ºñ±³ÇßÀ» °æ¿ì:
$ diff -u hello1.c hello2.c
--- hello1.c    Tue Aug  3 14:34:46 2004
+++ hello2.c    Tue Aug  3 13:25:49 2004
(ÀÌÇÏ »ý·«)

¡ß µð·ºÅ丮 µÎ °³¸¦ ºñ±³ÇßÀ» °æ¿ì:
$ diff -urN src1 src2
diff -urN src1/hello1.c src2/hello1.c
--- src1/hello1.c       Tue Aug  3 14:34:46 2004
+++ src2/hello1.c       Tue Aug  3 13:35:44 2004
(ÀÌÇÏ »ý·«)

Áï, diff°¡ »ý¼ºÇÑ ÆÐÄ¡ ÆÄÀÏ¿¡´Â ¿øº» ÆÄÀϰú ¹Ù²ï ÆÄÀÏÀÇ µð·ºÅ丮°¡ ¸í½ÃµÇ¾î ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. patch ¸í·ÉÀ» »ç¿ëÇÒ ¶§´Â ÀÌ °æ·Î¸íÀ» °í·ÁÇØ¼­ patch ¸í·ÉÀ» ½ÇÇà½ÃÄÑ Áà¾ß ÇÑ´Ù.

ÆÐÄ¡ Àû¿ëÇϱâ
¿©·¯ºÐÀÌ ¿øÀúÀÚÀÇ ÀÔÀå¿¡¼­ Á¦°ø¹ÞÀº ÆÐÄ¡¸¦ Àû¿ë½ÃŰ·Á¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» »ç¿ëÇÏ¸é µÈ´Ù. ÆÐÄ¡ ÆÄÀÏÀº Ç¥ÁØ ÀÔ·Â(standard input)À¸·Î µé¾î°¡¸ç, Ç×»ó -p ¿É¼ÇÀ» ÁÖÀÇ ±í°Ô »ç¿ëÇØ¾ß ÇÑ´Ù. À̹ø ¿¹Á¦¿¡¼­´Â µð·ºÅ丮 µÎ °³¸¦ ºñ±³ÇÑ ÆÐÄ¡°¡ Àü¼ÛµÇ¾ú´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¿øÀúÀÚ´Â diff ÆÐÄ¡ÀÇ Çì´õ ºÎºÐÀ» ÀÐ°í ÆÐÄ¡ÀÇ °æ·Î¸íÀ» È®ÀÎÇÑ ´ÙÀ½ ÀûÀýÇÑ µð·ºÅ丮·Î °¡¼­ patch ¸í·ÉÀ» ½ÇÇàÇÑ´Ù. ¿ì¼±, -p0 ¿É¼Ç »ç¿ë ¿¹ºÎÅÍ º¸ÀÚ. diff ÆÐÄ¡ÀÇ Çì´õ ºÎºÐÀº ´ÙÀ½°ú °°´Ù.

diff -urN src1/hello1.c src2/hello1.c
--- src1/hello1.c       Tue Aug  3 14:34:46 2004
+++ src2/hello1.c       Tue Aug  3 13:35:44 2004
... ÀÌÇÏ »ý·« ...

µû¶ó¼­ ¿øÀúÀÚ´Â ÀÌ ÆÐÄ¡¸¦ hello.diff·Î ÀúÀåÇÑ ´ÙÀ½ ÀÚ½ÅÀÇ ¼Ò½ºÄڵ尡 ÀÖ´Â src1±îÁö °¡¼­ ÆÐÄ¡¸¦ Àû¿ëÇÑ´Ù.

$ cd projects
$ pwd
/home/foobar/projects
$ ls -F
hello.diff   src1/

diff ÆÄÀÏ¿¡ ±â¼úµÈ °æ·Î¸í°ú ÇöÀç °æ·Î¸íÀÌ ÀÏÄ¡Çϰí ÀÖÀ½À» ÁÖÀDZí°Ô º¸ÀÚ.

$ patch -p0 < hello.diff
$ patch -p0 < hello.diff
patching file src1/hello1.c
patching file src1/hello2.c
patching file src1/hello3.c

ÆÐÄ¡ Àü°ú ÆÐÄ¡ ÈÄÀÇ °á°ú¸¦ ºñ±³ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

ÆÐÄ¡ Àü:

$ pwd
/home/foobar/projects/src1
$ ls -al
total 16
drwxr-xr-x    2 jwsohn   jwsohn       4096  8¿ù  3 16:35 .
drwxr-xr-x    3 jwsohn   jwsohn       4096  8¿ù  3 16:35 ..
-rw-r--r--    1 jwsohn   jwsohn         82  8¿ù  3 14:34 hello1.c
-rw-r--r--    1 jwsohn   jwsohn        116  8¿ù  3 13:25 hello2.c

ÆÐÄ¡ ÈÄ:

$ pwd
/home/foobar/projects/src1
$ ls -al
total 20
drwxr-xr-x    2 jwsohn   jwsohn       4096  8¿ù  3 16:41 .
drwxr-xr-x    3 jwsohn   jwsohn       4096  8¿ù  3 16:35 ..
-rw-r--r--    1 jwsohn   jwsohn         62  8¿ù  3 16:41 hello1.c
-rw-r--r--    1 jwsohn   jwsohn        121  8¿ù  3 16:41 hello2.c
-rw-r--r--    1 jwsohn   jwsohn         83  8¿ù  3 16:41 hello3.c

ÀÌÁ¦ -p1 ¿É¼ÇÀ» Àû¿ëÇØ¼­ patch ¸í·ÉÀ» ½á º¸ÀÚ. diff ÆÄÀÏ¿¡ ±â¼úµÈ °æ·Î¸í¿¡¼­ µð·ºÅ丮¸¦ ÇÑ ´Ü°è ¹þ°Ü³»¸é src1 µð·ºÅ丮°¡ ¾ø¾îÁö¹Ç·Î ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î ÆÐÄ¡ ÆÄÀÏÀÌ Àû¿ëµÈ´Ù.

$ pwd
/home/foobar/projects
$ ls -F
hello.diff  src1/
$ cd src1
$ patch -p1 < ../hello.diff
patching file hello1.c
patching file hello2.c
patching file hello3.c

Âü°í·Î diff ÆÄÀÏÀÇ °æ·Î´Â ¾îµð¿¡ À§Ä¡ÇÏµç »ó°üÀÌ ¾ø´Ù. ÆÄÀÏ Çϳª¿¡ ´ëÇÑ ÆÐÄ¡¸¦ Àû¿ëÇÒ ¶§´Â -p0 ¿É¼ÇÀ» ¾²¸é µÉ °ÍÀÌ´Ù.

CVS »ç¿ë
CVS´Â ¾àÀÚ Áß Concurrent°¡ ÀǹÌÇϵíÀÌ Çѹø¿¡ ¿©·¯ ¸íÀÇ °³¹ßÀÚ°¡ µ¿ÀÏÇÑ ¼Ò½ºÄÚµå Æ®¸®¿¡ µ¿½Ã¿¡ ¼öÁ¤À» °¡Çϸ鼭 ÀÛ¾÷À» ÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â µµ±¸ÀÌ´Ù. »ç½Ç ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÏ´Â ÀÏ¹Ý °³¹ßÀÚÀÇ ÀÔÀå¿¡¼­´Â CVS¿¡ ´ëÇÑ ÀϹÝÀûÀÎ Áö½ÄÀº º°´Ù¸¥ Çʿ䰡 ¾ø´Ù°í »ý°¢Çصµ ¹«¹æÇÏ´Ù. ½ÇÁ¦ ¼Ò½ºÄÚµå Æ®¸®¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» °®°í ÀÖ´Â »ç¶÷µéÀº ÇÁ·ÎÁ§Æ® ¸®´õÀÎ ÀÚºñ·Î¿î µ¶ÀçÀÚ ÇÑ »ç¶÷À̳ª ÇÁ·ÎÁ§Æ®¿Í °ü·ÃÀÌ ±íÀº ¼Ò¼öÀÇ °³¹ßÀÚµéÀÏ °ÍÀ̱⠶§¹®ÀÌ´Ù.

Áï, ¼Ò½ºÄÚµå ¼öÁ¤ »çÇ×ÀÌ »ý±â¸é CVS¸¦ ±»ÀÌ ¾µ Çʿ䰡 ¾øÀÌ ±×³É FTP³ª http·Î ´Ù¿î¹ÞÀº ¼Ò½ºÄÚµå À§¿¡ diff¸¦ µ¹·Á¼­ ÆÐÄ¡¸¸ À̸ÞÀϰú °°Àº ¼ö´ÜÀ¸·Î º¸³» ÁÖ¸é ¼Ò½ºÄÚµå ¼öÁ¤ ±ÇÇÑÀÌ ÀÖ´Â ±×ÂÊ »ç¶÷µéÀÌ(º¸Åë ¡®Ä¿¹ÌÅÍ¡¯¶ó°í ºÎ¸¥´Ù) ¾Ë¾Æ¼­ 󸮸¦ ÇØ ÁÙ °ÍÀ̱⠶§¹®ÀÌ´Ù.
ÇÏÁö¸¸ °¡Àå ÃֽйöÀüÀÇ nightly buildµÈ ¼ÒÇÁÆ®¿þ¾î´Â CVS ¼­¹ö¿¡ Á¢¼ÓÇØ¾ß¸¸ ±¸ÇÒ ¼ö ÀÖ´Â °æ¿ì°¡ ´ëºÎºÐÀÌ´Ù. µû¶ó¼­ ¿ÀǼҽº °³¹ß ÇÁ·ÎÁ§Æ®¿¡ °ü½ÉÀÌ ÀÖ´Â °³¹ßÀÚ¶ó¸é ´ÙÀ½ Ãø¸é¿¡¼­ CVS »ç¿ë¹ýÀ» ¾Ë¾Æ¾ß ÇÒ Çʿ䰡 ÀÖÀ» °ÍÀÌ´Ù.

[1] FTP³ª http ¼­¹ö¿¡¼­ ¼Ò½ºÄڵ带 ´Ù¿î¹Þ´Â ´ë½Å¿¡
[2] CVS ¼­¹ö¿¡¼­ °¡Àå ÃֽŠ¼Ò½ºÄڵ带 ´Ù¿î ¹Þ°í
[3] ÀÚ½ÅÀÌ ÆÐÄ¡ÇÑ ¼Ò½ºÄÚµå¿Í CVS ¼­¹öÀÇ ¼Ò½ºÄÚµåÀÇ diff¸¦ »ý¼ºÇÏ´Â ¹æ¹ý

À͸í CVS üũ¾Æ¿ô
ÀÌÁ¦ CVS¿¡¼­ ¼Ò½ºÄڵ带 ´Ù¿î¹Þ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸±â·Î ÇÏÀÚ. ÀϹÝÀûÀ¸·Î ¿ÀǼҽº ÇÁ·ÎÁ§Æ®µéÀº ´ëºÎºÐ CVS ¼­¹ö¸¦ Àбâ Àü¿ëÀ¸·Î ¼¼ÆÃÇØ ³õ°í ´©±¸µçÁö µé¾î¿Í¼­ ¼Ò½ºÄڵ带 ´Ù¿î¹Þ¾Æ °¥ ¼ö ÀÖµµ·Ï ÇØ ³õ°í ÀÖ´Ù. À͸í FTP(anonymous FTP)¿Í ºñ½ÁÇÑ °³³äÀ¸·Î »ý°¢ÇÏ¸é µÇ°Ú´Ù. CVS ¼­¹ö¿¡ »ç¿ëÀÚ°¡ Á¢¼ÓÀ» ÇØ¼­ ¼Ò½ºÄڵ带 ÇÑ Ä«ÇÇ ´Ù¿î¹Þ¾Æ °¡´Â °ÍÀ» CVS¿¡¼­´Â üũ¾Æ¿ô(check-out)À̶ó´Â ¿ë¾î·Î Ç¥ÇöÇÑ´Ù.
Âü°í·Î CVS´Â ·ÎÄà ¼­¹ö¿¡¼­ »ç¿ëÇÒ ¼öµµ ÀÖ°í, µû·Î CVS ¼­¹ö¸¦ µÎ°í ¿ø°ÝÀ¸·Î Á¢¼ÓÇÒ ¼öµµ ÀÖ´Ù. ¿©±â¼­´Â CVS°¡ ¿ø°Ý ¼­¹ö¶ó°í °¡Á¤Çϱâ·Î ÇÑ´Ù. CVS ¼­¹ö¿¡¼­ ¼Ò½ºÄڵ带 ´Ù¿î¹Þ´Â ¸í·ÉÀº ´ÙÀ½°ú °°´Ù. KLDP.net ¼­¹ö¿¡ À§Ä¡ÇÑ moniwiki ÇÁ·ÎÁ§Æ®¸¦ ¿¹·Î µé¾î º¸°Ú´Ù.

$ cvs -d:pserver:anonymous@cvs.kldp.net:cvsroot/moniwiki login
$ cvs -d:pserver:anonymous@cvs.kldp.net:cvsroot/moniwiki checkout moniwiki

À͸í FTP¿¡ Á¢¼ÓÇÒ ¶§ º¸´Ù´Â Á¶±Ý º¹ÀâÇØ º¸ÀδÙ. ¿ì¼±, ùÁÙÀÇ cvs ¸í·ÉÀº CVS ¼­¹ö¿¡ anonmous, Áï ÀÍ¸í »ç¿ëÀÚ·Î ·Î±×ÀÎÇÏ´Â °úÁ¤ÀÌ´Ù. CVS ¼­¹ö°¡ ¾ÏÈ£¸¦ ¿ä±¸ÇÏ¸é ±×³É ¿£ÅÍ Å°¸¦ ÃÄ ÁÖ¸é ÀÎÁõÀÌ ³¡³ª°í Àб⠱ÇÇÑÀÌ ºÎ¿©µÈ´Ù. ÀÏ´Ü ·Î±×ÀÎÀ» Çѹø ÇÑ ´ÙÀ½ºÎÅÍ´Â »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮¿¡ .cvspass ÆÄÀÏÀÌ »ý±â¸é¼­ ÀÎÁõ ÀýÂ÷°¡ »ý·«µÈ´Ù. Áï, ¸Å¹ø Á¢¼ÓÇÒ ¶§¸¶´Ù anonymous ÀÎÁõ °úÁ¤À» °ÅÃÄ¾ß ÇÏ´Â À͸í FTP¿Í´Â ´Þ¸®, CVS¿¡¼­´Â Çѹø¸¸ ÀÍ¸í ·Î±×ÀÎÀ» ÇØ¼­ .cvspass ÆÄÀÏÀ» »ý¼ºÇÏ°í ³ª¸é ´Ù½Ã cvs login ¸í·ÉÀ¸·Î ÀÎÁõ °úÁ¤À» °ÅÄ¥ Çʿ䰡 ¾ø´Ù.

±× ´ÙÀ½ -d ¿É¼ÇÀº CVS ¼­¹ö¿¡¼­ Á¦°øÇϰí ÀÖ´Â ·çÆ® µð·ºÅ丮¸¦ ÀǹÌÇÑ´Ù. moniwiki ÇÁ·ÎÁ§Æ®ÀÇ °æ¿ì´Â cvsroot/moniwiki·Î ÁöÁ¤µÇ¾î ÀÖ´Ù. ¾ÕÀÇ pserver´Â CVS ¸í·ÉÀÌ ¼Ò½ºÄڵ带 ´Ù¿î¹ÞÀ¸¸é¼­ ¾µ ÇÁ·ÎÅäÄݸíÀÌ¸ç µÚÀÇ anonymous@cvs.kldp.netÀº CVS ·Î±×Àνà »ç¿ëÇÒ °èÁ¤ÀÌ´Ù.

µÎ ¹øÂ° cvs ¸í·ÉÀº ¼Ò½ºÄÚµå ÇÑ Ä«ÇǸ¦ ´Ù¿î¹Þ´Â üũ¾Æ¿ô °úÁ¤À» ½ÇÇàÇÏ°Ô µÈ´Ù. üũ¾Æ¿ô(checkout)ÇÑ ´ÙÀ½ÀÇ moniwki´Â CVS ¼­¹ö¿¡¼­ ÁöÁ¤ÇØ ³õÀº ÇÁ·ÎÁ§Æ® À̸§À̸ç(¸ðµâÀ̶ó°í ºÎ¸¥´Ù) À̰÷ CVS ¼­¹ö¿¡¼­´Â moniwki·Î ÁöÁ¤ÇØ µÎ¾ú´Ù. µÎ ¹øÂ° ¸í·ÉÀ» ½ÇÇàÇÏ¸é »ç¿ëÀÚÀÇ ÇöÀç µð·ºÅ丮¿¡ moniwiki¶ó´Â µð·ºÅ丮°¡ »ý¼ºµÇ°í ¼Ò½ºÄÚµå ´Ù¿î·Îµå°¡ ½ÃÀ۵ȴÙ. ¿©±â¿¡, -z3 ¿É¼ÇÀ» ÁÖ¸é Àü¼Û½Ã ¾ÐÃàÀ» »ç¿ëÇϱ⠶§¹®¿¡ Àü¼Û ¼Óµµ°¡ »¡¶óÁø´Ù.

$ cvs -z3 -d:pserver:anonymous@cvs.kldp.net:cvsroot/moniwiki checkout moniwiki

±×·±µ¥ CVS ¼­¹ö¿¡ Á¢¼ÓÇÒ ¶§¸¶´Ù -d ¿É¼Ç µÚÀÇ ±ä µð·ºÅ丮 À̸§À» ŸÀÌÇÎÇϱâ´Â ¾Æ¹«·¡µµ ºÒÆíÇÑ °¨ÀÌ ÀÖ´Ù. -d ¿É¼ÇÀ» »ý·«ÇÏ·Á¸é ȯ°æº¯¼ö CVSROOT¿¡ -d ¿É¼ÇÀ» µî·ÏÇØ µÐ´Ù.

$ export CVSROOT=:pserver:anonymous@cvs.kldp.net:/cvsroot/moniwiki

±× ´ÙÀ½ºÎÅÍ´Â ´ÙÀ½ ¸í·ÉÀ¸·Îµµ ÃæºÐÇÏ´Ù.

$ cvs login
$ cvs checkout moniwiki

¼Ò½ºÄڵ带 ¹ÞÀº Áö ½Ã°£ÀÌ ¾î´À Á¤µµ Áö³µ´Ù¸é ±×µ¿¾È CVS ¼­¹öÀÇ ³»¿ëÀÌ »õ·Ó°Ô ¾÷µ¥ÀÌÆ®µÇ¾î ÀÖÀ» ¼öµµ ÀÖ´Ù. ¹Ù²ï ºÎºÐÀ» ´Ù¿î¹ÞÀ¸·Á¸é CVS¿¡¼­ update ¸í·ÉÀ» »ç¿ëÇÑ´Ù.

$ cvs update -dP

¿©±â¼­ -P ¿É¼ÇÀº Prune ¿É¼ÇÀ¸·Î ºñ¾îÀÖ´Â µð·ºÅ丮¸¦ ÀÚµ¿À¸·Î »èÁ¦ÇØ ÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù. -d ¿É¼ÇÀº ±×µ¿¾È ¼­¹ö ÂÊ¿¡ »õ·Î ¸¸µé¾îÁø µð·ºÅ丮°¡ ÀÖÀ¸¸é ´Ù¿î ¹ÞÀº ÀÌÂÊ¿¡µµ µ¿ÀÏÇÑ µð·ºÅ丮¸¦ ¸¸µé¾î ÁØ´Ù.

CVS ¼­¹ö ¿øº»¿¡¼­ diff·Î ÆÐÄ¡ ÆÄÀÏ ¸¸µé±â
ÀÌÁ¦ ±âº»ÀûÀÎ CVS ¼­¹ö¿¡¼­ ¼Ò½ºÄÚµå ´Ù¿î·Îµå ¹æ¹ýÀ» ¾Ë¾ÒÀ¸´Ï Á÷Á¢ CVS ¼­¹öÀÇ ¼Ò½ºÄڵ带 ÀÌ¿ëÇØ¼­ ÆÐÄ¡ ÆÄÀÏÀ» ¸¸µé¾î º¸ÀÚ. CVS´Â diff ¸í·ÉÀ» ¾Æ¿¹ ÀÚüÀûÀ¸·Î ³»ÀåÇϰí ÀÖ´Ù. Á¶±Ý Àü ´Ù¿î¹ÞÀº moniwikiÀÇ ¼Ò½ºÄڵ带 ¿¹·Î µé¾îº¸ÀÚ. ¿©±â¼­, ÇÊÀÚ´Â monisetup.php ÆÄÀÏ¿¡ °£´ÜÈ÷ /* testing one two three */¶ó´Â ÁÖ¼®¹®À» Çϳª »ðÀÔÇß´Ù.

$ cd moniwiki
$ ls
COPYING                 doc                     secure.sh
CVS                     imgs                    theme
INSTALL                 index.html              tools
README                  lib                     wiki.php
THANKS                  locale                  wikihttpd.php
applets                 monisetup.bat           wikilib.php
config.php.default      monisetup.php           wikismiley.php
css                     monisetup.sh
data                    plugin
$ cvs diff -u -p monisetup.php
Index: monisetup.php
===================================================================
RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
retrieving revision 1.11
diff -u -p -r1.11 monisetup.php
--- monisetup.php       3 Jan 2004 14:26:50 -0000       1.11
+++ monisetup.php       3 Aug 2004 09:14:21 -0000
@@ -486,4 +486,5 @@ if ($_SERVER['REQUEST_METHOD']!="POST")

}

+/* testing one two three */
?>

cvs diff ¸í·ÉÀÌ ¸¶Ä¡ ·ÎÄÿ¡¼­ monisetup.php ÆÄÀÏ¿¡ diff ¸í·ÉÀ» ½ÇÇàÇÑ °Í°ú °°Àº °á°ú°¡ ³ª¿ÔÀ½À» ¾Ë ¼ö ÀÖ´Ù. cvs diff ¸í·É µÚÀÇ -u ¿É¼ÇÀº diff¿Í ¸¶Âù°¡Áö·Î unified formatÀ» ÀǹÌÇϸç -p ¿É¼ÇÀº cvs diff ÀÇ Ãâ·ÂÀ» Ç¥ÁØ Ãâ·Â(standard output)À¸·Î º¸³»¶ó´Â ÀǹÌÀÌ´Ù. µð·ºÅ丮 ¾ÈÀÇ ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ diff ¸í·ÉÀ¸·Î ºñ±³¸¦ ÇÏ·Á¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ» »ç¿ëÇÑ´Ù.

$ cvs -Q diff -u -p              
Index: monisetup.php
===================================================================
RCS file: /cvsroot/moniwiki/moniwiki/monisetup.php,v
retrieving revision 1.11
diff -u -p -r1.11 monisetup.php
--- monisetup.php       3 Jan 2004 14:26:50 -0000       1.11
+++ monisetup.php       3 Aug 2004 09:19:27 -0000
@@ -486,4 +486,5 @@ if ($_SERVER['REQUEST_METHOD']!="POST")

}

+/* testing one two three */
?>
Index: css/log.css
===================================================================
RCS file: /cvsroot/moniwiki/moniwiki/css/log.css,v
retrieving revision 1.1
diff -u -p -r1.1 log.css
--- css/log.css 11 Feb 2004 08:48:27 -0000      1.1
+++ css/log.css 3 Aug 2004 09:19:27 -0000
@@ -1,4 +1,5 @@
/* MoniWiki CSS 2003/11/01 by wkpark */
+/* another testing comment */
body {
   font-family:Georgia,Verdana,Lucida,sans-serif;font-size:12px;
   background-color:#FFFFFF;

¿©±â¼­´Â monisetup.php ÆÄÀϰú css/log.css ÆÄÀÏ¿¡ ¼öÁ¤µÈ ºÎºÐÀÌ ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. cvs diff ¸í·É¿¡¼­ -Q ¿É¼ÇÀº Quiet ¿É¼ÇÀ¸·Î diff Ãâ·Â ÀÌ¿ÜÀÇ ´Ù¸¥ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏÁö ¾Êµµ·Ï ÇØ ÁØ´Ù. ±×·±µ¥ ¿©±â¼­ Çϳª Àǹ®ÀÌ µé ¼ö ÀÖ´Ù. ºÐ¸íÈ÷ CVS¿¡¼­´Â cvs¸¦ ÀÌ¿ëÇØ¼­ Á÷Á¢ ¼Ò½ºÄڵ忡 ¼öÁ¤À» °¡ÇÒ ¼ö ÀÖÀ» °ÍÀε¥ ¿©±â¿¡¼­ ¿Ö ±»ÀÌ ±¸½Ä diff¸¦ ÀÌ¿ëÇÑ ¹æ¹ýÀ» ¶Ç »ç¿ëÇϰí ÀÖ´Â °ÍÀ»±î?

±× ÀÌÀ¯´Â ¾Õ¿¡¼­µµ Àá±ñ ¾ð±ÞÇßµíÀÌ, CVS ¼­¹öÀÇ ³»¿ëÀ» ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÀÖ´Â °³¹ßÀÚ´Â ¼Ò¼öÀ̱⠶§¹®ÀÌ´Ù. ±×¸®°í ÀÚºñ·Î¿î µ¶ÀçÀÚ¶ó´Â ¿ë¾î¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ Á¦ÃâµÈ ÆÐÄ¡¸¦ ¹Þ¾ÆµéÀÏÁö ¾Æ´ÒÁöÀÇ ¿©ºÎ´Â °ü½ÀÀûÀ¸·Î º¸Åë ±×ÂÊ ÇÁ·ÎÁ§Æ® ¸®´õµéÀÇ ¸òÀÌ µÈ´Ù.

µû¶ó¼­ CVS ¼­¹ö¿¡ Àбâ Àü¿ëÀÇ ±ÇÇѸ¸À» °®°í ÀÖ´Â ÀÏ¹Ý ¿ÀǼҽº ÇÁ·ÎÁ§Æ® Âü°¡ÀÚµéÀº À̸ÞÀÏÀ̳ª ȤÀº ¸ÞÀϸµ ¸®½ºÆ®¿¡ diff¸¦ ÀÌ¿ëÇØ¼­ ÆÐÄ¡ ÆÄÀÏÀ» Æ÷½ºÆÃÇÏ´Â °ÍÀÌ ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÏ´Â °¡Àå ¹«³­ÇÑ ¹æ¹ýÀÌ´Ù. ÀϹÝÀûÀ¸·Î ÇÁ·ÎÁ§Æ®ÀÇ Âü°¡ÀÚ°¡ Áö³ªÄ¡°Ô ¸¹Áö ¾ÊÀº °æ¿ì¸¦ Á¦¿ÜÇϰí´Â ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ ¿Ã¶ó¿À´Â ÆÐÄ¡´Â ¾Æ¹«¸® »ç¼ÒÇÑ °ÍÀÌ¶óµµ ½±°Ô CVS ¼­¹öÀÇ ¿øº» ¼Ò½ºÄڵ忡(repository¶ó°í ºÎ¸¥´Ù) ¹Ý¿µ µÈ´Ù.

µû¶ó¼­ ÀÏ¹Ý °³¹ßÀÚÀÇ ÀÔÀå¿¡¼­´Â ÇÁ·ÎÁ§Æ® ¸®´õ³ª ¸ÞÀÎ °³¹ßÀÚ°¡ µÇ±â Àü¿¡´Â CVS ¼­¹ö¿¡¼­ ¾²±â ±ÇÇÑÀÌ ±×´ÙÁö ÇÊ¿äÇÏÁö´Â ¾Ê´Ù. ÀÌÁ¦ °£´ÜÇÏ°Ô CVS ¼­¹ö¿¡¼­ ÀÚÁÖ ¾²ÀÌ´Â ±âº»ÀûÀÎ °³³ä°ú ¿ë¾î¿¡ ´ëÇØ ¾Ë¾Æº¸±â·Î ÇÏÀÚ.

CVSÀÇ °³³ä°ú ¿©·¯ ¿ë¾î
CVS ¸ðµ¨, copy-moodify-merge model
CVS´Â ÀÌÀü¿¡ ¸¹ÀÌ ¾²ÀÌ´ø RCS(Revision Control System)°ú´Â ´Þ¸® lock-modify-unlockÀÌ ¾Æ´Ñ copy-modify-merge ¸ðµ¨À» »ç¿ëÇÑ´Ù. ¿©·¯ ¸íÀÇ °³¹ßÀÚ°¡ ÇϳªÀÇ ¼Ò½ºÄÚµå Æ®¸®¿¡¼­ °³¹ß ÀÛ¾÷À» ÇÒ ¶§ °¡Àå Å« ¹®Á¦´Â °°Àº ºÎºÐÀÇ ¼Ò½ºÄڵ忡 µÎ ¸í ÀÌ»óÀÇ °³¹ßÀÚ°¡ ¼­·Î ´Ù¸¥ ¼Ò½ºÄڵ带 ÀÛ¼ºÇϰí ÀÖÀ» ¶§ ¹ß»ýÇÑ´Ù. À̰ÍÀ» CVS¿¡¼­´Â conflictÀÌ ¹ß»ýÇß´Ù°í ÇÑ´Ù.

RCSÀÇ lock-modify-unlock Á¢±Ù¹æ½ÄÀº ÀÌ·¯ÇÑ conflict¸¦ Çѹø¿¡ µÎ ¸í ÀÌ»óÀÇ °³¹ßÀÚ°¡ °°Àº ¼Ò½ºÄÚµå ºÎºÐ¿¡ Á¢±ÙÇÒ ¼ö ¾øµµ·Ï ÇØ¼­ conflict »óȲÀ» ¹Ì¿¬¿¡ ¹æÁöÇÑ´Ù. ÇÏÁö¸¸ CVS¿¡¼­´Â ÀÌ·¯ÇÑ conflict »óȲÀÌ ¹ß»ýÇÏ´Â °ÍÀ» Çã¿ëÇÑ´Ù. ±×·¸´Ù¸é CVS¿¡¼­´Â ÀÌ·± ¼Ò½ºÄÚµå conflict »óȲÀÌ ¹ß»ýÇÏ¸é ¾î¶»°Ô ´ëóÇÒ±î?

Àç¹ÌÀÖ°Ôµµ CVS¿¡¼­´Â ÀÌ·± »óȲ¿¡¼­ ¾Æ¹« Àϵµ ÇÏÁö ¾Ê´Â´Ù. ´Ù¸¸, CVS´Â ¾î´À ºÎºÐ¿¡¼­ ¼Ò½ºÄÚµå conflict°¡ ¹ß»ýÇß´ÂÁö, ±×¸®°í ¾î¶² »ç¶÷ÀÌ conflict¿¡ °ü°èµÇ¾î ÀÖ´ÂÁö¸¸ Á¤È®ÇÏ°Ô ¾Ë·Á ÁØ´Ù. µû¶ó¼­ ¼Ò½ºÄÚµåÀÇ conflict ¹®Á¦¸¦ ÇØ°áÇÏ´Â °ÍÀº ±â°è°¡ ¾Æ´Ñ »ç¶÷ÀÇ ¸òÀÌ µÈ´Ù.

lock-modify-unlock ¸ðµ¨Àº ÇÁ·ÎÁ§Æ®ÀÇ Àüü °³¹ßÀÚ ¼ýÀÚ°¡ ¼Ò¼öÀÌ°í °¢°¢ÀÇ °³¹ßÀÚµéÀÌ ´Ù¸¥ °³¹ßÀÚµéÀÌ ÇöÀç ¾î¶² ÀÛ¾÷À» Çϰí ÀÖ´ÂÁö ½±°Ô ¾Ë ¼ö ÀÖ´Â »óȲ¿¡ À¯¸®ÇÏ´Ù. ±×·¯³ª °³¹ßÀÚÀÇ ¼ýÀÚ°¡ ¸¹¾ÆÁö¸é ÀÌ¹Ì Àá±ÝÀÌ °É·Á ÀÖ´Â ÆÄÀÏ¿¡´Â ´Ù¸¥ °³¹ßÀÚµéÀÌ Á¢±ÙÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÀüüÀûÀÎ ¾÷µ¥ÀÌÆ®°¡ ´Ê¾îÁö´Â ¹®Á¦°¡ ¹ß»ýÇÏ°Ô µÇ°í Á» ´õ À¯¿¬ÇÑ È¯°æÀ» Á¦°øÇϱâ À§ÇØ CVS°¡ µµÀԵDZ⿡ À̸£·¶´Ù. µû¶ó¼­ copy-modify-merge ¸ðµ¨ÀÇ CVS¸¦ »ç¿ëÇÏ´Â °³¹ßÀÚ´Â ±âº»ÀûÀ¸·Î ´ÙÀ½°ú °°Àº °úÁ¤À» °ÅÄ¡¸ç °³¹ß ÀÛ¾÷À» ÁøÇàÇØ ³ª°¡°Ô µÈ´Ù.

[1] °³¹ßÀÚ´Â CVS ¼­¹ö·ÎºÎÅÍ ¼Ò½ºÄÚµå Ä«ÇǸ¦ ´Ù¿î·Îµå(check-out)ÇÑ ´ÙÀ½
[2] ¼Ò½ºÄڵ带 ¼öÁ¤Çϰí
[3] ¿Ï·áµÈ ÀÛ¾÷Àº ´Ù½Ã CVS ¼­¹ö·Î ¿Ã·ÁÁØ´Ù(check-in, commit)

¿©±â¼­ conflictÀÇ ¹ß»ý ¿©ºÎ´Â commit ÀÛ¾÷ ´Ü°è¿¡¼­ ¾Ë ¼ö ÀÖ´Ù. ±×¸®°í Á¶±Ý Àü¿¡ Àá±ñ »ìÆìº¸¾ÒµíÀÌ ÇöÀç °³¹ßÀÚÀÇ ÄÄÇ»ÅÍÀÇ ¼Ò½ºÄڵ带 cvs ¼­¹ö Âʰú °¡´ÉÇÑ ÇÑ µ¿ÀÏÇÏ°Ô À¯ÁöÇÏ·Á¸é update¸¦ ÀÚÁÖ ÇØ ÁÖ´Â °ÍÀÌ ÁÁ´Ù.

CVS¿Í °ü·ÃµÈ ¿ë¾î
CVS¿Í °ü·ÃµÈ ¿ë¾î´Â ÅëÀÏµÈ ¹ø¿ªÀÌ ¾ÆÁ÷ Á¸ÀçÇÏÁö ¾Ê´Â °Í °°¾Æ ¿ø¹® ±×´ë·Î ½Æ°í ¿©±â¿¡ ¼³¸íÀ» µ¡ºÙÀ̵µ·Ï ÇϰڴÙ.

¡ß repository : CVS ¼­¹ö¿¡ µé¾î°¡ ÀÖ´Â ¹Ù·Î ±× ¿øº»(master copy) ¼Ò½ºÄڵ带 ÀǹÌÇÑ´Ù. ³ªÁß¿¡ ÃÖÁ¾ Ãâ½Ã°¡ µÇ´Â ¼Ò½ºÄڵ尡 ¹Ù·Î ÀÌ repositoryÀ̸ç repository´Â ±×µ¿¾È ¹öÀü¾÷µÇ¾î ¿Â Á¤º¸¸¦ ¸ðµÎ Æ÷ÇÔÇϰí ÀÖ´Ù. cvs respositoryÀÇ °³¼ö´Â Çϳª°¡ µÈ´Ù.

¡ß working copy : °¢°¢ÀÇ °³¹ßÀÚ°¡ ÀÛ¾÷À» À§ÇØ cvs repository¿¡¼­ º¹»çÇØ °®°í ³ª°£(check-out) ¼Ò½ºÄڵ尡 working copyÀÌ´Ù. µû¶ó¼­ working copy´Â °³¹ßÀÚÀÇ ¼ö¸¸Å­ Á¸ÀçÇÑ´Ù°í º¼ ¼ö ÀÖ´Ù. °³¹ßÀÚ´Â ÀÌ working copy¿¡¼­ ¼Ò½ºÄÚµå ¼öÁ¤ ÀÛ¾÷À» ÇÑ ´ÙÀ½ ³ªÁß¿¡ check-in ȤÀº commit ´Ü°è¸¦ °ÅÃÄ ¿øº» cvs repository¿¡ ¼öÁ¤À» °¡ÇÏ°Ô µÈ´Ù.

¡ß check-out : °³¹ßÀÚ°¡ ÀÚ½ÅÀÌ ÀÛ¾÷ÇÒ working copy¸¦ CVS ¼­¹ö¿¡¼­ ÇÑ Ä«ÇÇ º¹»çÇØ °¡´Â °ÍÀ» check-outÀ̶ó°í ÇÑ´Ù.

¡ß update : update´Â check-out°ú ºñ½ÁÇÏ°Ô cvs repository¿¡¼­ ¿øº» ¼ÒÇÁÆ®¿þ¾î¸¦ ÇÑ Ä«ÇÇ °¡Á®¿À´Â ¿ªÇÒÀ» ÇÏÁö¸¸, update´Â ´Ü¾îÀÇ ¿ø·¡ ¶æ ±×´ë·Î ¼öÁ¤µÈ ºÎºÐ¸¸ °¡Á®¿Í¼­ ÇöÀç °³¹ßÀÚ°¡ ¾²°í ÀÖ´Â working copy°¡ Ç×»ó ÃÖ½ÅÀÇ °»½Åº»ÀÌ µÉ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. ÀϹÝÀûÀ¸·Î, °³¹ßÀÚ´Â Çѹø working copy¸¦ check-out ÇÑ µÚ¿¡´Â ÃÖ½ÅÀÇ ¼Ò½ºÄڵ带 À¯ÁöÇϱâ À§ÇØ ÀÌ update ¸í·ÉÀ» ÁÖ·Î ¾²°Ô µÈ´Ù.

¡ß check-in ȤÀº commit : ¿©±â¼­ Àá±ñ Á¶½ÉÇØ¼­ ºÁ¾ß ÇÒ °ÍÀÌ update¿Í check-inÀÇ °ü°èÀÌ´Ù. ¾óÇÍ º¸±â¿¡´Â CVS¿¡¼­ check-out°ú check-inÀÌ ¹Ý´ëÀÇ °³³äÀÌ µÇ¾î¾ß ÇÒ °Í °°Àºµ¥ ½Ç»ó check-inÀÇ ¹Ý´ë °³³äÀº updateÀÌ´Ù. check-inÀº ³»°¡ ÀÛ¼ºÇÑ ¼Ò½ºÄڵ带 repository¿¡ º´ÇÕ½ÃÄѼ­ ´Ù¸¥ °³¹ßÀڵ鵵 ³»°¡ ÀÛ¼ºÇÑ ¼öÁ¤ ºÎºÐÀ» º¼ ¼ö ÀÖ°Ô ÇØ ÁÖ´Â ¼ÒÀ§ publish ÀÛ¾÷À̱⠶§¹®ÀÌ´Ù. µû¶ó¼­ ±× ¹Ý´ë °³³äÀº ³»°¡ ´Ù¸¥ »ç¶÷µéÀÌ ÀÛ¼ºÇÑ ¼Ò½ºÄÚµå ¼öÁ¤º»À» ³ªÀÇ working copy¿¡ ¹Ý¿µ½ÃŰ´Â °ÍÀε¥ ÀÌ ÀÛ¾÷ÀÌ update °úÁ¤ÀÌ´Ù. µû¶ó¼­ check-in °úÁ¤Àº ¿ÀÈ÷·Á commitÀ̶ó´Â ´Ü¾î¸¦ ½á¼­ Ç¥ÇöÇÏ´Â °ÍÀÌ È¥µ¿À» ¹Ì¸® ¹æÁöÇÏ´Â È¿°ú°¡ ÀÖÁö ¾Ê³ª ½Í´Ù. Âü°í·Î commit ±ÇÇÑÀº Àá½Ã ¾ð±ÞÇßµíÀÌ ¼Ò¼öÀÇ ÁÖ¿ä ÇÁ·ÎÁ§Æ® ¸®´õµéÀÌ °®°Ô µÇ´Â °æ¿ì°¡ ¸¹´Ù. ¾î¶² ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡¼­ Ä¿¹ÌÅÍÀÇ ¿ªÇÒÀ» ´ã´çÇÑ´Ù´Â °ÍÀº ±× »ç¶÷ÀÇ ±â¿©µµ°¡ ³ô°í ±×¸¸Å­ ³ôÀº À§Ä¡¸¦ ¹èÁ¤¹Þ¾Ò´Ù´Â ¶æÀÌ µÈ´Ù.

update¿Í commit¿¡ °üÇØ¼­ ¶Ç Çϳª ¾Ë¾Æ³õÀ» »ó½ÄÀº update¿Í commit ÀÛ¾÷Àº °¡´ÉÇϸé ÀÚÁÖ ÇØ ÁÖ´Â °ÍÀÌ ÁÁ´Ù´Â »ç½ÇÀÌ´Ù. ´Ù¸¥ »ç¶÷µéÀÌ ³»°¡ ¾î¶² ÀÛ¾÷À» ÇÏ´ÂÁö Àß ¾Ë°í, ³ª ¿ª½Ã ´Ù¸¥ »ç¶÷µéÀÌ ¾î¶² ÀÛ¾÷À» Çϰí ÀÖ´ÂÁö Àß ¾Æ´Â °ÍÀÌ È¿À²ÀûÀÎ Çù¾÷(collaboration)ÀÇ ±âÃʰ¡ µÊÀº µÎ¸»ÇÒ Çʿ䰡 ¾ø´Ù. Ãß°¡ÀûÀ¸·Î CVSÀÇ commit ¸í·É »ç¿ë ¿¹´Â ´ÙÀ½°ú °°´Ù. -m ¿É¼Ç µÚ¿¡´Â À̹ø commit¿¡ ´ëÇÑ °£·«ÇÑ ¼³¸íÀ̳ª ÁÖ¼®¹®ÀÌ µû¶ó¿Â´Ù.

$ cvs commit -m "added additioinal messages" hello2.c   # ÆÄÀÏ Çϳª commit ¿¹

$ pwd
/home/foobar/projects/src1
$ cvs commit -m "removed redundant declarations"       # Àüü µð·ºÅ丮 commit ¿¹

¡ß log message : ¼öÁ¤µÈ ¼Ò½ºÄڵ带 commitÇÒ ¶§ ÀÌ ¼Ò½ºÄڵ尡 ¾î¶² ¿ªÇÒÀ» ÇÏ´ÂÁö, ¾î¶² ºÎºÐÀÌ ¹Ù²î¾ú´ÂÁö µîÀ» ±â¼úÇÏ´Â ÁÖ¼®¹® ¿ªÇÒÀÇ ¸Þ½ÃÁöÀÌ´Ù. ÀÌ°Í ¿ª½Ã ÄÚµù½Ã ÁÖ¼®¹® ÀÛ¼º¿¡ ½Å°æÀ» ¸¹ÀÌ ¾²´Â °Íó·³ ¼öÁ¤µÈ ¼Ò½ºÄڵ带 commitÇÒ ¶§ ¸¶´Ù °£°áÇϰí Á¤È®ÇÏ°Ô ½á ÁÖ´Â °ÍÀÌ ÁÁ´Ù.

¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ ¸¹Àº Âü¿©¸¦
Áö±Ý±îÁö ¿©·¯ ¸íÀÇ °³¹ßÀÚ, ƯÈ÷ ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÒ ¶§ ÇʼöÀûÀ¸·Î ¾²ÀÌ´Â À¯Æ¿¸®Æ¼ÀÎ diff¿Í patch, ±×¸®°í CVSÀÇ ±âº» »ç¿ë¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸¾Ò´Ù. ÃÖ±Ù µé¾î¼­´Â ¹®¼­ ÀÛ¼ºµµ ¿ÀǼҽº¿Í ºñ½ÁÇÏ°Ô ¿©·¯ »ç¶÷ÀÌ µ¿½Ã¿¡ °°Àº ÆäÀÌÁö¸¦ °íÃÄ ³ª°¡´Â ¹æ½ÄÀÌ Á¤ÂøµÇ¾î °¡°í ÀÖ´Ù. À§Å°(wiki)ÀÇ »ç¿ëÀÌ ´Ã¾î³ª°í ÀÖ´Â °ÍÀÌ ¹Ù·Î ±×°ÍÀε¥ À§Å°´Â ³»ºÎÀûÀ¸·Î RCS¸¦ »ç¿ëÇØ¼­ ¹®¼­ÀÇ ¹öÀü ÄÁÆ®·ÑÀ» ÇØ ³ª°¡´Â °æ¿ì°¡ ¸¹´Ù. Áï, À§Å°¸¦ ÅëÇÑ ¹®¼­ ÀÛ¼º ¹æ½Äµµ CVS¸¦ ÀÌ¿ëÇÑ ¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾î °³¹ß°ú ±Ùº»ÀûÀ¸·Î ´Ù¸£Áö ¾ÊÀº °ÍÀÌ´Ù.

¾Õ¿¡¼­µµ °­Á¶ÇßµíÀÌ, ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Âü¿©Çϱâ À§Çؼ­ °¡Àå Áß¿äÇÑ °ÍÀº diff¿Í patchÀÇ »ç¿ë¹ýÀ» ¾Æ´Â °ÍÀÌ´Ù. À졧 °£´ÜÇØ º¸ÀÌ´Â ÀÌ À¯Æ¿¸®Æ¼µéÀÌ À̸ÞÀÏ, ±×¸®°í À̸ÞÀÏÀÇ È®ÀåÆÇÀÎ ¸ÞÀϸµ ¸®½ºÆ®¿Í Ãʱâ À¯Áî³Ý ´º½º±×·ì°ú °áÇյǸ鼭 ÀÎÅͳݻ󿡼­ Áß¿ä ¿ÀǼҽº ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÇ ¹®À» ¿­¾îÁ¥Èù ÁÖ¿ªµéÀÌ´Ù.

¶ÇÇÑ, ÀÌ·¸°Ô ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÏ´Â °ÍÀÌ »ý°¢¸¸Å­ ¾î·ÆÁö ¾Ê´Ù´Â Á¡À» ÀÏ¹Ý °³¹ßÀÚµéÀÌ ÀÎÁöÇÏ´Â °Íµµ Áß¿äÇÏ´Ù°í ÇϰڴÙ. ÇÊÀÚ ¿ª½Ã CVSÀÇ »ç¿ë¹ýÀ» ¾Ë±â Àü¿¡´Â ³»°¡ CVSÀÇ »ç¿ë¹ýÀ» ¸ð¸£´Âµ¥ ¿ÀǼҽº ÇÁ·ÎÁ§Æ® Âü¿©°¡ °¡´ÉÇϰڴ°¡¶ó´Â ¾µ¸ð¾ø´Â »ý°¢À» Çß´ø ÀûÀÌ ÀÖ´Ù. ÇÊÀÚÀÇ °æ¿ì´Â ½ÇÁ¦ ¶³¾îÁö´Â ÄÚµù ´É·ÂÀÌ ¿ÀǼҽº ÇÁ·ÎÁ§Æ® Âü¿©¿¡ À庮ÀÌ µÇ°í Àִµ¥ ÀÌ ±ÛÀ» Àд ¸¹Àº µ¶ÀÚµéÀÌ À̹ø ¿¬À縦 °è±â·Î ¿ÀǼҽº ÇÁ·ÎÁ§Æ®¿¡ Á» ´õ ¸¹ÀÌ Âü¿©ÇØ º¸´Â ±âȸ¸¦ °¡Áú ¼ö ÀÖÀ¸¸é ÁÁ°Ú´Ù´Â °ÍÀÌ ÇÊÀÚÀÇ ¹Ù¶÷ÀÌ´Ù. ´Ü ÇÑ ÁÙÀÇ diff·Î ¸¸µç ÆÐÄ¡¶óµµ ¿ÀǼҽº °³¹ßÀÚ¿¡°Ô´Â ¸¹Àº µµ¿òÀÌ µÇ¸ç ¶ÇÇÑ °Ý·ÁÀÇ ÀÀ¿øÀÌ µÈ´Ù. @

* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ ÀÚ¸ÅÁöÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
[Á¶Çý¶õ]ºñÁÖ¾ó½ºÆ©µð¿À2008 S...
[¹®Á¾¼ö] ±â¾÷ÀÇ ¾ó±¼ 'ÄÁÅü¾ÅÍ...
[½Å°æÁØ]Visual C++ 20...
[¹é½ÂÁÖ] °¡»óÈ­ÀÇ ½Ã´ë, IT ...
À©µµ¿ìCE µð¹ÙÀ̽º µå¶óÀ̹ö¿¡ °ü...
[±â°í]¿Ã¸²ÇÈ ½ÃÁ𠺸¾È À§Çù¿¡ ...
[±â°í] °¡»óÈ­ ½ÃÀåÀÇ Çö ÁÖ¼Ò
[Å×Å©º¸µå ½ÃÁð3]±Û·Î¹ú IT¾÷üµé, °¢Á¾ ¾Ç¼º ·ç¸Ó·Î È«¿ª ¿Ü [00:06:29]
±âȹ ·ùÁØ¿µ ±âÀÚ, ÁøÇà ¹ÚÀ±¹Ì, Á¦ÀÛ À¯È¸Çö PD
[CNET ¿µ¹®¹æ¼Û]¹°°í±â·Î ÀçâÁ¶µÈ 'MP3 ¸®¹Í½º ¾ÆÆ®' [00:06:09]
Áöµð³ÝÄÚ¸®¾Æ ¿µ»óÁ¦ÀÛÆÀ
¡°Çѱ¹ SW´Â ·¹µå¿À¼ÇÀΰ¡?¡±
"¾×ƼºêX¿Í °øÁ¸ ¸ð»ö"¡¦±¸±Û, ...
°øÀÎÀÎÁõüÁ¦, ¿ì¸®¿¡°Ô ÀÓ¹ÚÇÑ ¹Ì...
¡®¾Ë¾à¡¯ µ¹Ç³Àº ³×À̹öµµ ¸ø¸»·Á?
UX´Â ·¯ºê¾×Ãò¾ó¸®½Ä ÇÁ·ÎÆ÷Áî
³×À̹öÆÇ ÆÄÀÌ¾îÆø½º3, 9¿ù4ÀÏ ...
µðÁöÅÐÇîÁö, ºí·¹À̵弭¹ö 'ÆÄ¿ö¼¼...
ÇìÀÌ¿öµåÅ×Å©, Çѱ¹ÅõÀÚÁõ±Ç¿¡ XI...
Æ÷½ºµ¥ÀÌŸ, ECM ½ÃÀå ÁøÃâ
»ï¼ºÀüÀÚ, Çù·Â»ç CFO ´ë»ó '...
±¹³»¿Ü ÈÞ´ëÆù ¾Ö³Î¸®½ºÆ®, ÇÑÀÚ¸®...
 
 
The Korean edition of 'ZDNet' is published under license from CNET Networks, Inc., San Francisco, CA, USA. Editorial items appearing in 'ZDNet Korea' that were originally published in the US Edition of 'ZDNet', 'CNET', and 'CNET News.com' are the copyright properties of CNET Networks, Inc. or its suppliers.
Copyright ¨Ï 2008 CNET Networks, Inc. All Rights Reserved. 'ZDNet', 'CNET' and 'CNET News.com' are trademarks of CNET Networks, Inc.