¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î³«È¯¤Ë¤ª¤¤¤ÆCVS¤È¤¤¤¦¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤ÏÈó¾ï¤Ë½Å ÍפÊÍ×ÁǤΰì¤Ä¤È¹Í¤¨¤é¤ì¤Æ¤¤¤Þ¤¹¡£CVS¤ò»È¤¨¤Ð¡¢¥Í¥Ã¥È¥ï¡¼¥¯¾å¤Ëʬ»¶¤· ¤¿Â¿¿ô¤Î³«È¯¼Ô¤¬¤¦¤Þ¤¯¶¨Ä´¤·¤Ê¤¬¤é¥½¡¼¥¹¤ò½¤Àµ¤·¤Æ¤¤¤¯¤³¤È¤¬²Äǽ¤Ç¤¹¡£ ¥ª¡¼¥×¥ó¥½¡¼¥¹¤ò³«È¯¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ëSourceForge¤Ç¤Ï¥×¥í¥¸¥§¥¯¥È¤´¤È ¤ËCVS¥ê¥Ý¥¸¥È¥ê¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤·¡¢SourceForge¤Ê¤É¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¥ª¡¼ ¥×¥ó¥½¡¼¥¹¥×¥í¥¸¥§¥¯¥È¤Ç¤â¼«Ê¬¤ÇCVS¥ê¥Ý¥¸¥È¥ê¤òÍÑ°Õ¤·¤Æ¤¤¤ë¤È¤³¤í¤¬¿ô ¿¤¯Â¸ºß¤·¤Æ¤¤¤Þ¤¹¡£
¤·¤«¤·¡¢CVS¤ò»È¤¤¤³¤ó¤Ç¤¤¤¯¤ÈCVS¤Ë¤è¤Ã¤Æ¤¢¤¿¤¨¤é¤ì¤ëÀ©Ì󤬤¤¤í¤¤¤í¤È¶ì ÄˤˤʤäƤ¤Þ¤¹¡£Æä˥ե¡¥¤¥ë¤Î°ÜÆ°¤ä¥Ç¥£¥ì¥¯¥È¥ê¤Î°·¤¤¤Ê¤É¤¬¤¦¤Þ¤¯´É Íý¤Ç¤¤Ê¤¤¤³¤È¤¬³«È¯¤Î¤¹¤¹¤áÊý¤Ë±Æ¶Á¤òÍ¿¤¨¤Æ¤¤¤ë¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£ÆÃ¤Ë ³«È¯¤Î½é´üÃʳ¬¤Ç¤Ï¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î¥ì¥¤¥¢¥¦¥È¹½Â¤¤Ê¤É¤¬¸Ç¤Þ¤Ã¤Æ¤¤¤Ê¤¤ ¤¿¤á¤Ë¡¢¤½¤ÎÃʳ¬¤ÇCVS¤Î´ÉÍý²¼¤ËÃÖ¤¯¤³¤È¤Ëí´í°¤·¤Æ¤·¤Þ¤¤¤¬¤Á¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤½¤Î¤è¤¦¤ÊÃʳ¬¤ÇCVS¤Î´ÉÍý²¼¤Ë¤¤¤ì¤Æ¤â¡¢¥Õ¥¡¥¤¥ë¤Î°ÜÆ°¤Ë¤È¤â¤Ê¤Ã¤Æ°ÜÆ° Á°¤Î¥í¥°¤Ê¤É¤òÄɤ¦¤³¤È¤¬º¤Æñ¤Ê¤Î¤Ç¤¢¤¨¤ÆCVS¤Î´ÉÍý²¼¤ËÃÖ¤³¤¦¤È¤·¤Ê¤¯¤Ê ¤ë¤«¤é¤Ç¤¹¡£
¤½¤³¤ÇCVS¤ÎÌäÂêÅÀ¤ò¹îÉþ¤·¤¿¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤È¤·¤Æ³«È¯¤µ¤ì ¤Æ¤¤¤ë¤Î¤¬Subversion¤Ç¤¹¡£
ËܹƤǤÏCVS¤ò¤¢¤ëÄøÅÙÃΤäƤ¤¤ë¿Í¤òÂоݤˡ¢CVS¤È¤ÎÂÐÈæ¤ò¤·¤Ê¤¬¤é Subversion¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤¤Þ¤¹¡£
¥³¥é¥à1 ÍѸì
- ¥ê¥Ý¥¸¥È¥ê(repository)
- ¥Ð¡¼¥¸¥ç¥ó´ÉÍý²¼¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë·²¤ÎÍúÎò¤ä¥í¥°¤òµÏ¿¤·¤Æ¤¤¤ë¤È¤³¤í
- ¥ï¡¼¥¥ó¥°¥³¥Ô¡¼(working copy)
- ¥ê¥Ý¥¸¥È¥ê¤«¤éÊÔ½¸¤ò¤ª¤³¤Ê¤¦¿Í¤¬³Æ¼«¼ê¸µ¤Ë¤È¤ê¤À¤·¤Æ¤¤¿¥³¥Ô¡¼¡£
- ¥ê¥Ó¥¸¥ç¥ó(revision)
- ¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤¹¤ëñ°Ì¤ÇÊѹ¹¤´¤È¤ËÁý¤¨¤Æ¤¤¤¯Èֹ档
- ¥Á¥§¥Ã¥¯¥¢¥¦¥È(checkout)
- ¥ê¥Ý¥¸¥È¥ê¤«¤é¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¥³¥Ô¡¼¤ò¤È¤ê¤À¤¹Áàºî
- ¥³¥ß¥Ã¥È/¥Á¥§¥Ã¥¯¥¤¥ó(commit/checkin)
- ¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ç¤ª¤³¤Ê¤Ã¤¿½¤Àµ¤ò¥ê¥Ý¥¸¥È¥ê¤ËÈ¿±Ç¤µ¤»¤ëÁàºî
- ¥í¥°¥á¥Ã¥»¡¼¥¸(log message)
- ¥³¥ß¥Ã¥È¤¹¤ë»þ¤Ë¡¢¤½¤Î¥³¥ß¥Ã¥È¤Ï¤É¤¦¤¤¤¦½¤Àµ¤ò²Ã¤¨¤¿¤â¤Î¤«¤òÀâÌÀ¤¹¤ë¤¿¤á¤Î ¥á¥Ã¥»¡¼¥¸
- ¥¢¥Ã¥×¥Ç¡¼¥È(update)
- ¥ê¥Ý¥¸¥È¥ê¤ËÈ¿±Ç¤µ¤ì¤Æ¤¤¤ë½¤Àµ¤ò¼ê¸µ¤Î¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¤âÈ¿±Ç¤µ¤»¤ëÁàºî
- ¥³¥ó¥Õ¥ê¥¯¥È(conflict)
- ¶¥¹ç¡£¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ç¤ª¤³¤Ê¤Ã¤¿½¤Àµ¤È¥ê¥Ý¥¸¥È¥ê¤ËÈ¿±Ç¤µ¤ì¤Æ¤¤¤ë½¤Àµ ¤¬Æ±¤¸¤È¤³¤í¤ò°ã¤¦¤è¤¦¤Ë½¤Àµ¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤ª¤³¤ë
- ¥Þ¡¼¥¸(merge)
- ¾¤Ç¤ª¤³¤Ê¤ï¤ì¤¿Êѹ¹¤òŬÍѤ¹¤ëÁàºî
´ðËÜŪ¤Ê»È¤¤Êý¤Ë¤ª¤¤¤Æ¡¢Subversion¤ÏCVS¤È¤è¤¯»÷¤Æ¤¤¤Þ¤¹¡£CVS¤Î»ÈÍÑ´¶¤ò ¤½¤Î¤Þ¤Þ·Ñ³¤·¤Æ¤¤¤±¤ë¤è¤¦¤Ë¹Í¤¨¤Æ³«È¯¤µ¤ì¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£¤Ä¤Þ¤ê¡¢ Subversion¤Ë¤ª¤¤¤Æ¤âCVS¤ÈƱ¤¸¤è¤¦¤Ë¥ê¥Ý¥¸¥È¥ê¤«¤é¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¥Á¥§¥Ã ¥¯¥¢¥¦¥È¤·¡¢¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ç½¤Àµ¤·¤½¤ì¤ò¥ê¥Ý¥¸¥È¥ê¤Ë¥³¥ß¥Ã¥È¤·¤Æ¤¤¤¯ ¤È¤¤¤¦Áàºî¤¬´ðËܤǤ¹¡£CVS¤È¤Î°ã¤¤¤¬¸²Ãø¤ÊSubversion¤ÎÆÃħ¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¹¡£
Subversion¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤¿¤á¤Î°ìÈÖ´Êñ¤ÊÊýË¡¤Ï¥Ð¥¤¥Ê¥ê¥Ñ¥Ã¥±¡¼¥¸¤ò ÍøÍѤ¹¤ë¤³¤È¤Ç¤·¤ç¤¦¡£Debian¤Ç¤Ï unstable¤Ç¤Ïofficial package¤È¤·¤ÆÄó ¶¡¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
stable(woody)¤à¤±¤Ë¤Ï Colin Watson ([email protected]) ¤¬ unofficial apt-line¤òÄ󶡤·¤Æ¤¤¤ë¤Î¤Ç¤³¤ì¤òÍøÍѤ¹¤ë¤Î¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡£
deb http://people.debian.org/~cjwatson/subversion-woody ./
¤³¤ì¤é¤ò»È¤¨¤Ðapt-get¤ÇÉáÄ̤˥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹
$ apt-get install subversion subversion-tools
¤³¤ì¤Ç¼ç¤Ë°Ê²¼¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£
- subversion
- svn, svnversion, svnadmin, svnadmin-static, svnlook, svndumpfilter, svnserve
- subversion-tools
- cvs2svn, svn_load_dirs, svnshell
CVS¤Îcvs¥³¥Þ¥ó¥É¤ËÁêÅö¤¹¤ë¤Î¤¬¡¢svn¥³¥Þ¥ó¥É¤Ç¤¹¡£svn¥³¥Þ¥ó¥É¤âcvs¥³¥Þ¥ó¥É¤È Ʊ¤¸¤è¤¦¤Ë¥µ¥Ö¥³¥Þ¥ó¥É¤ò»ØÄꤷ¤ÆÍøÍѤ·¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ê¥µ¥Ö¥³¥Þ¥ó¥É¤¬¤¢¤ë¤« ¤Ï svn help ¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn help
¸Ä¡¹¤Î¥µ¥Ö¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¤Î¾Ü¤·¤¤ÀâÌÀ¤Ï¡Ösvn help ¥µ¥Ö¥³¥Þ¥ó¥É¡×¤Î¤è¤¦¤Ë ¤·¤Æ¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn help ls
http://subversion.tigris.org/project_source.html ¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¼ê½ç¤ÇÆþ¼ê¡¦¥Ó¥ë¥É¤·¤Þ¤¹¡£
Subversion¤ÏɬÍפȤ¹¤ë¥½¥Õ¥È¥¦¥§¥¢¤¬¤¿¤¯¤µ¤ó¤¢¤ë¤Î¤Ç¤½¤ì¤òÀè¤Ë½àÈ÷¤·¤Æ ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
Apache2 ¤Î APR (Apache Portable Runtime)¤ÈAPR Utility Apache 2.0.46 ¤« ¤½¤ì¤è¤ê¿·¤·¤¤¤â¤Î (WebDAV¤ò»È¤¦¾ì¹ç) autoconf 2.50 ¤«¤½¤ì¤è¤ê¿·¤·¤¤¤â¤Î libtool 1.4 ¤«¤½¤ì¤è¤ê¿·¤·¤¤¤â¤Î bison¤«yacc Neon ¥é¥¤¥Ö¥é¥ê (WebDAV¤Î¤¿¤á¤Î¥é¥¤¥Ö¥é¥ê) OpenSSL (SSL¤ò»È¤¦¾ì¹ç) zlib Berkeley DB 4.0.14 Python 2.0 ¤«¤½¤ì¤è¤ê¿·¤·¤¤¤â¤Î (ɬÍפʤé)
½àÈ÷¤¬¤Ç¤¤¿¤é´ðËÜŪ¤Ë¤Ï°Ê²¼¤Î¼ê½ç¤Ç¥Ó¥ë¥É¡¦¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
$ sh ./autogen.sh $ ./configure $ make # make install
cvs¤Ç¤Ïcvs init ¤Ç¥ê¥Ý¥¸¥È¥ê¤òºî¤ê¤Þ¤·¤¿¡£subversion¤Ç¤Ï svnadmin create¤Ç¥ê¥Ý¥¸¥È¥ê¤òºîÀ®¤·¤Þ¤¹¡£
¥³¥é¥à2 ¥ê¥Ý¥¸¥È¥ê¤òºî¤ëñ°Ì
¥ê¥Ý¥¸¥È¥ê¤Ï¤É¤ì¤¯¤é¤¤¤Îñ°Ì¤Ç¤Ä¤¯¤ë¤Î¤¬¤¤¤¤¤Î¤Ç¤·¤ç¤¦¤«? ¸½ºß¤Î¤È¤³¤íSubversion¤Ç¤Ï¥ê¥Ý¥¸¥È¥êÆâ¤Ç¤Î¥¢¥¯¥»¥¹¥³¥ó¥È¥í¡¼¥ë¤¬ ¤Ç¤¤Ê¤¤¤³¤È¤Ê¤É¤«¤é¡¢¥¢¥¯¥»¥¹¥³¥ó¥È¥í¡¼¥ë¤ò¤·¤Ê¤¯¤Æ¤è¤¤ ¥³¥ß¥Ã¥¿¡¼¤Î¥°¥ë¡¼¥×ñ°Ì¤Ëºî¤ë¤Î¤¬¤è¤¤¤È»×¤ï¤ì¤Þ¤¹¡£ CVS¤Ç¤âSourceForge¤Ê¤É¤Ç¤Ï¥×¥í¥¸¥§¥¯¥Èñ°Ì¤Ë¥ê¥Ý¥¸¥È¥ê¤¬ ºî¤é¤ì¤Æ¤¤¤ë¤è¤¦¤ËSubversion¤Ç¤â¥×¥í¥¸¥§¥¯¥Èñ°Ì¤Ë¥ê¥Ý¥¸¥È¥ê¤ò ºî¤ë¤Î¤¬¤è¤¤¤Ç¤·¤ç¤¦¡£
$ ls /path/to/cvsroot ls: /path/to/cvsroot: ¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤¢¤ê¤Þ¤»¤ó $ cvs -d /path/to/cvsroot init $ ls /path/to/cvsroot CVSROOT/ $
$ ls /path/to/svnrepos ls: /path/to/svnrepos: ¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤¢¤ê¤Þ¤»¤ó $ svnadmin create /path/to/svnrepos $ ls /path/to/svnrepos README.txt dav/ db/ format hooks/ locks/ $
¤É¤Á¤é¤â¶õ¤Î¥ê¥Ý¥¸¥È¥ê¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£CVS¤Î¾ì¹ç¤Ï¥ê¥Ý¥¸¥È¥ê¤Ç´ÉÍý¤µ¤ì ¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤¬¤½¤Î¤Þ¤Þ¥ê¥Ý¥¸¥È¥ê¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Î ¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£CVSROOT¤Ïcvs¤¬´ÉÍý¤Ë»È¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ç ¤¹¤¬¡¢¤½¤ì°Ê³°¤Ï¥ê¥Ý¥¸¥È¥ê¤Î´ÉÍý²¼¤Ë¤ª¤«¤ì¤Æ¤¤¤ë¤â¤Î¤¬´ðËÜŪ¤Ë¤½¤Î¤Þ¤Þ ÇÛÃÖ¤µ¤ì¤ë¤ï¤±¤Ç¤¹¡£
Subversion¤Ç¤Ï¡¢¥ê¥Ý¥¸¥È¥ê¤Ç´ÉÍý¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤Ï ¥ê¥Ý¥¸¥È¥ê¤Ç¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤ËľÀܤÏÈ¿±Ç¤·¤Æ¤¤¤Þ¤»¤ó¡£¤¹¤Ù¤Æ db/°Ê²¼¤Î ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÃæ¤ÇSubversionÆȼ«¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤È¤·¤Æ´ÉÍý¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Subversion¤Ç¤Ï¥ê¥Ý¥¸¥È¥ê¤ÎÃæ¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Î¥³¥Þ¥ó¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
$ svn ls file:///path/to/svnrepos $
¤³¤Î¤è¤¦¤ËSubversion¤Ç¤Ï¥ê¥Ý¥¸¥È¥ê¤ÏURL·Á¼°¤Ç»ØÄꤷ¤Þ¤¹¡£URL°Ê³°¤À¤È ¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ø¤Î¥Ñ¥¹¤À¤È¸«¤Ê¤µ¤ì¤Æ¤·¤Þ¤¦¤Î¤Çµ¤¤ò¤Ä¤±¤Æ¤¯¤À¤µ¤¤¡£
$ svn ls /path/to/svnrepos svn: Path is not a working copy directory svn: '/path/to/svnrepos' is not a working copy $
¸å½Ò¤·¤Þ¤¹¤¬¡¢Subversion¤Ç¤Ï¥Ö¥é¥ó¥Á/¥¿¥°¤Î½èÍý¤ò¥³¥Ô¡¼Áàºî¤Ç¤ª¤³¤Ê¤¤¤Þ¤¹¡£ ¤½¤Î¤¿¤á¡¢°Ê²¼¤Î¤è¤¦¤Ê¥Ç¥£¥ì¥¯¥È¥ê¤ò¤¢¤é¤«¤¸¤áºîÀ®¤·¤Æ¤ª¤¯¤è¤¦¤Ê´·½¬¤Ë ¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£(cvs2svn¤â¤³¤Î¤è¤¦¤ÊÇÛÃ֤ˤ·¤Þ¤¹)
trunk/- ³«È¯¤ò¤¹¤¹¤á¤Æ¤¤¤¯¤È¤³¤í CVS¤À¤ÈHEAD
branches/- ¥Ö¥é¥ó¥Á¤ò¤¤¤ì¤Æ¤ª¤¯¥Ç¥£¥ì¥¯¥È¥ê
tags/- ¥¿¥°¤ò¤¤¤ì¤Æ¤ª¤¯¥Ç¥£¥ì¥¯¥È¥ê
¥ê¥Ý¥¸¥È¥êÆâ¤Î¸ºß¤·¤Ê¤¤¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¤È°Ê²¼¤Î¤è¤¦¤Ê¥¨¥é¡¼¤Ë¤Ê¤Ã ¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
$ svn ls file:///path/to/svnrepos/trunk svn: Filesystem has no item svn: URL non-existent in that revision.
¤³¤ì¤é¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤Þ¤ººÇ½é¤Ë°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æºî¤Ã¤Æ¤ª¤¯¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£ ¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤ë¤Ë¤Ïmkdir¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ svn mkdir file:///path/to/svnrepos/trunk
¤¹¤ë¤È°Ê²¼¤Î¤è¤¦¤Ë¥¨¥Ç¥£¥¿¤¬¤¿¤Á¤¢¤¬¤ê¤Þ¤¹¡£
--This line, and those below, will be ignored-- A file:///path/to/svnrepos/trunk ~ ~ "svn-commit.tmp" 4L, 84C 1,0-1 Á´¤Æ
"--This line, and those below, will be ignored--"¤Þ¤Ç¤Ë ¥í¥°¥á¥Ã¥»¡¼¥¸¤ò ½ñ¤¤³¤ó¤Ç¥¨¥Ç¥£¥¿¤ò½ªÎ»¤·¤Þ¤¹¡£¤¹¤ë¤È¥Ç¥£¥ì¥¯¥È¥ê¤ÎºîÀ®¤¬¥³¥ß¥Ã¥È¤µ¤ì¤Þ¤¹¡£
Committed revision 1. $
¥í¥°¥á¥Ã¥»¡¼¥¸¤ò»ØÄꤹ¤ë»þ¤Ï -m ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn mkdir -m 'setup branches' file:///path/to/svnrepos/branches Committed revision 2. $ svn mkdir -m 'setup tags' file:///path/to/svnrepos/tags Committed revision 3. $
¤³¤ì¤Ç¥ê¥Ý¥¸¥È¥ê¤Ï°Ê²¼¤Î¤è¤¦¤ÊÆâÍƤˤʤê¤Þ¤¹
$ svn ls file:///path/to/svnrepos/ branches/ tags/ trunk/ $ svn ls file:///path/to/svnrepos/trunk $
°Ê²¼¤Î¤è¤¦¤Ê¥½¡¼¥¹¤¬¤¢¤ê¡¢¤³¤ì¤ò¥Ð¡¼¥¸¥ç¥ó´ÉÍý²¼¤Ë¤ª¤³¤¦¤È¤·¤Æ¤¤¤ë¤È¤· ¤Þ¤·¤ç¤¦¡£
$ ls hello Makefile hello.c
CVS¤Î¾ì¹ç¤Ï°Ê²¼¤Î¤è¤¦¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤·¤¿¡£
$ ls hello $ cd hello $ cvs -d /path/to/cvsroot import -m 'import hello' hello hello_1 hello_1_0 N hello/Makefile N hello/hello.c No conflicts created by this import $ ls /path/to/cvsroot CVSROOT/ hello/ $ ls /path/to/cvsroot/hello Makefile,v hello.c,v $
Subversion¤Ç¤Ï¼¡¤Î¤è¤¦¤Ëimport¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤¹¡£
$ ls hello $ svn import -m 'import hello' file:///path/to/svnrepos/trunk hello hello Adding hello/Makefile Adding hello/hello.c Committed revision 4. $
¤³¤ì¤Ï
¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡£
CVS¤Ç¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤ò¥¤¥ó¥Ý¡¼¥È¤·¤Þ¤·¤¿¤¬¡¢Subversion¤Ç¤Ï ¤³¤Î¤è¤¦¤Ë¥¤¥ó¥Ý¡¼¥È¤·¤è¤¦¤È¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£¡Ö.¡×¤Ç¥«¥ì ¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤¬¡¢¤³¤Î¾ì¹ç¥í¥°¥á¥Ã¥»¡¼¥¸ÍÑ¤Ë °ì»þŪ¤Ëºî¤é¤ì¤ë¥Õ¥¡¥¤¥ë¤â¥¤¥ó¥Ý¡¼¥È¤µ¤ì¤Æ¤·¤Þ¤¦¤Î¤Ç¤ä¤é¤Ê¤¤Êý¤¬¤è¤¤¤Ç ¤·¤ç¤¦¡£
¥¤¥ó¥Ý¡¼¥È¤·¤¿¤â¤Î¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn ls file:///path/to/svnrepos/trunk hello/ $ svn ls file:///path/to/svnrepos/trunk/hello Makefile hello.c $
¥³¥é¥à3 cvs2svn
´û¤ËCVS¤Ç´ÉÍý¤·¤Æ¤¤¿¤â¤Î¤òSubversion´ÉÍý¤Ë°Ü¹Ô¤¹¤ë¤¿¤á¤Î¥Ä¡¼¥ë¤È¤·¤Æ cvs2svn¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£CVS¥ê¥Ý¥¸¥È¥ê¤ÎÆâÍƤò¤è¤ß¤È¤Ã¤Ædump¥Õ¥¡¥¤ ¥ë¤òÀ¸À®¤·¤Æ¤½¤ì¤òsvnadmin load¤ÇSubversion¥ê¥Ý¥¸¥È¥ê¤Ë³ÊǼ¤·¤Æ¤¤¤¯¤È ¤¤¤¦½èÍý¤ò¤ª¤³¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£Ê£»¨¤ÊCVS¥ê¥Ý¥¸¥È¥ê¤À¤È¼ºÇÔ¤¹¤ë¤³¤È¤¬¤¢¤ë ¤è¤¦¤Ç¤¹¤¬¡¢´Êñ¤Ê¤â¤Î¤Ê¤é¤Ð¤³¤ì¤Ç¤¦¤Þ¤¯¤¤¤¯¤Ç¤·¤ç¤¦¡£
$ svnadmin create /path/to/svnrepos $ cvs2svn -n -s /path/to/svnrepos /path/to/cvsrepos # ³Îǧ $ cvs2svn -s /path/to/svnrepos /path/to/cvsrepos
CVS¤Î´ðËÜÁàºî¤Ï checkout ¤·¤Æ¤ª¤¤¤Æ ¥¢¥Ã¥×¥Ç¡¼¥È -> ½¤Àµ -> ¥³¥ß¥Ã¥È¤Î·«¤êÊÖ¤· ¤Ç¤·¤¿¡£Subversion¤Ç¤â´ðËܤϤۤÜƱ¤¸¤È¤Ê¤ê¤Þ¤¹¡£
CVS¤Ç¤Ï¥Á¥§¥Ã¥¯¥¢¥¦¥È¤Ï¥ê¥Ý¥¸¥È¥ê¤ò -d ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤Æ¤¤¤Þ¤·¤¿¡£
$ cd /path/to/cvswc $ cvs -d /path/to/cvsroot checkout hello cvs checkout: Updating hello U hello/Makefile U hello/hello.c $
Subversion¤Ç¤â¥Á¥§¥Ã¥¯¥¢¥¦¥È¤Ïcheckout¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£¤¿¤À¤·¡¢ ¥ê¥Ý¥¸¥È¥ê¤òURL¤Ç»ØÄꤷ¤Þ¤¹¡£¥ê¥Ý¥¸¥È¥ê¤Î¥Ñ¥¹Ì¾¤ÎºÇ¸å¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬ ¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤È¤·¤ÆºîÀ®¤µ¤ì¤Þ¤¹¡£
$ cd /path/to/svnwc $ svn checkout file:///path/to/svnrepos/trunk/hello A hello/hello.c A hello/Makefile Checked out revision 4. $
¤â¤·¥ê¥Ý¥¸¥È¥êURL¤ÎºÇ¸å¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤È°ã¤¦¥Ç¥£¥ì¥¯¥È¥ê̾¤Ç¥Á¥§¥Ã¥¯ ¥¢¥¦¥È¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê̾¤ò»ØÄꤷ¤Þ¤¹¡£
$ svn checkout file:///path/to/svnrepos/trunk/hello hello-tmp A hello-tmp/hello.c A hello-tmp/Makefile Checked out revision 4. $
°Ê²¼´ðËÜŪ¤Ë¡¢CVS¤Ç¤ÎÎã¤Ï¥Ç¥£¥ì¥¯¥È¥ê(/path/to/cvswc/hello)¤Ç Subversion¤Ç¤ÎÎã¤Ï¥Ç¥£¥ì¥¯¥È¥ê(/path/to/svnwc/hello)¤Ç¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤· ¤Æ¤¤¤ë¤â¤Î¤È¤·¤Þ¤¹¡£
¤µ¤Æ¡¢¤³¤³¤Ç¥Á¥§¥Ã¥¯¥¢¥¦¥È¤µ¤ì¤¿¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤ò´Êñ¤Ë¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£ CVS¤Ç¤Ï¡¢CVS¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£
$ ls CVS/ Makefile hello.c $ ls CVS Entries Repository Root $
¤É¤Î¥ê¥Ý¥¸¥È¥ê¤«¤é¥Á¥§¥Ã¥¯¥¢¥¦¥È¤·¤¿¤«¤ÏCVS¥Ç¥£¥ì¥¯¥È¥ê¤Î Repository¥Õ¥¡¥¤¥ë¤äRoot¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤ò¸«¤ì¤Ð¤ï¤«¤ê¤Þ¤·¤¿¡£
Subversion¤Ç¤Ï .svn¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ê¤ê¤Þ¤¹¡£
$ ls Makefile hello.c $ ls -a ./ ../ .svn/ Makefile hello.c $ ls .svn README.txt entries prop-base/ text-base/ wcprops/ empty-file format props/ tmp/ $
¤É¤Î¥ê¥Ý¥¸¥È¥ê¤«¤é¥Á¥§¥Ã¥¯¥¢¥¦¥È¤·¤¿¤«¤Ïinfo¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤ï¤«¤ê¤Þ¤¹¡£
$ svn info Path: Url: file:///path/to/svnrepos/trunk/hello Repository UUID: 1e0c500f-25c0-0310-91ba-92d4cfa6a45a Revision: 4 Node Kind: directory Schedule: normal Last Changed Author: ukai Last Changed Rev: 4 Last Changed Date: 2003-06-16 01:08:31 +0900 (Mon, 16 Jun 2003) $
Subversion¤Ç¤Ï¡¢¥ê¥Ý¥¸¥È¥ê¤È¥ï¡¼¥¥ó¥°¥³¥Ô¡¼´Ö¤Ï¤É¤Á¤é¤â¤Ç¤¤ë¤À¤±º¹Ê¬ ¤Ç¤ä¤ê¤È¤ê¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤½¤Î¤¿¤á¥ï¡¼¥¥ó¥°¥³¥Ô¡¼Â¦¤Ë¤ÏÊÔ½¸ÍÑ ¤Ëºî¤é¤ì¤ë¥Õ¥¡¥¤¥ë¤È.svn°Ê²¼¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¥ê¥Ý¥¸¥È¥ê¤«¤é¥Á¥§¥Ã¥¯¥¢¥¦ ¥È/¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿»þ¤Î¥Õ¥¡¥¤¥ë¤Î2¼ïÎब³ÊǼ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤½¤Î¤¿¤á¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¤Ï¡¢CVS¤È°ã¤¤¡¢Ã±¤Ë¥ê¥Ý¥¸¥È¥ê¤«¤é¤È¤ê¤À¤·¤¿ ʬ¤Î2ÇܤÎÎ̤¬É¬ÍפȤʤäƤ¤¤Þ¤¤¤Þ¤¹¡£¥Í¥Ã¥È¥ï¡¼¥¯¤ÇµðÂç¤Ê¥Õ¥¡¥¤¥ë¤ò¤ä ¤ê¤È¤ê¤¹¤ë¥³¥¹¥È¤Ë¤¯¤é¤Ù¤Æ¡¢¥Ç¥£¥¹¥¯¤Î¥³¥¹¥È¤ÎÊý¤¬°Â¤¤¤È¤¤¤¦È½ÃǤǤ³¤Î ¤è¤¦¤ËÀ߷פµ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¹¡£
CVS¤âSubversion¤â¥¢¥Ã¥×¥Ç¡¼¥È¤ÏƱ¤¸¤¯update¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ cvs update cvs update: Updating . $
$ svn update At revision 4. $
¼¡¤Ë¥Õ¥¡¥¤¥ë¤ò½¤Àµ¤·¤Æ¥³¥ß¥Ã¥È¤¹¤ë¤Þ¤Ç¤òÀâÌÀ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£ hello.c ¤òÊѹ¹¤·¤Æ¥³¥ß¥Ã¥È¤¹¤ë¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤Þ¤º¼ê¸µ¤Ç½¤Àµ¤·¤¿Ê¬¤Îº¹Ê¬¤ò³Îǧ¤¹¤ë¤Ù¤¤Ç¤·¤ç¤¦¡£ º¹Ê¬¤ò¸«¤ë¤Ë¤Ïdiff¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ cvs diff cvs diff: Diffing . Index: hello.c =================================================================== RCS file: /path/to/cvsroot/hello/hello.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 hello.c --- hello.c 15 Jun 2003 16:06:38 -0000 1.1.1.1 +++ hello.c 15 Jun 2003 16:36:35 -0000 @@ -4,4 +4,5 @@ main(int argc, char *argv[]) { printf("hello, world\n"); + exit(0); }
$ svn diff Index: hello.c =================================================================== --- hello.c (revision 4) +++ hello.c (working copy) @@ -4,4 +4,5 @@ main(int argc, char *argv[]) { printf("hello, world\n"); + exit(0); }
¤É¤Î¥Õ¥¡¥¤¥ë¤¬¹¹¿·¤µ¤ì¤Æ¤¤¤ë¤«¤ÏCVS¤Ç¤Ïupdate¥µ¥Ö¥³¥Þ¥ó¥É¤ò »È¤Ã¤Æ³Îǧ¤·¤Þ¤·¤¿¡£
$ cvs update cvs update: Updating . M hello.c $
Subversion¤Ç¤Ïupdate¥µ¥Ö¥³¥Þ¥ó¥É¤Ï¥ê¥Ý¥¸¥È¥ê¤«¤é¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ø¤Î¹¹ ¿·¤Î¤¿¤á¤Î¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤¢¤ê¡¢¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ç¤Ê¤Ë¤ò½¤Àµ¤·¤¿¤«¤ò¸«¤ë¤Ë¤Ï status¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ svn update At revision 4. $ svn status M hello.c $
´û¤ËÀâÌÀ¤·¤¿Ä̤ꡢSubversion¤Ç¤Ï¥í¡¼¥«¥ë¤Ë¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿ÈǤâ.svn°Ê²¼ ¤Ë»ý¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¤É¤ì¤¬½¤Àµ¤µ¤ì¤¿¤«¤ò¸«¤ëstatus¥µ¥Ö¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤Ë ¤Ï¥ê¥Ý¥¸¥È¥ê¤Ø¤Î¥¢¥¯¥»¥¹¤òɬÍפȤ·¤Þ¤»¤ó¡£
CVS¤Ç¤Ïcommit¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¥³¥ß¥Ã¥È¤·¤Þ¤·¤¿¡£
$ cvs commit -m 'add exit' hello.c Checking in hello.c; /path/to/cvsroot/hello/hello.c,v <-- hello.c new revision: 1.2; previous revision: 1.1 done $
¤³¤ì¤Ç hello.c ¤Î¥ê¥Ó¥¸¥ç¥ó¤¬ 1.1 ¤«¤é 1.2 ¤Ë¤¢¤¬¤ê¤Þ¤¹¡£
Subversion¤Ç¤âcommit¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¥³¥ß¥Ã¥È¤·¤Þ¤¹¡£
$ svn commit -m 'add exit' hello.c Sending hello.c Transmitting file data . Committed revision 5. $
¤³¤ì¤Ç ½¤Àµ¤µ¤ì¤¿hello.c¤ò´Þ¤à¥ê¥Ý¥¸¥È¥ê¤Î¥Ð¡¼¥¸¥ç¥ó¤¬5¤Ë¤Ê¤ê¤Þ¤¹¡£ status¥³¥Þ¥ó¥É¤Î-u ¥ª¥×¥·¥ç¥ó¤ä-v¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¤É¤Î¥ê¥Ó¥¸¥ç¥ó¤Ç ºÇ¸å¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤ë¤Î¤«¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn status -u -v 4 4 ukai . 4 4 ukai Makefile 5 5 ukai hello.c Head revision: 5 $
ºÇ½é¤Î¿ô»ú¤¬¤É¤Î¥ê¥Ó¥¸¥ç¥ó¤Ç¥Á¥§¥Ã¥¯¥¢¥¦¥È/¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿¤«¤ò ¤¢¤é¤ï¤·¤Æ¤¤¤Þ¤¹¡£¼¡¤Î¿ô»ú¤¬ºÇ¸å¤Ë¥³¥ß¥Ã¥È¤µ¤ì¤¿¤Î¤¬¤É¤Î¥ê¥Ó¥¸¥ç¥ó¤«¤ò ¤¢¤é¤ï¤·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê(.)¤ÈMakefile¤Ï¥ê¥Ý¥¸¥È¥ê¤Ë ¥³¥ß¥Ã¥È¤·¤¿»þ¤Î¥ê¥Ó¥¸¥ç¥ó 4¡¢hello.c ¤ÏºÇ¸å¤Ë¥³¥ß¥Ã¥È¤·¤¿¥ê¥Ó¥¸¥ç¥ó 5¤Ç ¤¢¤ë¤È¤¤¤¦°ÕÌ£¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤³¤Ç¥¢¥Ã¥×¥Ç¡¼¥È¤·¤ß¤Æ¤ë¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£Makefile¤â¥¢¥Ã¥×¥Ç¡¼¥È ¤µ¤ì¤Æ¡¢¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿»þ¤Î¥ê¥Ó¥¸¥ç¥ó¤Ï 5¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢¤³¤ì¤¬ºÇ¸å¤Ë¥³ ¥ß¥Ã¥È¤µ¤ì¤¿¤Î¤Ï¥ê¥Ó¥¸¥ç¥ó4¤Î»þ¤Ç¤¢¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£
$ svn update At revision 5. $ svn status -u -v 5 5 ukai . 5 4 ukai Makefile 5 5 ukai hello.c Head revision: 5 $
¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤Ç¤¦¤ì¤·¤¤¤³¤È¤Î¤Ò¤È¤Ä¤Ï²áµî¤ÎÊѹ¹ÍúÎò¤ò¸«¤ë¤³¤È ¤¬¤Ç¤¤ë¤³¤È¤Ç¤·¤ç¤¦¡£CVS¤Ç¤âSubversion¤Ç¤âlog¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ cvs log hello.c RCS file: /path/to/cvsroot/hello/hello.c,v Working file: hello.c head: 1.2 branch: locks: strict access list: symbolic names: hello_1_0: 1.1.1.1 hello_1: 1.1.1 keyword substitution: kv total revisions: 3; selected revisions: 3 description: ---------------------------- revision 1.2 date: 2003/06/15 16:48:02; author: ukai; state: Exp; lines: +1 -0 add exit ---------------------------- revision 1.1 date: 2003/06/15 16:06:38; author: ukai; state: Exp; branches: 1.1.1; Initial revision ---------------------------- revision 1.1.1.1 date: 2003/06/15 16:06:38; author: ukai; state: Exp; lines: +0 -0 import hello ============================================================================= $
$ svn log hello.c ------------------------------------------------------------------------ rev 5: ukai | 2003-06-16 01:50:22 +0900 (Mon, 16 Jun 2003) | 1 line add exit ------------------------------------------------------------------------ rev 4: ukai | 2003-06-16 01:08:31 +0900 (Mon, 16 Jun 2003) | 1 line import hello ------------------------------------------------------------------------ $
Ê£¿ô¤ÇƱ¤¸¥Õ¥¡¥¤¥ë¤òÊÔ½¸¤·¤¿¾ì¹ç¡¢CVS¤âSubversion¤â¤Ç¤¤ë¤«¤®¤ê¥Þ¡¼¥¸ ¤·¤è¤¦¤È¤·¤Þ¤¹¡£¤½¤ì¤¾¤ì¤ÎÊѹ¹²Õ½ê¤¬½Å¤Ê¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤½¤ì¤é¤ÎÊѹ¹¤¬ ¤¹¤Ù¤ÆÈ¿±Ç¤µ¤ì¤Þ¤¹¡£¤·¤«¤·Êѹ¹²Õ½ê¤¬½Å¤Ê¤Ã¤Æ¤½¤ÎÊѹ¹¤Î»ÅÊý¤¬°ã¤¦¾ì¹ç¤Ë ¶¥¹ç(conflict)¤È¤Ê¤ê¤Þ¤¹¡£
CVS¤Ç¤Ï¶¥¹ç¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
$ cvs update cvs update: Updating . RCS file: /path/to/cvsroot/hello/hello.c,v retrieving revision 1.2 retrieving revision 1.3 Merging differences between 1.2 and 1.3 into hello.c rcsmerge: warning: conflicts during merge cvs update: conflicts found in hello.c C hello.c $ cat hello.c #includeint main(int argc, char *argv[]) { <<<<<<< hello.c printf("hello, world!!\n"); ======= printf("hello, world!\n"); >>>>>>> 1.3 exit(0); } $
¤³¤Î¤è¤¦¤Ë cvs update¤ò¤·¤¿»þ¤Ë¡ÖC¡×¤Çɽ¼¨¤µ¤ì¡¢ ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¥³¥ó¥Õ¥ê ¥¯¥È¥Þ¡¼¥¯¤¬ÁÞÆþ¤µ¤ì¤Þ¤¹¡£ ¡Ö<<<<<<<¡×¤«¤é ¡Ö=======¡×¤Þ¤Ç¤¬¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤ÇÊÔ½¸¤·¤Æ¤¤¤¿ÆâÍÆ¡¢ ¡Ö=======¡×¤«¤é ¡Ö>>>>>>>¡×¤Þ¤Ç¤¬¥ê¥Ý¥¸¥È¥ê¤Ç ¹¹¿·¤µ¤ì¤Æ¤¤¤¿ÆâÍƤǤ¹¡£
¤·¤¿¤¬¤Ã¤Æ¡Ö=======¡×¤è¤ê¾å¤ÎÉôʬ¤ò͸ú¤Ë¤¹¤ì¤Ð¼ê¸µ¤ÎÊѹ¹¤ò ͸ú¤Ë¤·¤Æ¥³¥ß¥Ã¥È¤¹¤ë¤³¤È¤Ë¤Ê¤ê¡¢¡Ö=======¡×¤è¤ê²¼¤ÎÉôʬ¤ò͸ú¤Ë ¤¹¤ì¤Ð¥ê¥Ý¥¸¥È¥ê¤ÎÆâÍƤò͸ú¤Ë¤·¤ÆºÇ¿·ÈǤËÈ¿±Ç¤·¤¿¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤É¤Á¤é¤«¤òÁª¤ÖɬÍפâ¤Ê¤¯¡¢¤½¤ÎÉôʬ¤ò¿·¤¿¤Ë½ñ¤¤Ê¤ª¤·¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ ¤³¤³¤Ç¤Ï¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤Æ¥³¥ß¥Ã¥È¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
$ cat hello.c #includeint main(int argc, char *argv[]) { printf("Hello, world!\n"); exit(0); } $ cvs update cvs update: Updating . M hello.c $ cvs commit -m 'capitalize' hello.c Checking in hello.c; /path/to/cvsroot/hello/hello.c,v <-- hello.c new revision: 1.4; previous revision: 1.3 done
Subversion¤Î¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
$ svn update C hello.c Updated to revision 6. $
CVS¤ÈƱ¤¸¤è¤¦¤ËSubversion¤Ç¤â¡ÖC¡×¤Ç¶¥¹ç(Conflict)¤ò ¤¢¤é¤ï¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î»þ¡¢¶¥¹ç¤Î¸µ¤Ë¤Ê¤Ã¤¿¥Õ¥¡¥¤¥ë¤âºîÀ®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
$ ls Makefile hello.c hello.c.mine hello.c.r5 hello.c.r6 $ svn status -u -v 6 6 ukai . 6 4 ukai Makefile C 6 6 ukai hello.c ? hello.c.mine ? hello.c.r5 ? hello.c.r6 Head revision: 6 $ cat hello.c #includeint main(int argc, char *argv[]) { <<<<<<< .mine printf("hello, world!!\n"); ======= printf("hello, world!\n"); >>>>>>> .r6 exit(0); } $
¡ÖC¡×¤¬¤Ä¤¤¤Æ¤¤¤ë¤Î¤¬¶¥¹ç¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ç¤¹¡£ ¡Ö?¡×¤¬¤Ä¤¤¤Æ¤¤¤ë¤Î¤Ï¥ê¥Ý¥¸¥È¥ê¤Ë¤Ï¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ç¤¹¡£
¤³¤ÎÎã¤Ç¤Ï¡¢¥ê¥Ó¥¸¥ç¥ó5¤¬ÊÔ½¸Á°¤Ë¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿»þ¤Î¥ê¥Ó¥¸¥ç¥ó¤Ç¡¢ ¥ê¥Ó¥¸¥ç¥ó6¤¬¥¢¥Ã¥×¥Ç¡¼¥È¤Ç¹¹¿·¤·¤è¤¦¤È¤·¤¿¥ê¥Ó¥¸¥ç¥ó¡¢¤Ä¤Þ¤ê ¥ê¥Ý¥¸¥È¥ê¤ÎºÇ¿·¤Î¥ê¥Ó¥¸¥ç¥ó¤Ç¤¹¡£
- hello.c
- ¥Þ¡¼¥¸¤·¤Æ¥³¥ó¥Õ¥ê¥¯¥È¥Þ¡¼¥¯¤¬¤Ï¤¤¤Ã¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¡£CVS¤Î¾ì¹ç¤ÈƱ¤¸
- hello.c.mine
- svn update¤¹¤ëÁ°¤Î¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Î¥Õ¥¡¥¤¥ë
- hello.c.r5
- hello.c.mine¤òÊѹ¹¤¹¤ë¸µ¤Ë¤Ê¤Ã¤¿¥ê¥Ó¥¸¥ç¥ó¤ÎÆâÍÆ
- hello.c.r6
- ¥ê¥Ý¥¸¥È¥ê¤Ë¤¢¤ëÆâÍÆ
¿Þ1 ¥³¥ó¥Õ¥ê¥¯¥È»þ¤Î´Ø·¸
狼¤¬¥³¥ß¥Ã¥È ---- hello.c.r5 ----> hello.c.r6 ¥ê¥Ý¥¸¥È¥ê¤Ç¤ÎÊѹ¹ ¥Á¥§¥Ã¥¯¥¢¥¦¥È| | ¥¢¥Ã¥×¥Ç¡¼¥È | | | | v v hello.c.mine ---------> hello.c ¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ç¤ÎÊѹ¹ ¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿·ë²Ì(¥³¥ó¥Õ¥ê¥¯¥È)
¥³¥ó¥Õ¥ê¥¯¥È¥Þ¡¼¥¯¤Ï CVS¤Î»þ¤ÈƱ¤¸¤¯ ¡Ö<<<<<<<¡×¤«¤é ¡Ö=======¡×¤Þ¤Ç¤¬¼ê¸µ¤Ç²Ã¤¨¤Æ¤¤¤¿Êѹ¹¡¢ ¡Ö=======¡×¤«¤é ¡Ö>>>>>>>¡×¤Þ¤Ç¤¬¥ê¥Ý¥¸¥È¥ê¤Ç²Ã¤¨¤é ¤ì¤Æ¤¤¤¿Êѹ¹¤Ç¤¹¡£
¥³¥ó¥Õ¥ê¥¯¥È¤ò²ò¾Ã¤¹¤ë¤¿¤á¤Ë¡¢¤³¤³¤ÇɬÍפÊÊѹ¹¤òhello.c¤Ë²Ã¤¨¤Þ¤¹¡£¼« ʬ¤ÎÊѹ¹¤·¤¿½¤Àµ¤Ë¤¹¤ë¾ì¹ç¤Ïhello.c.mine ¤ò hello.c ¤Ë¥³¥Ô¡¼¤¹¤ì¤Ð¤¤¤¤ ¤Ç¤·¤ç¤¦¡£¥ê¥Ý¥¸¥È¥ê¤ÎºÇ¿·ÈǤˤ¢¤ï¤»¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Î¾ì¹ç hello.c.r6 ¤ò hello.c ¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£
¤³¤³¤Ç¤Ï¡¢CVS¤ÎÎã¤ÈƱ¤¸¤è¤¦¤ÊÊѹ¹¤òhello.c¤Ë¤Û¤É¤³¤¹¤³¤È¤Ë¤·¤Þ¤·¤ç¤¦¡£
$ cat hello.c #includeint main(int argc, char *argv[]) { printf("Hello, world!\n"); exit(0); } $ svn status -u -v hello.c C 6 6 ukai hello.c Head revision: 6 $
CVS¤Î»þ¤È°ã¤Ã¤Æ¶¥¹ç¤ò²ò¾Ã¤¹¤ë¤Ë¤Ïresolve¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£ resolve¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¦¤³¤È¤Ç¶¥¹ç¾õÂÖ¤¬²ò¾Ã¤µ¤ì¡¢¥³¥ó¥Õ¥ê¥¯¥È»þ¤Ë ºîÀ®¤µ¤ì¤¿ .mime, .r<¥ê¥Ó¥¸¥ç¥ó>¥Õ¥¡¥¤¥ë¤¬ºï½ü¤µ¤ì¤Þ¤¹¡£
$ svn resolve hello.c Resolved conflicted state of hello.c $ svn status -u -v hello.c M 6 6 ukai hello.c Head revision: 6 $ ls Makefile hello.c $
¤³¤Î¤è¤¦¤Ë C(¶¥¹ç)¤«¤é M(¼ê¸µ¤Ç½¤Àµ¤µ¤ì¤Æ¤¤¤ë) ¤Ë¤«¤ï¤ê¤Þ¤¹¡£¤³¤Î½¤Àµ¤ò¥³¥ß¥Ã¥È¤·¤Þ¤¹¡£
$ svn commit -m 'capitalize' hello.c Sending hello.c Transmitting file data . Committed revision 7. $
¥ê¥Ý¥¸¥È¥ê¤Ë²Ã¤¨¤é¤ì¤¿Êѹ¹¤ò¸µ¤ËÌᤷ¤¿¤¤»þ¤¬¤¢¤ê¤Þ¤¹¡£¤â¤Á¤í¤ó¾¤Î³«È¯ ¼Ô¤¬¤ª¤³¤Ê¤Ã¤¿Êѹ¹¤ò²¿¤â¤¤¤ï¤º¤Ë¾¡¼ê¤Ë¸µ¤ËÌ᤹¤Î¤Ï¤è¤¤¤³¤È¤È¤Ï¸À¤¨¤Þ¤» ¤ó¡£¤·¤«¤·¡¢¼«Ê¬¤¬´Ö°ã¤Ã¤¿½¤Àµ¤ò¥³¥ß¥Ã¥È¤·¤Æ¤·¤Þ¤Ã¤Æ¤½¤ì¤òÌᤷ¤¿¤¤»þ¤â ¤¢¤ê¤Þ¤¹¤·¡¢µÄÏÀ¤·¤¿·ë²Ì¤ä¤Ï¤êÌ᤽¤¦¤È¤¤¤¦Ïäˤʤ뤳¤È¤â¤¢¤ê¤Þ¤¹¡£¤½¤Î ¤è¤¦¤Ê»þ¤Ë¤É¤¦¤¹¤ë¤Î¤¬¤¤¤¤¤Î¤«¤òÀâÌÀ¤·¤Þ¤¹¡£
CVS¤Ç¤Ï´ö¤Ä¤«ÊýË¡¤¬¤¢¤ê¤Þ¤¹¤¬¡¢´Êñ¤ÊÊýË¡¤Î°ì¤Ä¤Ïupdate¤Î-p¥ª¥×¥·¥ç¥ó¤ò »È¤¦¤³¤È¤Ç¤¹¡£Ìᤷ¤¿¤¤¥ê¥Ó¥¸¥ç¥ó¤ò -r ¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤Þ¤¹¡£ ¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤Ð hello.c¤ò¥ê¥Ó¥¸¥ç¥ó1.3¤ÎÆâÍƤËÌ᤻¤Þ¤¹¡£
$ cvs -Q update -p -r 1.3 hello.c > hello.c $ cvs update cvs update: Updating . M hello.c $ cvs commit -m 'reverted to 1.3' hello.c Checking in hello.c; /path/to/cvsroot/hello/hello.c,v <-- hello.c new revision: 1.5; previous revision: 1.4 done $
¤â¤·¤¯¤Ïcvs update¤Ç¥Þ¡¼¥¸¤¹¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£¥ê¥Ó¥¸¥ç¥ó1.5¤ò¥ê¥Ó¥¸¥ç¥ó1.4¤Ë Ì᤹¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
$ cvs update -j 1.5 -j 1.4 hello.c RCS file: /path/to/cvsroot/hello/hello.c,v retrieving revision 1.5 retrieving revision 1.4 Merging differences between 1.5 and 1.4 into hello.c $ cvs commit -m 'reverted to 1.4' hello.c Checking in hello.c; /path/to/cvsroot/hello/hello.c,v <-- hello.c new revision: 1.6; previous revision: 1.5 done $
Subversion¤Ç¤Ï update ¤Î -p¥ª¥×¥·¥ç¥ó¤Î¤«¤ï¤ê¤Ëcat¥µ¥Ö¥³¥Þ¥ó¥É¤¬»È¤¨¤Þ¤¹¡£
$ svn cat -r6 hello.c
update¥µ¥Ö¥³¥Þ¥ó¥É¤ò¤½¤Î¤Þ¤Þ»È¤¦¤È¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
$ svn update -r6 hello.c U hello.c Updated to revision 6. $ svn status -u -v hello.c * 6 6 ukai hello.c Head revision: 7 $
¤³¤³¤Ç¡Ö*¡×¤Ï¥ê¥Ý¥¸¥È¥ê¤Ë¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¤È¤ê¤À¤·¤¿¤â¤Î¤è¤ê ¿·¤·¤¤¥ê¥Ó¥¸¥ç¥ó¤¬¤¢¤ë¤³¤È¤ò¤¢¤é¤ï¤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ç¤Ï½¤Àµ¤Ë¤Ï¤Ê¤é¤Ê¤¤¤Î¤Ç ¥³¥ß¥Ã¥È¤Ï¤Ç¤¤Þ¤»¤ó¡£
¤½¤³¤Ç¡¢CVS¤Î»þ¤ÈƱ¤¸¤è¤¦¤Ë¥Þ¡¼¥¸¤·¤Þ¤¹¡£Subversion¤Ç¤Ï update¤Ç¤Ï¤Ê¤¯merge¤È¤¤¤¦¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ svn update hello.c U hello.c Updated to revision 7 $ svn merge -r 7:6 hello.c U hello.c $ svn status -u -v 7 7 ukai . 7 4 ukai Makefile M 7 7 ukai hello.c Head revision: 7 $
¤³¤ì¤Ç hello.c¤Ë¥ê¥Ó¥¸¥ç¥ó7¤«¤é¥ê¥Ó¥¸¥ç¥ó6¤Ë²Ã¤¨¤é¤ì¤¿Êѹ¹¤¬¥ï¡¼¥¥ó¥° ¥³¥Ô¡¼¤Îhello.c¤Ë¤Û¤É¤³¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¥ê¥Ó¥¸¥ç¥ó6¤«¤é¥ê¥Ó¥¸¥ç¥ó7¤Ë²Ã ¤¨¤é¤ì¤¿Êѹ¹¤òµÕ¤Ë¤¢¤Æ¤ë¡¢¤Ä¤Þ¤ê¥ê¥Ó¥¸¥ç¥ó7¤«¤é¥ê¥Ó¥¸¥ç¥ó6¤ËÌ᤹¤È¤¤¤¦ ¤³¤È¤Ç¤¹¡£¤³¤ì¤ò¥³¥ß¥Ã¥È¤¹¤ì¤Ð¥ê¥Ó¥¸¥ç¥ó6¤Î»þ¤Îhello.c¤ÎÆâÍƤËÌ᤹¤³¤È ¤¬¤Ç¤¤Þ¤¹¡£
$ svn commit -m 'reverted to 6' hello.c Sending hello.c Transmitting file data . Committed revision 8. $
¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Çºî¶È¤·¤Æ¤¤¤¿ÆâÍƤò¥³¥ß¥Ã¥È¤»¤º¤Ë ¥ê¥Ý¥¸¥È¥ê¤«¤é¤È¤ê¤À¤·¤¿»þ¤Î¾õÂÖ¤ËÌᤷ¤¿¤¤¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£
CVS¤Ç¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤ò¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤«¤éºï½ü¤·¤Æ¥¢¥Ã¥×¥Ç¡¼¥È¤·¤¿¤ê ¤·¤Æ¤¤¤Þ¤·¤¿¡£
$ cvs update cvs update: Updating . M hello.c $ rm hello.c $ cvs update cvs update: Updating . cvs update: warning: hello.c was lost U hello.c $
Subversion¤Ç¤Ï revert¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¨¤Ð¡¢ºÇ¸å¤Ë¥¢¥Ã¥×¥Ç¡¼¥È¤â¤·¤¯¤Ï ¥³¥ß¥Ã¥È¤·¤¿»þ¤ÎÆâÍƤ˥¥¥ó¥°¥³¥Ô¡¼¤òÌ᤹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn status -uv 7 7 ukai . 7 4 ukai Makefile M 8 8 ukai hello.c Head revision: 8 $ svn revert hello.c Reverted hello.c $ svn status -uv 7 7 ukai . 7 4 ukai Makefile 8 8 ukai hello.c Head revision: 8 $
¥Õ¥¡¥¤¥ë¤òÄɲ乤ë»þ¤Ï add ¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ cvs update cvs update: Updating . ? README $ cvs add README cvs add: scheduling file `README' for addition cvs add: use 'cvs commit' to add this file permanently $ cvs commit -m 'add README' README RCS file: /path/to/cvsroot/hello/README,v done Checking in README; /path/to/cvsroot/hello/README,v <-- README initial revision: 1.1 done $
Subversion¤Ç¤âƱ¤¸¤¯add¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ svn status -uv 7 7 ukai . 7 4 ukai Makefile ? README 8 8 ukai hello.c Head revision: 8 $
¥³¥ó¥Õ¥ê¥¯¥È¤Î»þ¤ËÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢¥ê¥Ý¥¸¥È¥ê¤Ë¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ï ¡Ö?¡×¤Î¥Þ¡¼¥¯¤¬¤Ä¤¤Þ¤¹¡£add¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤½¤Î¥Õ¥¡¥¤¥ë¤ò Äɲ乤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
$ svn add README A README $ svn status -uv 7 7 ukai . 7 4 ukai Makefile A 0 ? ? README 8 8 ukai hello.c Head revision: 8 $
¤³¤Î¤è¤¦¤ËÄɲ乤ëͽÄê¤Î¤â¤Î¤Ë¡ÖA¡×¤Î¥Þ¡¼¥¯¤¬¤Ä¤¤Þ¤¹¡£ ¼ÂºÝ¤Ë¤³¤ì¤ò¥ê¥Ý¥¸¥È¥ê¤ËÄɲ乤ë¤Ë¤Ï¥³¥ß¥Ã¥È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
$ svn commit -m 'add README' README Adding README Transmitting file data . Committed revision 9. $ svn status -uv 7 7 ukai . 7 4 ukai Makefile 9 9 ukai README 8 8 ukai hello.c Head revision: 9 $
¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲ乤ë¾ì¹ç¡¢CVS¤Ç¤Ïmkdir¤·¤Æadd¥µ¥Ö¥³¥Þ¥ó¥É¤ÇÄɲä·¤Æ ¤¤¤Þ¤·¤¿¡£CVS¤Ç¤Ï¥Õ¥¡¥¤¥ë¤Î»þ¤È°ã¤Ã¤Æ¥³¥ß¥Ã¥È¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£
$ mkdir doc $ cvs add doc Directory /path/to/cvsroot/hello/doc added to the repository $
Subversion¤Î¾ì¹ç¤Ïmkdir¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ svn mkdir doc A doc $ svn status -uv 7 7 ukai . 7 4 ukai Makefile 9 9 ukai README A 0 ? ? doc 8 8 ukai hello.c Head revision: 9 $
CVS¤È¤Ï°ã¤Ã¤Æ¤³¤Î¤Þ¤Þ¤Ç¤Ï¥ê¥Ý¥¸¥È¥ê¤Ë¤ÏÈ¿±Ç¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¥Õ¥¡¥¤¥ë¤Î »þ¤ÈƱÍÍ¥³¥ß¥Ã¥È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
$ svn commit -m 'mkdir doc' doc Adding doc Committed revision 10. $
mkdir¥µ¥Ö¥³¥Þ¥ó¥É¤Çºî¤ë¤«¤ï¤ê¤Ë¡¢mkdir¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤òadd¥µ¥Ö¥³¥Þ¥ó¥É¤Ç Äɲ䷤ƥ³¥ß¥Ã¥È¤¹¤ëÊýË¡¤â¤¢¤ê¤Þ¤¹¡£
$ mkdir subdir $ svn status -uv 7 7 ukai . 7 4 ukai Makefile 9 9 ukai README 10 10 ukai doc 8 8 ukai hello.c ? subdir Head revision: 10 $ svn add subdir A subdir $ svn commit -m 'newdir subdir' subdir Adding subdir Committed revision 11. $
¥Õ¥¡¥¤¥ë¤òºï½ü¤¹¤ë¤Ë¤Ïdelete¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
$ cvs delete -f README cvs remove: scheduling `README' for removal cvs remove: use 'cvs commit' to remove this file permanently $ cvs commit -m 'delete README' README Removing README; /path/to/cvsroot/hello/README,v <-- README new revision: delete; previous revision: 1.1 done $
Subversion¤Ç¤âdelete¥µ¥Ö¥³¥Þ¥ó¥É¤Çºï½ü¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn delete README D README $ ls Makefile doc/ hello.c subdir $
¤³¤Î¤è¤¦¤Ë svn delete ¤·¤¿»þÅÀ¤Ç¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤«¤é¤Ï´û¤Ëºï½ü¤µ¤ì¤Æ¤¤ ¤Þ¤¹¡£¤·¤«¤·¤³¤Î»þÅÀ¤Ç¤Ï¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Çºï½ü¤¹¤ë¤È¤¤¤¦¥Þ¡¼¥¯¤¬¤Ä¤¤¤Æ ¤¤¤ë¤À¤±¤Ç¥ê¥Ý¥¸¥È¥ê¤Ë¤Ï¤Þ¤ÀÈ¿±Ç¤·¤Æ¤¤¤Þ¤»¤ó¡£status¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤ß¤ë ¤È¼¡¤Î¤è¤¦¤Ë¡ÖD¡×¤¬¤Ä¤¤¤Æ¤¤¤Þ¤¹¡£
$ svn status -uv 7 7 ukai . 7 4 ukai Makefile D 9 9 ukai README 10 10 ukai doc 8 8 ukai hello.c 11 11 ukai subdir Head revision: 11 $
¤³¤ì¤ò¥ê¥Ý¥¸¥È¥ê¤ËÈ¿±Ç¤µ¤»¤ë¤Ë¤Ï¤ä¤Ï¤ê¥³¥ß¥Ã¥È¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
$ svn commit -m 'delete README' README Deleting README Committed revision 12. $
CVS¤Ç¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤òºï½ü¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤Ç¤¤ë¤³¤È¤Ï¶õ¥Ç¥£¥ì¥¯¥È¥ê¤ò ¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ç¤ÏºîÀ®¤·¤Ê¤¤/ºï½ü¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤À¤±¤Ç¤·¤¿¡£
$ cvs update -dP cvs update: Updating . cvs update: Updating doc cvs update: Updating subdir $ ls CVS/ Makefile hello.c $
¤³¤Î¤è¤¦¤Ë¶õ¥Ç¥£¥ì¥¯¥È¥ê¤Ïºï½ü¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¤³¤Î¾õÂ֤Ǥâ¥ê¥Ý¥¸¥È¥ê ¤Ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ï»Ä¤Ã¤¿¤Þ¤Þ¤Ç¤¹¡£
$ cvs update -d doc cvs update: Updating doc CVS/ Makefile doc/ hello.c $
´ðËÜŪ¤ËCVS¤Ç¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ï¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤ÎÂоݤȤϤʤäƤ¤¤Þ¤»¤ó¡£ RCS¤È¤ª¤Ê¤¸¤Ç°·¤¦Ã±°Ì¤¬¥Õ¥¡¥¤¥ë¤À¤«¤é¤Ç¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¥Ç¥£¥ì¥¯¥È¥ê¤¬¾Ã¤µ¤ì¤Æ¤Ê¤¯¤Ê¤Ã¤¿¾ì¹ç¤È¶õ¥Ç¥£¥ì¥¯¥È¥ê¤¬¤¢¤ë¾ì ¹ç¤È¤ò¶èÊ̤Ǥ¤Þ¤»¤ó¡£CVS¤Ç´ÉÍý¤¹¤ë»þ¤Ï¡¢°ÕÌ£¤Î¤¢¤ë¶õ¥Ç¥£¥ì¥¯¥È¥ê¤ò»Ä ¤¹¤¿¤á¤Ë¡¢¤Ê¤ó¤é¤«¤Î¥É¥Ã¥È¥Õ¥¡¥¤¥ë¤ò¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤ËÃÖ¤¤¤Æ¤ª¤¯(¤Ä¤Þ ¤ê¶õ¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤·¤Ê¤¤¤¿¤á¤Ë°ÕÌ£¤Î¤Ê¤¤¥Õ¥¡¥¤¥ë¤òÃÖ¤¯)¤È¤¤¤Ã¤¿¤³¤È¤¬ ¤ª¤³¤Ê¤ï¤ì¤Æ¤¤¤Þ¤·¤¿¡£
Subversion¤Ç¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤â¥Õ¥¡¥¤¥ë¤ÈƱ¤¸¤è¤¦¤Ë´ÉÍý¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç delete¥µ¥Ö¥³¥Þ¥ó¥É¤Çºï½ü¤Ç¤¤Þ¤¹¡£
$ svn delete subdir D subdir $ svn status -uv 7 7 ukai . 7 4 ukai Makefile 10 10 ukai doc 8 8 ukai hello.c D 11 11 ukai subdir Head revision: 12 $ ls Makefile doc/ hello.c subdir/ $
¥Ç¥£¥ì¥¯¥È¥ê¤Ïsvn delete¤·¤¿¤À¤±¤Ç¤Ï¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¤â»Ä¤Ã¤Æ¤¤¤Þ¤¹¡£
$ svn commit -m 'rmdir ' subdir Deleting subdir Committed revision 13. $ svn status -uv 7 7 ukai . 7 4 ukai Makefile 10 10 ukai doc 8 8 ukai hello.c Head revision: 13 $ ls Makefile doc/ hello.c $
¤³¤Î¤è¤¦¤Ë¥³¥ß¥Ã¥È¤¹¤ë¤È¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¾Ã¤¨¤Þ¤¹¡£ ¥Ç¥£¥ì¥¯¥È¥ê¤ò¾Ã¤¹¤¿¤á¤Ë¤Ï¤¢¤é¤«¤¸¤á¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤¬¶õ¤Ë¤Ê¤Ã¤Æ¤¤¤ë ɬÍפ¬¤¢¤ê¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤ò¾Ã¤¹¾ì¹ç¡¢¤½¤ÎÃæ¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë ¥Õ¥¡¥¤¥ë¤ò¤Þ¤ººÇ½é¤Ë¾Ã¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
CVS¤Î»þ¤È°ã¤Ã¤Æ¡¢Subversion¤Ç¤Ï¶õ¥Ç¥£¥ì¥¯¥È¥ê¤Ï¶õ¥Ç¥£¥ì¥¯¥È¥ê¤¬ ¸ºß¤·¤Æ¤¤¤ë¤â¤Î¤È¤·¤Æ°·¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
CVS¤Ç¤Ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤ÎÊѹ¹¡¢¤Ä¤Þ¤ê¥Õ¥¡¥¤¥ë¤Î°ÜÆ°¤Ï¡¢¸Å¤¤¥Õ¥¡¥¤¥ë̾¤Ç ¤Î¥Õ¥¡¥¤¥ë¤Îºï½ü¤È¿·¤·¤¤¥Õ¥¡¥¤¥ë̾¤Ç¤Î¥Õ¥¡¥¤¥ë¤ÎÄɲäȤ¤¤¦2¤Ä¤ÎÁàºî¤Ç ¤ª¤³¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£
$ cvs update -d doc $ cd doc $ vi README $ cvs add README cvs add: scheduling file `README' for addition cvs add: use 'cvs commit' to add this file permanently $ cvs commit -m 'add README' README RCS file: /path/to/cvsroot/hello/doc/README,v done Checking in README; /path/to/cvsroot/hello/doc/README,v <-- README initial revision: 1.1 done $ mv README README.txt $ cvs delete README cvs remove: scheduling `README' for removal cvs remove: use 'cvs commit' to remove this file permanently $ cvs add README.txt cvs add: scheduling file `README.txt' for addition cvs add: use 'cvs commit' to add this file permanently $ cvs commit -m 'rename README to README.txt' README README.txt Removing README; /path/to/cvsroot/hello/doc/README,v <-- README new revision: delete; previous revision: 1.1 done RCS file: /path/to/cvsroot/hello/doc/README.txt,v done Checking in README.txt; /path/to/cvsroot/hello/doc/README.txt,v <-- README.txt initial revision: 1.1 done $
¤³¤Î¤è¤¦¤Ë°ÜÆ°¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¯¤¢¤ê¤Þ¤»¤ó¤¬¡¢CVSŪ¤Ë¤Ï¿·¤·¤¤¥Õ¥¡¥¤¥ë (¤³¤ÎÎã¤Ç¤ÏREADME.txt)¤¬¸Å¤¤¥Õ¥¡¥¤¥ë(¤³¤ÎÎã¤Ç¤ÏREADME) ¤«¤é°ÜÆ°¤·¤Æ¤ ¤¿¤â¤Î¤Ç¤¢¤ë¤«¤É¤¦¤«¤Ï¥³¥ß¥Ã¥È¥í¥°¤ò¤ß¤Ê¤¤¤ÈȽÃǤǤ¤Þ¤»¤ó¡£README.txt ¤Î¥í¥°¤ò¸«¤ë¾ì¹ç¤â°ÜÆ°Á°¤Î¥í¥°¤ÏREADME¤Î¥í¥°¤È¤·¤Æ¤·¤«µÏ¿¤µ¤ì¤Æ¤¤¤Þ¤» ¤ó¡£
Subversion¤Ç¤Ï¥Õ¥¡¥¤¥ë¤Î°ÜÆ°¤â°ÜÆ°¤È¤·¤Æ´ÉÍý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ ¤½¤Î¤¿¤á¤Îmove¤È¤¤¤¦¥µ¥Ö¥³¥Þ¥ó¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
$ cd doc $ vi README $ svn add README A README $ svn commit -m 'add README' README Adding README Transmitting file data . Committed revision 14. $ svn move README README.txt A README.txt D README $ svn status -uv 13 10 ukai . D 14 14 ukai README A + - ? ? README.txt Head revision: 14 $ ls README.txt $
svn status¤Ç¡Ö+¡×¤È¤¢¤ë¤Î¤Ï¥Ò¥¹¥È¥ê¤ò¤È¤â¤Ê¤Ã¤¿ÄɲäǤ¢¤ë¤³¤È¤ò°ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£
$ svn commit -m 'rename README to README.txt' Deleting doc/README Adding doc/README.txt Committed revision 15. $
CVS¤Î»þ¤ÈƱ¤¸¤¯README¤òºï½ü¤·¤ÆREADME.txt¤òÄɲä·¤¿¤À¤±¤Î¤è¤¦¤Ë¸«¤¨¤Þ¤¹¤¬ ¤½¤¦¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
CVS¤Ç¤Ï¥³¥ß¥Ã¥È¤¬¥Õ¥¡¥¤¥ëñ°Ì¤Ê¤Î¤Ç¡¢¡Ö¸Å¤¤¥Õ¥¡¥¤¥ë¤Îºï½ü¤È¿·¤·¤¤¥Õ¥¡ ¥¤¥ë¤ÎÄɲäϻþ´Ö¤¬¶á¤¯¤Æ¥³¥ß¥Ã¥È¥í¥°¤¬Æ±¤¸¤Ê¤Î¤Ç¤ª¤½¤é¤¯Æ±»þ¤Ë¥³¥ß¥Ã¥È ¤·¤¿¤Î¤À¤í¤¦¡×¤È¤¤¤¦¤¯¤é¤¤¤·¤«¤ï¤«¤ê¤Þ¤»¤ó¡£¤½¤Î2¤Ä¤Î¥³¥ß¥Ã¥È¤Î´Ö¤ËÊÌ ¤Î¥³¥ß¥Ã¥È¤Ë¤ï¤ê¤³¤Þ¤ì¤¿¤ê¡¢ÃæÃǤ·¤Æ¸å¤Î¥³¥ß¥Ã¥È¤¬¼ºÇÔ¤·¤Æ¤·¤Þ¤¦¤³¤È¤â ¤¢¤êÆÀ¤Þ¤¹¡£
Subversion¤Ç¤Ï¥³¥ß¥Ã¥È¤Ï¥¢¥È¥ß¥Ã¥¯¤Ê¤Î¤Ç¸Å¤¤¥Õ¥¡¥¤¥ë¤Îºï½ü¤È¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î ÄɲäÏɬ¤ºÆ±»þ¤ÎÁàºî¤È¤·¤Æ½èÍý¤µ¤ì¤Þ¤¹¡£ÄɲäȺï½ü¤È¤¤¤¦Æó¤Ä¤Î½èÍý¤Ç¤Ï¤Ê¤¯ ÄɲäȺï½üÆó¤Ä¤Þ¤È¤á¤Æ°ì¤Ä¤Î½èÍý¤È¤Ê¤ê¤Þ¤¹¡£¥ê¥Ó¥¸¥ç¥óÈÖ¹æ¤â1¤·¤«Áý¤¨¤Þ¤»¤ó¡£
CVS¤È¤Î°ã¤¤¤Ï¥í¥°¤Ë¤â¤¢¤é¤ï¤ì¤Æ¤¤Þ¤¹¡£CVS¤Î¾ì¹ç¤Ï¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î¥í¥°¤ò ¤ß¤Æ¤â¡¢Äɲ䵤줿¸å¤·¤«¸«¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£
$ cvs log README.txt RCS file: /path/to/cvsroot/hello/doc/README.txt,v Working file: README.txt head: 1.1 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 1; selected revisions: 1 description: ---------------------------- revision 1.1 date: 2003/06/15 19:34:30; author: ukai; state: Exp; rename README to README.txt ============================================================================= $
Subversion¤Ç¤Ï¥Õ¥¡¥¤¥ë̾¤òÊѹ¹¤¹¤ëÁ°¤Î¥í¥°¤â¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn log README.txt ------------------------------------------------------------------------ rev 15: ukai | 2003-06-16 04:41:51 +0900 (Mon, 16 Jun 2003) | 1 line rename README to README.txt ------------------------------------------------------------------------ rev 14: ukai | 2003-06-16 04:38:00 +0900 (Mon, 16 Jun 2003) | 1 line add README ------------------------------------------------------------------------ $
¡Öadd README¡×¤È¤¤¤¦¤Î¤Ï README¤È¤¤¤¦¥Õ¥¡¥¤¥ë̾¤À¤Ã¤¿»þ¤Î¥í¥°¤Ç¤¹¡£ ¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ï -v ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤È¤è¤ê¾Ü¤·¤¤¾ðÊó¤ò¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn log -v README.txt ------------------------------------------------------------------------ rev 15: ukai | 2003-06-16 04:41:51 +0900 (Mon, 16 Jun 2003) | 1 line Changed paths: D /trunk/hello/doc/README A /trunk/hello/doc/README.txt (from /trunk/hello/doc/README:14) rename README to README.txt ------------------------------------------------------------------------ rev 14: ukai | 2003-06-16 04:38:00 +0900 (Mon, 16 Jun 2003) | 1 line Changed paths: A /trunk/hello/doc/README add README ------------------------------------------------------------------------ $
¤³¤Î¤è¤¦¤Ë README.txt¤ÏREADME¤«¤é°ÜÆ°¤·¤Æ¤¤ÆÄɲ䵤줿¤â¤Î¤Ç¤¢¤ë¤È¤¤¤¦ ¾ðÊ󤬵Ͽ¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¡£
¥Ç¥£¥ì¥¯¥È¥ê̾¤ò°ÜÆ°¤¹¤ë»þ¤âƱ¤¸¤è¤¦¤Ê½èÍý¤Ë¤Ê¤ê¤Þ¤¹¡£ CVS¤Î¾ì¹ç¤Ï¿·¤·¤¤¥Ç¥£¥ì¥¯¥È¥ê¤òÄɲ䷤ơ¢¤½¤³¤Ë¸Å¤¤¥Ç¥£¥ì¥¯¥È¥ê¤Ë ¤¢¤Ã¤¿Ãæ¿È¤ò¥³¥Ô¡¼¤·¡¢¸Å¤¤¥Ç¥£¥ì¥¯¥È¥ê¤«¤éºï½ü¤·¤Æ¥³¥ß¥Ã¥È¤¹¤ë¤È¤¤¤¦ Áàºî¤Ë¤Ê¤ê¤Þ¤¹¡£
$ ls CVS/ Makefile doc/ hello.c $ mkdir doc-en $ cvs add doc-en Directory /path/to/cvsroot/hello/doc-en added to the repository $ mv doc/README.txt doc-en $ cd doc $ cvs delete README.txt cvs remove: scheduling `README.txt' for removal cvs remove: use 'cvs commit' to remove this file permanently $ cd ../doc-en $ cvs add README.txt cvs add: scheduling file `README.txt' for addition cvs add: use 'cvs commit' to add this file permanently $ cd .. $ cvs commit -m 'rename doc to doc-en' cvs commit: Examining . cvs commit: Examining doc cvs commit: Examining doc-en Removing doc/README.txt; /path/to/cvsroot/hello/doc/README.txt,v <-- README.txt new revision: delete; previous revision: 1.1 done RCS file: /path/to/cvsroot/hello/doc-en/README.txt,v done Checking in doc-en/README.txt; /path/to/cvsroot/hello/doc-en/README.txt,v <-- README.txt initial revision: 1.1 done $ cvs update -P cvs update: Updating . cvs update: Updating doc cvs update: Updating doc-en $ ls CVS/ Makefile doc-en/ hello.c $
Subversion¤Ç¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤âmove¥µ¥Ö¥³¥Þ¥ó¥É¤Ç°ÜÆ°¤·¤Æ¤·¤Þ¤¦¤³¤È¤¬¤Ç¤ ¤Þ¤¹¡£
$ ls Makefile doc/ hello.c $ svn move doc doc-en $ svn move doc doc-en A doc-en D doc/README.txt D doc $
¤³¤ì¤Ç doc ¤«¤é doc-en¤Ø¤Î°ÜÆ°¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤À¤±¸«¤ë¤ÈREADME.txt¤Ïºï ½ü¤µ¤ì¤ë¤À¤±¤Î¤è¤¦¤Ë¸«¤¨¤Þ¤¹¤¬¡¢status¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤ß¤ë¤È¤Á¤ã¤ó¤È°ÜÆ° ¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£
$ svn status -uv 13 13 ukai . 13 4 ukai Makefile D 13 10 ukai doc D 15 15 ukai doc/README.txt A + - 10 ukai doc-en + - 15 ukai doc-en/README.txt 13 8 ukai hello.c Head revision: 15 $ ls Makefile doc/ doc-en/ hello.c $ ls doc $ ls doc-en README.txt $
¤¿¤À¤·¡¢¤³¤Î¾õÂ֤ǥ³¥ß¥Ã¥È¤·¤è¤¦¤È¤¹¤ë¤È¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
$ svn commit -m 'rename doc to doc-en' doc doc-en Deleting doc svn: Transaction is out of date svn: Commit failed (details follow): svn: out of date: `/trunk/hello/doc' in txn `1j' $
¤³¤ì¤Ï doc¤Î¥ê¥Ó¥¸¥ç¥ó¤¬15¤Ç¤¢¤ë¤Ù¤¤Ê¤Î¤Ë13¤Î¤Þ¤Þ¤À¤«¤é¤Ç¤¹¡£¤³¤Î¤è¤¦ ¤Ê¾ì¹ç¤Ï¡¢¤Þ¤º svn update¤·¤Æ¤«¤é¥³¥ß¥Ã¥È¤·¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£
$ svn update At revision 15. $ svn commit -m 'rename doc to doc-en' Deleting doc Adding doc-en Adding doc-en/README.txt Committed revision 16. $ svn status -uv 15 15 ukai . 15 4 ukai Makefile 16 16 ukai doc-en 16 16 ukai doc-en/README.txt 15 8 ukai hello.c Head revision: 16 $
¥Õ¥¡¥¤¥ë¤Î°ÜÆ°¤ÈƱ¤¸¤è¤¦¤Ë¥Ç¥£¥ì¥¯¥È¥ê¤Î°ÜÆ°¤Ç¤â°ÊÁ°¤Î¥í¥°¤ò ¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn log -v doc-en/README.txt ------------------------------------------------------------------------ rev 16: ukai | 2003-06-16 05:02:41 +0900 (Mon, 16 Jun 2003) | 1 line Changed paths: D /trunk/hello/doc A /trunk/hello/doc-en (from /trunk/hello/doc:13) A /trunk/hello/doc-en/README.txt (from /trunk/hello/doc/README.txt:15) rename doc to doc-en ------------------------------------------------------------------------ rev 15: ukai | 2003-06-16 04:41:51 +0900 (Mon, 16 Jun 2003) | 1 line Changed paths: D /trunk/hello/doc/README A /trunk/hello/doc/README.txt (from /trunk/hello/doc/README:14) rename README to README.txt ------------------------------------------------------------------------ rev 14: ukai | 2003-06-16 04:38:00 +0900 (Mon, 16 Jun 2003) | 1 line Changed paths: A /trunk/hello/doc/README add README ------------------------------------------------------------------------
CVS¤Î»þ¤Ï¡¢ºÇ½é¤Ë¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤È¤¤ËÍ¥¤ì¤¿¥ì¥¤¥¢¥¦¥È¤ò¤·¤Ã¤«¤ê¤È·è¤á¡¢ ¸å¤«¤é²¿ÅÙ¤â¥Ç¥£¥ì¥¯¥È¥ê¤ò°ÜÆ°¤·¤Ê¤¯¤Æ¤â¤è¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¤¬°ìÈ֤褤¤È ¤µ¤ì¤Æ¤¤Þ¤·¤¿¡£¤·¤«¤·¡¢¥Ð¡¼¥¸¥ç¥ó´ÉÍý¤¹¤ë¤Þ¤Ç¤Ë¤Ä¤¯¤Ã¤Æ¤¤¿¤â¤Î¤¬¤¢¤ê¡¢ ¤½¤ì¤ò´ÉÍý¤¹¤ë¤è¤¦¤Ë¤¹¤ë¾ì¹ç¤Ï¤È¤â¤«¤¯¡¢°ì¤«¤éºî¤í¤¦¤È¤·¤Æ¤¤¤ë»þ¤ËÍ¥¤ì ¤¿¥ì¥¤¥¢¥¦¥È¤òºÇ½é¤«¤éºî¤ë¤È¤¤¤¦¤Î¤Ï¤Ê¤«¤Ê¤«Æñ¤·¤¤¤â¤Î¤Ç¤¹¡£¤½¤Î¤¿¤á¤¢ ¤ëÄøÅÙ¤ª¤ª¤Þ¤«¤Ê·Á¤¬¤Ç¤¤ë¤Þ¤Ç¤Ï¤Ê¤«¤Ê¤«CVS¤Î¥ê¥Ý¥¸¥È¥ê¤Ë¤¤¤ì¤ë¤Î¤Ïí´ í°¤¹¤ë¤â¤Î¤Ç¤·¤¿¡£¤Þ¤¿¡¢¥ì¥¤¥¢¥¦¥È¤¬Äê¤Þ¤Ã¤Æ¤¤¤Ê¤¤¾õÂÖ¤ÇCVS¤Î¥ê¥Ý¥¸¥È ¥ê¤Ë¤¤¤ì¤Æ¤â°ÜÆ°¤Ë¤È¤â¤Ê¤¦¥Ç¥á¥ê¥Ã¥È¤ò¹Í¤¨¤ë¤ÈºÇ½é¤ÎÃʳ¬¤Ç¤Ï¥Ð¡¼¥¸¥ç¥ó ´ÉÍý¤¹¤ë¥á¥ê¥Ã¥È¤¬¤¢¤Þ¤ê´¶¤¸¤é¤ì¤Ê¤«¤Ã¤¿¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£
¤·¤«¤·¡¢Subversion¤Ç¤Ï¤½¤ó¤Ê¤³¤È¤òµ¤¤Ë¤»¤ºµ¤³Ú¤Ë¥Õ¥¡¥¤¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¤Î °ÜÆ°¤¬¤Ç¤¤Þ¤¹¡£°ÜÆ°¤·¤Æ¤â°ÜÆ°Á°¤«¤é¤Îº¹Ê¬¤ò¸«¤¿¤ê¥í¥°¤ò¸«¤¿¤ê¤¹¤ë¤³¤È¤â ´Êñ¤Ë¤Ç¤¤Þ¤¹¡£Subversion¤Ê¤é¡¢¤Þ¤À¥ì¥¤¥¢¥¦¥È¤Ê¤É¤¬¸Ç¤Þ¤Ã¤Æ¤¤¤Ê¤¯¤Æ¤â ¤È¤ê¤¢¤¨¤º¥Ð¡¼¥¸¥ç¥ó´ÉÍý²½¤Ë¤ª¤¤¤Æ¤â¥Ç¥á¥ê¥Ã¥È¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤à¤·¤í¡¢ ½é´üÃʳ¬¤Î»î¹Ôºø¸í¤Î¾õÂ֤⥳¥ß¥Ã¥È¤·¤Æ¤¤¤±¤ÐÁ´¤ÆµÏ¿¤Ë»Ä¤»¤ë¤È¤¤¤¦¥á¥ê¥Ã¥È ¤¬¤¢¤ê¤Þ¤¹¡£
CVS¤Ç¤Ï¥ê¥Ó¥¸¥ç¥óÈÖ¹æ¤Ï¥Õ¥¡¥¤¥ëñ°Ì¤Ë¤Ä¤¤¤Æ¤¤¤Þ¤·¤¿¡£¤½¤Î¤¿¤á¤Ë¤¢¤ë»þ ÅÀ¤Î¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤ò¤È¤ë¤³¤È¤Ï¤¢¤Þ¤ê´Êñ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥¹¥Ê¥Ã¥×¥·¥ç¥Ã ¥È¤ò¤È¤ê¤¿¤¤¤è¤¦¤Ê¾ì¹ç¤ÏÉáÄÌ¡¢ÆüÉÕ¥¿¥°¤ò»È¤¦¤«¡¢¤¢¤é¤«¤¸¤á¥¿¥°¤ò¤¦¤Ã¤Æ ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤·¤¿¡£ÌÇ¿¤Ë¥³¥ß¥Ã¥È¤¬¤Ê¤¤¤Î¤Ê¤é¤ÐÆüÉÕ¥¿¥°¤ÇÂç¾æÉפǤ¹ ¤¬¤½¤¦¤Ç¤Ê¤¤¤Î¤Ê¤é¤Ð¤ä¤Ï¤ê¥¿¥°¤ò¤¦¤Ã¤Æ¤ª¤«¤Ê¤¤¤È¤¢¤ë»þÅÀ¤Î¥¹¥Ê¥Ã¥×¥·¥ç¥Ã ¥È¤ò¤È¤ë¤Î¤ÏÆñ¤·¤¤¤â¤Î¤Ç¤·¤¿¡£Î㤨¤Ð¡¢doc¤«¤édoc-en¤Ë°ÜÆ°¤¹¤ëÁ°¤Î¾õÂÖ ¤ò¤È¤ê¤¿¤¤¾ì¹ç¤Ï¤½¤Î½èÍý¤¬¤ª¤³¤Ê¤ï¤ì¤¿»þ´Ö¤ò¤µ¤¬¤·¤À¤·¤Æ¤È¤ê¤À¤¹É¬Íפ¬ ¤¢¤ê¤Þ¤·¤¿¡£
Subversion¤Ç¤Ï¥ê¥Ó¥¸¥ç¥óÈÖ¹æ¤Ï¥Õ¥¡¥¤¥ë¤´¤È¤Ç¤Ï¤Ê¤¯¥ê¥Ý¥¸¥È¥ê¤Ë¤Ä¤¤¤Æ¤¤ ¤Þ¤¹¡£½¾¤Ã¤Æ¡¢¥ê¥Ý¥¸¥È¥ê¤ËÂФ¹¤ëÁàºî¤´¤È¤Ë¥¿¥°¤¬¤¦¤Ã¤Æ¤¢¤ë¤â¤Î¤È¤ß¤Ê¤¹ ¤³¤È¤¬¤Ç¤¤Þ¤¹¡£²áµî¤Î¥ê¥Ý¥¸¥È¥ê¤Î¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤´¤È¤Ë¥ê¥Ó¥¸¥ç¥óÈÖ¹æ ¤¬¤Õ¤é¤ì¤Æ¤¤¤ë¤È»×¤¨¤Ð¤¤¤¤¤Ç¤·¤ç¤¦¡£¤·¤¿¤¬¤Ã¤Æ¥ê¥Ó¥¸¥ç¥óÈֹ椵¤¨¤ï¤«¤ì ¤Ð²áµî¤Î¤¢¤ë»þÅÀ¤Î¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤ò¤È¤ê¤À¤¹¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Î㤨¤Ð¡¢ doc¤«¤édoc-en¤Ë°ÜÆ°¤¹¤ëÁ°¤Î¾õÂÖ¤ò¤È¤ê¤¿¤¤¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
$ svn log doc-en ------------------------------------------------------------------------ rev 16: ukai | 2003-06-16 05:02:41 +0900 (Mon, 16 Jun 2003) | 1 line rename doc to doc-en ------------------------------------------------------------------------ rev 10: ukai | 2003-06-16 03:39:57 +0900 (Mon, 16 Jun 2003) | 1 line mkdir doc ------------------------------------------------------------------------ $
¤³¤ì¤Ç rev 16¤Ç doc¤«¤édoc-en¤Ë°ÜÆ°¤·¤¿¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ rev 15¤ËÌ᤻¤Ðdoc¤«¤édoc-en¤Ë°ÜÆ°¤¹¤ëÁ°¤Î¾õÂ֤ˤʤë¤ï¤±¤Ç¤¹¡£
$ svn update -r15 A doc A doc/README.txt D doc-en Updated to revision 15. $ ls Makefile doc/ hello.c $ svn status -uv * 15 15 ukai . 15 4 ukai Makefile 15 15 ukai doc 15 15 ukai doc/README.txt * doc-en * doc-en/README.txt 15 8 ukai hello.c Head revision: 16 $
¤³¤ì¤Ç doc¤«¤édoc-en¤Ë°ÜÆ°¤¹¤ëÁ°¤Î¾õÂ֤ˤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£ ºÇ¿·¤ËÌ᤹¤Ë¤Ïñ¤Ë svn update ¤È¤¹¤ë¤À¤±¤Ç¤¹¡£
$ svn update A doc-en A doc-en/README.txt D doc Updated to revision 16. $ ls Makefile doc-en/ hello.c $
¤â¤Á¤í¤óCVS¤ÈƱ¤¸¤¯ÆüÉÕ¤ò¥ê¥Ó¥¸¥ç¥ó¤È¤·¤Æ»È¤¦¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤½¤Î¾ì¹ç ÆüÉÕ¤ò¤¢¤é¤ï¤¹Ê¸»úÎó¤ò { ¤È } ¤Ç¤«¤³¤ß¤Þ¤¹¡£¥ê¥Ó¥¸¥ç¥ó¤È¤·¤Æ»È¤¨¤ë ʸ»úÎó¤Ï¤³¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£
CVS¤Ç¤Ï¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤È¤·¤Æ°·¤¦¤¿¤á¤Ë¥¿¥°¤ò¤¦¤Ã¤Æ¤ª¤¯¤³¤È¤Ï¤Û¤Üɬ¿Ü ¤À¤Ã¤¿¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£¥¿¥°¤ò¤¦¤Ä¤Î¤ÏÆÃÊ̤ʽèÍý¤È¤ß¤Ê¤µ¤ìtag¤È¤¤¤¦¥µ ¥Ö¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¤ª¤³¤Ê¤Ã¤Æ¤¤¤Þ¤·¤¿¡£¥¿¥°¤ò¤¦¤Ä¤È¡¢¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë ¤ËÂФ·¤Æ¤½¤Î¥¿¥°¤¬¤¦¤¿¤ì¤¿»þ¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Î¥ê¥Ó¥¸¥ç¥ó¤¬¤Ê¤ó¤À¤Ã¤¿¤«¤ò µÏ¿¤·¤Þ¤·¤¿¡£
$ cvs tag hello_1_1 cvs tag: Tagging . T Makefile T hello.c cvs tag: Tagging doc-en T doc-en/README.txt $
¤³¤ì¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¤½¤ì¤¾¤ì¤Î¥Õ¥¡¥¤¥ë¤Î¥ê¥Ó¥¸¥ç¥ó¤ËÂФ·¤Æ hello_1_1 ¤È¤¤¤¦¥¿¥°¤¬¤Ä¤±¤é¤ì¤Þ¤¹¡£¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤Ï ¤½¤Î¤è¤¦¤Ê´ÉÍý¾ðÊó¤òµÏ¿¤·¤Æ¤ª¤¯¤È¤³¤í¤¬¤Ê¤¤¤Î¤Ç¥¿¥°¤Ï ¤Ä¤¤Þ¤»¤ó¡£
hello_1_1¥¿¥°¤ËÂбþ¤¹¤ë¥ê¥Ó¥¸¥ç¥óÈÖ¹æ Makefile: 1.1.1.1 hello.c: 1.6 doc-en/README.txt 1.1
Subversion¤Ç¤Ï¥ê¥Ó¥¸¥ç¥óÈÖ¹æ¤ò»È¤¨¤Ð¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤òÆÀ¤ë¤¿¤á¤Î¥¿¥°¤È ¤·¤Æ»È¤¨¤ë¤Î¤ÇCVS¤Û¤É¥¿¥°¤ò¤¬¤ó¤Ð¤Ã¤Æ¤¦¤ÄɬÍפϤ¢¤ê¤Þ¤»¤ó¡£¤·¤«¤·¤Ê¤Ë ¤«°ÕÌ£¤Î¤¢¤ëʸ»úÎó¤ò¤¢¤¿¤¨¤¿Êý¤¬¤ï¤«¤ê¤ä¤¹¤¤¤â¤Î¤Ç¤¹¡£Î㤨¤Ð¥ê¥ê¡¼¥¹¤¹ ¤ë¤Ê¤É¤È¤¤¤Ã¤¿»þ¤Î¥ê¥Ó¥¸¥ç¥ó¤Ï¾¤Î¥ê¥Ó¥¸¥ç¥ó¤È¤Ï¶èÊ̤·¤Æ¤ª¤¤¤¿Êý¤¬¤ï¤« ¤ê¤ä¤¹¤¤¤È¤¤¤¨¤ë¤Ç¤·¤ç¤¦¡£¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¥¿¥°¤ò¤¦¤Ã¤Æ¤ª¤¯¤Ù¤¤Ç¤¹¡£ Subversion¤Ç¤Ï¡¢¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¥³¥Ô¡¼¤ò»È¤¤¤Þ¤¹¡£¤³¤ì¤ÏCVS¤Ç¥Ð¡¼¥¸¥ç ¥ó´ÉÍý¤¹¤ëÁ°¤Ë¤ä¤Ã¤Æ¤¤¤¿¥Ð¡¼¥¸¥ç¥ó´ÉÍý(?)¤Î»ÅÊý¤Ë¶á¤¤¤È¸À¤¨¤ë¤«¤â¤·¤ì ¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¸½¾õ¤ò¤È¤ê¤¢¤¨¤º¥³¥Ô¡¼¤·¤Æ¤ª¤¤¤Æ¸å¤Ç»²¾È¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ ¤ª¤¯¤È¤¤¤¦¤³¤È¤Ç¤¹¡£´·½¬Åª¤Ë¥¿¥°¤ò¤¦¤Ä»þ¤Ïtags/°Ê²¼¤Ë¥³¥Ô¡¼¤¹¤ë¤³¤È¤Ë ¤è¤Ã¤Æ¤ª¤³¤Ê¤¤¤Þ¤¹¡£
$ svn info . Path: Url: file:///path/to/svnrepos/trunk/hello Repository UUID: 1e0c500f-25c0-0310-91ba-92d4cfa6a45a Revision: 16 Node Kind: directory Schedule: normal Last Changed Author: ukai Last Changed Rev: 16 Last Changed Date: 2003-06-16 05:02:41 +0900 (Mon, 16 Jun 2003) $
¤³¤Î¤è¤¦¤Ë¤³¤Î¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Î¥ê¥Ý¥¸¥È¥ê¥Ñ¥¹¤Ï file:///path/to/svnrepos/trunk/hello¤Ç¤·¤¿¡£¤³¤ì¤ò file:///path/to/svnrepos/tags/hello-1.1 ¤Ë¥³¥Ô¡¼¤¹¤ë¤³¤È¤¬ ¥¿¥°¤ò¤¦¤Ä¤³¤È¤ËÁêÅö¤·¤Þ¤¹¡£
$ svn copy -m 'tag hello-1.1' file:///path/to/svnrepos/trunk/hello file:///path/to/svnrepos/tags/hello-1.1 Committed revision 17. $
¤É¤Î¤è¤¦¤Ê¥¿¥°¤¬¤¦¤¿¤ì¤Æ¤¤¤ë¤«¤Ï tags ¤ò ls ¤¹¤ë¤È¤ï¤«¤ê¤Þ¤¹¡£
$ svn ls file:///path/to/svnrepos/tags hello-1.1/ $
¥³¥Ô¡¼¤È¤¤¤Ã¤Æ¤â¥Õ¥¡¥¤¥ë¤ÎÆâÍƤ¬¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤à ¤·¤íUNIX¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Ï¡¼¥É¥ê¥ó¥¯¤Ë¶á¤¤¤È¤¤¤¨¤ë¤Ç¤·¤ç¤¦¡£¤¢¤ë¥ê ¥Ó¥¸¥ç¥ó¤Î»þÅÀ¤Î¥Õ¥¡¥¤¥ë¤ÎÆâÍƤ¬¤É¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë̾¤Ç¤¢¤é¤ï¤µ¤ì¤ë¤«¤È ¤¤¤Ã¤¿¾ðÊó¤À¤±¤¬¥³¥Ô¡¼¤µ¤ì¤ë¤È¹Í¤¨¤é¤ì¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¥³¥Ô¡¼¤È¤¤¤¦Áàºî ¤ÏÈó¾ï¤Ë¤Ï¤ä¤¯¤ª¤³¤Ê¤ï¤ì¤Þ¤¹¡£
CVS¤Ç¤ÏʹԤ·¤ÆÊÔ½¸¤ò¤¹¤¹¤á¤Æ¤¤¤¯¤¿¤á¤Ë¥Ö¥é¥ó¥Á¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£ ¥Ö¥é¥ó¥Á¤ò¤Ä¤¯¤ë¤Ë¤âtag¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤·¤¿¤¬¡¢¥Ö¥é¥ó¥Á¤ò¤¢¤é¤ï¤¹¤¿ ¤á¤Ë-b¥ª¥×¥·¥ç¥ó¤ò»È¤¤¤Þ¤¹¡£
$ cvs tag -b hello_1_1-branch cvs tag: Tagging . T Makefile T hello.c cvs tag: Tagging doc-en T doc-en/README.txt $
¤³¤ì¤Ç hello_1_1-branch ¤È¤¤¤¦¥Ö¥é¥ó¥Á¤¬¤Ç¤¤Þ¤·¤¿¡£¤³¤Î¥Ö¥é¥ó¥Á¤Ç ºî¶È¤¹¤ë¾ì¹ç¤Ï¡¢¤³¤Î¥Ö¥é¥ó¥Á̾¤Ç¥Á¥§¥Ã¥¯¥¢¥¦¥È¤·¤Þ¤¹¡£
$ cd .. $ cvs -d /path/to/cvsroot checkout -r hello_1_1-branch -d hello-1.1 -P hello cvs checkout: Updating hello-1.1 U hello-1.1/Makefile U hello-1.1/hello.c cvs checkout: Updating hello-1.1/doc cvs checkout: Updating hello-1.1/doc-en U hello-1.1/doc-en/README.txt cvs checkout: Updating hello-1.1/subdir $ cd hello-1.1
Subversion¤Ç¤Ï¥Ö¥é¥ó¥Á¤â¥¿¥°¤ÈƱ¤¸¤è¤¦¤Ë¥³¥Ô¡¼¤·¤Þ¤¹¡£´·½¬Åª¤Ë¥Ö¥é¥ó¥Á ¤ËÂФ·¤Æ¤Ïbranches/¤ò»È¤¤¤Þ¤¹¡£
$ svn copy -m 'branch hello-1.1' file:///path/to/svnrepos/trunk/hello file:///path/to/svnrepos/branches/hello-1.1 Committed revision 18. $ svn ls file:///path/to/svnrepos/branches hello-1.1/ $
¤³¤ì¤Ç hello-1.1¤È¤¤¤¦¥Ö¥é¥ó¥Á¤¬¤Ç¤¤Æ¤¤¤Þ¤¹¡£¤È¤ê¤À¤¹»þ¤Ïtrunk ¤«¤é¤È¤ê¤À¤¹»þ¤ÈƱ¤¸¤è¤¦¤Ë¤·¤Þ¤¹¡£
$ cd .. $ svn checkout file:///path/to/svnrepos/branches/hello-1.1 A hello-1.1/hello.c A hello-1.1/doc-en A hello-1.1/doc-en/README.txt A hello-1.1/Makefile Checked out revision 18. $
¥Ö¥é¥ó¥Á¤Ç²Ã¤¨¤é¤ì¤¿½¤Àµ¤Ï¡¢ÉáḀ̈ȥé¥ó¥¯¤ÎÊý¤Ë¤âÈ¿±Ç¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ ¤½¤Î¾ì¹ç¡¢Ã±¤Ë¥È¥é¥ó¥¯¤Ç¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ¤âÈ¿±Ç¤µ¤ì¤Þ¤»¤ó¡£
CVS¤Ç¤Ïupdate¤Î-j¥ª¥×¥·¥ç¥ó¤Ç¥Þ¡¼¥¸¤·¤Þ¤·¤¿¡£
$ cvs update -j hello_1_1-branch cvs update: Updating . RCS file: /path/to/cvsroot/hello/hello.c,v retrieving revision 1.6 retrieving revision 1.6.2.1 Merging differences between 1.6 and 1.6.2.1 into hello.c cvs update: Updating doc-en $
³Îǧ¤·¤¿¤Î¤Á¤Ë¥³¥ß¥Ã¥È¤·¤Þ¤¹¡£
$ cvs commit -m 'merge from hello_1_1-branch' cvs commit: Examining . cvs commit: Examining doc-en Checking in hello.c; /path/to/cvsroot/hello/hello.c,v <-- hello.c new revision: 1.7; previous revision: 1.6 done $
Subversion¤Ç¤Ïmerge¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£¤½¤ÎÁ°¤Ë¥Ö¥é¥ó¥Á¤òºî¤Ã¤¿»þ ¤Î¥ê¥Ó¥¸¥ç¥ó¤òÄ´¤Ù¤Þ¤¹¡£
$ svn log file:///path/to/svnrepos/branches/ ------------------------------------------------------------------------ rev 19: ukai | 2003-06-16 06:12:11 +0900 (Mon, 16 Jun 2003) | 1 line use options ------------------------------------------------------------------------ rev 18: ukai | 2003-06-16 06:00:59 +0900 (Mon, 16 Jun 2003) | 1 line branch hello-1.1 ------------------------------------------------------------------------ rev 2: ukai | 2003-06-16 00:39:47 +0900 (Mon, 16 Jun 2003) | 1 line branches ------------------------------------------------------------------------ $
rev 18¤Çhello-1.1¥Ö¥é¥ó¥Á¤òºî¤Ã¤Æ¤¤¤¿¤³¤ì¤¬¤³¤Î¥í¥°¤Ç¤ï¤«¤ê¤Þ¤¹¡£rev 18¤«¤é ºÇ¿·¤Þ¤Ç¤Ë²Ã¤¨¤é¤ì¤ÆÊѹ¹¤ò¥Þ¡¼¥¸¤¹¤ë¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£
$ svn merge -r 18:HEAD file:///path/to/svnrepos/branches/hello-1.1 U hello.c $ svn status -uv 19 16 ukai . 19 4 ukai Makefile 19 16 ukai doc-en 19 16 ukai doc-en/README.txt M 19 8 ukai hello.c Head revision: 19 $
¤³¤ì¤Ç hello-1.1¤Ç²Ã¤¨¤é¤ì¤Æ¤¤¤¿Êѹ¹¤¬¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤Ë¤â²Ã¤¨¤é¤ì¤Þ¤· ¤¿¡£¤³¤³¤ÇÌäÂ꤬¤Ê¤¤¤«¤É¤¦¤«diff¤ò¤ß¤¿¤êÆ°¤«¤·¤Æ¤ß¤¿¤ê¤·¤¿¸å¤Ë¡¢¥³¥ß¥Ã ¥È¤·¤Þ¤¹¡£
$ svn commit -m 'merged all hello-1.1 branch changes into the trunk' Sending hello.c Transmitting file data . Committed revision 20. $
Subversion¤Ç¤Ï¥Ö¥é¥ó¥Á´Ö¤ò°ÜÆ°¤¹¤ë¤¿¤á¤Îswitch¤È¤¤¤¦¥µ¥Ö¥³¥Þ¥ó¥É¤¬ÍÑ°Õ ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤ò»È¤¦¤Èº£¤Î¥ï¡¼¥¥ó¥°¥³¥Ô¡¼¤ò»ØÄꤷ¤¿¥Ö¥é¥ó¥Á¤ËÊѹ¹ ¤·¤Æupdate¤ò¤«¤±¤¿¤Î¤ÈƱ¤¸¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£trunk¤È¥Ö¥é¥ó¥Á¤Î´Ö¤ò¤¤¤Ã¤¿ ¤ê¤¤¿¤ê¤¹¤ë¤Î¤ËÊØÍø¤Êµ¡Ç½¤Ç¤¹¡£
$ svn switch file:///path/to/svnrepos/branches/hello-1.1 U hello.c Updated to revision 20. $ svn info Path: Url: file:///path/to/svnrepos/branches/hello-1.1 Repository UUID: 1e0c500f-25c0-0310-91ba-92d4cfa6a45a Revision: 20 Node Kind: directory Schedule: normal Last Changed Author: ukai Last Changed Rev: 19 Last Changed Date: 2003-06-16 06:12:11 +0900 (Mon, 16 Jun 2003) $ svn status -uv 20 19 ukai . 20 4 ukai Makefile 20 16 ukai doc-en 20 16 ukai doc-en/README.txt 20 19 ukai hello.c Head revision: 20 $
¤³¤Î¤è¤¦¤Ë Url: ¤¬¥Ö¥é¥ó¥Á¤ÎÊý¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ Ìá¤ë»þ¤âƱ¤¸¤è¤¦¤Ë switch ¤·¤Þ¤¹¡£
$ svn switch file:///path/to/svnrepos/trunk/hello U hello.c Updated to revision 20. $ svn info Path: Url: file:///path/to/svnrepos/trunk/hello Repository UUID: 1e0c500f-25c0-0310-91ba-92d4cfa6a45a Revision: 20 Node Kind: directory Schedule: normal Last Changed Author: ukai Last Changed Rev: 20 Last Changed Date: 2003-06-16 06:21:59 +0900 (Mon, 16 Jun 2003) $ svn status -uv 20 20 ukai . 20 4 ukai Makefile 20 16 ukai doc-en 20 16 ukai doc-en/README.txt 20 20 ukai hello.c Head revision: 20 $
switch¥µ¥Ö¥³¥Þ¥ó¥É¤Ï¥ê¥Ý¥¸¥È¥êURL¤òÊѹ¹¤·¤Æ¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤è¤¦¤Ê¤â¤Î¤Ç¤¹¡£
CVS¤Î¾ì¹ç¡¢¥Æ¥¥¹¥È¥Õ¥¡¥¤¥ë¤Ç¤Ï¥¡¼¥ï¡¼¥ÉÃÖ´¹¤¬¤ª¤³¤Ê¤ï¤ì¤Æ¤¤¤Þ¤·¤¿¡£ Î㤨¤Ð $Id$ ¤È¤¤¤¦Ê¸»úÎ󤬤¢¤ì¤Ð¤½¤ì¤Ï
$Id: hello.c,v 1.9 2003/06/15 21:31:35 ukai Exp $
¤Î¤è¤¦¤Êʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤Æ¤¤¤¿¤ï¤±¤Ç¤¹¡£
Subversion¤Î¾ì¹ç¤Ï¡¢¥¡¼¥ï¡¼¥ÉÃÖ´¹¤¬É¬Íפʾì¹ç¤Ï¥×¥í¥Ñ¥Æ¥£¤òÀßÄê ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¥×¥í¥Ñ¥Æ¥£¤Ë²¿¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò ¸«¤ë¤Ë¤Ï proplist¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
¥³¥é¥à4 ¥×¥í¥Ñ¥Æ¥£
svn:keywords°Ê³°¤Î¥×¥í¥Ñ¥Æ¥£¤È¤·¤Æ¤Ï°Ê²¼¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£
- svn:ignore
- CVS¤Î.cvsignore¤ËÁêÅö¤·¤Þ¤¹
- svn:executable
- ¼Â¹Ô²Äǽ°À¤ò¤¢¤é¤ï¤·¤Þ¤¹¡£
- svn:eol-style
- ²þ¹Ô¤Î¼ïÎà¤Ç¤¹¡£ native, LF, CR, CRLF ¤Î¤É¤ì¤«¤ò»ØÄꤷ¤Þ¤¹¡£
- svn:mime-type
- ¥Æ¥¥¹¥È¤«¥Ð¥¤¥Ê¥ê¤«¤ÎȽÃǤ˻Ȥï¤ì¤Þ¤¹¡£ text/ ¤Ç¤Ï¤¸¤Þ¤ë MIME type¤Ê¤é¥Æ¥¥¹¥È¤Î°·¤¤¤Ç¤¹¡£ ¤³¤ì¤ÏApache¤Ç¤ß¤»¤ë»þ¤ÎContent-Type¤Ë¤â»È¤ï¤ì¤Þ¤¹¡£
- svn:externals
- ³°Éô¥â¥¸¥å¡¼¥ë¤Î»ØÄê¤Ç¤¹
¾Ü¤·¤¯¤Ï svn help propset ¤Ç¸«¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
$ svn proplist -v hello.c $
¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤³¤Î¤è¤¦¤Ë¥×¥í¥Ñ¥Æ¥£¤Ï¤Ä¤¤¤Æ¤¤¤Þ¤»¤ó¡£
¥¡¼¥ï¡¼¥ÉÃÖ´¹¤ò¤¹¤ë¤¿¤á¤Ë¤Ï svn:keywords ¤È¤¤¤¦¥×¥í¥Ñ¥Æ¥£¤Ë ¥¡¼¥ï¡¼¥ÉÃÖ´¹¤ò¤¹¤ë¤â¤Î¤¬²¿¤«¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ Subversion¤Ç¤Ï¼¡¤Î¤â¤Î¤ò¥¡¼¥ï¡¼¥ÉÃÖ´¹¤Ç¤¤Þ¤¹¡£
¤¿¤È¤¨¤Ð $Id$¤òÃÖ´¹¤¹¤ë¾ì¹ç¤Ïpropset¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ svn:keywords¥×¥í¥Ñ¥Æ¥£¤ÎÃͤËId¤òÀßÄꤷ¤Þ¤¹¡£
$ svn propset svn:keywords Id hello.c property `svn:keywords' set on 'hello.c' $ svn proplist -v hello.c Properties on 'hello.c': svn:keywords $ svn status M hello.c $
¤³¤Î¾ì¹ç2ʸ»úÌܤˡÖM¡×¤¬¤Ä¤¤Þ¤¹¡£¤³¤ì¤Ï¥×¥í¥Ñ¥Æ¥£¤ÎÊѹ¹¤¬¤¢¤Ã¤¿¤³¤È¤ò °ÕÌ£¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¤è¤¦¤Ë¤·¤Æ¡¢¥Õ¥¡¥¤¥ë¤Ë¡Ö$Id$¡×¤È¤¤¤¦ ʸ»úÎó¤ò¤¤¤ì¤Æ¥³¥ß¥Ã¥È¤¹¤ë¤È¤½¤Îʸ»úÎó¤¬CVS¤Î»þ¤È»÷¤¿¤è¤¦¤Ê´¶¤¸¤ËÃÖ´¹¤µ¤ì¤Þ¤¹¡£
$ cat hello.c #includestatic char svnid[] = "$Id$"; int main(int argc, char *argv[]) { char *s = "world"; if (argc >= 2) s = argv[1]; printf("Hello, %s!\n", s); exit(0); } $ svn status hello.c MM hello.c $ svn commit -m 'add id' hello.c Sending hello.c Transmitting file data . Committed revision 21. $
¤³¤ì¤Ç¥×¥í¥Ñ¥Æ¥£¤ÎÄɲ䬤ª¤³¤Ê¤ï¤ì¡¢¥Õ¥¡¥¤¥ë¤ÎÃæ¤Î¥¡¼¥ï¡¼¥É¤¬ÃÖ´¹ ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
$ cat hello.c #includestatic char svnid[] = "$Id: hello.c 20 2003-06-15 21:41:46Z ukai $"; int main(int argc, char *argv[]) { char *s = "world"; if (argc >= 2) s = argv[1]; printf("Hello, %s!\n", s); exit(0); } $
CVS¤Ï¥Í¥Ã¥È¥ï¡¼¥¯±Û¤·¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿º¢¤«¤é¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Ë¤ª¤± ¤ë¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î³«È¯¤Ë¤Ï¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¤â¤Î¤È¸«¤Ê¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ ¤¤Þ¤·¤¿¡£¥Í¥Ã¥È¥ï¡¼¥¯·Ðͳ¤Ç»È¤¨¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤¤¤¤¤Î¤« ¤òÀâÌÀ¤·¤Þ¤¹¡£
CVS¤ò¥Í¥Ã¥È¥ï¡¼¥¯±Û¤·¤Ë»È¤¦¤Ë¤Ï¼ç¤Ë¼¡¤Î2¤Ä¤¬»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
pserver¤Î¾ì¹ç¡¢¥ê¥Ý¥¸¥È¥ê¤ò¸ø³«¤¹¤ë¦¤Ç¤Ïinetd·Ðͳ¤Ç cvs pserver¤ò ¼Â¹Ô¤¹¤ë¤è¤¦¤ËÀßÄꤷ¤Æ¤ª¤¤Þ¤¹¡£Debian¤Ç¤Ï¡¢pserver¤ò»È¤¦¤è¤¦¤Ë ¤·¤¿¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Ê´¶¤¸¤ÎÀßÄ꤬¤ª¤³¤Ê¤ï¤ì¤Þ¤¹¡£
cvspserver stream tcp nowait.40 root /usr/sbin/tcpd /usr/sbin/cvs-pserver
/usr/sbin/cvs-pserver¤ÎÃæ¤ÇɬÍפʥª¥×¥·¥ç¥ó¤ò¤Ä¤±¤Æ cvs pserver¤ò ¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤·¤Æ¥Ñ¥¹¥ï¡¼¥É¤òCVSROOT/passwd¤ËÅÐÏ¿¤·¤Æ¤ª¤¤Þ¤¹¡£
pserver¤òÍøÍѤ¹¤ë¦¤Ï¥ê¥Ý¥¸¥È¥ê¤Î¾ì½ê¤È¤·¤Æ¡Ö:pserver:¥æ¡¼¥¶Ì¾@¥Û¥¹¥È ̾:¥Ñ¥¹Ì¾¡×¤ò»È¤¤¤Þ¤¹¡£´ðËÜŪ¤ËºÇ½é¤Ëlogin¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æǧ¾Ú¤ò¤ª ¤³¤Ê¤¤¤Þ¤¹¡£Ç§¾Ú¤¬À®¸ù¤¹¤ì¤Ð~/.cvspass¤Ë¥Ñ¥¹¥ï¡¼¥É¤¬°Å¹æ²½¤µ¤ì¤ÆÊݸ¤µ ¤ì°Ê²¼¤½¤Î¥Ñ¥¹¥ï¡¼¥É¤ò»È¤Ã¤ÆÄÌ¿®¤·¤Þ¤¹¡£
$ cvs -d :pserver:¥æ¡¼¥¶Ì¾@¥Û¥¹¥È̾:¥Ñ¥¹Ì¾ login (Logging in to ¥æ¡¼¥¶Ì¾@¥Û¥¹¥È̾) CVS password: ---- ¥Ñ¥¹¥ï¡¼¥É¤òÆþÎÏ $
¸å¤Ï¥í¡¼¥«¥ë¤Î»þ¤ÈƱ¤¸¤è¤¦¤Ëcvs¥³¥Þ¥ó¥É¤òÍøÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
ext¤Çssh¤ò»È¤¦¾ì¹ç¡¢¥ê¥Ý¥¸¥È¥ê¤ò¸ø³«¤¹¤ë¦¤Ç¤ÏÆäˤʤˤ⤹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ssh¤Ç¤½¤Î¥æ¡¼¥¶¤¬¥í¥°¥¤¥ó¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¡¢¥ê¥Ý¥¸¥È¥ê¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤¬ ¤½¤Î¥æ¡¼¥¶¤¬Æɤ߽ñ¤¤Ç¤¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤À¤±¤Ç¤¹¡£
ext¤Çssh¤òÍøÍѤ¹¤ë¦¤Ï¥ê¥Ý¥¸¥È¥ê¤Î¾ì½ê¤È¤·¤Æ ¡Ö:ext:¥æ¡¼¥¶Ì¾@¥Û¥¹¥È̾:¥Ñ¥¹Ì¾¡×¤ò»È¤¤¤Þ¤¹¡£ext¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï rsh¤ò»È¤¦¤Î¤Çssh¤ò»È¤¦¾ì¹ç¤Ë¤Ï´Ä¶ÊÑ¿ô CVS_RSH ¤Ë ssh¤òÀßÄꤷ¤Æ¤ª¤¯ ɬÍפ¬¤¢¤ê¤Þ¤¹
$ CVS_RSH=ssh; export CVS_RSH $
pserver¤È°ã¤Ã¤Æ¡¢Ç§¾Ú¤Ïssh¤Ç¤ª¤³¤Ê¤ï¤ì¤ë¤Î¤ÇCVS¤Ç¤Ê¤Ë¤«¤ò¤¹¤ëɬÍפϤ¢ ¤ê¤Þ¤»¤ó¡£ext¤ò»È¤¦»þ¤Ï CVS_RSH¤Ç»ØÄꤵ¤ì¤¿¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥ê¥Ý¥¸¥È¥ê ¤Î¤¢¤ë¥Þ¥·¥ó¤Ë¥í¥°¥¤¥ó¤·¤Æ¡¢cvs server¥³¥Þ¥ó¥É¤òµ¯Æ°¤·¤Æ¤½¤ì¤È¼ê¸µ¤Î cvs¥×¥í¥»¥¹¤ÈÄÌ¿®¤·¤Æ½èÍý¤ò¤ª¤³¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
ssh¤Î¾ì¹ç¡¢ssh-agent¤Ë¥Ñ¥¹¥Õ¥ì¡¼¥º¤òµ²±¤µ¤»¤Æ¤ª¤±¤ÐËè²ó¥Ñ¥¹¥Õ¥ì¡¼¥º¤ò ÆþÎϤ¹¤ëɬÍפ¬¤Ê¤¯¤Ê¤ë¤Î¤ÇÊØÍø¤Ç¤¹¡£
Subversion¤Î¾ì¹ç¡¢¥Í¥Ã¥È¥ï¡¼¥¯Âбþ¤Ë¤¹¤ë¤Ë¤Ï¤¤¤¯¤Ä¤«¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£
Subversion¤Ç¤Ï¡¢svnserve¤È¤¤¤¦¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥Í¥Ã¥È¥ï¡¼¥¯·Ðͳ¤Ç ¥ê¥â¡¼¥È¤Î¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë»ÅÁȤ¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¥ê¥Ý¥¸¥È¥ê¤ò¸ø³«¤¹¤ë¦¤Ç¤Ï¡¢svnserve¥³¥Þ¥ó¥É¤òinetd·Ðͳ¤Çµ¯Æ°¤¹¤ë¤è¤¦ ¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£Subversion¤Ç¤Ïport 3690¤ò»È¤¤¤Þ¤¹¡£¤â¤·¤Þ¤À /etc/services ¤ËÅÐÏ¿¤µ¤ì¤Æ¤¤¤Ê¤¤¤±¤ì¤Ð°Ê²¼¤Î¤è¤¦¤ÊÆâÍƤò /etc/services ¤ËÅÐÏ¿¤·¤Þ¤¹¡£
svn 3690/tcp
¤½¤·¤Æinetd.conf¤Ë°Ê²¼¤Î¤è¤¦¤ÊÆâÍƤòÅÐÏ¿¤·¡¢inetd¤òºÆµ¯Æ°¤·¤Þ¤¹¡£
svn stream tcp nowait ¥æ¡¼¥¶ /usr/sbin/tcpd /usr/bin/svnserve -r /parent/of/svnrepos -R
¤³¤Î¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤Èsvnserve¤Ï¥æ¡¼¥¶¸¢¸Â¤Ç¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤·¤Ë¤¤¤ ¤Þ¤¹¡£¤½¤Î¤¿¤á¤½¤Î¥æ¡¼¥¶¤¬¥ê¥Ý¥¸¥È¥ê¤òÆɤ߽ñ¤¤Ç¤¤ë¤è¤¦¤Ë¥ê¥Ý¥¸¥È¥ê¤Î ¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÄ´À°¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
/parent/of/svnrepos ¤Ï /path/to/svnrepos ¤Î¾å¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤¹¡£¤â¤· /path/to/svnrepos¤¬ /var/local/subversion/repos ¤Ê¤É¤Î¾ì¹ç /parent/of/svnrepos ¤Ë¤Ï /var/local/subversion ¤ò»ØÄꤷ¤Þ¤¹¡£¤³¤Î¤è¤¦ ¤Ë -r ¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¤Ç¡¢¤³¤³¤¬ svnserve¤Ç½èÍý¤¹¤ë»þ¤Î/ ¥Ç¥£¥ì¥¯ ¥È¥ê¤È¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤êURL¤Î¥Ñ¥¹Ì¾¤Ë repos¤ò»È¤¦¤³¤È¤Ç /var/local/subversion/repos¤È¤¤¤¦¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ ¤¹¡£
-R ¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤ë¤³¤È¤ÇÆɤߤȤêÀìÍѤÎsvnserve¤È¤·¤ÆÆ°¤¯¤è¤¦¤Ë¤Ê¤ê ¤Þ¤¹¡£svnserve¤ò¤³¤Î¤è¤¦¤Ë¤·¤Æ»È¤¦¾ì¹ç¤Ï¥¢¥¯¥»¥¹À©¸æ¤¹¤ëÊýË¡¤¬tcpd¤·¤« ¤Ê¤¯¤Ê¤ë¤Î¤ÇÆɤߤȤêÀìÍѤˤ·¤¿¤Û¤¦¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡£
¤³¤Î¤è¤¦¤Ê¥ê¥Ý¥¸¥È¥ê¤Ë¥ê¥â¡¼¥È¤«¤é¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ï¡Ösvn://¥Û¥¹¥È̾/¥Ñ ¥¹Ì¾¡×¤Î¤è¤¦¤ÊURL¤ò»È¤¤¤Þ¤¹¡£¤³¤Î»þ¡Ösvnserve¤Î-r¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤷ¤¿ ¥Ñ¥¹¡×/¡ÖURL¤Î¥Ñ¥¹Ì¾¡×¤¬¥Û¥¹¥È̾¤Ç¼¨¤µ¤ì¤ë¥Û¥¹¥È¾å¤Ç¤Î¥ê¥Ý¥¸¥È¥ê¤Î¥Ñ¥¹ ¤È¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£
inetd¤ÇÆ°¤«¤¹¤«¤ï¤ê¤Ë¥Ç¡¼¥â¥ó¤È¤·¤ÆÆ°¤«¤¹¤³¤È¤â¤Ç¤¤Þ¤¹¡£¤³¤Î¾ì¹ç¤Ï ¥ª¥×¥·¥ç¥ó¤Ï´ðËÜŪ¤Ëinetd¤Î»þ¤ÈƱ¤¸¤Ç -d ¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤ÆÆ°¤«¤¹¤³¤È¤Ë ¤Ê¤ê¤Þ¤¹¡£
$ svnserve -r /parent/of/svnrepos -R -d $
¤³¤Î¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë¦¤Ïinetd¤Î»þ¤ÈÁ´¤¯Æ±¤¸¤Ç¤¹¡£
CVS¤Î»þ¤ÈƱ¤¸¤¯ssh¤ò»È¤Ã¤Æ¥ê¥â¡¼¥È¤Î¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤â¤Ç¤ ¤Þ¤¹¡£Subversion 0.23°ÊÁ°¤Ï¡¢~/.subversion/servers ¤Ëssh¤ò¥È¥ó¥Í¥ë¥¨¡¼ ¥¸¥§¥ó¥È¤È¤·¤Æ»È¤¦¤è¤¦¤ÊÀßÄê¤ò½ñ¤¤¤Æ¤¤¤Þ¤·¤¿¤¬¡¢Subversion 0.23¤«¤é ¡Ösvn+ssh://[¥æ¡¼¥¶Ì¾@]¥Û¥¹¥È̾/¥Ñ¥¹Ì¾¡×¤È¤¤¤¦URL¤ò»È¤¦¤è¤¦¤Ë¤Ê¤ê¤Þ¤· ¤¿¡£¤³¤Î¾ì¹ç¥ê¥â¡¼¥È¤Î¥Û¥¹¥È¤Ëssh¤Ë¥í¥°¥¤¥ó¤·¤Æ¡¢snvserve -t ¤ò¼Â¹Ô¤· ¤½¤ì¤ÈÄÌ¿®¤·¤Æ½èÍý¤ò¤ª¤³¤Ê¤¤¤Þ¤¹¡£
¤Ê¤ª¡¢~/.ssh/authorized_keys ¤Ç¡¢svn+ssh ¤Ë¤è¤ë¥¢¥¯¥»¥¹¤òµö¤¹ ¸°¤ÎÁ°¤Ë
command="svnserve -t"
¤òÉÕ¤±¤Æ¤ª¤±¤Ð¡¢¤½¤ì°Ê³°¤Î¥³¥Þ¥ó¥É¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ë¤¹¤ë¤³¤È¤ÇSubversion¤Î¤¿¤á¤À¤±¤Î¥¢¥«¥¦¥ó¥È¤òºî¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤³¤Î»þ¤â¥ê¥Ý¥¸¥È¥ê¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ËÃí°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ Ê£¿ô¤Î¥æ¡¼¥¶¤Ç»È¤¦»þ¤Ï¡¢¤ß¤ÊƱ¤¸¥°¥ë¡¼¥×¤Ë°¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¤¤Æ umask 002 ¤Çsvnserve¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤±¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£
Subversion¤Ï Apache2¤ò»È¤¦¤³¤È¤Ç WebDAV/DeltaV ¥×¥í¥È¥³¥ë¤ò»È¤Ã¤Æ ÄÌ¿®¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ÎÊýË¡¤ò»È¤¦¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ê¥á¥ê¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡£
¤¿¤À¤·WebDAV¤ò»È¤¦¾ì¹ç¡¢svn¥×¥í¥È¥³¥ë¤ò»È¤¦¤è¤ê¤âÃÙ¤¤¤è¤¦¤Ç¤¹¡£
Apache2¤ò»È¤¦¾ì¹ç¡¢mod_dav_svn.so¤ò¤¤¤¦¥â¥¸¥å¡¼¥ë¤ò»È¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ Debian¤Î¾ì¹ç¡¢¤³¤ì¤Ï libapache2-dav-svn ¤È¤¤¤¦¥Ñ¥Ã¥±¡¼¥¸¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç ¤³¤ì¤òapt-get¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£
¤³¤Î¥â¥¸¥å¡¼¥ë¤ò͸ú¤Ë¤¹¤ë¤Ë¤Ïa2enmod¤ò»È¤¤¤Þ¤¹¡£
# a2enmod dav_svn Module dav_svn installed successfully; run apache2ctl graceful to enable. #
¤³¤Î¥³¥Þ¥ó¥É¤Ï´ðËÜŪ¤Ë /etc/apache2/mods-available ¤Ë¤¢¤ë¤â¤Î¤Ë /etc/apache2/mods-enable/ ¤«¤é¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò¤Ï¤Ã¤Æ apache2¤òºÆµ¯Æ°¤·¤Æ¤¤¤ë¤À¤±¤Ç¤¹¡£/etc/apache2/mods-enable/ °Ê²¼¤Ë ¤¢¤ë¤Î¤¬º£Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥â¥¸¥å¡¼¥ë¤ÎÀßÄê¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£
dav_svn¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤Ï dav_svn.conf¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ç¤¹¡£
°ìÈÖ´Êñ¤ÊÀßÄê¤À¤È¼¡¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£
<Location /svn/repos> DAV svn SVNPath /path/to/svnrepos SVNAutoversioning on AuthType Basic AuthName "Subversion repository" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFILE OPTIONS REPORT> Require valid-user </Limit> </Location>
Location ¤Ç¤É¤Î¤è¤¦¤Ê¥Ñ¥¹¤Ç³°¤Ë¸«¤»¤ë¤«¤òÀßÄꤷ¤Þ¤¹¡£¤³¤Î¾ì¹ç ¡Öhttp://¥Û¥¹¥È̾/svn/repos/¡×¤È¤¤¤¦URL¤Ç¥¢¥¯¥»¥¹¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
DAV svn ¤È¤¹¤ë¤³¤È¤Ç¡¢¤³¤³¤ÇWebDAV¤¬Í¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£
SVNPath ¤Ç Subversion¤Î¥ê¥Ý¥¸¥È¥ê¤Î¥í¡¼¥«¥ë¤Î¥Ñ¥¹¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¥ê ¥Ý¥¸¥È¥ê¤¬Æ±¤¸¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Ë¤¿¤¯¤µ¤ó¤¢¤ë¾ì¹ç¤ÏSVNParentPath ¤ò»È¤Ã ¤¿Êý¤¬¤¤¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£
SVNAuthoversioning on ¤È¤¹¤ë¤³¤È¤Ç¡¢ÉáÄ̤ÎWebDAV¥¯¥é¥¤¥¢¥ó¥È¤Ç¤â Æɤ߽ñ¤¤¬¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¤Þ¤Þ¤Ç¤Ïï¤Ç¤âÆɤ߽ñ¤¤¬¤Ç¤¤Æ¤·¤Þ¤¦¤Î¤ÇÉáÄ̤Ïǧ¾Ú¤ò½ñ¤±¤Æ¤ª¤¤Þ¤¹¡£ ¤É¤Îǧ¾Ú¤Ç¤â¤¤¤¤¤Î¤Ç¤¹¤¬°ìÈÖ´Êñ¤ÊAuthUserFile¤ò»È¤Ã¤¿¤Î¤¬¤³¤ÎÎã¤Ç¤¹¡£ AuthUserFile¤Ç»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤Ï htpasswd2 ¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¥Ñ¥¹¥ï¡¼¥É ¤ÎÅÐÏ¿¤ò¤·¤Þ¤¹¡£
# rm -f /etc/subversion/passwd # htpasswd2 -c /etc/subversion/passwd ¥æ¡¼¥¶Ì¾1 New password: Re-type new password: Adding password for user ¥æ¡¼¥¶Ì¾1 # htpasswd2 /etc/subversion/passwd ¥æ¡¼¥¶Ì¾2 New password: Re-type new password: Adding password for user ¥æ¡¼¥¶Ì¾2 #
°Ê²¼¤ÎÀßÄê¤Ï¡¢ÆɤߤȤê¤Ïanonymous¤Ç¤Ç¤¤ë¤±¤ì¤Ç¤â½ñ¤¤³¤ß¤Ë¤Ï ǧ¾Ú¤òɬÍפȤ¹¤ë¤È¤¤¤¦ÀßÄê¤Ë¤Ê¤ê¤Þ¤¹¡£
<LimitExcept GET PROPFILE OPTIONS REPORT> Require valid-user </Limit>
¤â¤·¡¢ÆɤߤȤê¤Ë¤âǧ¾Ú¤òɬÍפȤ¹¤ë¤Î¤Ê¤é¤Ð<LimitExcept>¤Ê¤·¤Ç Require valid-user ¤Ê¤É¤òľÀܽñ¤¯¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¤è¤¦¤Ë¤·¤¿¾ì¹ç¡¢Apache2¤«¤é¥ê¥Ý¥¸¥È¥ê¤Ø¤Ï Apache2¤òÆ°¤«¤·¤Æ¤¤¤ë¥æ¡¼¥¶ (www-data)¤¬¥¢¥¯¥»¥¹¤·¤Ë¤¤¤¯¤³¤È¤Ë ¤Ê¤ê¤Þ¤¹¡£¤½¤Î¤¿¤á¥ê¥Ý¥¸¥È¥ê¤Ï¤½¤Î¥æ¡¼¥¶(www-data)¤¬Æɤ߽ñ¤¤Ç¤¤ë ¤è¤¦¤Ë¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£WebDAV·Ðͳ¤Ç¤·¤«¤½¤Î¥ê¥Ý¥¸¥È¥ê¤Ë ¥¢¥¯¥»¥¹¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤ª¤¤¤Æ¥ê¥Ý¥¸¥È¥ê¤òwww-data¤Î½êͤˤ·¤Æ ¤·¤Þ¤¦¤Î¤¬°ìÈÖ´Êñ¤ÊÊýË¡¤Ç¤¹¡£
¤³¤Î¤è¤¦¤ËÀßÄꤵ¤ì¤¿WebDAV¤ò»È¤Ã¤¿Subversion¥ê¥Ý¥¸¥È¥ê¤Ï ¡Öhttp://¥Û¥¹¥È̾/svn/repos¡×¤Î¤è¤¦¤ÊURL¤Ç¥¢¥¯¥»¥¹¤Ç¤¤Þ¤¹¡£
ǧ¾Ú¤¬¤«¤±¤Æ¤¢¤ë¾ì¹ç¡¢¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ë¥æ¡¼¥¶Ì¾¤È ¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Îǧ¾Ú¾ðÊó¤Ï--no-auth-cache ¥ª¥×¥·¥ç¥ó¤Ê¤É¤ò»È¤ï¤Ê¤¤¸Â¤ê¡¢~/.subversion/auth/ °Ê²¼¤Ë³ÊǼ ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£º£¤Î¤È¤³¤íÆä˰Ź椬¤«¤±¤é¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤â¤Ê¤¯ ʿʸ¤ÇÊݸ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤Ë¤Ï½½Ê¬Ãí°Õ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
CVS¤Ç¤ÏCVSROOT/loginfo¤Ê¤É¤ò»È¤¦¤³¤È¤Ç¡¢¥³¥ß¥Ã¥È¤µ¤ì¤¿»þ¤Ë¥á¡¼¥ë¤òÁ÷¤Ã ¤¿¤ê¡¢¸ø³«¤¹¤ë¾ì½ê¤Çcvs update¤ò¤·¤Æ¨ºÂ¤ËÈ¿±Ç¤µ¤»¤¿¤ê¤È¤¤¤Ã¤¿¤³¤È¤ò¼Â ¸½¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¡£
Subversion¤Ç¤Ïhooks¤ò»È¤¦¤³¤È¤ÇƱ¤¸¤è¤¦¤Ê¤³¤È¤¬¼Â¸½¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ï ¥ê ¥Ý¥¸¥È¥ê¤Î hooks¤È¤¤¤¦¥Ç¥£¥ì¥¯¥È¥ê°Ê²¼¤Ë¤¢¤ê¤Þ¤¹¡£svnadmin create¤Ç¥ê ¥Ý¥¸¥È¥êºî¤ë¤È°Ê²¼¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤¬hooks¥Ç¥£¥ì¥¯¥È¥ê¤Ëºî¤é¤ì¤Æ¤¤¤Þ¤¹¡£
$ ls hooks post-commit.tmpl pre-commit.tmpl start-commit.tmpl post-revprop-change.tmpl pre-revprop-change.tmpl $
¤³¤ì¤é¤Ï¤¤¤º¤ì¤â¥Æ¥ó¥×¥ì¡¼¥È¤Ç¤¢¤ê¼ÂºÝ¤Ë¤Ï»È¤ï¤ì¤Þ¤»¤ó¡£¼ÂºÝ¤Ë¥Õ¥Ã¥¯¤È ¤·¤Æ»È¤¦¤¿¤á¤Ë¤Ï .tmpl¤È¤¤¤¦³ÈÄ¥»Ò¤ò¤Î¤¾¤¤¤¿¥Õ¥¡¥¤¥ë¤ò¼Â¹Ô²Äǽ¤Ë¤·¤Æ¤³ ¤³¤ËÃÖ¤¤¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
Î㤨¤Ð¥³¥ß¥Ã¥È¤µ¤ì¤¿¤é¥á¡¼¥ë¤òÁ÷¤ë¤è¤¦¤Ë¤¹¤ë¤Ë¤Ï¡ú¥ê¥¹¥È1¤Î¤è¤¦¤Ê¥¹¥¯ ¥ê¥×¥È¤ò post-commit ¤È¤·¤Æ¤ª¤¤Þ¤¹¡£
¥ê¥¹¥È1 ¥á¡¼¥ë¤ò¤Ê¤²¤ëpost-commit
#!/usr/bin/ruby REPOS=ARGV[0] REV=ARGV[1].to_i svnauthor=%x{svnlook #{REPOS} rev #{REV} author}.chomp! svndate=%x{svnlook #{REPOS} rev #{REV} date}.chomp! svnchanged=%x{svnlook #{REPOS} rev #{REV} changed}.chomp! svnlog=%x{svnlook #{REPOS} rev #{REV} log}.chomp! svndiff=%x{svnlook #{REPOS} rev #{REV} diff}.chomp! toaddr = ['[email protected]', '[email protected]'] require 'net/smtp' Net::SMTP.start( 'localhost', 25 ) {|smtp| smtp.send_mail <<EndOfMail, '[email protected]', *toaddr From: Subversion Admin <[email protected]> To: Subversion committers:; Subject: Subversion commit #{REPOS} #{REV} Subversion committed to #{REPOS} #{REV} #{svnauthor} #{svndate} changed: #{svnchanged} log: #{svnlog} #{svndiff} EndOfMail }
post-commit¥¹¥¯¥ê¥×¥È¤Ë¤Ï¥ê¥Ý¥¸¥È¥ê¤Î¥Ñ¥¹¤È¡¢¥ê¥Ó¥¸¥ç¥óÈֹ椬¤ï¤¿¤µ¤ì ¤Æµ¯Æ°¤µ¤ì¤Þ¤¹¡£¤³¤ÎÎã¤Ë¤¢¤ë¤è¤¦¤Ësvnlook¤ò»È¤¦¤È¤½¤Î¥³¥ß¥Ã¥È¤Ç郎¤¤ ¤Ä¤É¤Î¤è¤¦¤Ê¥³¥ß¥Ã¥È¤ò¤·¤¿¤Î¤«¤È¤¤¤Ã¤¿¾ðÊó¤ò¤È¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
post-commit ¤ò¡ú¥ê¥¹¥È2¤Î¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤È¸ø³«¤¹¤ë¾ì½ê¤Çsvn update¤ò¤· ¤Æ¨ºÂ¤ËÈ¿±Ç¤µ¤»¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤ò»È¤¦¾ì¹ç¡¢ /path/to/checkouted/dir ¤Ë¤¢¤é¤«¤¸¤á¥Á¥§¥Ã¥¯¥¢¥¦¥È¤·¤Æ¤ª¤¤Þ¤¹¡£¤³¤Î¤è ¤¦¤Ë¤¹¤ë¤³¤È¤Ç¥³¥ß¥Ã¥È¤µ¤ì¤ëÅÙ¤Ësvn update¤¬¤ª¤³¤Ê¤ï¤ì¤Þ¤¹¡£¤³¤Î¥¹¥¯¥ê ¥×¥È¤Î¤è¤¦¤Ë svnlook dirs-changed ¤ò¸«¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤±¤ÐÉÔɬÍפʥ¢¥Ã¥× ¥Ç¡¼¥È¤ò¤µ¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡ú¥ê¥¹¥È2 ¨ºÂ¤Ëupdate¤¹¤ëpost-commit
#!/bin/sh -e REPOS="$1" cd /path/to/checkouted/dir umask 002 svn update `svnlook dirs-changed $REPOS | sed -e 's,trunk/,,'` &
CVS¤Î¾ì¹ç¥ê¥Ý¥¸¥È¥ê¤Ï¤¹¤Ù¤Æ¥Æ¥¥¹¥È¤Ç¤¢¤ê¡¢¤¤¤¶¤È¤¤¤¦»þ¤Ë¥¨¥Ç¥£¥¿¤Ê¤É ¤Ç½¤Àµ¤Ç¤¤ë¤È¤¤¤¦°Â¿´´¶¤¬¤¢¤ê¤Þ¤·¤¿¡£¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ï´ðËÜŪ¤Ë¥ê¥Ý¥¸¥È¥ê ¤ò¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤¹¤ë¤À¤±¤ÇºÑ¤ó¤Ç¤¤¤Þ¤·¤¿¡£
Subversion¤Î¾ì¹ç¡¢¥ê¥Ý¥¸¥È¥ê¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ê¤Î¤Ç¡¢¤³¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÃæ ¿È¤¬²õ¤ì¤ë¤È¤É¤¦¤·¤è¤¦¤â¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤Ï ²áµî¤ÎÍúÎò¤â¤¹¤Ù¤Æµ²±¤·¤Æ¤¤¤ë¤¿¤á¤Ë¡¢¤³¤Î¾ðÊ󤬼º¤ï¤ì¤Æ¤¤¤Þ¤Ã¤¿»þ¤Î» ³²¤Ï¤«¤Ê¤êÂ礤ʤâ¤Î¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£½¾¤Ã¤Æ¥ê¥Ý¥¸¥È¥ê¤Î¥Ð¥Ã¥¯¥¢¥Ã¥×¤Ï Èó¾ï¤Ë½ÅÍפǤ¹¡£
¥ê¥Ý¥¸¥È¥ê¤ò¤½¤Î¤Þ¤Þ¥³¥Ô¡¼¤·¤Æ¤·¤Þ¤Ã¤Æ¤â¤¤¤¤¤Î¤Ç¤¹¤¬¡¢hot-backup.py ¤È ¤¤¤¦¥¹¥¯¥ê¥×¥È¤¬¤¢¤ë¤Î¤Ç¤³¤ì¤ò»È¤¦¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£Debian¤Ç¤Ï subversion-tools¥Ñ¥Ã¥±¡¼¥¸¤Ç/usr/lib/subversion/hot-backup.py ¤È¤·¤ÆÍÑ °Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤ò
# /usr/lib/subversion/hot-backup.py /path/to/svnrepos /var/backups/subversion/
¤Î¤è¤¦¤Ë»È¤¦¤È /var/backups/subversion/ ¤Ë repos-n-m ¤Î¤è¤¦¤Ê ¤«¤ó¤¸¤Ç¥ê¥Ý¥¸¥È¥ê¤Î¥³¥Ô¡¼¤¬ºîÀ®¤µ¤ì¤Æ¤¤¤¤Þ¤¹¡£
¤½¤Î¾¤ÎÊýË¡¤È¤·¤Æ¤Ï svnadmin ¤Î dump¥³¥Þ¥ó¥É¤¬¤¢¤ê¤Þ¤¹¡£svnadmin¤Î dump¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¦¤È¥Ð¥¤¥Ê¥ê¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤«¤é¥Æ¥¥¹¥È·Á¼°¤ËÊÑ´¹¤µ ¤ì¤Æ½ÐÎϤµ¤ì¤Þ¤¹¡£¤³¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¥½¡¼¥¹¤Înotes/fs_dumprestore.txt ¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¼è¤ë»þ¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Æ¤¤¤¤Þ¤¹¡£
% svnadmin dump /path/to/svnrepos rev1 rev2 > dumpfile1 % svnadmin dump /path/to/svnrepos rev2+1 rev3 --incremental > dumpfile2 % svnadmin dump /path/to/svnrepos rev3+1 rev4 --incremental > dumpfile3 :
¤³¤ì¤ò¸µ¤ËÌ᤹¤Ë¤Ïsvnadmin¤Îload¥µ¥Ö¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£
% svnadmin create /path/to/svnnewrepos % svnadmin load /path/to/svnnewrepos < dumpfile1 % svnadmin load /path/to/svnnewrepos < dumpfile2 % svnadmin load /path/to/svnnewrepos < dumpfile3 :
¤µ¤Æ¡¢Subversion¤Ï¤Þ¤À³«È¯¤¬Â³¤¤¤Æ¤ª¤ê¡¢¤¤¤í¤¤¤í¤ÈÌäÂêÅÀ¤â»Ä¤Ã¤Æ¤¤¤Þ¤¹¡£ Î㤨¤Ð¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬ÌäÂê¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£
¥¢¥¯¥»¥¹¥³¥ó¥È¥í¡¼¥ë¤¬Éϼå¤Ç¤¹¡£´ðËÜŪ¤Ë¥ê¥Ý¥¸¥È¥êñ°Ì¤Ç¤·¤«¥¢¥¯¥»¥¹¤ò À©¸æ¤Ç¤¤Þ¤»¤ó¡£¤Ä¤Þ¤ê¥ê¥Ý¥¸¥È¥ê¤Ë¥¢¥¯¥»¥¹¤¹¤ë¸¢¸Â¤µ¤¨¤¢¤ì¤Ð¤½¤Î¥ê¥Ý¥¸ ¥È¥ê¤ÎÃæ¿È¤ËÂФ¹¤ëÁàºî¤Ï¤Ê¤ó¤Ç¤â¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£CVS¤Ç¤Ï¥Õ¥¡¥¤¥ë¤´ ¤È¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤Ç¤¢¤ëÄøÅÙÀ©¸Â¤ò¤«¤±¤ë¤³¤È¤¬¤Ç¤¤Þ¤·¤¿¤¬¡¢Subversion ¤Ë¤Ï¤½¤Î¤è¤¦¤Êµ¡Ç½¤Ï¤Þ¤À¤¢¤ê¤Þ¤»¤ó¡£º£¤ä¤ë¤È¤¹¤ì¤Ð hooks¤ò»È¤¦¤³¤È¤¯¤é ¤¤¤Ç¤¹¡£¤¿¤À¤·¡¢¥¢¥¯¥»¥¹¥³¥ó¥È¥í¡¼¥ë¤Ë´Ø¤·¤Æ¤Ï¤É¤Î¥ì¥¤¥ä¤Ç¥¢¥¯¥»¥¹À©¸æ ¤ò¤ª¤³¤Ê¤¨¤Ð¤¤¤¤¤Î¤«¤È¤¤¤Ã¤¿»ÅÍͤ«¤é¸½ºß¸¡Æ¤¤¬¤ª¤³¤Ê¤ï¤ì¤Æ¤¤¤Þ¤¹¡£
ÆüËܸì¥Õ¥¡¥¤¥ë̾¤Î°·¤¤¤¬¤Þ¤À¤¤Á¤ó¤È¤Ç¤¤Æ¤¤¤Þ¤»¤ó¡£
CVS¤Ë¤Ïannotate¤È¤¤¤¦µ¡Ç½¤¬¤¢¤Ã¤Æ¡¢¤É¤Î¹Ô¤ò郎ºÇ¸å¤ËÊѹ¹¤·¤¿¤«¤ò¸«¤ë ¤³¤È¤¬¤Ç¤¤ë¤Î¤Ç¤¹¤¬¡¢Subversion¤Ë¤Ï¤Þ¤À¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï1.0°Ü¹Ô¤Ë svn blame¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤ëͽÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
CVS¤Ç¤â¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¤¬Subversion¤Ç¤â¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ä¥Ï¡¼¥É¥ê¥ó ¥¯¤Î´ÉÍý¤¬¤Ç¤¤Þ¤»¤ó¡£¤³¤ì¤Ï¥ï¡¼¥¥ó¥°¥³¥Ô¡¼Â¦¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤â¤è ¤ë¤Î¤ÇÆñ¤·¤¤¤È¤³¤í¤Ç¤¹¡£º£¤Î¤È¤³¤í1.0°Ü¹Ô¤Ë¼ÂÁõ¤µ¤ì¤ëͽÄê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ ¤¹¡£
¤Þ¤À1.0¤Ë¤â¤Ê¤é¤Ê¤¤³«È¯¤Î½é´üÃʳ¬¤È¤¤¤¦¤³¤È¤â¤¢¤ê¡¢»ÅÍͤ¬¤«¤ï¤ë¤³¤È¤¬ ¤è¤¯¤¢¤ê¤Þ¤¹¡£ºÇ¶á¤À¤È¡¢Ç§¾Ú¾ðÊó¤ÎÊݸ¾ì½ê¤¬ .svn/¤«¤é ~/.subversion/auth¤Ë¤«¤ï¤Ã¤¿¤ê¤·¤Þ¤·¤¿¤·¡¢ssh¥È¥ó¥Í¥ë¤ò¤Ä¤«¤Ã¤¿svn¥×¥í ¥È¥³¥ë¤â~ /.subversion/servers ¤Ç¤Îsvn-tunnel-agent=ssh ¤È¤¤¤¦ÀßÄ꤫¤é svn+ssh: ¤È¤¤¤¦URL¤ò»È¤¦¤è¤¦¤Ë¤¹¤ë¤È¤¤¤Ã¤¿Êѹ¹¤¬¤¢¤ê¤Þ¤·¤¿¡£
Subversion¤Ë´·¤ì¤Æ¤¤¤Ê¤¤¤È¤Ï¤Þ¤ê¤¬¤Á¤Ê¥È¥é¥Ö¥ë¤ò¤Þ¤È¤á¤Æ ¤ª¤¤Þ¤¹¡£
Æɤ߽ñ¤¤Ç¤¤Ê¤¤¤È¥ê¥Ý¥¸¥È¥ê¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¥ª¡¼¥×¥ó¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤» ¤ó¡£¤·¤¿¤¬¤Ã¤Æ¡¢Ê£¿ô¿Í¤Ç»È¤¦»þ¤Ï group writable ¤Ç¡¢Á´°÷ umask 002 ¤Ç ¥¢¥¯¥»¥¹¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤¯¤Î¤¬³Î¼Â¤Ç¤¹¡£¤â¤·¤¯¤Ï¥ê¥Ý¥¸¥È¥ê¤Î¥¢¥¯¥»¥¹¤Ï WebDAV¤Î¤ß¤Ë¸ÂÄꤷ¤Æ¡¢apache2¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¥æ¡¼¥¶(www-data)¤Î½êͤˤ¹ ¤ë¤È¤¤¤¦¤Î¤â°ì¤Ä¤ÎÊýË¡¤Ç¤¹¡£
Subversion¤ò¥¢¥Ã¥×¥°¥ì¡¼¥É¤·¤¿»þ¡¢ÆäËBerkeley DB¤Î¥Ð¡¼¥¸¥ç¥ó¤¬¤«¤ï¤Ã ¤¿»þ¤Ê¤É¤Ë¥ê¥Ý¥¸¥È¥ê¤Î¥¢¥¯¥»¥¹¤¬¤Ç¤¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£¤½ ¤Î¤è¤¦¤Ê»þ¤Ï svnadmin recover /path/to/svnrepos ¤ò¼Â¹Ô¤·¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹ ¤Î½¤Éü¤ò¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¥³¥ß¥Ã¥È¤·¤Æ¤¤¤ëÅÓÃæ¤Ë¥¤¥ó¥¿¥é¥×¥È¤ò¤«¤±¤Æ¤È¤á¤¿¤ê¡¢¥Í¥Ã¥È¥ï¡¼¥¯¤ÎÀܳ ¤¬¤¤ì¤Æ¤·¤Þ¤Ã¤Æ¥³¥ß¥Ã¥È¤¬´°Á´¤Ë½ªÎ»¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¥í¥Ã¥¯¤¬»Ä¤Ã¤Æ¤·¤Þ ¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£Subversion¤Ç¤Ï¥³¥ß¥Ã¥È¤ò¥¢¥È¥ß¥Ã¥¯¤Ë¤¹¤ë¤¿¤á¤ËƱ¤¸¥ï¡¼ ¥¥ó¥°¥³¥Ô¡¼¤Ç¥³¥ß¥Ã¥È¤ò¤«¤±¤ë»þ¤Ë¥³¥ß¥Ã¥È¤¹¤ëÉôʬ¤Ë¥í¥Ã¥¯¤ò¤«¤±¤Æ¤¤¤Þ ¤¹¡£¥³¥ß¥Ã¥È¤Î½èÍý¤¬ÃæÃǤµ¤ì¤¿¤ê¤¹¤ë¤È¤½¤Î¥í¥Ã¥¯¤¬»Ä¤Ã¤¿¤Þ¤Þ¤Ë¤Ê¤Ã¤Æ¤· ¤Þ¤¤¡¢¤³¤ì¤¬»Ä¤Ã¤¿¤Þ¤Þ¤À¤È¿·¤¿¤Ê¥³¥ß¥Ã¥È¤¬¤Þ¤Ã¤¿¤¯¤Ç¤¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤ ¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢svn cleanup ¤Ç¥í¥Ã¥¯¤ò¾Ã¤¹É¬Íפ¬¤¢¤ê¤Þ¤¹¡£
Subversion¤Ï¤è¤ê¤è¤¤CVS¤ò¤á¤¶¤·¤¿¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤Ç¤¹¡£Æà ¤Ë¥Õ¥¡¥¤¥ë¤Î°ÜÆ°¤¬¼«Í³¤Ë¤Ç¤¤ë¤³¤È¡¢¥³¥ß¥Ã¥È¤¬¥¢¥È¥ß¥Ã¥¯¤Ç¤¢¤ë¤³¤È¤Ê¤É ¤¬Èó¾ï¤ËÆÃħŪ¤Ç¤¹¡£CVS¤Î»þ¤Ï¡¢¤¢¤ëÄøÅÙÁ´ÂÎÁü¤¬¤ß¤¨¤Æ¤¤Æ¡¢¥ì¥¤¥¢¥¦¥È ¤¬¤¤Þ¤Ã¤¿¤¯¤é¤¤¤Ë¤è¤¦¤ä¤¯¥¤¥ó¥Ý¡¼¥È¤·¤è¤¦¤È¤¤¤¦µ¤¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢ Subversion¤Î¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤Î°ÜÆ°¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Î°·¤¤¤¬µ¤³Ú¤Ê¤Î¤Ç½é´üÃÊ ³¬¤«¤é¤È¤ê¤¢¤¨¤º¥ê¥Ý¥¸¥È¥ê¤Ë¤¤¤ì¤Æ´ÉÍý¤¹¤ëµ¤¤Ë¤Ê¤ê¤Þ¤¹¡£
Subversion¤È¤¤¤¦¥½¥Õ¥È¥¦¥§¥¢¤â¤¹¤Ð¤é¤·¤¤¤â¤Î¤Ç¤¹¤¬¡¢Subversion¥×¥í¥¸¥§ ¥¯¥È¼«ÂΤ˸«½¬¤¦¤Ù¤ÅÀ¤¬Èó¾ï¤Ë¿¤¤¤È»×¤¤¤Þ¤¹¡£Subversion¤ÏÈó¾ï¤ËÈþ¤·¤¤ Àß·×Êý¿Ë¤Ç³«È¯¤µ¤ì¤Æ¤ª¤ê¡¢¥³¡¼¥Ç¥£¥ó¥°¥¹¥¿¥¤¥ë¤â·è¤á¤é¤ì¤Æ¤¤¤ë¤¿¤á¤Ë¡¢ ¤½¤Î´·½¬¤µ¤¨Íý²ò¤·¤Æ¤·¤Þ¤¨¤Ð¤«¤Ê¤êÆɤߤ䤹¤¤¥½¡¼¥¹¥³¡¼¥É¤À¤È»×¤¤¤Þ¤¹¡£ ¤³¤Î¤¢¤¿¤ê¤Ï¥½¡¼¥¹¥³¡¼¥É¤Î HACKING¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ë¤¤¤í¤¤¤í¤È½ñ¤«¤ì¤Æ¤¤ ¤ë¤Î¤Ç¶½Ì£¤Î¤¢¤ë¿Í¤Ï°ìÆɤ¹¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹¡£
¤·¤«¤·¤Ê¤¬¤é¤Þ¤À¤Þ¤À³«È¯ÅÓ¾å¤Ç¤¢¤ë¤³¤È¤Ë¤ÏÃí°Õ¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¤Ç¤·¤ç ¤¦¡£¤³¤ì¤«¤é¤â»ÅÍͤ¬¤«¤ï¤ë¤³¤È¤âͽÁÛ¤µ¤ì¤Þ¤¹¡£¤Þ¤À¤Þ¤ÀCVS¤Û¤É¸Ï¤ì¤Æ¤Ï ¤¤¤ë¤È¤Ï¸À¤¨¤Þ¤»¤ó¤¬¡¢Subversion¼«ÂΤ¬Subversion¤Ç´ÉÍý¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã ¤Æ¤«¤Ê¤ê¤Î»þ´Ö¤â¤¿¤Ã¤Æ¤¤¤Þ¤¹¤·¡¢¤¤¤í¤¤¤í¤Ê¥×¥í¥¸¥§¥¯¥È¤ÇSubversion¤ò»È ¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¿¤Î¤Ç¤â¤¦¼ÂÍѤ˻Ȥ¦¤³¤È¤Ï¤Ç¤¤ë¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£
¤è¤ê¾Ü¤·¤¤ÀâÌÀ¤Ï Subversion: The Definitive Guide ¤òÆɤó¤Ç¤¯¤À¤µ¤¤¡£¤³ ¤ì¤Ï O'Reilly¤Çȯ¹Ô¤µ¤ì¤ëͽÄê¤ÎSubversionËܤǤ¹¡£¥½¡¼¥¹¥³¡¼¥É¤Ë¤â´Þ¤Þ ¤ì¤Æ¤¤¤Þ¤¹¤·¡¢ http://svnbook.red-bean.com/ ¤ÇÆɤळ¤È¤â¤Ç¤¤Þ¤¹¡£ Debian¤Ç¤Ï/usr/share/doc/subversion/book¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Æü ËܸìÌõ¤¬ http://subversion.bluegate.org/doc/book.html ¤Ë¤¢¤ê¤Þ¤¹¡£