Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Óà Apache ºÍ Subversion ´î½¨°²È«µÄ°æ±¾¿ØÖÆ»·¾³
 
×÷ÕߣºÎâ«hò«£¬ºúî£ À´Ô´£ºIBM ·¢²¼ÓÚ 2015-01-05
  2443  次浏览      27
 

×÷ΪÐÂÒ»´úµÄ¿ªÔ´°æ±¾¿ØÖƹ¤¾ß£¬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 ×Ô´øµÄÒ»¸öСÐ͵ķþÎñÆ÷£¬ËüʹÓöÀÁ¢µÄЭÒéÓë¿Í»§¶Ë¡£ÎÒÃÇ¿ÉÒÔͨ¹ý

svnserve ¨Ci

×÷Ϊ inetd Æô¶¯»òÕß

svnserve ¨Cd

×÷ÎªÊØ»¤½ø³ÌÆô¶¯Ò»¸ö·þÎñ¡£·þÎñÆ÷Æô¶¯ºó£¬¿Í»§¶Ë¼´¿ÉÒÔͨ¹ý¾ø¶Ô·¾¶·ÃÎÊ¡£ÈçÉÏÀý¿ÉÒÔ·ÃÎÊ svn://·þÎñÆ÷IP/etc/svn/repos¡£Í¬Ê±¿ÉÒÔÖ¸¶¨Ò»Ð©Ñ¡Ï³£ÓõÄÈç -r£¬ÓÃÀ´Ö¸¶¨°æ±¾¿âµÄ¸ù·¾¶£¬ÀýÈç¼ÙÉè°æ±¾¿âλÓÚ /etc/svn/repos£º

svnserve ¨Cd -r /etc/svn

Ôò¿Í»§¶Ë¿ÉÒÔͨ¹ýÈçÏ 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 ·þÎñÆ÷ÁªºÏÅäÖõĻù±¾²½ÖèºÍ¼òµ¥Ó¦Óã¬ÊµÏÖÁ˼òµ¥µÄʵÀýÓ¦Ó᣶ÁÕßÈç¹ûÏëÒª½øÒ»²½Á˽âÏà¹ØÐÅÏ¢£¬Çë²Î¿¼ÎÄÕºóÃæÁгöµÄÏà¹Ø×ÊÁÏ¡£

   
2443 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÿÈÕ¹¹½¨½â¾ö·½°¸
ÈçºÎÖÆ¶¨ÓÐЧµÄÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀíÖ÷Òª»î¶¯¼°ÊµÏÖ·½·¨
¹¹½¨¹ÜÀíÈëÃÅ
Ïà¹ØÎĵµ

ÅäÖùÜÀíÁ÷³Ì
ÅäÖùÜÀí°×ƤÊé
CM09_CÅäÖùÜÀí±ê×¼
ʹÓÃSVN½øÐа汾¿ØÖÆ
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀíʵ¼ù
ÅäÖùÜÀí·½·¨¡¢¹¤¾ßÓëÓ¦ÓÃ
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
²úÆ··¢²¼¹ÜÀí
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

Èí¼þÅäÖùÜÀíµÄÎÊÌ⡢ĿµÄ
Èí¼þÅäÖùÜÀí¹æ·¶
CQWeb 7.1ÐÔÄܲâÊÔÓëµ÷ÓÅÖ¸ÄÏ
ΪʲôÐèҪʹÓÃClearCase
ClearCaseÓëRTCµÄ¼¯³É
ÀûÓÃClearQuest ½øÐвâÊÔ¹ÜÀí


²úÆ··¢²¼¹ÜÀí
ÅäÖùÜÀí·½·¨¡¢Êµ¼ù¡¢¹¤¾ß
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
ʹÓÃCCÓëCQ½øÐÐÏîĿʵ¼ù
CVSÓëÅäÖùÜÀí
Subversion¹ÜÀíÔ±


ÅäÖùÜÀíʵ¼ù£¨´Ó×éÖ¯¼¶µ½ÏîÄ¿¼¶£©
ͨºÅÔº ÅäÖùÜÀí¹æ·¶ÓëÓ¦ÓÃ
ÅäÖùÜÀíÈÕ¹¹½¨¼°³ÖÐø¼¯³É
µ¤·ð˹ ClearCaseÓëÅäÖùÜÀí
ÖйúÒÆ¶¯ Èí¼þÅäÖùÜÀí
ÖйúÒøÐÐ Èí¼þÅäÖùÜÀí
Ìì½ò»ªÒíÀ¶Ìì¿Æ¼¼ ÅäÖùÜÀíÓëPvcs