×÷ΪÐÂÒ»´úµÄ¿ªÔ´°æ±¾¿ØÖƹ¤¾ß£¬Subversion ÒÔÆäĿ¼°æ±¾»¯¡¢Ô×ÓÌá½»¡¢°æ±¾»¯µÄÔªÊý¾Ý¡¢¸ü¼ÓÓÐЧµÄ·ÖÖ§ºÍ±êÇ©µÈÓÅÁ¼ÌØÐÔ£¬ÕýÖð½¥Êܵ½¿ªÔ´Èí¼þÉçÇøµÄÖØÊÓ£¬²¢ÓÐÍûÈ¡´ú
CVS£¬³ÉΪ¿ªÔ´Èí¼þ¿ª·¢Öа汾¿ØÖƵÄÊ×ѡϵͳ¡£ÔÚ·þÎñÆ÷¶Ë£¬Subversion ×î´óµÄ¶ÀÌØÖ®´¦£¬ÔÚÓÚËü¿ÉÒÔͨ¹ýÒ»¸öÀ©Õ¹Ä£¿éÓë
Apache µÄ HTTP ·þÎñÆ÷Ïà½áºÏ£¬ÊµÏֺܶà¸ß¼¶µÄ¹ÜÀí¹¦ÄܺͰ²È«ÌØÐÔ¡£Óë CVS Ïà±È£¬Subversion
ʵÏÖÁ˸ü¼ÓÏȽøºÍ°²È«µÄÓû§ÈÏÖ¤¹¦ÄÜ¡£ÔÚ Apache µÄÖ§³ÖÏ£¬Óû§¿ÉÒÔͨ¹ý HTTP ÐÒé·ÃÎʰ汾¿â£¬¹ÜÀíÔ±¿ÉÒÔ¶ÔÓû§·ÃÎÊ
HTTP µÄȨÏÞ×ö³ö¾ßÌåµÄÉèÖã¬Í¬Ê± Subversion »¹¿ÉÒÔ»ñµÃ SSL ´«Êä¼ÓÃÜ£¬Óû§Êý¾Ý¼ÓÃÜ£¬ÒÔ¼°Ä¿Â¼¼¶µÄ·ÃÎÊ¿ØÖƵÈÌØÐÔ¡£
±¾ÎĽ«ÔÚ·þÎñÆ÷¶ËÅäÖù¤×÷µÄ½Ç¶È£¬½áºÏ×÷ÕßÔÚʵ¼Ê¿ª·¢¹¤×÷µ±ÖеÄÅäÖÃʵÀý£¬½éÉÜ
Subversion ·þÎñÆ÷¶ËµÄ»ù±¾ÅäÖú͹ÜÀí£¬ÒÔ¼°ÈçºÎ½« Subversion Óë Apache ½áºÏ£¬ÊµÏÖһЩ¸ß¼¶¹ÜÀí¹¦ÄÜ¡£
Subversion ¼ò½é
ÔÚ¿ªÔ´Èí¼þµÄ¿ª·¢¹ý³Ìµ±ÖУ¬ÓÉÓÚ¿ª·¢·½Ê½×ÔÓɺͿª·¢ÈËÔ±·ÖÉ¢ÕâÐ©ÌØÐÔ£¬°æ±¾¿ØÖÆÎÊÌâÒ»Ö±ÊǹØÏµµ½ÏîÄ¿³É°ÜµÄÖØÒªÎÊÌ⡣ûÓа汾¿ØÖÆÏµÍ³µÄÖ§³Ö£¬¿ªÔ´Èí¼þµÄ¿ª·¢¹ý³Ì¾ÍÊÇ»ìÂҺͲ»¿É¿ØÖƵġ£
³¤ÆÚÒÔÀ´£¬CVS ×÷ΪһÖÖÆÕ±é²ÉÓõĿªÔ´°æ±¾¿ØÖƹ¤¾ß£¬ÔںܶàµÄ¿ªÔ´Èí¼þÏîÄ¿µ±Öг䵱ÁËÖØÒªµÄ½ÇÉ«¡£ÔÚ
Eclipse µ±ÖУ¬¸üÊÇ°Ñ CVS ×÷Ϊһ¸öĬÈϵIJå¼þ£¬Óë Ant£¬JUnit µÈ¹¤¾ß²¢ÁÐÔÚÒ»Æð£¬³ÉΪ
Eclipse Èí¼þ¿ª·¢µÄ»ù±¾¹¤¾ß¡£½üÄêÀ´£¬Ëæ×Å¿ªÔ´ÉçÇøµÄ·¢Õ¹£¬Ò»ÖÖ¹¦Äܸü¼ÓÇ¿´óµÄ¿ªÔ´°æ±¾¿ØÖƹ¤¾ßÖð½¥½øÈëÁËÈËÃǵÄÊÓÒ°£¬ÄǾÍÊÇ
Subversion£¬Æ¾½èןüΪÓÅÐãµÄÌØÐÔ£¬Subversion ÕýÔÚÖð²½È¡´ú CVS£¬³ÉΪÐÂÒ»´úµÄ¿ªÔ´°æ±¾¿ØÖƹ¤¾ß¡£
Ïà±È CVS£¬Subversion ÖеÄĿ¼¡¢ÎļþÒÔ¼°¸ÄÃûµÈÔªÊý¾Ý¶¼ÊDZ»°æ±¾»¯µÄ£¬ÀýÈçÎļþµÄ¸ÄÃû¡¢¿½±´µÈµÈ²Ù×÷£»¶øÇÒ£¬ÔÚ
Subversion ÖУ¬Ìá½»²Ù×÷ÊDz»¿É·Ö¸îµÄ£¬ÐÞ¶©°æ±¾ºÅÊÇ»ùÓÚÿ´ÎÌá½»²Ù×÷¶ø·ÇÎļþ£»ÁíÍ⣬Subversion
¿ÉÒÔ¶ÀÁ¢ÔËÐУ¬ÓÐ×ÅÇáÁ¿¼¶µÄ·ÖÖ§£¨Branching£©Óë±êÇ©£¨Tagging£©²Ù×÷£¬°æ±¾¿â¿ÉÒÔ²ÉÓÃÊý¾Ý¿â£¨Berkeley
DB£©»òÕßÊÇʹÓÃÌØ¶¨¸ñʽµÄÎļþ½øÐд洢£¬¶Ô¶þ½øÖÆÎļþ½øÐд¦Àí¸üΪÓÐЧ£»×îºó£¬Subversion ¹¤¾ßÒÔ¼°Ïà¹Ø²å¼þ¶¼ÓÐןܺõĹú¼Ê»¯Ö§³Ö£¬¿ÉÒÔÖ§³Ö°üÀ¨¼òÌåÖÐÎÄÔÚÄڵĶàÖÖÓïÑÔ°æ±¾£¬·½±ãÈ«Çò¸÷µØµÄ¿ª·¢ÈËÔ±¡£ÕâЩÓÅÐãµÄÐÂÌØÐÔ£¬Ê¹µÃ
Subversion ³ÉΪ¿ªÔ´ÉçÇøÄ¿Ç°µÄ×î¼ÑÑ¡Ôñ¡£
¶ÔÓÚÆÕͨÓû§£¬¼´Ó¦ÓóÌÐò¿ª·¢Õß¶øÑÔ£¬ÓÈÆäÊÇ¶Ô Eclipse µÄÓû§¶øÑÔ£¬Subversion
µÄʹÓÃÊ®·ÖµÄ¼òµ¥¡£Í¨¹ý¹Ù·½ÌṩµÄ Eclipse ²å¼þ Subclipse£¬Óû§¿ÉÒÔÔÚ Eclipse
ÀïÃæºÜ·½±ãµÄʹÓà Subversion ¿Í»§¶ËµÄ¸÷Ïî»ù±¾¹¦ÄÜ¡£¾ßÌåµÄ¿Í»§¶ËÉèÖúÍʹÓ÷½·¨£¬Çë²Î¿¼ Subversion
¹Ù·½ÍøÕ¾ºÍ Subclipse ¹Ù·½ÍøÕ¾¡£¼òµ¥ËµÀ´£¬ÔÚ Eclipse ÖÐʹÓà Subversion ²å¼þµÄ»ù±¾¹¦ÄÜ£¬Èç¸üС¢Ìá½»¡¢Í¬²½¡¢·ÖÖ§µÈµÈ£¬»ù±¾ÉÏͬʹÓÃ
Eclipse ×Ô´øµÄ CVS ²å¼þһģһÑù£¬ÕâÑù£¬Óû§¾Í¿ÉÒÔ´Ó CVS ·½±ãµÄ×ªÒÆµ½ Subversion¡£
Ŀǰ£¬Subversion ÒѾÉý¼¶µ½ 1.3.2 °æ±¾£¬Ïà¹ØÏÂÔØ¡¢ÌØÐÔ˵Ã÷ºÍÏêϸʹÓÃÊÖ²á¿ÉÒÔÔÚ
Subversion Ö÷Ò³ÉÏÕÒµ½¡£
¼òµ¥µÄ°æ±¾¿â¹ÜÀí
ÓÐÁ˼òµ¥Ò×ÓõĿͻ§¶Ë£¬´ó²¿·ÖµÄÓû§¶¼¿ÉÒÔÇáËÉʹÓà Subversion
ÁË£¬²»¹ý£¬×÷Ϊ·þÎñÆ÷¶ËµÄ¹ÜÀíÈËÔ±£¬»¹±ØÐë½øÒ»²½Á˽â·þÎñÆ÷¶ËµÄ»ù±¾ÅäÖùÜÀí£¬²Å¿ÉÒÔ³ä·ÖÀûÓà Subversion
µÄ¸÷ÏîÓÅÐãÌØÐÔ¡£
°æ±¾¿â´´½¨
Subversion µÄ°æ±¾¿â£¨repository£©£¬¾ÍÊÇλÓÚ·þÎñÆ÷¶Ë£¬Í³Ò»¹ÜÀíºÍ´¢´æÊý¾ÝµÄµØ·½¡£±¾ÎÄÖУ¬ÎÒÃÇÒÔ
Linux ΪÀý£¬½éÉÜÔÚ·þÎñÆ÷¶ËÅäÖú͹ÜÀí Subversion °æ±¾¿âµÄ»ù±¾·½·¨¡£
Òª´´½¨Ò»¸ö°æ±¾¿â£¬Ê×ÏÈҪȷ¶¨²ÉÓÃÄÄÖÖÊý¾Ý´æ´¢·½Ê½¡£ÔÚ Subversion
ÖУ¬°æ±¾¿âµÄÊý¾Ý´æ´¢ÓÐÁ½ÖÖ·½Ê½£¬Ò»ÖÖÊÇÔÚ Berkeley DB Êý¾Ý¿âÖдæ·ÅÊý¾Ý£»ÁíÒ»ÖÖÊÇʹÓÃÆÕͨÎļþ£¬²ÉÓÃ×Ô¶¨ÒåµÄ¸ñʽÀ´´¢´æ£¬³ÆÎª
FSFS¡£
Á½ÖÖ´æ·Å·½Ê½¸÷ÓÐÓÅȱµã£¬¶ÁÕß¿ÉÒԲο¼ http://svnbook.org/
ÉÏÃæµÄÎĵµÀ´Á˽âÁ½ÕßÏêϸµÄ±È½ÏºÍÇø±ð£¬ÕâÀÎÒÃǽöÒýÓÃÉÏÊöÎĵµµ±Öеļòµ¥¶ÔÕÕ±í£¬¸ø³öÒ»¸ö¼òÃ÷µÄ±È½Ï¡£
±í 1. Á½ÖÖ°æ±¾¿âÊý¾Ý´æ´¢¶ÔÕÕ±í

È·¶¨Á˾ßÌåµÄÊý¾Ý´æ´¢ÀàÐÍ£¬Ö»ÒªÔÚÃüÁîÐе±ÖÐÖ´ÐÐ svnadmin ÃüÁî¾Í¿ÉÒÔ´´½¨Ò»¸ö
Subversion °æ±¾¿â£¬ÃüÁîÈçÏÂ
# ´´½¨Îļþ¼Ð $ mkdir /etc/svn/ $ mkdir /etc/svn/repos # ÔËÐд´½¨°æ±¾¿âµÄÃüÁָ¶¨Êý¾Ý´æ´¢Îª FSFS£¬Èç¹ûÒªÖ¸¶¨Îª Berkeley DB£¬Ôò½« fsfs Ìæ»»Îª bdb $ svnadmin create --fs-type fsfs /etc/svn/repos |
Èç¹ûÒ»ÇÐÕý³££¬ÃüÁîÖ´Ðк󲻻áÓÐÈκη´À¡ÐÅÏ¢¶øÑ¸ËÙ·µ»Ø£¬ÕâÑù£¬Ò»¸öеİ汾¿â¾Í±»´´½¨³öÀ´ÁË¡£ÎÒÃÇÀ´²é¿´Ò»ÏÂÉú³ÉµÄ°æ±¾¿â½á¹¹£º
$ ls -l /etc/svn/repos ×ÜÓÃÁ¿ 56 drwxrwxr-x 2 robert robert 4096 8Ô 27 17:27 conf drwxrwxr-x 2 robert robert 4096 8Ô 27 17:27 dav drwxrwsr-x 5 robert robert 4096 8Ô 27 17:27 db -r--r--r-- 1 robert robert 2 8Ô 27 17:27 format drwxrwxr-x 2 robert robert 4096 8Ô 27 17:27 hooks drwxrwxr-x 2 robert robert 4096 8Ô 27 17:27 locks -rw-rw-r-- 1 robert robert 229 8Ô 27 17:27 README.txt |
ÆäÖУ¬conf Ŀ¼Ï´æ·ÅÁ˰汾¿âµÄÅäÖÃÎļþ£¬°üÀ¨Óû§·ÃÎÊ¿ØÖƺÍȨÏÞ¿ØÖƵÈÄÚÈÝ£¬Îļþ±¾ÉíµÄ×¢ÊÍ˵Ã÷Ê®·ÖÏêϸ£¬¶ÁÕß¿ÉÒÔ¸ù¾Ý×¢ÊÍ×ÔÐÐÅäÖã»dav
Ŀ¼ÊÇÌṩ¸ø Apache Ïà¹ØÄ£¿éµÄĿ¼£¬Ä¿Ç°Îª¿Õ£»db Ŀ¼Ï´æ·Å×Å Subversion ËùÒª¹ÜÀíµÄËùÓÐÊܰ汾¿ØÖƵÄÊý¾Ý£¬²»Í¬µÄ´æ´¢·½Ê½£¨Berkeley
DB »òÕß FSFS£©ÏÂÓÐ×Ų»Í¬µÄĿ¼½á¹¹£¬²»¹ýÎÒÃÇÒ»°ã²»ÓÃÖ±½ÓÐ޸ĺͲ鿴Õâ¸öĿ¼ÏµÄÄÚÈÝ£¬Subversion
µÄÃüÁî¿ÉÒÔ°²È«µÄ²Ù×÷Õâ¸öĿ¼£»ÁíÍ⣬hooks Ŀ¼´æ·Å׏³×ӽű¾¼°ÆäÄ£°æ£¨Ò»ÖÖ°æ±¾¿âʼþ´¥·¢³ÌÐò£©£¬locks
Ŀ¼´æ·Å×Å Subversion °æ±¾¿âËø¶¨Êý¾Ý£¬format Îļþ¼Ç¼Á˰汾¿âµÄ²¼¾Ö°æ±¾ºÅ¡£
ÏîÄ¿Ìí¼Ó
ÓÐÁËн¨µÄ°æ±¾¿â£¬¾Í¿ÉÒÔÍùÀïÃæÌí¼ÓÏîÄ¿ÁË¡£²»¹ý£¬¹ÜÀíÔ±±ØÐ뿼ÂǵÄÎÊÌâÊÇ£¬Ó¦¸Ã½«Ã¿Ò»¸öÏîÄ¿·Ö±ð·ÅÔÚ²»Í¬µÄ°æ±¾¿âÀïÃæ£¬»¹ÊÇÓ¦¸Ã½«ËüÃÇ·ÅÔÚͳһµÄ°æ±¾¿âÀïÃæ¡£Í³Ò»µÄ°æ±¾¿â¿ÉÒÔÈùÜÀíÔ±¸ü¼ÓÈÝÒ×µÄÉý¼¶ºÍ±¸·Ý£¬²»¹ý£¬ÓÉÓÚ·ÃÎÊȨÏÞ¿ØÖÆÊÇÕë¶ÔÕû¸ö°æ±¾¿âµÄ£¬ËùÒÔ£¬Í³Ò»µÄ°æ±¾¿âҲΪ²»Í¬ÏîÄ¿ÅäÖò»Í¬µÄ·ÃÎÊȨÏÞ´øÀ´ÁËÂé·³¡£ËùÒÔ£¬¹ÜÀíÔ±Ó¦¸Ã¸ù¾Ýʵ¼ÊÇé¿öȨºâ¿¼ÂÇ¡£
ÎÒÃÇÒÔͳһµÄ°æ±¾¿âΪÀý£¬Ìí¼ÓÁ½¸öÏîÄ¿ project_luni ºÍ project_test¡£Òª×öµ½Õâ¸ö£¬×îºÃµÄ°ì·¨¾ÍÊÇÓÃ
svn import ÃüÁîµ¼ÈëÒÑÓеÄĿ¼Ê÷¡£
Ê×ÏÈ£¬ÎÒÃÇÔÚÒ»¸öÁÙʱĿ¼Ï£¬¸ù¾Ý Subversion °æ±¾¿ØÖƵÄÒ»°ã²¼¾Ö½á¹¹£¬´´½¨³öÁ½¸öÏîÄ¿µÄÖ÷ҪĿ¼Ê÷£¬ÈçÏ£º
/etc/svn/tmp | ¨D¨Dproject_luni | | | ¨D¨Dbranches | | | ¨D¨Dtags | | | ¨D¨Dtrunk | ¨D¨Dproject_test | ¨D¨Dbranches | ¨D¨Dtags | ¨D¨Dtrunk |
È»ºó£¬Óà svn import ÃüÁîÀ´½øÐÐÏîÄ¿µÄµ¼È룺
$ svn import /etc/svn/tmp/ file:///etc/svn/repos/ --message "init" ÐÂÔö /etc/svn/tmp/project_test ÐÂÔö /etc/svn/tmp/project_test/trunk ÐÂÔö /etc/svn/tmp/project_test/branches ÐÂÔö /etc/svn/tmp/project_test/tags ÐÂÔö /etc/svn/tmp/project_luni ÐÂÔö /etc/svn/tmp/project_luni/trunk ÐÂÔö /etc/svn/tmp/project_luni/branches ÐÂÔö /etc/svn/tmp/project_luni/tags Ìá½»ºóµÄÐÞ¶©°æÎª 1¡£ |
°æ±¾¿â²é¿´
×÷Ϊ°æ±¾¿â¹ÜÀíÔ±£¬ÎÒÃǾ³£ÐèÒª²é¿´ Subversion °æ±¾¿âµÄ×´¿ö£¬Õâ¾ÍÐèҪһЩ¡°Ö»¶Á¡±µÄ²é¿´¹¤¾ß¡£
ÔÚÉÏÊöÏîÄ¿µ¼ÈëÍê³ÉÒÔºó£¬ÎÒÃÇ¿ÉÒÔÓà svn list È·Èϵ¼ÈëµÄÏîÄ¿ÊÇ·ñÕýÈ·£º
$ svn list --verbose file:///etc/svn/repos/ 1 robert 8ÔÂ 27 18:24 project_luni/ 1 robert 8ÔÂ 27 18:24 project_test/ |
ÁíÍ⣬Èç¹ûÒª²é¿´×îÐÂÐÞ¶©°æ±¾µÄÐÅÏ¢£¬¿ÉÒÔʹÓà svnlook info ÃüÁ
$ svnlook info /etc/svn/repos/ robert 2006-08-27 18:24:27 +0800 (ÈÕ, 27 8ÔÂ 2006) 0 |
ÃüÁîÊä³öÁËÕâ¸ö°æ±¾¿âµÄ×îÐÂÐÞ¶©°æ±¾ÐÅÏ¢£¬°üÀ¨×÷Õß¡¢Ê±¼ä¡¢ÈÕÖ¾×ÖÊýºÍÈÕÖ¾ÄÚÈݵȡ£³ý¿ª×îÐÂÐÞ¶©°æÒÔÍ⣬ÎÒÃÇ»¹¿ÉÒÔÔÚÃüÁîºóÃæ½ÓÉÏ
¡°--revision °æ±¾ºÅ¡± À´Ö¸¶¨Ä³Ò»¸öÐÞ¶©°æµÄÏÔʾ¡£
ÁíÍ⣬ÎÒÃÇ»¹¿ÉÒÔÓÃÈçÏÂÃüÁîÀ´ÏÔʾ°æ±¾¿âµÄ¾ßÌåÊ÷Ðνṹ£¬ºóÃæµÄ ¡°--show-ids¡±
Ñ¡ÏîÖ¸¶¨ÏÔʾÿһ¸öÏÔÊ¾ÔªËØµÄÐ޸İ汾 ID¡£
$ svnlook tree /etc/svn/repos/ --show-ids / <0.0.r1/1007> project_test/ <1.0.r1/333> trunk/ <2.0.r1/0> branches/ <3.0.r1/74> tags/ <4.0.r1/152> project_luni/ <5.0.r1/793> trunk/ <6.0.r1/454> branches/ <7.0.r1/530> tags/ <8.0.r1/609> |
ÆäËû
ÕâÀïÓÐÒ»¸öÐèÒªÐÂÊÖ£¬ÓÈÆäÊÇϰ¹ßÁË Subversion ¿Í»§¶ËÃüÁî ¡°svn¡±
µÄÓû§×¢ÒâµÄÎÊÌ⣬ÄǾÍÊÇ£¬¡°svnadmin¡± ºÍ ¡°svnlook¡± ¶¼±»ÈÏΪÊÇ·þÎñÆ÷¶ËµÄ¹ÜÀí¹¤¾ß£¬Ö»±»ÓÃÓÚ°æ±¾¿âËùÔڵĻúÆ÷£¬ÓÃÀ´¼ì²éºÍά»¤°æ±¾¿â£¬²»ÄÜͨ¹ýÍøÂçÀ´Ö´ÐÐÈÎÎñ¡£ËùÒÔ£¬ÊÔͼ½«
URL ÉõÖÁ±¾µØ file ·¾¶´«µÝ¸øÕâÁ½¸ö³ÌÐò£¬¶¼ÊÇ´íÎóµÄ¡£
Subversion »¹Óкܶà¹ÜÀí¹¤¾ß¿É¹©¹ÜÀíÔ±Ó¦Óã¬ÐèÒªÁ˽âÕâÏ¾ßµÄʹÓ÷½·¨£¬¶ÁÕßÃÇ¿ÉÒÔÓÃ
svn help, svnadmin help, svnlook help µÈµÈÃüÁî²é¿´°ïÖúÐÅÏ¢£¬ÁíÍ⣬Subversion
²Î¿¼ÊÖ²áÌṩÁ˸üÎªÈ«ÃæºÍÏêϸµÄʹÓýéÉÜ¡£
»ù±¾µÄ·þÎñÆ÷ÅäÖÃ
Subversion Éè¼ÆÁËÒ»¸ö³éÏóµÄÍøÂç²ã£¬°æ±¾¿â½¨Á¢Íê±ÏÖ®ºó£¬¿ÉÒÔͨ¹ý¸÷ÖÖ·þÎñÆ÷ÏòÍ⹫²¼¡£svnserve
ÊÇ Subversion ×Ô´øµÄÒ»¸öСÐ͵ķþÎñÆ÷£¬ËüʹÓöÀÁ¢µÄÐÒéÓë¿Í»§¶Ë¡£ÎÒÃÇ¿ÉÒÔͨ¹ý
×÷Ϊ inetd Æô¶¯»òÕß
×÷ÎªÊØ»¤½ø³ÌÆô¶¯Ò»¸ö·þÎñ¡£·þÎñÆ÷Æô¶¯ºó£¬¿Í»§¶Ë¼´¿ÉÒÔͨ¹ý¾ø¶Ô·¾¶·ÃÎÊ¡£ÈçÉÏÀý¿ÉÒÔ·ÃÎÊ svn://·þÎñÆ÷IP/etc/svn/repos¡£Í¬Ê±¿ÉÒÔÖ¸¶¨Ò»Ð©Ñ¡Ï³£ÓõÄÈç
-r£¬ÓÃÀ´Ö¸¶¨°æ±¾¿âµÄ¸ù·¾¶£¬ÀýÈç¼ÙÉè°æ±¾¿âλÓÚ /etc/svn/repos£º
Ôò¿Í»§¶Ë¿ÉÒÔͨ¹ýÈçÏ URL ·ÃÎÊ·þÎñÆ÷£ºsvn://·þÎñÆ÷IP/repos£¬
ÕâÑù¿ÉÒÔÓÐЧµÄ±ÜÃⱩ¶±¾µØÂ·¾¶¡£ÁíÍâÈç --listen-port£¬--listen-host ¿ÉÒÔÖ¸¶¨°ó¶¨µÄµØÖ·ºÍ¶Ë¿Ú£¬-R
¿ÉÒÔÇ¿ÖÆÉ趨Ϊ Read-Only ģʽ¡£Èç¹ûÔÚ Windows ²Ù×÷ϵͳÏ£¬¿ÉÒÔ½«°æ±¾¿âÉ趨ÔÚ C ·ÖÇø£¬Èç
c:\svnroot\repos ¿ÉÒÔͨ¹ý svn://·þÎñÆ÷IP/svnroot/repos·ÃÎÊ£¬Èç¹ûÔÚÆäËû·ÖÇø£¬¾Í±ØÐëҪͨ¹ý
-r Ñ¡ÏîÀ´Ö¸¶¨ root λÖá£
svnserve ¿ÉÒÔͨ¹ýÅäÖà svnserve.conf À´½øÐÐһЩ¼òµ¥µÄ·ÃÎÊȨÏÞ¿ØÖÆ¡£Äã¿ÉÒÔÔÚ°æ±¾¿âµÄ
conf ×ÓÎļþ¼ÐÏ·¢ÏÖÕâ¸öÎļþ¡£ÎļþµÄ³õʼÄÚÈÝ´óÖÂÈçÏ£º
[general] # anon-access = read # auth-access = write password-db = passwd # authz-db = authz # realm = My First Repository |
ÆäÖÐ anon-access ±íʾÄäÃûÓû§µÄȨÏÞ£¬auth-access
±íʾÈÏÖ¤Óû§µÄȨÏÞÉèÖã¬password-db Ö¸Ïò±£´æÓû§ÕʺÅÃÜÂëµÄÎļþµÄλÖ㬿ÉÒÔʹÓÃÏà¶Ô·¾¶¡£svnserve
Ö»ÄܶÔÈ«¾ÖÌṩ¼òµ¥µÄ·ÃÎÊ¿ØÖÆ£¬Èç¹ûÏëÒª¸ü¼ÓÁé»îµÄ·½Ê½£¬¿ÉÒÔʹÓà Apache Http Server ×÷ΪÏòÍ⹫²¼°æ±¾¿âµÄ·½Ê½¡£
Óë Apache Http Server µÄ½áºÏ
ͨ¹ý Http ÐÒé·ÃÎʰ汾¿âÊÇ Subversion µÄÁÁµãÖ®Ò»¡£Ê¹ÓÃ
Http ÐÒéÒâζ×ÅÖ»ÐèÒª´ò¿ªä¯ÀÀÆ÷£¬ÊäÈë URL ¼´¿ÉÇáËɵÄä¯ÀÀÕû¸ö°æ±¾¿â¡£Áé»îͨ³£´øÀ´¸´ÔÓÐÔ£¬Http
·½Ê½Ïà¶ÔÓÚ svnserve ·½Ê½À´ËµÐèÒª¸ü¶àµÄÅäÖá£
ÓÉÓÚ Subversion ÐèÒª°æ±¾»¯µÄ¿ØÖÆ£¬Òò´Ë±ê×¼µÄ Http ÐÒé²»ÄÜÂú×ãÐèÇó¡£ÒªÈÃ
Apache Óë Subversion Ðͬ¹¤×÷£¬ÐèҪʹÓà WebDAV£¨Web ·Ö²¼Ê½´´×÷ºÍ°æ±¾¿ØÖÆ£©¡£WebDAV
ÊÇ HTTP 1.1 µÄÀ©Õ¹£¬¹ØÓÚ WebDAV µÄ¹æ·¶ºÍ¹¤×÷ÔÀí£¬¿ÉÒԲο¼ IETF RFC 2518¡£
ΪÁËʹ Subversion Óë dav Ä£¿éͨÐÅ£¬ÐèÒª°²×° mod_dav_svn
²å¼þ£¬¿ÉÒÔÔÚ Subversion µÄ°²×°Ä¿Â¼ÖÐÕÒµ½¡£½«Æä¿½±´µ½ Apache °²×°Ä¿Â¼µÄ modules
Îļþ¼ÐÏ¡£½ÓÏÂÀ´¾ÍÊÇÅäÖà Apache µÄ httpd.conf Îļþ£¬Èà Apache ÔÚÆô¶¯µÄʱºò¼ÓÔØÉÏÊöÄ£¿é¡£
ÐèÒªÌí¼ÓµÄÄÚÈÝÈçÏ£º
LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so <Location /repos> DAV svn SVNPath /etc/svn/repos </Location> |
Ê×ÏÈÐèÒªÆôÓà dav_module£¬È»ºó¼ÓÔØ dav_svn_module¡£Location
±êǩָ³ö·ÃÎ浀 URL ÒÔ¼°ÔÚ·þÎñÆ÷ÉϵÄʵ¼ÊλÖá£ÅäÖÃÍê±ÏºóÖØÐÂÆô¶¯ Apache£¬´ò¿ªä¯ÀÀÆ÷£¬ÊäÈë http://·þÎñÆ÷IP/repos
½«»á¿´µ½ÈçÏÂ»Ãæ£º

ͼ1. Ò»¸ö³õʼ°æ±¾¿â
Õâ±íʾ Apache µÄ dav_svn Ä£¿éÒѾ¿ÉÒÔÕý³£¹¤×÷ÁË¡£Óû§¿ÉÒÔʹÓÃÈκÎÒ»ÖÖ
Subversion µÄ¿Í»§¶Ëͨ¹ý Http ÐÒé·ÃÎÊÄãµÄ°æ±¾¿â¡£
Èç¹ûÏëÒªÖ¸¶¨¶à¸ö°æ±¾¿â£¬¿ÉÒÔÓöà¸ö Location ±êÇ©£¬Ò²¿ÉÒÔʹÓÃ
SVNParentPath ´úÌæ SVNPath£¬ÀýÈçÔÚ /etc/svn ÏÂÓжà¸ö°æ±¾¿â repos1£¬repos2
µÈµÈ£¬ÓÃÈçÏ·½Ê½Ö¸¶¨£º
<Location /repos> DAV svn SVNParentPath /etc/svn </Location> |
"SVNParentPath /etc/svn" ±íʾ
/etc/svn ϵÄÿ¸ö×ÓĿ¼¶¼ÊÇÒ»¸ö°æ±¾¿â¡£¿ÉÒÔͨ¹ý http://·þÎñÆ÷IP/repos/repos1£¬http://·þÎñÆ÷IP/repos/repos2
À´·ÃÎÊ¡£
ÏÖÔÚÄãµÄ°æ±¾¿âÈκÎÈ˶¼¿ÉÒÔ·ÃÎÊ£¬²¢ÇÒÓÐÍêÈ«µÄд²Ù×÷ȨÏÞ¡£Ò²¾ÍÊÇ˵ÈκÎÈ˶¼¿ÉÒÔÄäÃû¶ÁÈ¡£¬Ð޸ģ¬Ìá½»£¬ÒÔ¼°É¾³ý°æ±¾¿âÖеÄÄÚÈÝ¡£ÏÔÈ»´ó²¿·Ö³¡ºÏÕâÊDz»·ûºÏÐèÇóµÄ¡£ÄÇôÈçºÎ½øÐÐȨÏÞÉèÖÃÄØ£¬Apache
ÌṩÁË»ù±¾µÄȨÏÞÉèÖãº
Ê×ÏÈÐèÒª´´½¨Ò»¸öÓû§Îļþ¡£Apache ÌṩÁËÒ»¸ö¹¤¾ß htpasswd£¬ÓÃÓÚÉú³ÉÓû§Îļþ£¬¿ÉÒÔÔÚ
Apache µÄ°²×°Ä¿Â¼ÏÂÕÒµ½¡£¾ßÌåʹÓ÷½·¨ÈçÏ£º
htpasswd etc/svn/passwordfile username |
Èç¹û passwordfile ²»´æÔÚ£¬¿ÉÒÔ¼ÓÉÏ -c Ñ¡ÏîÈà htpasswd
н¨Ò»¸ö¡£´´½¨ºÃµÄÎļþÄÚÈÝÊÇÓû§Ãû¼ÓÉÏÃÜÂëµÄ MD5 ÃÜÎÄ¡£
½ÓÏÂÀ´ÐÞ¸Ä httpd.conf£¬ÔÚ Location ±êÇ©ÖмÓÈëÈçÏÂÄÚÈÝ£º
AuthType Basic AuthName "svn repos" AuthUserFile /etc/svn/passwordfile Require valid-user |
ÖØÐÂÆô¶¯ Apache£¬ ´ò¿ªä¯ÀÀÆ÷·ÃÎʰ汾¿â¡£Apache »áÌáʾÄãÊäÈëÓû§ÃûºÍÃÜÂëÀ´ÈÏÖ¤µÇ½ÁË£¬ÏÖÔÚÖ»ÓÐ
passwordfile ÎļþÖÐÉ趨µÄÓû§²Å¿ÉÒÔ·ÃÎʰ汾¿â¡£Ò²¿ÉÒÔÅäÖÃÖ»ÓÐÌØ¶¨Óû§¿ÉÒÔ·ÃÎÊ£¬Ìæ»»ÉÏÊö "Require
valid-user" Ϊ "Require user tony robert"
½«Ö»ÓÐ tony ºÍ robert ¿ÉÒÔ·ÃÎʸð汾¿â¡£
ÓеÄʱºòÒ²Ðí²»ÐèÒªÕâÑùÑϸñµÄ·ÃÎÊ¿ØÖÆ£¬ÀýÈç´ó¶àÊý¿ªÔ´ÏîÄ¿ÔÊÐíÄäÃûµÄ¶ÁÈ¡²Ù×÷£¬¶øÖ»ÓÐÈÏÖ¤Óû§²ÅÔÊÐíд²Ù×÷¡£ÎªÁËʵÏÖ¸üΪϸÖµÄȨÏÞÈÏÖ¤£¬¿ÉÒÔʹÓÃ
Limit ºÍ LimitExcept ±êÇ©¡£ÀýÈ磺
<LimitExcept GET PROPFIND OPTIONS REPORT> require valid-user </LimitExcept> |
ÈçÉÏÅäÖý«Ê¹ÄäÃûÓû§ÓжÁȡȨÏÞ£¬¶øÏÞÖÆÖ»ÓÐ passwordfile ÖÐÅäÖõÄÓû§¿ÉÒÔʹÓÃд²Ù×÷¡£Èç¹ûÕ⻹²»ÄÜÂú×ãÄãµÄÒªÇ󣬿ÉÒÔʹÓÃ
Apache µÄ mod_authz_svn Ä£¿é¶Ôÿ¸öĿ¼½øÐÐÈÏÖ¤²Ù×÷¡£
Óà mod_authz_svn ½øÐÐĿ¼·ÃÎÊ¿ØÖÆ
Ê×ÏÈÐèÒªÈà Apache ½« mod_authz_svn Ä£¿é¼ÓÔØ½øÀ´¡£ÔÚ
Subversion µÄ°²×°Ä¿Â¼ÖÐÕÒµ½ mod_auth_svn Ä£¿é£¬½«Æä¿½±´µ½ Apache °²×°Ä¿Â¼µÄ
modules ×ÓĿ¼Ï¡£ÐÞ¸Ä httpd.conf Îļþ£¬ÕÒµ½
LoadModule dav_svn_module modules/mod_dav_svn.so |
ÔÚÆäºóÃæ¼ÓÉÏ
LoadModule authz_svn_module modules/mod_authz_svn.so |
ÏÖÔÚ¿ÉÒÔÔÚ Location ±êÇ©ÖÐʹÓà authz µÄ¹¦ÄÜÁË¡£Ò»¸ö»ù±¾µÄ authz ÅäÖÃÈçÏ£º
<Location /repos> DAV svn SVNPath /etc/svn/repos AuthType Basic AuthName "svn repos" AuthUserFile /etc/svn/passwd AuthzSVNAccessFile /etc/svn/accesspolicy Satisfy Any Require valid-user </Location> |
AuthzSVNAccessFile Ö¸ÏòµÄÊÇ authz µÄ²ßÂÔÎļþ£¬ÏêϸµÄȨÏÞ¿ØÖÆ¿ÉÒÔÔÚÕâ¸ö²ßÂÔÎļþÖÐÖ¸¶¨£¬È磺
#Á½¸ö·Ö×飺committers£¬developers [groups] committers = paulex richard developers = jimmy michel spark sean \ steven tony robert #ÔÚ¸ùĿ¼ÏÂÖ¸¶¨ËùÓеÄÓû§ÓжÁȨÏÞ [/] * = r #×·¼Ó committers ×éÓû§ÓжÁдȨÏÞ @committers = rw #ÔÚ branches/dev Ŀ¼ÏÂÖ¸¶¨ developers ×éµÄÓû§ÓжÁдȨÏÞ [/branches/dev] @developers = rw #ÔÚ /tags ×éϸøÓèÓû§ tony ¶ÁдȨÏÞ [/tags] tony = rw #½ûÖ¹ËùÓÐÓû§·ÃÎÊ /private Ŀ¼ [/private] * = #¸ø committers ×éÓû§¶ÁȨÏÞ @committers= r |
ʹÓà SVNParentPath ´úÌæ SVNPath À´Ö¸¶¨¶à¸ö°æ±¾¿âµÄ¸¸Ä¿Â¼Ê±£¬ÆäÖÐËùÓеİ汾¿â¶¼½«°´ÕÕÕâ¸ö²ßÂÔÎļþÅäÖá£ÀýÈçÉÏÀýÖÐ
tony ½«¶ÔËùÓа汾¿âÀïµÄ /tags Ŀ¼¾ßÓжÁдȨÏÞ¡£Èç¹ûÒª¶Ô¾ßÌåÿ¸ö°æ±¾¿âÅäÖã¬ÓÃÈçϵÄÓï·¨£º
[groups] project1_committers = paulex richard project2_committers = jimmy michel spark sean \ steven tony robert [repos1:/] * = r @ project1_committer = rw [repos2:/] * = r @ project2_committer = rw |
ÕâÑùÏîÄ¿1µÄ committer ×éÖ»ÄÜ¶Ô repos1 °æ±¾¿âϵÄÎļþ¾ßÓÐдȨÏÞ¶ø²»ÄÜÐ޸İ汾¿â
repos2£¬Í¬ÑùÏîÄ¿2µÄ commiter Ò²²»ÄÜÐÞ¸Ä repos1 °æ±¾¿âµÄÎļþ¡£
Óà MySQL ´úÌæÎļþÐÎʽ´æ·ÅÃÜÂë
µ½Ä¿Ç°ÎªÖ¹ÎÒÃǵÄÓû§ÃûÃÜÂëÎļþ»¹ÊÇÒÔÎı¾ÎļþÐÎʽ´æ·ÅÔÚÎļþϵͳÖе쬳öÓÚ°²È«ÐÔµÄÐèÒª»òÕßµ¥µãµÇ½µÈ¿ÉÀ©Õ¹ÐԵĿ¼ÂÇ£¬Îı¾ÎļþµÄ¹ÜÀí·½Ê½¶¼²»ÄÜÂú×ãÐèÇóÁË¡£Í¨¹ý
Apache µÄ module_auth_mysql Ä£¿é£¬ÎÒÃÇ¿ÉÒÔÓà MySQL À´±£´æÓû§ÐÅÏ¢¡£¸ÃÄ£¿éµÄÖ÷Ò³ÔÚ
http://modauthmysql.sourceforge.net/£¬ÄãÒ²¿ÉÒÔÔÚ http://modules.apache.org/
ÕÒµ½ËüµÄ·¢Ðа汾¡£°²×°·½·¨Í¬ÉÏÊö Apache µÄÄ£¿éÒ»Ñù£¬¿½±´ÖÁ modules Ŀ¼²¢ÔÚ httpd.conf
ÎļþÖÐÌí¼ÓÈçÏÂÓï¾ä£º
LoadModule mysql_auth_module modules/mod_auth_mysql.so |
ÏàÓ¦µÄ Location ÇøÓò¸ÄдΪ£º
<Location /repos> AuthName "MySQL auth" AuthType Basic AuthMySQLHost localhost AuthMySQLCryptedPasswords Off AuthMySQLUser root AuthMySQLDB svn AuthMySQLUserTable users require valid-user </Location> |
È»ºóÔÚ mysql ÖÐÌí¼ÓÃûΪ svn µÄÊý¾Ý¿â£¬²¢½¨Á¢ users Êý¾Ý±í£º
create database svn; use svn; CREATE TABLE users ( user_name CHAR(30) NOT NULL, user_passwd CHAR(20) NOT NULL, user_group CHAR(10), PRIMARY KEY (user_name) ); |
ÔÚ users ±íÖвåÈëÓû§ÐÅÏ¢
insert into users values('username','password','group'); |
ÖØÐÂÆô¶¯ Apache£¬ÔÚ·ÃÎʰ汾¿âµÄʱºò Apache ¾Í»áÓà mysql
Êý¾Ý±íÖеÄÓû§ÐÅÏ¢À´ÑéÖ¤ÁË¡£
Óà SSL ʵÏÖ°²È«µÄÍøÂç´«Êä
ͨ¹ý Apache µÄÍøÂçÁ´½Ó£¬°æ±¾¿âÖеĴúÂëºÍÊý¾Ý¿ÉÒÔÔÚ»¥ÁªÍøÉÏ´«Ê䣬ΪÁ˱ÜÃâÊý¾ÝµÄÃ÷ÎÄ´«Ê䣬ʵÏÖ°²È«µÄ°æ±¾¿ØÖÆ£¬ÐèÒª¶ÔÊý¾ÝµÄ´«Êä½øÐмÓÃÜ¡£Apache
ÌṩÁË»ùÓÚ SSL µÄÊý¾Ý´«Êä¼ÓÃÜÄ£¿é mod_ssl£¬ÓÐÁËËü£¬Óû§¾Í¿ÉÒÔÓà https ÐÒé·ÃÎʰ汾¿â£¬´Ó¶øÊµÏÖÊý¾ÝµÄ¼ÓÃÜ´«ÊäÁË¡£SSL
ÐÒé¼°ÆäʵÏÖ·½Ê½£¬ÊÇÒ»¸ö·Ç³£¸´ÔӵϰÌ⣬±¾ÎÄÖ»ÊǽéÉÜ Apache ÌṩµÄ×î»ù±¾µÄSSLÅäÖ÷½·¨£¬¸ü¼ÓÏêϸµÄ½éÉÜÄÚÈÝ£¬Çë²Î¿¼
http://httpd.apache.org/docs-2.0/ssl/ ÉϵÄÎĵµ¡£
¿ªÊ¼ÅäÖÃǰ£¬ÎÒÃÇÐèÒªÒ»¸öʵÏÖ Apache ÖÐ SSL Ä£¿éµÄ¶¯Ì¬³ÌÐò¿â£¬Í¨³£ÃûΪ
mod_ssl.so£¬¼°ÆäÅäÖÃÎļþ£¬Í¨³£ÃûΪ ssl.conf¡£Õâ¸öʵÏÖÊǸú Apache µÄ°æ±¾Ïà¹ØµÄ£¬²»Æ¥ÅäµÄ°æ±¾ÊDz»ÄÜÓõģ»¶øÇÒ£¬²¢²»ÊÇÿһ¸ö
Apache µÄ°æ±¾¶¼×Ô´øÁËÏà¹ØÊµÏÖÎļþ£¬ºÜ¶àÇé¿öÏ£¬ÎÒÃÇÐèÒª×Ô¼ºÈ¥ËÑѰÏà¹ØÎļþ¡£ÁíÍ⣬ÎÒÃÇ»¹ÐèÒª OpenSSL
Èí¼þ¼°ÆäÅäÖÃÎļþ£¬À´Éú³É¼ÓÃÜÃÜÔ¿ºÍÊý×ÖÖ¤Êé¡£ÕâÀÎÒÃÇ¿ÉÒÔʹÓÃһЩÃâ·ÑÍøÕ¾£¬Èç http://hunter.campbus.com/
ÉÏÌṩµÄ¼¯³É°æ±¾µÄ Apache¡£
ÓÐÁËÏà¹ØµÄ¹¤¾ßºÍÎļþ£¬ÎÒÃǾͿÉÒÔ¿ªÊ¼Éú³É SSL µÄÖ¤ÊéºÍÃÜÔ¿ÁË¡£Ê×ÏÈ£¬ÎÒÃÇÐèÒªÕÒµ½
openssl ³ÌÐò¼°ÆäÅäÖÃÎļþ openssl.cnf£¬ÔËÐÐÈçÏÂÃüÁîÀ´Éú³É 128 λµÄ RSA ˽ÓÐÃÜÔ¿Îļþ
my-server.key£º openssl genrsa -des3 -out my-server.key 1024 Loading 'screen' into random state - done Generating RSA private key, 1024 bit long modulus .....++++++ ........++++++ e is 65537 (0x10001) Enter pass phrase for server.key:******** Verifying - Enter pass phrase for server.key:******** |
ÃüÁîÔËÐÐÆÚ¼äÐèÒªÓû§ÊäÈ벢ȷÈÏ×Ô¼ºµÄÃÜÂë¡£
ÏÖÔÚ£¬ÎÒÃÇÐèÒª SSL µÄÈÏÖ¤Ö¤Ê飬֤ÊéÊÇÓÉ CA£¨certificate
authority£© ·¢·Å²¢ÇÒÈÏÖ¤µÄ¡£Îª´Ë£¬ÎÒÃÇ¿ÉÒÔÓÃÈçÏÂÃüÁîÉú³ÉÒ»¸ö CSR(Certificate
Signing Request) Îļþ·¢¸ø CA£¬´Ó¶øµÃµ½ CA µÄÈÏÖ¤£º
openssl req -new -key my-server.key -out my-s erver.csr -config openssl.cnf |
µ±È»£¬Ò»°ãÇé¿öÏ£¬Èç¹û Subversion µÄÓû§²»ÊÇÌ«¶à£¬°²È«Çé¿ö²»ÊǺܸ´ÔÓ£¬ÎÒÃÇÒ²¿ÉÒÔÉú³ÉÒ»¸ö×ÔÇ©ÃûµÄÈÏÖ¤Ö¤Ê飬´Ó¶øÊ¡È¥ÁËÏò
CA ÉêÇëÈÏÖ¤µÄÂé·³¡£ÈçÏÂÃüÁ
openssl req -new -key my-server.key -x509 -out my-server.crt -config openssl.cnf |
ÒÔÉÏÁ½¸öÃüÁî¶¼ÐèÒªÓû§ÊäÈëÄǸö key ÎļþµÄÃÜÂ룬ÒÔ¼°Ò»Ð©ÍøÂçÉèÖÃÐÅÏ¢£¬ÈçÓòÃû£¬ÓÊÏäµÈµÈ£¬ÕâÀïÊäÈëµÄ·þÎñÆ÷ÓòÃûÓ¦¸ÃÓë
Apache ÅäÖÃÎļþµ±ÖеÄÒ»Ö¡£ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÔÚ Apache µÄ conf Ŀ¼ÏÂн¨Ò»¸ö ssl
Ŀ¼£¬½« my-server.key ºÍ my-server.crt Îļþ¶¼Òƶ¯µ½ ssl Ŀ¼ÀïÃæ¡£È»ºóÐÞ¸Ä
ssl.conf Îļþ£¬½« SSLCertificateKeyFile ºÍ SSLCertificateFile
ÏîÖ¸ÏòÕâÁ½¸öÎļþ¡£
Èç¹û Apache µÄ module Ŀ¼ÀïÃæÃ»ÓÐ mod_ssl.so
Îļþ£¬¿ÉÒÔ½«ÊÂÏÈ×¼±¸ºÃµÄÎļþ¿½±´¹ýÈ¥¡£È»ºó£¬ÎÒÃÇ¿ÉÒÔÉèÖà Apache µÄÅäÖÃÎļþ httpd.conf£¬½«
ssl Ä£¿é¼ÓÈëÆäÖУº
LoadModule ssl_module modules/mod_ssl.so |
È»ºó£¬ÔÚÅäÖÃÎļþµÄ×îºó£¬¼ÓÉÏÈçÏ SSL Ïà¹ØÅäÖÃÏ
SSLMutex default SSLRandomSeed startup builtin SSLSessionCache none
ErrorLog logs/SSL.log
LogLevel info
<VirtualHost svntest.ut.cn.ibm.com:443>
SSLEngine On
SSLCertificateFile conf/ssl/my-server.crt
SSLCertificateKeyFile conf/ssl/my-server.key
</VirtualHost> |
ÕâÑù£¬»ù±¾µÄÉèÖù¤×÷¾ÍÍê³ÉÁË¡£ÖØÐÂÆô¶¯ Apache ·þÎñÆ÷£¬ÏÖÔÚ¿ÉÒÔÓà https ÐÒé´úÌæ http
ÐÒéÀ´·ÃÎʰ汾¿âÁË¡£Èç¹ûÒªÏÞ¶¨°æ±¾¿âÖ»ÄÜÓà https ·ÃÎÊ£¬ÎÒÃÇ¿ÉÒÔÔÚ Apache ÅäÖÃÎļþµ±ÖÐ Subversion
²¿·Ö¼ÓÉÏ ¡°SSLRequireSSL¡±¡£ÈçÏ£º
<Location /repos> DAV svn SVNPath /etc/svn/repos ¡¡¡¡.#other items SSLRequireSSL </Location> |
×ܽá
Subversion ÒÔÆäÓÅÁ¼µÄ°æ±¾¿ØÖƹ¦ÄÜ£¬Áé»îµÄÍøÂç·ÃÎÊÄ£ÐÍ£¬ÒÔ¼°Óë
Apache ·þÎñÆ÷ÁªºÏÅäÖÃËù´øÀ´µÄ¸üÇ¿´óµÄ¹ÜÀí¿ØÖÆ¹¦ÄÜ£¬Öð½¥ÔÚ¿ªÔ´Èí¼þ¿ª·¢µÄʵ¼ùµ±Öеõ½¹ã·ºµÄÓ¦Óᣱ¾ÎÄÖØµã½éÉÜÁË
Subversion ·þÎñÆ÷¶ËµÄÅäÖÃÒÔ¼°Óë Apache ·þÎñÆ÷ÁªºÏÅäÖõĻù±¾²½ÖèºÍ¼òµ¥Ó¦Óã¬ÊµÏÖÁ˼òµ¥µÄʵÀýÓ¦Ó᣶ÁÕßÈç¹ûÏëÒª½øÒ»²½Á˽âÏà¹ØÐÅÏ¢£¬Çë²Î¿¼ÎÄÕºóÃæÁгöµÄÏà¹Ø×ÊÁÏ¡£
|