· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Subversion Book/Guided Tour

ÇÔ²² µÑ·¯º¸±â

1Chapter. ÇÔ²² µÑ·¯º¸±â


1.1.

ÀÌÁ¦ SubversionÀ» »ç¿ëÇÏ´Â ¹ýÀ» ÀÚ¼¼È÷ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÌ ÀåÀÌ ³¡³¯ ÁîÀ½À̸é ÀÏ»óÀûÀÎ ÀÛ¾÷¿¡ SubversionÀ» »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÅÀÇ ¸ðµç ÀϵéÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ç½ÅÀÇ Äڵ带 óÀ½ üũ¾Æ¿ôÇÏ´Â °ÍÀ¸·Î ½ÃÀÛÇÏ¿© Äڵ带 ¼öÁ¤ÇÏ°í ¼öÁ¤ÇÑ ³»¿ëÀ» °Ë»çÇÕ´Ï´Ù. ¶Ç ´Ù¸¥ »ç¶÷ÀÌ ¼öÁ¤ÇÑ ³»¿ëÀ» ÀÚ½ÅÀÇ ÀÛ¾÷º»¿¡ ¹Ý¿µÇÏ°í °Ë»çÇϸç Ãæµ¹ÀÌ ¹ß»ýÇÒ °æ¿ì ÇØ°áÇÏ°Ô µË´Ï´Ù.

ÀÌ Àå¿¡¼­ SubversionÀÇ ¸í·É¾î ÀüºÎ¸¦ ¿­°ÅÇÏÁö´Â ¾Ê½À´Ï´Ù. ±×º¸´Ù´Â »ç¿ëÀÚ°¡ SubversionÀ» »ç¿ëÇÏ¿© °¡Àå º¸ÆíÀûÀ¸·Î ÇÏ°Ô µÉ ÀÛ¾÷µé¿¡ ´ëÇØ ¼Ò°³¸¦ ÇÕ´Ï´Ù. ÀÌ ÀåÀº ´ç½ÅÀÌ 2Àå>À» Àаí ÀÌÇØÇßÀ¸¸ç SubversionÀÌ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ¸ðµ¨À» ¾Ë°í ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ¸í·É¾îÀÇ Àüü ·¹ÆÛ·±½º´Â 8Àå >À» º¸½Ê½Ã¿À.


1.1. µµ¿ò¸»

°è¼Ó ÁøÇàÇϱâ Àü¿¡ °¡Àå Áß¿äÇÑ Subversion ¸í·É¾îÀÎ svn help ¿¡ ´ëÇØ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. Subversion Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ®´Â ½º½º·Î ¹®¼­¸¦ »ý¼ºÇÏ¿© Ãâ·ÂÇÕ´Ï´Ù. ¾ðÁ¦¶óµµ svn help ¼­ºê Ä¿¸àµå ¶ó°í Ä¡¸é ¼­ºê Ä¿¸àµåÀÇ ¹®¹ý, ¿É¼Ç ½ºÀ§Ä¡, µ¿ÀÛÀ» ¾Ë·Á ÁÝ´Ï´Ù.


1.2. ÀÓÆ÷Æ®

svn import ¸í·ÉÀ¸·Î SubversionÀÇ ÀúÀå¼Ò(repository)¿¡ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÀÓÆ÷Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù. Subversion ¼­¹ö¸¦ ¼³Á¤ÇÒ ¶§ ÃÖÃÊ·Î ½ÇÇàÇÏ°Ô µÉ Ä¿¸àµåÀÌÁö¸¸ ¸Å¿ì ºó¹øÇÏ°Ô »ç¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. import ÀÇ »ó¼¼ÇÑ ±â´É¿¡ ´ëÇÏ¿©´Â ÀÌ ÀåÀÇ µÚ ÂÊ¿¡ ÀÖ´Â "svn import" ¼½¼Ç >À» º¸½Ê½Ã¿À.


1.3. ¸®ºñÀü: ¹øÈ£, Å°¿öµå, ³¯Â¥

ÁøÇàÇϱâ Àü¿¡ ÀúÀå¼Ò ³»¿¡ ƯÁ¤ÇÑ ¸®ºñÀüÀ» ÁöĪÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ µÑ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. >¿¡¼­ º» °Íó·³ ¸®ºñÀüÀº ƯÁ¤ÇÑ ¼ø°£ ÀúÀå¼Ò(repository)ÀÇ "¼ø°£Æ÷Âø »çÁø(snapshot)"ÀÔ´Ï´Ù. Ä¿¹ÔÀ» ¹Ýº¹ÇÏ¿© ÀúÀå¼Ò°¡ Ä¿Áü¿¡ µû¶ó ÀÌ ½º³À¼¦µéÀ» ±¸ºÐÇÒ ¹æ¹ýÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.

--revision (-r) ¿É¼Ç µÚ¿¡ ¿øÇÏ´Â ¸®ºñÀü ¹øÈ£¸¦ Àû¾î (svn --revision REV) ¸®ºñÀüÀ» ¸í½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â µÎ ¸®ºñÀüÀ» ÄÝ·ÐÀ¸·Î ±¸ºÐÇÏ¿© (svn --revision REV1:REV2). ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸®ºñÀüÀº ¹øÈ£, Å°¿öµå, ³¯Â¥ ¼¼°¡Áö ¹æ¹ýÀ¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.3.1. ¸®ºñÀü ¹øÈ£

»õ·Î¿î Subversion ÀúÀå¼Ò¸¦ ¸¸µé¸é ¸®ºñÀü 0ºÎÅÍ ½ÃÀÛÇÏ°Ô µË´Ï´Ù. ÀÌÈÄ Ä¿¹ÔÀ» ½ÇÇàÇÒ ¶§¸¶´Ù ¸®ºñÀü ¹øÈ£´Â 1¾¿ Áõ°¡ÇÕ´Ï´Ù. Ä¿¹ÔÀÌ ¿Ï·áµÉ ¶§¸¶´Ù Subversion Ŭ¶óÀ̾ðÆ®´Â ¾Æ·¡¿Í °°ÀÌ »õ·Î¿î ¸®ºñÀü ¹øÈ£¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

$ svn commit --message "Corrected number of cheese slices. "
Sending        sandwich.txt
Transmitting file data .
Committed revision 3.
      

³ªÁß¿¡ ÀÌ ¸®ºñÀüÀ» ÂüÁ¶ÇÏ°í ½ÍÀ» ¶§ (ÀÌ ÀåÀÇ µÚ¿¡¼­ ¾î¶² °æ¿ì¿¡ ±×·± ÀÏÀÌ ÇÊ¿äÇÑ°¡¸¦ ¼³¸íÇÕ´Ï´Ù) "3"À¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.3.2. ¸®ºñÀü Å°¿öµå

Subversion Ŭ¶óÀ̾ðÆ®´Â ´Ù¾çÇÑ ¸®ºñÀü Å°¿öµå¸¦ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Å°¿öµå´Â --revision ¿É¼Ç µÚ¿¡ ¼ýÀÚ°ª ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç Subversion¿¡ ÀÇÇØ Æ¯Á¤ÀÇ ¸®ºñÀü ¹øÈ£·Î º¯È¯µË´Ï´Ù:

Note: ÀÛ¾÷º»ÀÇ ¸ðµç µð·ºÅ丮¿¡´Â .svnÀ̶ó´Â À̸§ÀÇ °ü¸® ¿µ¿ªÀÌ ÀÖ½À´Ï´Ù. SubversionÀº µð·ºÅ丮 ¾ÈÀÇ °¢ ÆÄÀÏÀÇ »çº»À» ÀÌ °ü¸® ¿µ¿ª¿¡ º¸°üÇÕ´Ï´Ù. ÀÌ »çº»Àº »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ ÀÛ¾÷º»À» °»½Å(update)ÇÑ °¡Àå ÃÖ±ÙÀÇ ¸®ºñÀü (ÀÌ°ÍÀ»"BASE"¸®ºñÀüÀ̶ó°í ÇÕ´Ï´Ù)¿¡ ÀÖ´ø ÆÄÀÏÀ» ¼öÁ¤ ¾øÀÌ (Å°¿öµå È®Àå, end-of-lineº¯È¯À» ºñ·ÔÇÏ¿© ¾î¶°ÇÑ Àϵµ ¼öÇàÇÏÁö ¾Ê°í) º¸°üÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ÆÄÀÏÀ» "¿ø·¡ÀÇ ÀÛ¾÷º¹»ç (pristine copy)"¶ó°í ¸»ÇÕ´Ï´Ù.

HEAD

ÀúÀå¼Ò(repository)¿¡ ÀÖ´Â ÃֽŠ¸®ºñÀüÀÔ´Ï´Ù.

BASE

ÀÛ¾÷ º¹»ç¿¡ ÀÖ´Â ÆÄÀÏ µð·ºÅ丮ÀÇ "¿ø·¡ÀÇ ÀÛ¾÷º¹»ç"¸®ºñÀüÀÔ´Ï´Ù.

COMMITTED

BASE ÀÌÀü ¶Ç´Â BASE ¿¡¼­ º¯°æµÈ ¾ÆÀÌÅÛÀÌ ÀÖ´Â ¸¶Áö¸· ¸®ºñÀüÀÔ´Ï´Ù.

PREV

º¯°æÀÌ ÀÖ´ø ¸¶Áö¸· ¸®ºñÀü Á÷ÀüÀÇ ¸®ºñÀüÀÔ´Ï´Ù. (Áï COMITTED - 1 ÀÌ µË´Ï´Ù)

Ä¿¸Çµå ½ÇÇà½ÃÀÇ ¸®ºñÀü Å°¿öµåÀÇ ¿¹ÀÔ´Ï´Ù (¾ÆÁ÷ Ä¿¸ÇµåÀÇ Àǹ̸¦ ¸ô¶óµµ ±¦Âú½À´Ï´Ù. ÀÌ ÀåÀ» ÁøÇàÇϸ鼭 ¼³¸íÇÕ´Ï´Ù):

$ svn diff --revision PREV:COMITTED foo.c
# foo.c ¿¡ Ä¿¹ÔÇÑ ¸¶Áö¸· º¯°æÀ» Ç¥½Ã

$ svn log --revision HEAD
# ÀúÀå¼Ò¿¡ ¸¶Áö¸·À¸·Î Ä¿¹ÔÇÒ ¶§ÀÇ ·Î±× ¸Þ½ÃÁö¸¦ Ç¥½Ã

$ svn diff --revision HEAD
# ÀÛ¾÷ Ä«Çdz» ÆÄÀÏ(·ÎÄÿ¡¼­ ¼öÁ¤µÇ¾úÀ» ¼ö ÀÖÀ½)À» ÀúÀå¼ÒÀÇ
# ÃֽŠ¹öÀü°ú ºñ±³

$ svn diff --revision BASE:HEAD foo.c
# ÀÛ¾÷ Ä«ÇÇÀÇ"¼öÁ¤¿ø" foo.c(·ÎÄÿ¡¼­ ¼öÁ¤ÇÑ °ÍÀÌ ¹Ý¿µµÇÁö ¾ÊÀ½)¸¦
# ÀúÀå¼ÒÀÇ ÃֽŠ¹öÀü°ú ºñ±³

$ svn log --revision BASE:HEAD
# ¸¶Áö¸·À¸·Î ¾÷µ¥ÀÌÆ®ÇÑ ÀÌÈÄÀÇ Ä¿¹ÔµÈ ·Î±×¸¦ ¸ðµÎ Ç¥½Ã

$ svn update --revision PREV foo.c
# foo.c ÀÇ ¸¶Áö¸· º¯°æÀ» µÇµ¹¸°´Ù
# (foo.c ÀÇ ÀÛ¾÷ ¸®ºñÀüÀÌ °¨¼ÒÇÔ)
      

ÀÌ·¯ÇÑ Å°¿öµå¸¦ ÀÌ¿ëÇϸé ÀÛ¾÷º»À̳ª ƯÁ¤ ¸®ºñÀüÀ» Çò°¥¸®´Â ¹øÈ£°¡ ¾Æ´Ñ Å°¿öµå·Î ÁöÁ¤ÇÏ¿© ÀÚÁÖ¾²´Â ¿©·¯ À¯¿ëÇÑ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.3.3. ¸®ºñÀü ÀÏÀÚ

¸®ºñÀü ¹øÈ£³ª ¸®ºñÀü Å°¿öµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °æ¿ì¶ó¸é ¾ðÁ¦³ª ³¯Â¥¿Í ½Ã°¢µµ Áß°ýÈ£ "{}" ¾È¿¡ ³Ö¾î ¸®ºñÀüÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³¯Â¥¿Í ¸®ºñÀü ¹øÈ£¸¦ µ¿½Ã¿¡ »ç¿ëÇØ ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

SubversionÀº ¸Å¿ì ¸¹Àº ÀÏÀÚ Çü½ÄÀ» ¹Þ¾ÆµéÀÏ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÏÀÚ Çü½ÄÀÌ °ø¹éÀ» Æ÷ÇÔÇÑ °æ¿ì¿¡´Â ¹Ýµå½Ã ÀοëºÎÈ£·Î ¹­¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¿©±â¿¡¼­´Â SubversionÀÌ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â Çü½Ä Áß ¸î °¡Áö ¿¹¸¦ º¸¿©ÁÝ´Ï´Ù.

$ svn checkout --revision {2002-02-17}
$ svn checkout --revision {2/17/02}
$ svn checkout --revision {"17 Feb"}
$ svn checkout --revision {"17 Feb 2002"}
$ svn checkout --revision {"17 Feb 2002 15:30"}
$ svn checkout --revision {"17 Feb 2002 15:30:12 GMT"}
$ svn checkout --revision {"10 days ago"} 
$ svn checkout --revision {"last week"} 
$ svn checkout --revision {"yesterday"} 

      

¸®ºñÀü¿¡ ³¯Â¥¸¦ ÁöÁ¤ÇÑ °æ¿ì SubversionÀº ±× ³¯Â¥ ÀÌÀüÀÇ °¡Àå ÃֽŠ¸®ºñÀüÀ» ã¾Æ³»·Á°í ÇÕ´Ï´Ù.

$ svn log --revision {11/28/2002}
------------------------------------------------------------------------
r12 | ira | 2002-11-27 12:31:51 -0600 (Wed, 27 Nov 2002) | 6 lines

      

³¯Â¥ ¹üÀ§¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. SubversionÀº ¹üÀ§ ¾È¿¡ ÀÖ´Â ¸ðµç ¸®ºñÀüÀ» ´ë»óÀ¸·Î °Ë»öÇÕ´Ï´Ù. ÁöÁ¤µÈ µÎ ³¯Â¥´Â °Ë»ö¿¡ Æ÷ÇԵ˴ϴÙ.

$ svn log --revision {2002-11-20}:{2002-11-29}

      

¾Õ¼­ ÁöÀûÇÑ °Íó·³ ³¯Â¥¿Í ¸®ºñÀü ¹øÈ£¸¦ °°ÀÌ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

$ svn log -r {11/20/02}:4040
      

1.4. ÃÖÃÊÀÇ Ã¼Å©¾Æ¿ô

´ëºÎºÐÀÇ °æ¿ì ÀúÀå¼Ò·ÎºÎÅÍ ÇÁ·ÎÁ§Æ®¸¦ üũ¾Æ¿ô(checkout) ÇÏ´Â °ÍÀ¸·Î SubversionÀ» ½ÃÀÛÇÕ´Ï´Ù. ÀúÀå¼Ò¸¦ "üũ¾Æ¿ô"ÇÏ¸é »ç¿ëÀÚÀÇ ·ÎÄà ¸Ó½Å¿¡´Â ÀúÀå¼ÒÀÇ »çº»ÀÌ »ý¼ºµË´Ï´Ù. ÀÌ »çº»¿¡´Â Ä¿¸àµå ¶óÀο¡¼­ ÁöÁ¤ÇÑ Subversion ÀúÀå¼ÒÀÇ HEAD(ÃֽŠ¸®ºñÀü)°¡ ÀúÀåµË´Ï´Ù.

$ svn checkout http://svn.collab.net/repos/svn/trunk
A  trunk/subversion.dsw
A  trunk/svn_check.dsp
A  trunk/COMITTERS
A  trunk/configure.in
A  trunk/IDEAS

Checked out revision 2499.
    

À§ÀÇ ¿¹´Â trunk µð·ºÅ丮ÀÇ Ã¼Å©¾Æ¿ôÀ̾úÁö¸¸ üũ¾Æ¿ô URL¿¡ ¼­ºê µð·ºÅ丮¸¦ ÁöÁ¤ÇÏ¸é ´õ ±íÀº °èÃþ¿¡ ÀÖ´Â ÇÏÀ§ µð·ºÅ丮µµ °£´ÜÇÏ°Ô Ã¼Å©¾Æ¿ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.

$ svn checkout http://svn.collab.net/repos/svn/trunk/doc/book/tools
A  tools/readme-dblite.html
A  tools/fo-stylesheet.xsl
A  tools/svnbook.el
A  tools/dtd
A  tools/dtd/dblite.dtd

Checked out revision 3678.
    

SubversionÀº "Àá±Ý¡¤¼öÁ¤¡¤Àá±Ý ÇØÁ¦" ¸ðµ¨ÀÌ ¾Æ´Ï¶ó "º¹»ç¡¤¼öÁ¤¡¤ÇÕħ(Merge)" ¸ðµ¨À» »ç¿ëÇϹǷΠ(>) üũ¾Æ¿ôÇÏ¸é ¹Ù·Î °¡Á®¿Â ÆÄÀÏ°ú µð·ºÅ丮¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ·¸°Ô °¡Á®¿Â ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ¸ðÀÓÀ» ÀÛ¾÷ º¹»ç¶ó°í ÇÕ´Ï´Ù).

¹Ù²Ù¾î ¸»ÇÏ¸é ¿©·¯ºÐÀÇ"ÀÛ¾÷ º¹»ç"´Â ½Ã½ºÅÛ ¿¡ ÀÖ´Â ´Ù¸¥ ÆÄÀÏÀ̳ª µð·ºÅ丮¿Í ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù. [1] ÆíÁýÇϰųª º¯°æÇϰųª À̵¿Çϰųª ÀÛ¾÷ Ä«ÇÇ Àüü¸¦ Åë°·Î »èÁ¦Çعö¸± ¼öµµ ÀÖ½À´Ï´Ù.

Note: ÀÛ¾÷º»Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â "´Ù¸¥ ÆÄÀÏÀ̳ª µð·ºÅ丮µé°ú ¾Æ¹«·± Â÷ÀÌÁ¡Àº ¾ø½À´Ï´Ù"¸¸ ÀÛ¾÷ Ä«ÇÇ¿¡ ¼ÓÇÏ´Â ÆÄÀÏ À̳ª µð·ºÅ丮ÀÇ À§Ä¡³ª À̸§À» ´Ù½Ã Æí¼ºÇßÀ» °æ¿ì¿¡´Â Ç×»ó Subversion¿¡ ±×°ÍÀ» ¾Ë·ÁÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ÀÛ¾÷ º¹»ç¿¡ ¼ÓÇÏ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ º¹»çÇϰųª À̵¿ÇÏ°í ½ÍÀº °æ¿ì¿¡´Â ¿î¿µÃ¼Á¦¿¡¼­ Á¦°øÇÏ´Â º¹»ç³ª À̵¿ ¸í·É¾î ´ë½Å¿¡svn copy¿Ísvn move¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä. ÀÌ ÀåÀÇ µÚÂÊ¿¡¼­ Á» ´õ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÕ´Ï´Ù.

ÆÄÀÏÀ» °íÃưųª, ¶Ç´Â »õ·Î¿î ÆÄÀÏÀ» ¸¸µé°Å³ª, µð·ºÅ丮¸¦ ¿Å±â´Â µîÀÇ º¯°æ»çÇ×Àº ´ÙÀ½ Ä¿¹ÔÇÒ ¶§±îÁö Subversion ¼­¹ö¿¡ µû·Î ¾Ë¸± ÇÊ¿ä°¡ ÀüÇô ¾ø½À´Ï´Ù.

ÀúÀå¼Ò(repository)ÀÇ URL¸¸ Àμö·Î Á༭ ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ôÇصµ µÇÁö¸¸ ÀúÀå¼Ò(repository)ÀÇ URL µÚ¿¡ µð·ºÅ丮¸¦ µû·Î ÁöÁ¤ÇÏ¿© üũ¾Æ¿ôÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÁöÁ¤ÇÑ µð·ºÅ丮¾È¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¸¸µé¾îÁý´Ï´Ù. ¿¹¸¦ µé¾î:

$ svn checkout http://svn.collab.net/repos/svn/trunk subv
A  subv/subversion.dsw
A  subv/svn_check.dsp
A  subv/COMITTERS
A  subv/configure.in
A  subv/IDEAS

Checked out revision 2499.
    

ÀÌ·¸°Ô ÇÏ¸é ¿ì¸®°¡ ¾Õ¿¡¼­ Çß´ø °Íó·³ trunk ¶ó´Â À̸§ÀÇ µð·ºÅ丮 ´ë½Å¿¡ subv À̶ó´Â µð·ºÅ丮¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¸¸µé¾î Áý´Ï´Ù.


1.5. ±âº»ÀûÀÎ ÀÛ¾÷ »çÀÌŬ

Subversion¿¡´Â ¸¹Àº ±â´ÉÀÌ ÀÖÁö¸¸ ÀÚÁÖ »ç¿ëÇÏ´Â ±â´ÉÀº ¸î °¡Áö »ÓÀÔ´Ï´Ù. ÀÌ Àå¿¡¼­´Â Á¦ÀÏ ÀÚÁÖ ¾²ÀÌ´Â °ÍµéÀ» ¼³¸íÇÕ´Ï´Ù.

ÀüÇüÀûÀÎ ÀÛ¾÷ »çÀÌŬÀº ´ÙÀ½°ú °°½À´Ï´Ù.

  • ÀÛ¾÷ º¹»çÀÇ ¾÷µ¥ÀÌÆ®

    • svn update

  • º¯°æ

    • svn add

    • svn delete

    • svn move

    • svn copy

  • ÀÚ½ÅÀÇ º¯°æÁ¡ È®ÀÎ

    • svn status

    • svn diff

    • svn revert

  • ´Ù¸¥ »ç¶÷ÀÇ º¯°æ°ú Merge

    • svn merge

    • svn resolved

  • ÀÚ½ÅÀÇ º¯°æÁ¡À» Ä¿¹Ô

    • svn commit


1.5.1. ÀÛ¾÷ º¹»çÀÇ °»½Å

ÆÀÀ» ¸¸µé¾î ÀÛ¾÷ÇÏ°í ÀÖ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇÏ°í ½ÍÀ»¶§°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï ´Ù¸¥ ¸â¹öÀÇ º¯°æÁ¡À» ¸ðµÎ ¹Þ´Â °ÍÀÌÁö¿ä. ÀÌ °æ¿ì svn update·Î ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¸¦ ÀúÀå¼Ò(repository)ÀÇ ÃֽŠ¹öÀü¿¡ ¸ÂÃä´Ï´Ù.

$ svn update
U  . /foo.c
U  . /bar.c
Updated to revision 2.
      

ÀÌ °æ¿ì ´ç½ÅÀÌ ¸¶Áö¸·À¸·Î ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇÏ°í ³ª¼­ ´Ù¸¥ »ç¶÷ÀÌ foo.c ¿Í bar.c ¿¡ °¡ÇÑ º¯°æÀ» Ä¿¹ÔÇß°í SubversionÀº ÀÌ º¯°æÀ» ´ç½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡ Æ÷ÇÔ½ÃÅ°±â À§Çؼ­ µÎ ÆÄÀÏÀ» °»½ÅÇß½À´Ï´Ù.

svn update ÀÇ Ãâ·ÂÀ» Á» ´õ ÀÚ¼¼ÇÏ°Ô º¾½Ã´Ù. ¼­¹ö°¡ º¯°æÁ¡À» ÀÛ¾÷ º¹»ç¿¡ º¸³¾ ¶§ ¹®ÀÚ Äڵ尡 °¢°¢ÀÇ ÆÄÀÏ ÀÇ ¿·¿¡ Ç¥½ÃµÇ¾î ´ç½ÅÀÇ ÀÛ¾÷ Ä«ÇǸ¦ ÃÖ½ÅÀ¸·Î Çϱâ À§Çؼ­ ¾î¶°ÇÑ µ¿ÀÛÀ» Çß´ÂÁö¸¦ ¾Ë¸³´Ï´Ù:

U foo

ÆÄÀÏ foo ´Â °»½ÅµÇ¾ú½À´Ï´Ù(¼­¹ö·ÎºÎÅÍ º¯°æÀ» ¹Þ¾Æµé¿´½À´Ï´Ù).

A foo

ÆÄÀÏÀ̳ª µð·ºÅ丮 foo ´Â ´ç½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡ Ãß°¡µÇ¾ú½À´Ï´Ù.

D foo

ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÎ foo ´Â ´ç½ÅÀÇ ÀÛ¾÷ º¹»ç·ÎºÎÅÍ »èÁ¦µÇ¾ú½À´Ï´Ù.

R foo

ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÎ foo ´Â ġȯµÇ¾ú½À´Ï´Ù. Áï foo ´Â »èÁ¦µÇ¾î °°Àº À̸§ÀÇ »õ·Î¿î ÆÄÀÏ ¶Ç´Â µð·ºÅ丮°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. ¾çÂÊ ¸ðµÎ´Â °°Àº À̸§ÀÌÁö¸¸ ÀúÀå¼Ò(repository)´Â ±×°ÍµéÀ» ´Ù¸¥ È÷½ºÅ丮¸¦ °¡Áø ´Ù¸¥ °³Ã¼(object)·Î °£ÁÖÇÕ´Ï´Ù.

G foo

ÆÄÀÏ foo ´Â »õ·Î¿î º¯°æÁ¡À» ÀúÀå¼Ò(repository)·ÎºÎÅÍ ¹Þ¾Ò½À´Ï´Ù¸¸ ±× ÆÄÀÏÀº ·ÎÄà īÇÇ¿¡¼­µµ ¼öÁ¤ÀÌ ÀÖ¾ú½À´Ï´Ù. ±×·¯³ª ¾çÂÊÀÇ ¼öÁ¤Àº °ãÄ¡Áö ¾Ê±â ¶§¹®¿¡ Subversion ÀÌ ÀúÀå¼Ò¿¡¼­ ¿Â º¯°æÁ¡À» ·ÎÄà īÇÇ¿¡ ¹®Á¦¾øÀÌ ÇÕÃƽÀ´Ï´Ù(merge).

C foo

ÆÄÀÏ foo´Â ¼­¹ö·ÎºÎÅÍ Ãæµ¹ÀÌ ÀÖ´Â º¯°æÀ» ¹Þ¾Ò½À´Ï´Ù. ¼­¹ö·ÎºÎÅÍÀÇ º¯°æÀº ´ç½Å ÀÚ½ÅÀÇ º¯°æ°ú Á÷Á¢ °ãÄ¡°í ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÀÌ Ãæµ¹Àº »ç¶÷(Áï ´ç½Å)ÀÌ ÇؼÒÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ ÀåÀÇ ´ÙÀ½¿¡ ÀÌ »óȲ¿¡ ´ëÇØ ³íÀÇÇÕ´Ï´Ù.


1.5.2. ÀÛ¾÷ º¹»ç¸¦ º¯°æÇϱâ

ÀÌÁ¦ ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç·Î º¯°æÀ» ´õÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿Í °°Àº ºñ±³Àû Ư¼öÇÑ º¯°æÀ» ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. »õ·Î¿î ±â´É À» Ãß°¡Çϰųª ¹ö±×¸¦ °íÄ¡°Å³ª µîÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡ »ç¿ëÇÏ´Â Subversion Ä¿¸àµå´Â svn add, svn delete, svn copy, svn moveµîÀÔ´Ï´Ù. ±×·¯³ª ÀÌ¹Ì SubversionÀÇ °ü¸®ÇÏ¿¡ ÀÖ´Â ÆÄÀÏÀ» ´ÜÁö ÆíÁýÇÒ »ÓÀ̶ó¸é Ä¿¹ÔÇϱâ±îÁö´Â ±×·¯ÇÑ Ä¿¸àµå¸¦ »ç¿ëÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¿©·¯ºÐÀÌ ÀÛ¾÷ º¹»ç¿¡ °¡ÇÒ ¼ö ÀÖ´Â º¯°æÀº µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù.

ÆÄÀÏÀÇ º¯°æ

ÀÌ°ÍÀº Á¦ÀÏ ´Ü¼øÇÑ Á¾·ùÀÇ º¯°æÀÔ´Ï´Ù. ÆÄÀÏÀ» º¯°æÇÏ´Â °Í¿¡ ´ëÇÏ¿© Subversion¿¡ º¸°íÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¾î´À ÆÄÀÏÀÌ º¯°æµÇ¾ú´ÂÁö´Â SubversionÀÌ ÀÚµ¿ÀûÀ¸·Î °ËÃâÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

Æ®¸®ÀÇ º¯°æ

Subversion¿¡ ´ëÇØ, »èÁ¦, Ãß°¡, Ä«ÇÇ, À̵¿ÀÌ ¿¹¾àµÇ¾î ÀÖ´Ù°í ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦"Ç¥½Ã"Çϵµ·Ï ÀÇ·ÚÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ º¯°æÀº ÀÛ¾÷ Ä«Çǻ󿡼­´Â Áï½Ã ÀϾ´Ï´Ù¸¸ ´ÙÀ½¿¡ ´ç½ÅÀÌ Ä¿¹ÔÇÒ ¶§±îÁö ÀúÀå¼Ò(repository) »ó¿¡¼­´Â Ãß°¡ ȤÀº »èÁ¦´Â ÀϾÁö ¾Ê½À´Ï´Ù.

ÆÄÀÏÀ» º¯°æÇÏ·Á¸é ÅؽºÆ® ¹®ÀÚ ÆíÁý±â, ¿öµå ÇÁ·Î¼¼¼­, ±×·¡ÇÈ ÇÁ·Î±×·¥ µî ¾î¶² µµ±¸¶óµµ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Subversion´Â ¹ÙÀ̳ʸ® ÆÄÀϵµ ÅؽºÆ® ÆÄÀÏÀ» Ãë±ÞÇÏ´Â °Í°ú °°ÀÌ ½±°Ô ¶Ç ÃæºÐÈ÷ È¿À²ÀûÀ¸·Î ´Ù·ê ¼ö ÀÖ½À´Ï´Ù.

¿©±â¿¡¼­´Â Æ®¸®ÀÇ º¯°æÇϱâ À§ÇØ Á¦ÀÏ ÀÚÁÖ ÀÌ¿ëµÇ´Â ³× °³ÀÇ Subversion ¼­ºêÄ¿¸àµå¸¦ °³°üÇØ µÓ´Ï´Ù (svn import ¿Í svn mkdir ´Â ³ªÁß¿¡ ´Ù·ê °ÍÀÔ´Ï´Ù).

svn add foo

foo ¸¦ ÀúÀå¼Ò(repository)¿¡ Ãß°¡Çϵµ·Ï ¿¹¾àÇØ µÓ´Ï´Ù. ´ÙÀ½ ¹ø Ä¿¹ÔÇÒ ¶§ foo ´Â ºÎ¸ð µð·ºÅ丮ÀÇ ÀÚ½ÄÀÌ µË´Ï´Ù. foo°¡ µð·ºÅ丮ÀÎ °æ¿ì foo ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏ ¿ª½Ã Ãß°¡ ¿¹°íÀÇ ´ë»óÀÌ µË´Ï´Ù. foo ¸¸À» Ãß°¡ÇÏ°í ½ÍÀº °æ¿ì´Â--non-recursive (-N) ¿É¼ÇÀ» ÁöÁ¤ÇØ ÁÖ¼¼¿ä.

svn delete foo

foo ¸¦ ÀúÀå¼Ò(repository)·ÎºÎÅÍ »èÁ¦µµ·Ï ¿¹¾à ÇÕ´Ï´Ù. foo °¡ ÆÄÀÏÀ̸é ÀÛ¾÷ º¹»ç·ÎºÎÅÍ Áï½Ã »èÁ¦µË´Ï´Ù. foo°¡ µð·ºÅ丮ÀÌ¸é ¹Ù·Î »èÁ¦µÇÁö ¾Ê°í »èÁ¦ ¿¹¾à »óÅ·Π¼³Á¤µË´Ï´Ù. º¯°æÀ» Ä¿¹ÔÇϸé foo ´Â ÀÛ¾÷ º¹»ç¿Í ÀúÀå¼Ò(repository)·ÎºÎÅÍ »èÁ¦µË´Ï´Ù. [2]

svn copy foo bar

foo¸¦ º¹»çÇؼ­ »õ·Î¿î ¾ÆÀÌÅÛ bar¸¦ ¸¸µì´Ï´Ù. bar´Â ÀÚµ¿ÀûÀ¸·Î Ãß°¡ ¿¹°íµË´Ï´Ù. bar°¡ ´ÙÀ½ÀÇ Ä¿¹ÔÀ¸·Î ÀúÀå¼Ò(repository) ¿¡ Ãß°¡µÉ ¶§ º¹»çÀÇ È÷½ºÅ丮°¡ ±â·ÏµË´Ï´Ù(foo ÀÇ º¹»çº»À̶ó´Â È÷½ºÅ丮).

svn move foo bar

ÀÌ ¸í·ÉÀº svn copy foo bar; svn delete foo ¸¦ ½ÇÇàÇÏ´Â °Í°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù. Áï bar ´ÂfooÀÇ º¹»çº»À¸·Î¼­ Ãß°¡ ¿¹¾àµÇ°í foo ´Â »èÁ¦ ¿¹¾àµË´Ï´Ù.


1.5.3. ÀÚ½ÅÀÇ º¯°æÁ¡À» Á¶»ç

º¯°æÀÌ ¿Ï·áÇϸé ÀúÀå¼Ò(repository)¿¡ Ä¿¹ÔÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ º¸Åë Ä¿¹ÔÇϱâ Àü¿¡ ÀÚ½ÅÀÌ ¹«¾ùÀ» º¯°æÇß´ÂÁö Á¤È®ÇÏ°Ô ºÁ µÎ´Â °Ô ÁÁ½À´Ï´Ù. Ä¿¹Ô Àü¿¡ º¯°æÁ¡À» È®ÀÎÇÔÀ¸·Î½á º¸´Ù Á¤È®ÇÑ ·Î±× ¸Þ¼¼Áö¸¦ ºÙÀÌ´Â °ÍÀÌ °¡´ÉÇÒ »Ó¸¸ ¾Æ´Ï¶ó ºÒÃæºÐÇÏ°Ô ¼öÁ¤µÈ °ÍÀ» ¹ß°ßÇÒ ¼öµµ ÀÖ°í Ä¿¹ÔÇϱâ Àü¿¡ ±× º¯°æÀ» ÆıâÇϰųª ÇÒ ±âȸ°¡ ÁÖ¾îÁý´Ï´Ù. °Ô´Ù°¡ °ø°³Çϱâ Àü¿¡ º¯°æÁ¡À» Àç°ËÅäÇϰųª ÀÚ¼¼ÇÏ°Ô Á¶»çÇÒ ÁÁÀº ±âȸÀ̱⵵ ÇÕ´Ï´Ù. svn status, svn diff, svn revert ¸¦ »ç¿ëÇØ ¿©·¯ºÐÀÌ ¾î¶² º¯°æÀ» Çß´ÂÁö¸¦ Á¤È®ÇÏ°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº º¸Åë ¾ÕÂÊ µÎ Ä¿¸àµå·Î ÀÛ¾÷ Ä«ÇÇÁßÀÇ ¾î´À ÆÄÀÏ À» º¯°æÇß´ÂÁö¸¦ Á¶»çÇÏ°í ¼¼¹ø° Ä¿¸àµå·Î ±× ÁßÀÇ ¸î¸î(ȤÀº ÀüºÎ)ÀÇ º¯°æÀ» Ãë¼ÒÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.

SubversionÀº ÀÌ ÀÛ¾÷À» Çϱâ À§Çؼ­ ÃÖÀûÈ­µÇ¾î ¿Ô°í ÀúÀå¼Ò¿Í Åë½ÅÇÏÁö ¾Ê°íµµ ¸¹Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ÀÛ¾÷ º¹»ç¿¡´Â . svn ¶ó°í ÇÏ´Â ¼ûÀº µð·ºÅ丮°¡ ÀÖ¾î ¿©±â¿¡ ÀÛ¾÷ º¹»çÀÇ "¿øº» ¸®ºñÀü(prestine)"ÀÇ Ä«ÇÇ°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» Àß »ç¿ëÇØ SubversionÀº ´ç½ÅÀÇ ÀÛ¾÷ ÆÄÀÏÀÇ ¾î¶² °ÍÀÌ º¯°æµÇ¾ú´ÂÁö¸¦ Àçºü¸£°Ô ¾Ë ¼ö°¡ ÀÖ°í ÀúÀå¼Ò(repository)¿Í Åë½ÅÇÏÁö ¾Ê°íµµ º¯°æÇÑ °ÍÀ» µÇµ¹¸± ¼ö ÀÖ½À´Ï´Ù.


1.5.3.1. svn status

¾Æ¸¶ ¾î´À Subversion Ä¿¸àµåº¸´Ùsvn status Ä¿¸àµå¸¦ ÀÚÁÖ ÀÌ¿ëÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.

ÀÚ½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ ÃÖ»óÀ§¿¡¼­ Àμö¾øÀÌ svn status ¸¦ ½ÇÇàÇÏ¸é ¸ðµç ÆÄÀÏ°ú Æ®¸®¿¡ ´ëÇÑ ¸ðµç ¼öÁ¤ »çÇ×À» °ËÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹´Â svn status °¡ µ¹·ÁÁÙ ¼ö ÀÖ´Â ¸ðµç ´Ù¸¥ »óÅ Äڵ带 º¼ ¼ö°¡ ÀÖµµ·Ï ¸¸µç °ÍÀÔ´Ï´Ù. #ÀÇ µÚ¿¡ ½á ÀÖ´Â ÅؽºÆ®´Â svn status°¡ Ãâ·ÂÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù.

$ svn status
  L    . /abc.c               # abc.c¿¡ ´ëÇÑ lockÀ» .svn µð·ºÅ丮¿¡ °®°í ÀÖ½À´Ï´Ù.
M      . /bar.c               # bar.c´Â ¼öÁ¤µÇ¾ú½À´Ï´Ù.
 M     . /baz.c               # baz.c has property but no content modifications
?       . /foo.o               # svn(Subversion)Àº foo.o¸¦ °ü¸®ÇÏÁö ¾Ê½À´Ï´Ù.
!       . /some_dir            # svnÀÌ °ü¸®Çϱâ´Â ÇÏÁö¸¸ ¾ø¾îÁ³°Å³ª ºÒ¿ÏÀüÇÕ´Ï´Ù.
~      . /qux                 # µð·ºÅ丮¶ó°í ±â·ÏµÇ¾îÀÖÁö¸¸ ÆÄÀÏÀ̰ųª ¹Ý´ëÀÇ °æ¿ìÀÔ´Ï´Ù.
A  +   . /moved_dir           # ¾îµð¿¡¼­ ¿Â ÆÄÀÏÀÎÁö¿¡ ´ëÇÑ ±â·Ï°ú ÇÔ²² Ãß°¡µÇ¾ú½À´Ï´Ù.
M  +   . /moved_dir/README    # ±â·Ï°ú ÇÔ²² Ãß°¡µÇ¾ú°í ·ÎÄÿ¡¼­ ¼öÁ¤µÇ¾ú½À´Ï´Ù.
D      . /stuff/fish.c        # »èÁ¦µÇ±â·Î ¿¹¾àµÇ¾ú½À´Ï´Ù.
A      . /stuff/loot/bloo.h   # Ãß°¡µÇ±â·Î ¿¹¾àµÇ¾ú½À´Ï´Ù.
C      . /stuff/loot/lump.c   # Ãæµ¹ÀÌ ÀÖ½À´Ï´Ù.
    S  . /stuff/squawk        # ÀÌ ÆÄÀÏÀ̳ª µð·ºÅ丮´Â ºê·£Ä¡(branch)·Î ÀüȯµÇ¾ú½À´Ï´Ù.
        

ÀÌ Ãâ·Â Çü½Ä¿¡¼­ svn status´Â ´Ù¼¸ °³ÀÇ ¹®ÀÚ¸¦ Ç¥½ÃÇÏ°í ±× ÈÄ¿¡ ¸î°³ÀÇ °ø¹éÀÌ Ç¥½ÃµÇ¸ç ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 À̸§ÀÌ ±× ÈÄ¿¡ Ç¥½ÃµÇ°í ÀÖ½À´Ï´Ù. ù¹ø° ¹®ÀÚ´Â ÆÄÀÏ ¶Ç´Â µð·ºÅ丮¿Í ±× ³»¿ë¿¡ ´ëÇÑ »óŸ¦ ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ¿©±â¼­ Ç¥½ÃµÇ´Â ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

A file_or_dir

ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dir Àº ÀúÀå¼Ò(repository)¿¡ Ãß°¡ ¿¹¾àµÇ¾ú½À´Ï´Ù.

M file

fileÀÇ ³»¿ëÀº º¯°æµÇ¾ú½À´Ï´Ù.

D file_or_dir

ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ÀúÀå¼Ò(repository)·Î¿¡¼­ »èÁ¦ ¿¹¾àµÇ¾ú½À´Ï´Ù.

X dir

µð·ºÅ丮 dirÀº ¹öÀüÈ­ µÇÁö ¾Ê¾ÒÁö¸¸ SubversionÀÇ ¿ÜºÎ Á¤ÀÇ¿¡ °ü·ÃµÇ¾î ÀÖ½À´Ï´Ù. ¿ÜºÎ Á¤ÀÇ¿¡ ´ëÇØ ÀÚ¼¼ÇÑ ³»¿ëÀº>¸¦ º¸¼¼¿ä.

? file_or_dir

ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ¹öÀü °ü¸®ÇÏ¿¡´Â ¾ø½À´Ï´Ù. --quiet (¶Ç´Â -q) ¿É¼ÇÀ» svn status ¿¡ °Ç³×Áְųª ºÎ¸ð µð·ºÅ丮¿¡ svn:ignore ¼Ó¼ºÀ» ¼³Á¤ÇÏ¸é ¹°À½Ç¥¸¦ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù. ¹«½ÃµÇ´Â ÆÄÀÏ¿¡ ´ëÇØ ÀÚ¼¼ÇÑ Á¤º¸´Â >¸¦ º¸¼¼¿ä.

! file_or_dir

ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ¹öÀü °ü¸®ÇÏ¿¡ ÀÖÁö¸¸ ¾ø¾îÁ³°Å³ª ºÒ¿ÏÀüÇÑ »óÅ¿¡ ÀÖ½À´Ï´Ù. Subversion ÀÌ¿ÜÀÇ Ä¿¸Çµå¸¦ »ç¿ëÇؼ­ »èÁ¦ÇßÀ» °æ¿ì ¿¡ ±× ¾ÆÀÌÅÛÀº ¾ø¾îÁú ¼ö ÀÖ½À´Ï´Ù. µð·ºÅ丮ÀÇ °æ¿ì¿¡ üũ¾Æ¿ôÀ̳ª °»½ÅÀÌ µµÁß¿¡ ÁߴܵǾú´Ù¸é ºÒ¿ÏÀüÇÑ »óÅ°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. svn update¸¦ »ç¿ëÇÏ¸é °ð¹Ù·Î ÀúÀå¼Ò(repository)·ÎºÎÅÍ ÆÄÀÏ ¶Ç´Â µð·ºÅ丮¸¦ Çѹø ´õ ²¨³¾ ¼ö°¡ ÀÖ½À´Ï´Ù. svn revert file¸¦ »ç¿ëÇÏ¸é ¾ø¾îÁø ÆÄÀÏÀ» º¹¿øÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

~ file_or_dir

ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ÀÛ¾÷ º¹»ç¿Í ÀúÀå¼Ò¿¡ ¼­·Î ´Ù¸¥ ŸÀÔÀÇ °³Ã¼(object)·Î Á¸ÀçÇÏ°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÀúÀå¼Ò(repository)¿¡ ÀÖ´Â °ÍÀº ÆÄÀÏÀÌÁö¸¸ svn delete ³ª svn add¸¦ »ç¿ëÇÏÁö ¾Ê°í ÀÛ¾÷ º¹»ç¿¡¼­ ´ëÀÀÇÏ´Â ÆÄÀÏÀ» »èÁ¦ÇÑ ÈÄ °°Àº À̸§ÀÇ µð·ºÅ丮¸¦ ¸¸µç °æ¿ìÀÔ´Ï´Ù.

C file

file_or_dir´Â Ãæµ¹ »óÅ¿¡ ÀÖ½À´Ï´Ù. Áï °»½Å ó¸®Áß¿¡ ¼­¹ö·ÎºÎÅÍ ¹ÞÀº º¯°æÀº ÀÛ¾÷ º¹»ç¿¡ ´ç½ÅÀÌ ÇÑ º¯°æ ºÎºÐ°ú °ãÄ¡°í ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÀúÀå¼Ò(repository)·Î º¯°æÀ» Ä¿¹ÔÇϱâ Àü¿¡ Ãæµ¹ ¹®Á¦¸¦ ÇØ°áÇØ¾ß ÇÕ´Ï´Ù.

µÎ¹ø° ¹®ÀÚ´Â ÆÄÀÏ ¶Ç´Â µð·ºÅ丮ÀÇ ¼Ó¼ºÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù (ÀÚ¼¼ÇÏ°Ô´Â ÂüÁ¶Çϼ¼¿ä). ¸¸¾à MÀÌ Ç¥½ÃµÇ¾úÀ¸¸é ¼Ó¼ºÀÌ ¼öÁ¤µÈ °ÍÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °ø¹éÀÌ Ç¥½ÃµË´Ï´Ù.

¼¼¹ø°ÀÇ ¹®ÀÚ´Â ºóÄ­°ú L µÑ Áß Çϳª°¡ Ç¥½ÃµÇ¸ç LÌ Ç¥½ÃµÇ´Â °æ¿ì´Â SubversionÀÌ ±× ÆÄÀÏ(ȤÀº µð·ºÅ丮)¸¦ .svn Áß¿¡ Àá±×°í ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. svn commit°¡ ½ÇÇàµÇ°í ÀÖ´Â µµÁß¿¡ svn status¸¦ ½ÇÇàÇϸé LÀÌ Ç¥½ÃµË´Ï´Ù. ¾Æ¸¶ ´ç½ÅÀº ·Î±× ¸Þ¼¼Áö¸¦ º¯°æÇÏ°í ÀÖÀ» °ÍÀÔ´Ï´Ù. SubversionÀÌ ½ÇÇàÁßÀÌÁö ¾Ê´Ù¸é ¾Æ¸¶ SubversionÀÌ ½ÇÇàÁß¿¡ ÁߴܵǾ Àá±ÝÀ» ÇØÁ¦ÇÏÁö ¸øÇßÀ» °ÍÀÔ´Ï´Ù. svn cleanupÀ» ½ÇÇàÇÏ¿© Àá±ÝÀ» ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù(ÀÌ ÀåÀÇ µÞºÎºÐ¿¡¼­ Á» ´õ ´Ù·ì´Ï´Ù).

³×¹ø°ÀÇ ¹®ÀÚ´Â °ø¹éÀ̳ª +°¡ Ç¥½ÃµÇ¸ç Ãß°¡ ¶Ç´Â ¼öÁ¤µÇ¾î ±×°ÍÀÌ È÷½ºÅ丮¿¡ Ãß°¡ ¿¹¾àµÇ¾î ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÀÌ°ÍÀº ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ´ëÇØ svn move³ª svn copy¸¦ ÇßÀ» ¶§¿¡ Àß ÀϾ´Ï´Ù. A+ÀÇ Ç¥½Ã°¡ ÀÖ´Â °æ¿ì ±× ¾ÆÀÌÅÛÀº È÷½ºÅ丮 Æ÷ÇÔÀÇ Ãß°¡ ¿¹¾àµÇ¾î ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ±×°ÍÀº ÆÄÀÏÀ̰ųª º¹»çµÈ µð·ºÅ丮ÀÇ ·çÆ®ÀÔ´Ï´Ù. +´Â ±× ¾ÆÀÌÅÛÀÌ È÷½ºÅ丮¿¡ Ãß°¡ ¿¹¾àµÈ ¼­ºê Æ®¸®ÀÇ ÀϺÎÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù. Áï ±× ¾ÆÀÌÅÛÀÇ ºÎ¸ð°¡ Ä«ÇǵǾî Ä¿¹ÔÀ» ±â´Ù¸®°í ÀÖ½À´Ï´Ù. M+ ´Â ¾ÆÀÌÅÛÀÌ È÷½ºÅ丮 ¿¡ Ãß°¡ ¿¹°íµÈ ¼­ºê Æ®¸®ÀÇ ÀϺÎÀ̸ç ÇÑÆí ·ÎÄÿ¡¼­ º¯°æµÈ ÀûÀÌ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. Ä¿¹ÔÇÒ ¶§ °¡Àå óÀ½À¸·Î ºÎ¸ð°¡ È÷½ºÅ丮¿Í ÇÔ²² Ãß°¡µË´Ï´Ù(º¹»çµË´Ï´Ù). ±× Àǹ̴ ÀÌ ÆÄÀÏÀº Ä«ÇÇ¿¡ ÀÚµ¿ÀûÀ¸·Î Á¸ÀçÇÑ´Ù°í ÇÏ´Â °Í ÀÔ´Ï´Ù. ±× ´ÙÀ½¿¡ ·ÎÄÃÀÇ º¯°æÁ¡Àº Ä«ÇÇ¿¡ ¾÷·ÎµåµË´Ï´Ù.

´Ù¼¸¹ø° ¹®ÀÚ´Â °ø¹éÀ̳ª S°¡ Ç¥½ÃµË´Ï´Ù. ÆÄÀÏÀ̳ª µð·ºÅ丮´Â ÀÛ¾÷ º¹»çÀÇ ³ª¸ÓÁö °æ·Î(path)·ÎºÎÅÍ (svn switch ¸í·É¿¡ ÀÇÇØ) ºê·£Ä¡·Î ¹Ù²ï °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

svn status¿¡ °æ·Î(path)¸¦ ÁöÁ¤ÇÏ¸é ±× °æ·Î¿¡ ´ëÇÑ Á¤º¸¸¸À» Ç¥½ÃÇÕ´Ï´Ù.

$ svn status stuff/fish.c
D      stuff/fish.c
        

svn statusµµ --verbose (-v) ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì ÀÛ¾÷ º¹»çÀÇ (º¯°æµÇÁö ¾ÊÀº ÆÄÀϵµ Æ÷ÇÔÇÏ¿©) ¸ðµç ¾ÆÀÌÅÛÀÇ »óŸ¦ Ç¥½ÃÇÕ´Ï´Ù.

$ svn status --verbose
M               44        23    sally     . /README
                44        30    sally     . /INSTALL
M               44        20    harry     . /bar.c
                44        18    ira       . /stuff
                44        35    harry     . /stuff/trout.c
D               44        19    ira       . /stuff/fish.c
                44        21    sally     . /stuff/things
A                0         ?      ?         . /stuff/things/bloo.h
                44        36    harry     . /stuff/things/gloo.c
        

ÀÌ°ÍÀº svn statusÀÇ "±ä Ç¥½Ã Çü½Ä" Ãâ·ÂÀÔ´Ï´Ù. ù¹ø° ¿­(column)Àº °°½À´Ï´Ù¸¸ µÎ¹ø° ¿­Àº ¾ÆÀÌÅÛÀÇ ÀÛ¾÷ ¸®ºñÀü ÀÔ´Ï´Ù. ¼¼¹ø°¿Í ³×¹ø°´Â °¢°¢ ¾ÆÀÌÅÛÀÌ ¸¶Áö¸·¿¡ º¯°æµÈ ¸®ºñÀü°ú ´©°¡ º¯°æÇß´ÂÁö Ç¥½ÃÇÕ´Ï´Ù.

Áö±Ý±îÁö ³ª¿Â svn statusÀÇ ½ÇÇàÀº ¸ðµÎ ÀúÀå¼Ò(repository)¿Í Åë½ÅÀ» ÇÏÁö ¾Ê½À´Ï´Ù. ±×°ÍÀº ´ÜÁö ÀÛ¾÷ º¹»ç¾È¿¡¼­ .svn µð·ºÅ丮ÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ ºñ±³ÇÔÀ¸·Î½á ·ÎÄà ¸Ó½Å»ó¿¡¼­¸¸ µ¿ÀÛÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î --show-updates(-u) ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀúÀå¼Ò(repository)¿Í Åë½ÅÇؼ­ Ãֽź¸´Ù ³°Àº(out of date) »óÅ¿¡ °ü°èÇÑ Á¤º¸¸¦ Ãß°¡ Ç¥½ÃÇÕ´Ï´Ù.

$ svn status --show-updates --verbose
M      *        44        23    sally     . /README
M               44        20    harry     . /bar.c
       *        44        35    harry     . /stuff/trout.c
D               44        19    ira       . /stuff/fish.c
A                0         ?      ?         . /stuff/things/bloo.h
        

µÎ º°Ç¥¿¡ ÁÖÀÇÇϼ¼¿ä. ÀÌ »óÅ·Πsvn update¸¦ ½ÇÇàÇϸé README¿Í trout.c ÀÇ º¯°æÁ¡À» ¹Þ°Ô µË´Ï´Ù. ÀÌ°ÍÀº ¸Å¿ì µµ¿òÀÌ µÇ´Â Á¤º¸ÀÔ´Ï´Ù. ´ç½ÅÀº Ä¿¹ÔÇϱâ Àü¿¡ README¿¡ °üÇÑ ¼­¹ö»óÀÇ º¯°æÁ¡À» ¹Þ¾Æ¿Í¼­ °»½ÅÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÃÖ½ÅÀÌ ¾Æ´Ï¶ó´Â ÀÌÀ¯·Î Ä¿¹ÔÀº ½ÇÆÐÇÏ°ÚÁö¿ä(ÀÚ¼¼ÇÏ°Ô´Â ´ÙÀ½¿¡ ¸»ÇÕ´Ï´Ù).


1.5.3.2. svn diff

ÀÚ½ÅÀÇ º¯°æÁ¡À» Á¶»çÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº svn diff ¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. svn diff¸¦ Àμö ¾øÀÌ ½ÇÇàÇϸé ÀÚ½ÅÀÌ ¾î¶² º¯°æÀ» Çß´ÂÁö Á¤È®ÇÏ°Ô ¾Ë ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ¶§ÀÇ Ãâ·Â Çü½ÄÀº unified diff Çü½ÄÀÔ´Ï´Ù: [3]

$ svn diff
Index: . /bar.c
===================================================================
--- . /bar.c
+++ . /bar.c	Mon Jul 15 17:58:18 2002
@@ -1, 7 +1, 12 @@
+#include sys/types.h
+#include sys/stat.h
+#include unistd.h
+
+#include stdio.h

int main(void) {
-  printf("Sixty-four slices of American Cheese...\n");
+  printf("Sixty-five slices of American Cheese...\n");
return 0;
}

Index: . /README
===================================================================
--- . /README
+++ . /README	Mon Jul 15 17:58:18 2002
@@ -193, 3 +193, 4 @@ 
+Note to self:  pick up laundry.

Index: . /stuff/fish.c
===================================================================
--- . /stuff/fish.c
+++ . /stuff/fish.c  Mon Jul 15 17:58:18 2002
-Welcome to the file known as 'fish'.
-Information on fish will be here soon.

Index: . /stuff/things/bloo.h
===================================================================
--- . /stuff/things/bloo.h
+++ . /stuff/things/bloo.h  Mon Jul 15 17:58:18 2002
+Here is a new file to describe
+things about bloo.
        

svn diff ¸í·ÉÀº .svn ¿¡ ÀÖ´Â "¼öÁ¤¿ø ¸®ºñÀü(pristine)"°ú ÀÛ¾÷ º¹»ç ¾ÈÀÇ ÆÄÀÏÀ» ºñ±³ÇÑ °á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù. Ãß°¡ ¿¹¾àµÈ ÆÄÀÏÀº ¸ðµÎ Ãß°¡µÈ ÅؽºÆ®·Î¼­ Ç¥½ÃµÇ°í »èÁ¦ ¿¹°íµÇ°í ÀÖ´Â ÆÄÀÏÀº ¸ðµÎ »èÁ¦µÈ ÅؽºÆ®·Î Ç¥½ÃµË´Ï´Ù.

Ãâ·ÂÀº unified diff Çü½ÄÀ¸·Î Ç¥½ÃµË´Ï´Ù. Áï »èÁ¦µÈ ÁÙÀº ¾Õ¿¡ -°¡ Ç¥½ÃµÇ°í Ãß°¡µÈ ÁÙÀº ¾Õ¿¡ +°¡ Ç¥½ÃµË´Ï´Ù. svn diff´Â patch ÇÁ·Î±×·¥¿¡ À¯¿ëÇÏ´Ù·Ï ÆÄÀÏ À̸§°ú ¿ÀÇÁ¼Â(offset) Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ diffÀÇ Ãâ·ÂÀ» ÆÄÀÏ¿¡ ¾²´Â °ÍÀ¸·Î "ÆÐÄ¡"¸¦ »ý¼ºÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù:

$ svn diff > patchfile
        

¿¹¸¦ µé¾î ÆÐÄ¡ ÆÄÀÏÀ» ´Ù¸¥ °³¹ßÀÚ¿¡°Ô º¸³» Ä¿¹ÔÀü¿¡ Àç°ËÅ䳪 Å×½ºÆ®¸¦ ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


1.5.3.3. svn revert

À§ÀÇ diff Ãâ·ÂÀ» º¸°í READMEÀ» À߸ø ¼öÁ¤ÇÑ °ÍÀ» ¾Ë¾Ò´Ù°í ÇսôÙ.

ÀÌ°ÍÀº svn revert¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸Å¿ì ÁÁÀº ±âȸÀÔ´Ï´Ù.

$ svn revert README
Reverted . /README
        

SubversionÀº ±× ÆÄÀÏÀ».svn¿¡ ÀÖ´Â "¼öÁ¤¿ø ¸®ºñÀü"¿¡ ÀÖ´Â °ÍÀ¸·Î µ¤¾î½á¼­ ¼öÁ¤Çϱâ ÀüÀ¸·Î µÇµ¹¸³´Ï´Ù. ±×·¯³ª svn revert°¡ ¾î¶°ÇÑ ¿¹¾à Á¶ÀÛµµ Ãë¼ÒÇÒ ¼ö°¡ Àִµ¥ ÁÖÀÇÇϼ¼¿ä. ¿¹¸¦ µé¾î ÃÖÁ¾ÀûÀ¸·Î »õ·Î¿î ÆÄÀÏÀ» Ãß°¡ÇÏ´Â °ÍÀ» ±×¸¸µÑ ¼ö°¡ ÀÖ½À´Ï´Ù.

$ svn status foo
?       foo

$ svn add foo
A         foo

$ svn revert foo
Reverted foo

$ svn status foo
?       foo
        

Note: svn revert ITEMÀº ÀÛ¾÷ Ä«ÇǷκÎÅÍ ITEMÀ» »èÁ¦ÇÏ°í svn update ITEMÀ» ½ÇÇàÇÑ °Í°ú ¿ÏÀüÈ÷ °°Àº È¿°ú°¡ ÀÖ½À´Ï´Ù. ±×·¯³ª ¸¸¾à ÆÄÀÏÀ» ±âÃÊ·Î µÇµ¹¸°´Ù¸é svn revert¿¡´Â ÇÑ °¡Áö Áß¿äÇÑ Â÷ÀÌ°¡ Àִµ¥ ±×°ÍÀº ÆÄÀÏÀ» ¹ÙÅÁÀ¸·Î µÇµ¹¸®±â À§Çؼ­ ÀúÀå¼Ò¿Í Åë½ÅÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù.

ȤÀº ½Ç¼ö·Î ¹öÀü °ü¸®·ÎºÎÅÍ ÆÄÀÏÀ» Áö¿ö¹ö·ÈÀ»Áöµµ ¸ð¸¨´Ï´Ù.

$ svn status README 
       README

$ svn delete README 
D         README

$ svn revert README
Reverted README

$ svn status README
       README
        

1.5.4. Ãæµ¹ÀÇ ÇؼÒ(´Ù¸¥ »ç¶÷ÀÇ º¯°æÁ¡°ú Merge)

ÀÌÁ¦ svn status -u°¡ ¾î¶»°Ô Ãæµ¹À» ¿¹°íÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¾Ë°í ÀÖ½À´Ï´Ù. svn update ¸¦ ½ÇÇàÇß´õ´Ï Àç¹ÌÀÖ´Â ÀÏÀÌ ÀϾ´Ù°í ÇսôÙ.

$ svn update
U  . /INSTALL
G  . /README
C  . /bar.c
      

U¿Í G·Î Ç¥½ÃµÈ ÆÄÀÏÀº Ưº°È÷ »ý°¢ÇÒ °ÍÀÌ ¾ø½À´Ï´Ù. ÀÌ µÑÀº ÀúÀå¼Ò(repository)·ÎºÎÅÍÀÇ º¯°æÀ» Àß ¹Þ¾Æµé¿´½À´Ï´Ù. U·Î Ç¥½ÃµÈ ÆÄÀÏÀº ·ÎÄÿ¡¼­´Â ¾î¶² º¯°æµµ ¾ø¾ú½À´Ï´Ù. µû¶ó¼­ ÀúÀå¼Ò·ÎºÎÅÍÀÇ º¯°æ »çÇ×À» ¹Þ¾Æ¼­ °»½Å(Updated)µÇ¾ú½À´Ï´Ù. G´Â ÇÕÃÄÁ³À½( merGed)À» ÀǹÌÇÕ´Ï´Ù. Áï ÆÄÀÏÀÌ ·ÎÄÿ¡¼­ º¯°æµÇ¾úÁö¸¸ ÀúÀå¼Ò¿¡¼­ÀÇ º¯°æ ºÎºÐ°ú´Â ÀüÇô °ãÄ¡Áö ¾Ê¾Ò½À´Ï´Ù.

±×·¯³ª C´Â Ãæµ¹À» ³ªÅ¸³À´Ï´Ù. ÀÌ°ÍÀº ¼­¹ö·ÎºÎÅÍÀÇ º¯°æ »çÇ×ÀÌ ´ç½ÅÀÇ º¯°æ»çÇ×°ú °ãÄ¡´Â °ÍÀ» ÀǹÌÇÏ¸ç ´ç½ÅÀº ¾î´À ÂÊÀÎÁö¸¦ Á÷Á¢ ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù.

¸¸¾à Ãæµ¹ÀÌ ÀϾ´Ù¸é Subversion Ŭ¶óÀ̾ðÆ®´Â ´ÙÀ½ÀÇ ¼¼ °¡Áö ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù:

  • SubversionÀº °»½Å(update) ó¸®Áß¿¡ C¸¦ Ç¥½ÃÇØ ±× ÆÄÀÏÀÌ "Ãæµ¹ÀÌ ÀÖÀ½"À» ¾Ë¸³´Ï´Ù.

  • SubversionÀº Ãæµ¹ Ç¥Áö¸¦ °ãÄ¡°í ÀÖ´Â Àå¼Ò¿¡ µÎ¾î Ãæµ¹ÀÌ ÀϾ ³»¿ëÀ» º¸°í ¾Ë ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

  • Ãæµ¹ÀÌ ÀÖ´Â ÆÄÀÏÀ̸§ÀÇ µÚ¿¡ ƯÁ¤ÇÑ Ç¥½Ã(¹®ÀÚ¸¦ µ¡ºÙÀÓ)¸¦ °¢°¢ ºÙÀÎ ¼¼ °³ÀÇ Ãß°¡ ÆÄÀÏÀ» ÀÛ¾÷ º¹»ç¿¡ ¸¸µì´Ï´Ù.

    filename.mine

    ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϱâ Àü¿¡ ÀÛ¾÷ º¹»ç¿¡ ÀÖ´ø ÆÄÀÏ ÀÔ´Ï´Ù. Áï Ãæµ¹ Ç¥Áö(¾î¶² ºÎºÐ¿¡¼­ Ãæµ¹ÀÌ ÀÖ¾ú´ÂÁö¸¦ º¸¿©ÁÖ´Â)¸¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ÆÄÀÏÀº ´ç½ÅÀÌ ÇÑ ¸¶Áö¸· º¯°æÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

    filename.rOLDREV

    ÀÌ°ÍÀº ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϱâ ÀüÀÇ BASE(.svn¿¡ ÀúÀåµÇ¾î ÀÖ´Â) ¸®ºñÀü¿¡ ÀÖ´ø ÆÄÀÏ ÀÇ ³»¿ëÀÔ´Ï´Ù. Áï ±× ÆÄÀÏÀº ¸¶Áö¸·¿¡ ÆíÁýÇÑ ÆÄÀÏÀÇ Á÷Àü »óÅ Áï üũ¾Æ¿ô ½ÃÁ¡¿¡¼­ÀÇ ÆÄÀÏÀÔ´Ï´Ù.

    filename.rNEWREV

    ÀÌ°ÍÀº Subversion Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ÀÌ ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϸ鼭 ¼­¹ö·ÎºÎÅÍ ¹ÞÀº ÆÄÀÏÀÔ´Ï´Ù. ÀÌ°ÍÀº ÀúÀå¼ÒÀÇ HEAD ¸®ºñÀü ¿¡ ´ëÀÀÇÏ°í ÀÖ½À´Ï´Ù.

    ¿©±â¼­ OLDREVÀº .svn µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀÇ ¸®ºñÀü ¹øÈ£ÀÌ°í NEWREV´Â ÀúÀå¼Ò¿¡ ÀÖ´Â HEADÀÇ ¸®ºñÀü ¹øÈ£ÀÔ´Ï´Ù.

¿¹¸¦ µé¾î Sally°¡ ÀúÀå¼Ò¿¡ ÀÖ´Â sandwich.txt ÆÄÀÏÀ» º¯°æÇß´Ù°í ÇսôÙ. Harry´Â ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡¼­ ±× ÆÄÀÏ (sandwich.txt) ÆÄÀÏÀ» º¯°æÇÏ°í Ä¿¹ÔÇÕ´Ï´Ù. Sally´Â Ä¿¹ÔÇϱâ Àü¿¡ ÀÛ¾÷ Ä«ÇǸ¦ °»½ÅÇÕ´Ï´Ù¸¸. Áï °°Àº REV¸¦ Sally¿Í Harry°¡ ¼öÁ¤ÇÏ°í Harry°¡ Sallyº¸´Ù ¸ÕÀú commitÇßÀ»¶§ Sally°¡ commit¸¦ ÇÏ·Á°í ÇÒ ¶§ Sally´Â ´ÙÀ½°ú °°Àº Ãæµ¹ÀÇ º¸°í¸¦ ¹Þ½À´Ï´Ù.

$ svn update
C  sandwich.txt
Updated to revision 2.
$ ls -1
sandwich.txt                       
sandwich.txt.mine
sandwich.txt.r1
sandwich.txt.r2
      

ÀÌ ¶§ Subversion´Â ¼¼ °³ÀÇ Àӽà ÆÄÀÏÀÌ »èÁ¦µÉ ¶§±îÁö sandwich.txtÀÇ Ä¿¹ÔÀ» Çã°¡ ÇÏÁö ¾Ê½À´Ï´Ù.

$ svn commit --message "Add a few more things"
svn: A conflict in the working copy obstructs the current operation
svn: commit failed (details follow):
svn: Aborting commit: '/home/sally/svn-work/sandwich.txt' remains in conflict.
      

¸¸¾à Ãæµ¹ÀÌ ¹ß»ýÇßÀ» °æ¿ì¿¡´Â ´ÙÀ½ÀÇ ¼¼ °¡Áö ¹æ¹ýÁß ÇÑ °¡Áö¸¦ ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

  • "¼ÕÀ¸·Î" Ãæµ¹ ÅؽºÆ®¸¦ ÇÕĨ´Ï´Ù( ÆÄÀÏÁßÀÇ Ãæµ¹ Ç¥Áö¸¦ º¸°í ÆíÁýÇÏ¿©).

  • ÀÛ¾÷ ÆÄÀÏ¿¡ Àӽà ÆÄÀÏ Áß¿¡ Çϳª¸¦ µ¡¾²±âÇÕ´Ï´Ù.

  • svn revert filename¸¦ ½ÇÇàÇØ ·ÎÄÿ¡¼­ÀÇ ¸ðµç º¯°æÀ» ¹ö¸³´Ï´Ù.

Ãæµ¹À» ÇØ°áÇϸé svn resolved¸¦ ½ÇÇàÇؼ­ Subversion¿¡ ±×°ÍÀ» ¾Ë·Á¾ß ÇÕ´Ï´Ù. ÀÌ°ÍÀº ¼¼ °³ÀÇ ÀÓ½ÃÆÄÀÏÀ» »èÁ¦ÇØ SubversionÀº ÀÌÁ¦ ÇØ´ç ÆÄÀÏÀÌ Ãæµ¹ »óÅ¿¡ ÀÖ´Ù°í »ý°¢ÇÏÁö ¾Ê°Ô µË´Ï´Ù. [4]

$ svn resolved sandwich.txt
Resolved conflicted state of sandwich.txt
      

1.5.4.1. Ãæµ¹À» ¼öµ¿À¸·Î Merge

¼öµ¿À¸·Î Ãæµ¹À» ÇÕÄ¡´Â °ÍÀº óÀ½¿¡´Â ¸Å¿ì ½ÈÀº ÀÏÀÌ°ÚÁö¸¸ Á¶±Ý ¿¬½ÀÇÏ¸é ¿ÀÅä¹ÙÀÌ¿¡¼­ ³»¸®´Â °Í°ú °°ÀÌ °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.

¿¹¸¦ µé¾î ´ç½Å°ú ´ç½ÅÀÇ µ¿·á SallyÀÇ ´ëÈ­ ºÎÁ·À¸·Î ÀÎÇØ µÎ »ç¶÷ÀÌ sandwich.txt¶ó´Â ÆÄÀÏÀ» µ¿½Ã¿¡ ÆíÁýÇß´Ù°í ÇսôÙ. Sally´Â ÀÚ½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇß°í ´ç½ÅÀÌ ÀÛ¾÷ Ä«ÇǸ¦ °»½ÅÇÏ·Á°í Çϸé Ãæµ¹ÀÌ ÀϾ´Ï´Ù. ±×·¡¼­ Ãæµ¹À» ÇØ°áÇϱâ À§ÇØ sandwich.txt¸¦ ÆíÁýÇØ¾ß ÇÕ´Ï´Ù. ÆÄÀÏÀ» º¸°Ú½À´Ï´Ù.

$ cat sandwich.txt
Top piece of bread
Mayonnaise
Lettuce
Tomato
Provolone
 . mine
Salami
Mortadella
Prosciutto
=======
Sauerkraut
Grilled Chicken
 . r2
Creole Mustard
Bottom piece of bread
        

ÀÛ´Ù °°´Ù Å©´Ù´Â ±âÈ£´Â Ãæµ¹ Ç¥ÁöÀÔ´Ï´Ù. ¾ÕºÎºÐÀÇ µÎ ±âÈ£·Î µÑ·¯½ÎÀÎ ºÎºÐÀº ´ç½ÅÀÌ °íÄ£ °ÍÀÔ´Ï´Ù.

 . mine
Salami
Mortadella
Prosciutto
=======
        

±×¸®°í µÎ ¹ø°¿Í ¼¼ ¹ø°ÀÇ Ãæµ¹ Ç¥½Ã »çÀÌÀÇ ÅؽºÆ®´Â Sally°¡ Ä¿¹ÔÇÑ ºÎºÐÀÔ´Ï´Ù.

=======
Sauerkraut
Grilled Chicken
 . r2
        

º¸Åë Ãæµ¹ Ç¥Áö¿Í SallyÀÇ º¯°æ ºÎºÐÀ» ±×³É »èÁ¦Çعö¸®°í ½ÍÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù. ±×·± ÀÏÀ» Çϸé Sally°¡ sandwich¸¦ ¹Þ¾ÒÀ» ¶§¿¡ ³î¶ó°í ±×°ÍÀº ±×³à°¡ ¹Ù¶ó´Â ÀÏÀº ¾Æ´Ò °ÍÀÔ´Ï´Ù. ´ç½ÅÀº ÀüÈ­¸¦ °ÉµçÁö »ç¹«½ÇÀ» °Ç³Ê°¡¼­ Sally¿¡°Ô ÀÌÅ»¸®¾Æ À½½ÄÁ¡¿¡¼­´Â ¼Ò±Ý¿¡ ÀýÀÎ ¾ç¹èÃß(sauerkraut)¸¦ »ì ¼ö ¾ø´Ù°í ¼³¸íÇØ ÁÝ´Ï´Ù(µÎ ¸íÀÇ º¯°æÀÌ Ãæµ¹ÇÏ°í ÀÖ´Â °ÍÀ» ¼³¸íÇÕ´Ï´Ù). [5] Ä¿¹ÔÇÒ º¯°æ ³»¿ë¿¡ ´ëÇØ ÇÕÀǸ¦ ÇßÀ¸¸é ÆÄÀÏÀ» ÆíÁýÇØ Ãæµ¹ Ç¥Áö¸¦ »èÁ¦ÇÕ´Ï´Ù.

Top piece of bread
Mayonnaise
Lettuce
Tomato
Provolone
Salami
Mortadella
Prosciutto
Creole Mustard
Bottom piece of bread
        

ÀÌÁ¦ svn resolved¸¦ ½ÇÇàÇÏ°í Ä¿¹ÔÇÕ´Ï´Ù.

$ svn resolved sandwich.txt
$ svn commit -m "Go ahead and use my sandwich, discarding Sally's edits. "
        

Ãæµ¹ÀÌ ÀÖ´Â ÆÄÀÏÀ» °íÄ¡´Â Áß¿¡ È¥¶õ½º·´´Ù¸é ¾ðÁ¦³ª SubvervionÀÌ ´ç½ÅÀ» À§Çؼ­ ¸¸µç ÀÛ¾÷ º¹»ç¿¡ ÀÖ´Â ¼¼ °³ÀÇ Àӽà ÆÄÀÏÀ» Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× Áß¿¡´Â °»½ÅÀü¿¡ ´ç½ÅÀÌ ¼öÁ¤ÇÑ ¹öÀüÀÇ ÆÄÀϵµ ÀÖ½À´Ï´Ù.


1.5.4.2. ÀÛ¾÷ ÆÄÀÏ À§¿¡ ÆÄÀÏÀ» Ä«ÇÇÇϱâ

Ãæµ¹ÀÌ ÀϾ»ç ÀÚ½ÅÀÌ ÇÑ º¯°æÀ» ¹«½ÃÇÏ·Á°í ÇÒ °æ¿ì¿¡´Â SubversionÀÌ ¸¸µç Àӽà ÆÄÀÏ Áß Çϳª¸¦ ´Ü¼øÈ÷ ÀÛ¾÷ ÆÄÀÏ¿¡ µ¤¾î¾²¸é µË´Ï´Ù.

$ svn update
C  sandwich.txt
Updated to revision 2.
$ ls sandwich. *
sandwich.txt  sandwich.txt.mine  sandwich.txt.r2  sandwich.txt.r1
$ cp sandwich.txt.r2 sandwich.txt
$ svn resolved sandwich.txt
$ svn commit -m "Go ahead and use Sally's sandwich, discarding my edits. "
        

1.5.4.3. Punting: svn revertÀÇ ÀÌ¿ë

Ãæµ¹ÀÌ ÀϾ Á¶»ç °á°ú ÀÚ½ÅÀÇ º¯°æÀ» ¹ö¸®°í ÆíÁýÀ» ´Ù½Ã ÇÏ´Â °æ¿ì´Â ´ÜÁö º¯°æÀ» ¿ø·¡´ë·Î µÇµ¹¸³´Ï´Ù.

$ svn revert sandwich.txt
Reverted sandwich.txt
$ ls sandwich. *
sandwich.txt
        

Ãæµ¹ ÆÄÀÏÀ» ¿ø·¡´ë·Î µÇµ¹¸± ¶§´Â svn resolved¸¦ ½ÇÇàÇÒ ÇÊ¿ä°¡ ¾ø´Â °Í¿¡ ÁÖÀÇÇϼ¼¿ä.

ÀÌÁ¦ ´ç½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù. svn resolved´Â ÀÌ Àå¿¡¼­ º» ´Ù¸¥ ´ëºÎºÐÀÇ Ä¿¸àµå¿Í´Â ´Þ¸® Àμö¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¾î¶°ÇÑ °æ¿ì¿¡¼­µµ ÃæºÐÈ÷ ÁÖÀÇÇÏ°í ÆÄÀÏÁßÀÇ Ãæµ¹À» È®½ÇÈ÷ ÇØ°áÇÑ °æ¿ì¸¸ svn resolved ¸¦ ½ÇÇàÇϼ¼¿ä. Àӽà ÆÄÀÏÀÌ »èÁ¦µÇ¸é SubversionÀº ÆÄÀÏÀÌ Ãæµ¹ ¸¶Ä¿¸¦ Æ÷ÇÔÇÏ°í À־ Ä¿¹ÔÇÕ´Ï´Ù.


1.5.5. º¯°æÁ¡À» Ä¿¹Ô

µåµð¾î ¿©±â±îÁö ¿Ô½À´Ï´Ù. ¼­¹ö·ÎºÎÅÍÀÇ º¯°æÀ» ¸ðµÎ ÇÕÃÆ°í ÆíÁýÀº ¸ðµÎ ³¡³µ½À´Ï´Ù. ÀÌÁ¦ º¯°æÀ» ÀúÀå¼Ò¿¡ Ä¿¹Ô ÇÒ Áغñ°¡ ´Ù µÇ¾ú½À´Ï´Ù.

svn commit ¸í·ÉÀº ´ç½ÅÀÇ ¸ðµç º¯°æÁ¡À» ÀúÀå¼Ò¿¡ º¸³À´Ï´Ù. Ä¿¹ÔÇÒ ¶§¿¡´Â ¹Ù²ïÁ¡À» ¼³¸íÇÏ´Â ·Î±× ¸Þ¼¼Áö¸¦ ÁÙ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ·Î±× ¸Þ¼¼Áö´Â ´ç½ÅÀÌ ¸¸µç »õ·Î¿î ¸®ºñÀü¿¡ ºÙ¿©Áý´Ï´Ù. ·Î±× ¸Þ¼¼Áö°¡ °£´ÜÇÑ °æ¿ì´Â --message (ȤÀº-m) ¿É¼ÇÀ» »ç¿ëÇØ ¸í·ÉÁÙ¿¡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

$ svn commit --message "Corrected number of cheese slices. "
Sending        sandwich.txt
Transmitting file data .
Committed revision 3.
      

±×·¯³ª ¹ú½á ·Î±× ¸Þ¼¼Áö¸¦ ¸¸µé¾î µÐ °æ¿ì´Â --file ¿É¼Ç µÚ¿¡ ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ¿© SubversionÀÌ ±× ÆÄÀÏÀÇ ³»¿ëÀ» »ç¿ëÇϵµ·Ï Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

svn commit --file logmsg 
Sending        sandwich
Transmitting file data .
Comitted revision 4.
      

--message³ª --file ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â ȯ°æ º¯¼ö$EDITOR·Î ÁöÁ¤ÇÑ ÆíÁý±â°¡ ¶°¼­ ·Î±× ¸Þ¼¼Áö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.

Tip: ¸¸¾à ÆíÁý±â¿¡¼­ ·Î±× ¸Þ½ÃÁö¸¦ ÆíÁýÇÏ´Ù°¡ ±× Ä¿¹ÔÀ» ÁßÁöÇÏ°í ½Í´Ù°í »ý°¢ÇßÀ» °æ¿ì¿¡´Â ±×Àú ÀúÀåÇÏÁö ¾Ê°í ÆíÁý±â¸¦ Á¾·áÇÏ¸é µË´Ï´Ù. ¹ú½á Ä¿¹Ô ¸Þ¼¼Áö¸¦ ÀúÀåÇß´Ù¸é ³»¿ëÀ» »èÁ¦ÇÏ°í ÇÑ ¹ø ´õ ÀúÀåÇØ ÁÖ¼¼¿ä.

$ svn commit
Waiting for Emacs...Done

Log message unchanged or not specified
a) bort, c) ontinue, e) dit
a
$
        

ÀúÀå¼Ò´Â º¯°æÁ¡ÀÇ ³»¿ë¿¡ Àǹ̰¡ ÀÖÀ»Áö ¾î¶³Áö´Â ÀüÇô ½Å°æ¾²Áö ¾Ê½À´Ï´Ù. Subversion´Â ´ç½ÅÀÌ ¼öÁ¤ÇÑ ÆÄÀÏÀ» ´Ù¸¥ »ç¶÷ÀÌ ¼öÁ¤ÇÏ°í ÀÖÁö ¾Ê´Â °Í¸¸À» È®ÀÎÇÕ´Ï´Ù. ¸¸¾à ´Ù¸¥ »ç¶÷ÀÌ ±×·¯ÇÑ º¯°æÀ» ÇÏ°í ÀÖÀ¸¸é Ä¿¹ÔÀº ´ç½ÅÀÇ º¯°æ ÇÑ ÆÄÀÏÀÇ ¾î¶² °ÍÀΰ¡°¡ ÃÖ½ÅÀÌ ¾Æ´Ï¶ó°í ÇÏ´Â ¸Þ¼¼Áö¸¦ º¸³» °í Ä¿¹ÔÀº ½ÇÆÐÇÕ´Ï´Ù.

$ svn commit --message "Add another rule"
Sending        rules.txt
svn: Transaction is out of date
svn: commit failed (details follow):
svn: out of date: `rules.txt' in txn `g'
$

ÀÌ·¯ÇÑ °æ¿ì¿¡´Â svn update¸¦ ½ÇÇàÇÏ¿© ±× °á°ú·Î ³ª¿À´Â Ãæµ¹À» ÇؼÒÇÑ ÈÄ ÇÑ ¹ø ´õ Ä¿¹ÔÇØ ÁÖ¼¼¿ä.

ÀÌ°ÍÀ¸·Î SubversionÀ» »ç¿ëÇÏ´Â ±âº»ÀûÀÎ ÀÛ¾÷ »çÀÌŬÀ» ¼³¸íÇß½À´Ï´Ù. Subversion¿¡´Â ÀÌ ±× ¹Û¿¡µµ ÀúÀå¼Ò³ª ÀÛ¾÷ º¹»ç¸¦ °ü¸®Çϱâ À§ÇÑ ¸¹Àº ±â´ÉÀÌ ÀÖ½À´Ï´Ù¸¸ ÀÌ Àå¿¡¼­ Áö±Ý±îÁö ¼³¸íÇØ ¿Â ¸í·É¸¸À» »ç¿ëÇصµ ¸Å¿ì ¸¹Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.6. È÷½ºÅ丮 È®ÀÎÇϱâ

ÀÌÀü¿¡ ¸»ÇÑ °Íó·³ ÀúÀå¼Ò´Â ŸÀÓ ¸Ó½Å°ú °°Àº °÷ÀÔ´Ï´Ù. Áö±Ý±îÁö Ä¿¹ÔµÈ ¸ðµç º¯°æÀ» ±â·ÏÇϱ⠶§¹®¿¡ ÆÄÀÏÀ̳ª µð·ºÅ丮 °Å±â¿¡ µþ¸° ¸ÞŸµ¥ÀÌŸÀÇ ÀÌÀü ¹öÀüÀ» º¸´Â °Í¿¡ ÀÇÇØ È÷½ºÅ丮¸¦ Á¶»çÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Subversion ¸í·É Çϳª·Î °ú°ÅÀÇ Æ¯Á¤ ÀÏÀÚ³ª ¸®ºñÀü ¹øÈ£ÀÇ ÀúÀå¼Ò »óŸ¦ üũ¾Æ¿ô(ȤÀº ¹ú½á ÀÖ´Â ÀÛ¾÷ Ä«ÇÇÀÇ º¹¿ø) ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª °ú°Å·Î µ¹¾Æ°¡Áö´Â ¾Ê°í ´ÜÁö °ú°Å°¡ ¾î¶°Çß´ÂÁö Á¶±Ý µé¿©´Ù º¸±â¸¸ ÇÏ°í ½ÍÀº Àϵµ ÀÚÁÖ ÀÖ½À´Ï´Ù.

ÀúÀå¼Ò·ÎÀÇ È÷½ºÅ丮 µ¥ÀÌÅ͸¦ ´Ù·ç±â À§ÇÑ ¸í·ÉÀÌ ¸î °³ ÀÖ½À´Ï´Ù.

svn log

Àü¹ÝÀûÀÎ Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¸®ºñÀü¿¡ µþ¸° ·Î±× ¸Þ¼¼Áö¿Í °¢°¢ÀÇ ¸®ºñÀü¿¡¼­ ¾î´À °æ·Î°¡ º¯°æµÇ¾ú´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.

svn diff

½Ã°£¿¡ µû¶ó ÆÄÀÏÀÌ ¾î¶»°Ô º¯°æµÇ¾î ¿Ô´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.

svn cat

ƯÁ¤ ¸®ºñÀü ¹øÈ£¿¡¼­ ÆÄÀÏÀ» ÃßÃâÇØ È­¸é¿¡ Ç¥½ÃÇÕ´Ï´Ù.

svn list

ÁöÁ¤ÇÑ ¸®ºñÀüÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ Ç¥½ÃÇÕ´Ï´Ù.


1.6.1. svn log

ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ È÷½ºÅ丮¿¡ °üÇÑ Á¤º¸¸¦ º¸°í ½ÍÀ» ¶§´Â svn log ¸í·ÉÀ» »ç¿ëÇϼ¼¿ä. svn log´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ´©°¡ º¯°æÇß´ÂÁö ¾î´À ¸®ºñÀüÀ» º¯°æÇÑ °ÍÀÎÁö ±× ¸®ºñÀüÀÇ ½Ã°¢°ú ³¯Â¥´Â ¾ðÁ¦ÀÎÁö ±×¸®°í Ä¿¹Ô¿¡ µþ¸° ·Î±× ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¾î´À ¸®ºñÀüÀ¸·Î ±×°ÍÀÌ º¯°æµÇ°í Àΰ¡ ±× ¸®ºñÀüÀÇ ½Ã°¢°ú ÀÏÀÚ ÇÑÃþ ´õ ¸¸¾à Á¸ÀçÇϸé Ä¿¹Ô¿¡ ºÎ¼ö ÇÑ ·Î±× ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÕ´Ï´Ù.

$ svn log
------------------------------------------------------------------------
r3 | sally | Mon, 15 Jul 2002 18:03:46 -0500 | 1 line

Added include lines and corrected # of cheese slices.
------------------------------------------------------------------------
r2 | harry | Mon, 15 Jul 2002 17:47:57 -0500 | 1 line

Added main() methods.
------------------------------------------------------------------------
r1 | sally | Mon, 15 Jul 2002 17:40:08 -0500 | 2 lines

Initial import
------------------------------------------------------------------------
      

±âº»°ªÀ¸·Î ·Î±× ¸Þ¼¼Áö´Â ½Ã°£ ¼ø¼­¿Í ¹Ý´ë·Î Ç¥½ÃµÇ´Â °Í¿¡ ÁÖÀÇÇϼ¼¿ä. ´Ù¸¥ ¹üÀ§ÀÇ ¸®ºñÀüÀ» ƯÁ¤ ¼ø¼­·Î º¸°í ½ÍÀº °æ¿ì³ª ÇÑ ¸®ºñÀüÀ» Âï¾î¼­ º¸°í ½ÍÀ» ¶§´Â --revision (-r) ¿É¼ÇÀ» »ç¿ëÇÕ´Ï´Ù.

$ svn log --revision 5:19    # shows logs 5 through 19 in chronological order

$ svn log -r 19:5            # shows logs 5 through 19 in reverse order

$ svn log -r 8               # shows log for revision 8
      

ÇϳªÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ ·Î±× È÷½ºÅ丮¸¦ º¼ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î

$ svn log foo.c

$ svn log http://foo.com/svn/trunk/code/foo.c

      

ÀÌ°ÍÀº ÀÛ¾÷ ÆÄÀÏ(¶Ç´Â URL)ÀÌ º¯°æµÈ ¸®ºñÀü ¸¸À»Ç¥½ÃÇÕ´Ï´Ù.

¸¸¾à ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ´ëÇØ Á» ´õ »ó¼¼ÇÑ Á¤º¸¸¦ ¾ò°í ½ÍÀ» ¶§¿¡´Â svn log¿¡ --verbose (-v) ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. SubversionÀº ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ À̵¿½ÃÅ°°Å³ª º¹»ç ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ·Î º¯È­¸¦ ÂÑÀ» ¼ö ÀÖ´Â °ÍÀº Áß¿äÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ Ãâ·Â »óÅ¿¡¼­´Â svn log´Â Ãâ·Â ¸®ºñÀü¿¡¼­ º¯°æµÈ °æ·Î Á¤º¸µµ Æ÷ÇÔÇÕ´Ï´Ù:

$ svn log -r 8 -v
------------------------------------------------------------------------
r8 | sally | 2002-07-14 08:15:29 -0500 | 1 line
Changed paths:
U /trunk/code/foo.c
U /trunk/code/bar.h
A /trunk/code/doc/README

Frozzled the sub-space winch.

------------------------------------------------------------------------
      

1.6.2. svn diff

svn diff´Â ¾Õ¿¡¼­ ´Ù·é ÀûÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº unified diff Çü½ÄÀ¸·Î ÆÄÀÏÀÇ Â÷ÀÌÁ¡À» Ç¥½ÃÇÕ´Ï´Ù. ÀúÀå¼Ò¿¡ Ä¿¹ÔÇϱâ Àü¿¡ ÀÛ¾÷ Ä«ÇÇ¿¡¼­ º¯°æµÈ Á¡À» Ç¥½ÃÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

»ç½Ç svn diff¿¡´Â ¼¼ °¡Áö »ç¿ë¹ýÀÌ ÀÖ½À´Ï´Ù.

  • ·ÎÄà º¯°æ ³»¿ëÀ» È®ÀÎÇϱâ

  • ÀÛ¾÷ Ä«ÇÇ¿Í ÀúÀå¼Ò¸¦ ºñ±³

  • ÀúÀå¼Ò¿Í ÀúÀå¼Ò¸¦ ºñ±³


1.6.2.1. ·ÎÄÃÀÇ º¯°æ ³»¿ëÀ» È®ÀÎÇϱâ

ÀÌ¹Ì ºÁ ¿Â °Íó·³ ¿É¼Ç¾øÀÌ svn diff¸¦ ½ÇÇàÇϸé ÀÛ¾÷ Ä«ÇÇÀÇ ³»¿ë°ú .svn¿¡ ij½¬µÈ "¼öÁ¤¿ø ¸®ºñÀü"ÀÇ À» ºñ±³ÇÕ´Ï´Ù.

$ svn diff
Index: rules.txt
===================================================================
--- rules.txt	(revision 3)
+++ rules.txt	(working copy)
@@ -1, 4 +1, 5 @@
 Be kind to others
 Freedom = Responsibility
 Everything in moderation
-Chew with your mouth open
+Chew with your mouth closed
+Listen when others are speaking
$
        

1.6.2.2. ÀÛ¾÷ Ä«ÇÇ¿Í ÀúÀå¼Ò¸¦ ºñ±³Çϱâ

--revision(-r)¸¦ Çϳª¸¸ ÁöÁ¤Çϸé ÀÛ¾÷ Ä«ÇÇ´Â ÀúÀå¼ÒÀÇ ÁöÁ¤µÈ ¸®ºñÀü°ú ºñ±³ µË´Ï´Ù.

$ svn diff --revision 3 rules.txt 
Index: rules.txt
===================================================================
--- rules.txt	(revision 3)
+++ rules.txt	(working copy)
@@ -1, 4 +1, 5 @@
 Be kind to others
 Freedom = Responsibility
 Everything in moderation
-Chew with your mouth open
+Chew with your mouth closed
+Listen when others are speaking
$
        

1.6.2.3. ÀúÀå¼Ò¿Í ÀúÀå¼Ò¸¦ ºñ±³Çϱâ

--revision(-r)¿¡ ÄÝ·ÐÀ»·Î ±¸ºÐµÈ ¸®ºñÀü ¹øÈ£ µÎ °³¸¦ ÁöÁ¤ÇÏ¸é µÎ °³ÀÇ ÀúÀå¼Ò°¡ ºñ±³µË´Ï´Ù.

$ svn diff --revision 2:3 rules.txt 
Index: rules.txt
===================================================================
--- rules.txt	(revision 2)
+++ rules.txt	(revision 3)
@@ -1, 4 +1, 4 @@
 Be kind to others
-Freedom = Chocolate Ice Cream
+Freedom = Responsibility
 Everything in moderation
 Chew with your mouth closed 
$
        

svn diff´Â ÀÛ¾÷ Ä«ÇÇ¿¡ ÀÖ´Â ÆÄÀÏÀ» ÀúÀå¼Ò¿Í ºñ±³ÇÒ ¶§¸¸ ¾µ ¼ö Àִ°ÍÀÌ ¾Æ´Õµð. ÀÛ¾÷ Ä«ÇÇ°¡ ¾ø¾îµµ URL Àμö¸¦ ÁÖ´Â °ÍÀ¸·Î ÀúÀå¼Ò¿¡ ÀÖ´Â ¾ÆÀÌÅÛ°úÀÇ Â÷À̸¦ Á¶»çÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ·ÎÄà ¸Ó½Å¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¾øÀ» ¶§¿¡ ÆÄÀÏÀÇ º¯°æÁ¡À» ¾Ë°í ½ÍÀº °æ¿ì¿¡ ¸Å¿ì Æí¸®ÇÕ´Ï´Ù.

$ svn diff --revision 4:5 http://svn.red-bean.com/repos/example/trunk/text/rules.txt

$
        

1.6.3. svn cat

¸¸¾à ÀÌÀü ¹öÀüÀÇ ÆÄÀÏÀ» º¸°í ½ÍÁö¸¸ µÎ ÆÄÀÏ »çÀÌÀÇ Â÷À̸¦ º¼ ÇÊ¿ä´Â ¾ø´Â °æ¿ì¿¡´Â svn cat¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

$ svn cat --revision 2 rules.txt 
Be kind to others
Freedom = Chocolate Ice Cream
Everything in moderation
Chew with your mouth closed
$
      

Á÷Á¢ ÆÄÀÏ¿¡ Ãâ·ÂÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

$ svn cat --revision 2 rules.txt > rules.txt.v2
$
      

¾Æ¸¶µµ ¾î°¼­ ³°Àº ¸®ºñÀüÀ¸·Î µÇµ¹¸®±â À§Çؼ­ ´Ü¼øÈ÷ svn update --revisionÀ» »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÎÁö ±Ã±ÝÇÒ °ÍÀÔ´Ï´Ù. svn cat¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ÁÁÀº ÀÌÀ¯°¡ ¸î °¡Áö ÀÖ½À´Ï´Ù.

¿ì¼± ¿ÜºÎÀÇ diff(GUIÀ̰ųª unified diff Çü½ÄÀÇ Ãâ·ÂÀÌ ¾Æ¹«·± Àǹ̵µ ¾ø´Â °æ¿ì) ÇÁ·Î±×·¥À¸·Î µÎ ¸®ºñÀüÀÇ Â÷ÀÌÁ¡À» º¸°í ½ÍÀ»Áöµµ ¸ð¸¨´Ï´Ù. ÀÌ °æ¿ì ³°Àº ¹öÀüÀÇ ³»¿ëÀ» ¾ò¾î¼­ ÆÄÀÏ¿¡ Ãâ·ÂÇÑ °Í°ú ÀÛ¾÷ Ä«ÇÇÁßÀÇ ÆÄÀÏÀ» ¿ÜºÎ diff ÇÁ·Î±×·¥¿¡ ÀüÇØÁÝ´Ï´Ù.

ÀÚÁÖ ´Ù¸¥ ¸®ºñÀü°úÀÇ Â÷ÀÌÁ¡À» ÃëÇÏ´Â °Íº¸´Ù´Â ±× ¹öÀüÀÇ ÆÄÀÏ Àüü¸¦ º¸´Â ÆíÀÌ °£´ÜÇÑ ÀÏÀÌ ÀÖ½À´Ï´Ù.


1.6.4. svn list

svn list ¸í·ÉÀº ·ÎÄà ¸Ó½Å¿¡ ½ÇÁ¦·Î ÆÄÀÏÀ» ¹ÞÁö ¾Ê°íµµ ÀúÀå¼Ò¿¡ ¾î¶² ÆÄÀÏÀÌ ÀÖ´ÂÁö º¸¿©ÁÝ´Ï´Ù.

$ svn list http://svn.collab.net/repos/svn
README
branches/
clients/
tags/
trunk/
      

Á» ´õ ÀÚ¼¼ÇÑ Ç¥½Ã¸¦ ¿øÇÑ´Ù¸é --verbose (-v) ¿É¼ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù. Ãâ·ÂÀº ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.

$ svn list --verbose http://svn.collab.net/repos/svn
  2755 harry          1331 Jul 28 02:07 README
  2773 sally               Jul 29 15:07 branches/
  2769 sally               Jul 29 12:07 clients/
  2698 harry               Jul 24 18:07 tags/
  2785 sally               Jul 29 19:07 trunk/
      

°¢°¢ÀÇ ¼¼·ÎÁÙÀº ÆÄÀÏ ¶Ç´Â µð·ºÅ丮°¡ ¸¶Áö¸·À¸·Î ¹Ù²ï ¸®ºñÀü ¼öÁ¤ÇÑ »ç¶÷, ÆÄÀÏÀÎ °æ¿ì ±× ÆÄÀÏÀÇ Å©±â, ¸¶Áö¸·À¸·Î ¹Ù²ï ³¯Â¥, ±×¸®°í À̸§ÀÔ´Ï´Ù.


1.6.5. È÷½ºÅ丮 ±â´É¿¡ ´ëÇÑ ¸¶Áö¸· ¸»

Áö±Ý±îÁö º¸¾Æ¿Â ¸ðµç ¸í·É¿¡ ´õÇؼ­ svn update¿Í svn checkout ¿¡ --revision ¿É¼ÇÀ» Á־ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀÛ¾÷ Ä«ÇÇ Àüü¸¦"°ú°Å ½ÃÁ¡"À¸·Î µÇµ¹¸³´Ï´Ù. [6]:

$ svn checkout --revision 1729 # Checks out a new working copy at r1729

$ svn update --revision 1729 # Updates an existing working copy to r1729

      

1.7. ÀÚÁÖ »ç¿ëµÇ´Â ´Ù¸¥ ¸í·Éµé

¾Õ¿¡¼­ º» °Íµé¸¸Å­ ÀÚÁÖ ÀÌ¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù¸¸ ´ÙÀ½ÀÇ ¸í·ÉÀÌ °¡²û ÇÊ¿äÇÏ°Ô µË´Ï´Ù.


1.7.1. svn cleanup

SubversionÀÌ ÀÛ¾÷ Ä«ÇÇ(¶ÇÀº .svn¿¡ ÀÖ´Â Á¤º¸)¸¦ ¼öÁ¤ÇÒ °æ¿ì¿¡´Â °¡´ÉÇÑ ¾ÈÀüÇÏ°Ô ÇÏ·Á°í ÇÕ´Ï´Ù. ¹«¾ùÀΰ¡¸¦ º¯°æÇϱâ Àü¿¡ ½ÇÇà ³»¿ëÀ» ·Î±× ÆÄÀÏ¿¡ ¾²°í ±× ¸í·ÉÀ» ½ÇÇàÇÑ ÈÄ ¸¶Áö¸·¿¡ ·Î±× ÆÄÀÏÀ» »èÁ¦ÇÕ´Ï´Ù(ÀÌ°ÍÀº Àú³Î¸µ ÆÄÀÏ ½Ã½ºÅÛÀÇ ¹æ½Ä°ú ºñ½ÁÇÕ´Ï´Ù). SubversionÀÇ µ¿ÀÛÀÌ ÁߴܵǸé(Control-C ¸¦ ÀÔ·ÂÇϰųª ÄÄÇ»ÅÍ°¡ Á¾·áµÇ¾úÀ» °æ¿ì) ·Î±× ÆÄÀÏÀº µð½ºÅ©¿¡ ³²½À´Ï´Ù. ·Î±× ÆÄÀÏÀ» Àç½ÇÇàÇÏ´Â °ÍÀ¸·Î SubversionÀº ÀÌÀü¿¡ ÇÏ´ø ÀÛ¾÷À» ¿Ï·áÇÒ ¼ö ÀÖ°í ÀÛ¾÷ Ä«ÇÇ´Â Á¤»óÀûÀÎ »óÅ·ΠµÇµ¹¾Æ°©´Ï´Ù.

svn cleanup°¡ ÇÏ´Â ÀÏÀº Á¤È®ÀÌ ÀÌ·± °ÍÀÔ´Ï´Ù. ÀÛ¾÷ Ä«ÇǸ¦ µÚÁ®¼­ ³²Àº ·Î±×¸¦ ½ÇÇàÇÏ°í ÇÁ·Î¼¼½ºÀÇ Àá±ÝÀ» ¾ø¾Û´Ï´Ù. ÀÛ¾÷ Ä«ÇÇÀÇ ¾îµò°¡°¡ "Àá°Ü" ÀÖ´Ù°í SubversionÀÌ ¾Ë·ÁÁÙ ¶§ ÀÌ ¸í·ÉÀ» ½ÇÇàÇϼ¼¿ä. svn status´Â Àá°ÜÀÖ´Â Ç׸ñ ¿·¿¡ LÀ» Ç¥½ÃÇÕ´Ï´Ù.

$ svn status
  L    . /somedir
M      . /somedir/foo.c 

$ svn cleanup
$ svn status
M      . /somedir/foo.c
      

1.7.2. svn import

import ¸í·ÉÀº ¹öÀü °ü¸®µÇ°í ÀÖÁö ¾ÊÀº ¿©·¯ÆÄÀϵéÀ» ÀúÀå¼Ò·Î À̵¿ÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀÔ´Ï´Ù.

$ svnadmin create /usr/local/svn/newrepos
$ svn import mytree file:///usr/local/svn/newrepos/fooproject
Adding  mytree/foo.c
Adding  mytree/bar.c
Adding  mytree/subdir
Adding  mytree/subdir/quux.h
Transmitting file data....
Committed revision 1.
      

À§ÀÇ ¿¹´Â µð·ºÅ丮 mytreeÀÇ ³»¿ëÀ» ÀúÀå¼ÒÀÇ fooproject µð·ºÅ丮¿¡ ³Ö½À´Ï´Ù.

/fooproject/foo.c
/fooproject/bar.c
/fooproject/subdir
/fooproject/subdir/quux.h
      

1.8. ¿ä¾à

ÀÌ°ÍÀ¸·Î Subversion Ŭ¶óÀ̾ðÆ®ÀÇ ¸í·É ´ëºÎºÐ¿¡ ´ëÇؼ­ ¼³¸íÇß½À´Ï´Ù. ¿©±â¼­ ¼³¸íÇÏÁö ¾Ê¾ÒÁö¸¸ Áß¿äÇÑ °ÍÀº ºê·£Ä¡(branch)¿Í º´ÇÕ(merge) (> ÂüÁ¶) ±×¸®°í ¼Ó¼ºÀÔ´Ï´Ù (> ÂüÁ¶). SubversionÀÌ °¡Áö°í ÀÖ´Â ¸¹Àº ¸í·ÉÀ» ÆľÇÇÏ·Á¸é ±×¸®°í ¿©·¯ºÐÀÇ ÀÏÀ» ½±°Ô Çϱâ À§Çؼ­ ±×°ÍµéÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë¾Æº¸·Á¸é >¸¦ ÈȾ´Â °ÍÀÌ ÁÁÀ»°ÍÀÔ´Ï´Ù.

Notes

[1]

ÀÛ¾÷º»¿¡ ÀÖ´Â µð·ºÅ丮´Â ¸ðµÎ .svnÀ̶ó´Â ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â »ç½ÇÀº Á¦¿ÜÇÏ°í ¸»ÀÔ´Ï´Ù. ³ªÁß¿¡ Á» ´õ À̾߱â ÇÏÁö¿ä.

[2]

¹°·Ð ÀúÀå¼Ò(repository)·ÎºÎÅÍ ¿ÏÀüÇÏ°Ô »èÁ¦µÇ¾î ¹ö¸®´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ÜÁö ÀúÀå¼Ò(repository)ÀÇ HEAD·ÎºÎÅÍ »èÁ¦µÉ »ÓÀÔ´Ï´Ù. »èÁ¦ÇÑ ¸®ºñÀüº¸´Ù ÀüÀÇ ¸®ºñÀüÀ» ÁöÁ¤ÇØ Ã¼Å©¾Æ¿ô Çϸé(ȤÀº ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϸé) »èÁ¦Àü »óÅ·Πµ¹¾Æ¿Ã ¼ö°¡ ÀÖ½À´Ï´Ù.

[3]

SubversionÀº ³»ºÎ diff ¿£ÁøÀ» ÀÌ¿ëÇؼ­ unified diff Çü½ÄÀ» »ý¼ºÇÕ´Ï´Ù. ¸¸¾à ´Ù¸¥ Çü½ÄÀÇ diff Ãâ·ÂÀ» °®°í ½ÍÀº °æ¿ì¿¡´Â --diff-cmd·Î ¿ÜºÎ diff ÇÁ·Î±×·¥À» ÁöÁ¤ÇÏ°í --extensions ¿É¼ÇÀ» »ç¿ëÇØ Ç÷¡±×¸¦ °Ç³×ÁÖ¼¼¿ä. ¿¹¸¦ µé¾î ÆÄÀÏ foo.cÀÇ ·ÎÄà º¯°æÁ¡À» context Ãâ·Â Çü½Ä¿¡¼­ º¸°í ½ÍÁö¸¸ °ø¹éÀÇ º¯°æÀº ¹«½ÃÇÏ°í ½ÍÀº °æ¿ì "snv diff --diff-cmd /usr/bin/diff --extensions '-bc' foo.c" ¿Í °°ÀÌ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

[4]

´ç½ÅÀº Àӽà ÆÄÀÏÀ» Ç×»ó Á÷Á¢ »èÁ¦ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ SubversionÀÌ ´ç½ÅÀ» À§ÇØ ¸í·ÉÀ» ÁغñÇÏ°í Àִµ¥ Á¤¸»·Î ±×·±ÀÏÀ» ÇÏ°í ½ÍÀ¸½Ê´Ï±î? ±×·¸°Ô´Â »ý°¢µÇÁö ¾Ê½À´Ï´Ù¸¸.

[5]

±×¸®°í ´ç½ÅÀÌ ÁÖ¹®ÇÏ¸é ±×µéÀº ´ç½ÅÀ» ±âÂ÷¿¡ Å¿ö¼­ ¸¶À»ÀÇ ¹ÛÀ¸·Î º¸³»¹ö¸± Áöµµ ¸ô¶ó¿ä.

[6]

¾Ë°Ú½À´Ï±î? SubversionÀº ŸÀÓ ¸Ó½ÅÀ̶ó°í ¸»ÇßÁÒ?


ID
Password
Join
Troglodytism does not necessarily imply a low cultural level.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-04-04 01:58:20
Processing time 0.0025 sec