Additions:
SVN是用来取代CVS的版本控制工具
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], 用法跟TortoiseCVS差不多,与Explorer集成,用起来很方便,这里就不多说了:)
SVN的Server有Standalone和与Apache结合两种方式,由于后一种需要Apache2,所以我用的是Standalone方式。
1) 首先,下载[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 官方命令行工具]]并安装;
1) 在本机上建立一个目录作为所有repo的根目录,我用的是D:\svnroot
1) 在根目录上建立repo的子目录,比如D:\svnroot\project1
1) 进入D:\svnroot\project1目录,使用TortoiseSVN的"Create Repository here..."功能,选择Berkeley DB,会在这里创建repo
1) 进入创建好的conf目录(D:\svnroot\project1\conf),修改passwd和svnserve.conf文件,都是类似于ini的语法
1) 都好了后就可以在命令行运行"svnserve -d -r D:/svnroot"来启动server了,其中-d表示daemon方式运行,-r表示以d:\svnroot作为根目录
1) 如果想要作为系统服务,可以用第三方软件,我用的是FireDaemon Lite 1.6,现在官方已经不提供免费的Lite版本了,[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe 这里可以下载]]
这里需要注意的是:
- passwd里面是用明文存密码,而且貌似只有用apache才能存hash,这点有很多人骂,而且svn也不提供类似于CVS for NT提供的"cvs passwd"命令
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
==== SVN repo的后台更改 ====
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
1) dump老repo并load到新的里面去,使用这个命令:
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], 用法跟TortoiseCVS差不多,与Explorer集成,用起来很方便,这里就不多说了:)
SVN的Server有Standalone和与Apache结合两种方式,由于后一种需要Apache2,所以我用的是Standalone方式。
1) 首先,下载[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 官方命令行工具]]并安装;
1) 在本机上建立一个目录作为所有repo的根目录,我用的是D:\svnroot
1) 在根目录上建立repo的子目录,比如D:\svnroot\project1
1) 进入D:\svnroot\project1目录,使用TortoiseSVN的"Create Repository here..."功能,选择Berkeley DB,会在这里创建repo
1) 进入创建好的conf目录(D:\svnroot\project1\conf),修改passwd和svnserve.conf文件,都是类似于ini的语法
1) 都好了后就可以在命令行运行"svnserve -d -r D:/svnroot"来启动server了,其中-d表示daemon方式运行,-r表示以d:\svnroot作为根目录
1) 如果想要作为系统服务,可以用第三方软件,我用的是FireDaemon Lite 1.6,现在官方已经不提供免费的Lite版本了,[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe 这里可以下载]]
这里需要注意的是:
- passwd里面是用明文存密码,而且貌似只有用apache才能存hash,这点有很多人骂,而且svn也不提供类似于CVS for NT提供的"cvs passwd"命令
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
==== SVN repo的后台更改 ====
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
1) dump老repo并load到新的里面去,使用这个命令:
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了
Deletions:
SVNæ¯ç¨æ¥å代CVSççæ¬æ§å¶å·¥å ·
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], ç¨æ³è·TortoiseCVSå·®ä¸å¤ï¼ä¸Exploreréæï¼ç¨èµ·æ¥å¾æ¹ä¾¿ï¼è¿éå°±ä¸å¤è¯´äº:)
SVNçServeræStandaloneåä¸Apacheç»åä¸¤ç§æ¹å¼ï¼ç±äºåä¸ç§éè¦Apache2ï¼æä»¥æç¨çæ¯Standaloneæ¹å¼ã
1) é¦å ï¼ä¸è½½[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 宿¹å½ä»¤è¡å·¥å ·]]å¹¶å®è£ ï¼
1) 卿¬æºä¸å»ºç«ä¸ä¸ªç®å½ä½ä¸ºæærepoçæ ¹ç®å½ï¼æç¨çæ¯D:\svnroot
1) 卿 ¹ç®å½ä¸å»ºç«repoçåç®å½ï¼æ¯å¦D:\svnroot\project1
1) è¿å ¥D:\svnroot\project1ç®å½ï¼ä½¿ç¨TortoiseSVNç"Create Repository here..."åè½ï¼éæ©Berkeley DBï¼ä¼å¨è¿éå建repo
1) è¿å ¥å建好çconfç®å½(D:\svnroot\project1\conf)ï¼ä¿®æ¹passwdåsvnserve.confæä»¶ï¼é½æ¯ç±»ä¼¼äºiniçè¯æ³
1) é½å¥½äºåå°±å¯ä»¥å¨å½ä»¤è¡è¿è¡"svnserve -d -r D:/svnroot"æ¥å¯å¨serveräºï¼å ¶ä¸-d表示daemonæ¹å¼è¿è¡ï¼-r表示以d:\svnrootä½ä¸ºæ ¹ç®å½
1) 妿æ³è¦ä½ä¸ºç³»ç»æå¡ï¼å¯ä»¥ç¨ç¬¬ä¸æ¹è½¯ä»¶ï¼æç¨çæ¯FireDaemon Lite 1.6ï¼ç°å¨å®æ¹å·²ç»ä¸æä¾å è´¹çLiteçæ¬äºï¼[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe è¿éå¯ä»¥ä¸è½½]]
è¿ééè¦æ³¨æçæ¯ï¼
- passwdé颿¯ç¨ææåå¯ç ï¼èä¸è²ä¼¼åªæç¨apacheæè½åhashï¼è¿ç¹æå¾å¤äººéªï¼èä¸svnä¹ä¸æä¾ç±»ä¼¼äºCVS for NTæä¾ç"cvs passwd"å½ä»¤
- svn up -rVersion filename å¯ä»¥åéå°ç¹å®ççæ¬ï¼å¨æ¤çæ¬ä¸ç»§ç»ç¼è¾ï¼ci以åçæ¬å·ä¼ä»HEADç»§ç»å¢å ã
==== SVN repoçåå°æ´æ¹ ====
SVNçrepoçåå°æä¸¤ç§æ ¼å¼ï¼bdb(Berkeley DB)åfsfs(æä»¶ç³»ç»)ï¼èbdbåæå¾å¤çæ¬ï¼è¿äºåå°å½¼æ¤é½ä¸å ¼å®¹ã
å½è¦å°å·²æçrepoä»ä¸ç§åå°è½¬æ¢æå¦ä¸ç§åå°(æ¯å¦ä»bdbå°fsfsï¼æè åçº§äºæ¬æºbdb/svnççæ¬)çæ¶åï¼å¯ä»¥ä½¿ç¨ä¸é¢çæ¹æ³ï¼
1) 忢apacheæè svnserveï¼é²æ¢æ°æ®åå ¥
1) å建临æ¶çæ°repoç®å½ï¼ä½¿ç¨æ°çåå°
1) dumpèrepoå¹¶loadå°æ°çéé¢å»ï¼ä½¿ç¨è¿ä¸ªå½ä»¤ï¼
1) 妿æ¯å级ï¼ä¸ä¸æ¥åæä¸¤æ¥(å dumpå°æä»¶ï¼å仿件load)
1) æ£æ¥ä¸ä¸èrepoçhooksç®å½ä¸ææ²¡æåæ¥å¢å çæä»¶(æ°repoé颿²¡æç)ï¼è¥æåcpè¿å»
1) ç¨æ°repoæ¿æ¢æèçï¼å¯å¨apacheæè svnserve
1) å¦æç¡®è®¤æ 误ï¼å¯ä»¥å 餿èçäº
Additions:
zelropasb
SVNæ¯ç¨æ¥å代CVSççæ¬æ§å¶å·¥å ·
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], ç¨æ³è·TortoiseCVSå·®ä¸å¤ï¼ä¸Exploreréæï¼ç¨èµ·æ¥å¾æ¹ä¾¿ï¼è¿éå°±ä¸å¤è¯´äº:)
SVNçServeræStandaloneåä¸Apacheç»åä¸¤ç§æ¹å¼ï¼ç±äºåä¸ç§éè¦Apache2ï¼æä»¥æç¨çæ¯Standaloneæ¹å¼ã
1) é¦å ï¼ä¸è½½[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 宿¹å½ä»¤è¡å·¥å ·]]å¹¶å®è£ ï¼
1) 卿¬æºä¸å»ºç«ä¸ä¸ªç®å½ä½ä¸ºæærepoçæ ¹ç®å½ï¼æç¨çæ¯D:\svnroot
1) 卿 ¹ç®å½ä¸å»ºç«repoçåç®å½ï¼æ¯å¦D:\svnroot\project1
1) è¿å ¥D:\svnroot\project1ç®å½ï¼ä½¿ç¨TortoiseSVNç"Create Repository here..."åè½ï¼éæ©Berkeley DBï¼ä¼å¨è¿éå建repo
1) è¿å ¥å建好çconfç®å½(D:\svnroot\project1\conf)ï¼ä¿®æ¹passwdåsvnserve.confæä»¶ï¼é½æ¯ç±»ä¼¼äºiniçè¯æ³
1) é½å¥½äºåå°±å¯ä»¥å¨å½ä»¤è¡è¿è¡"svnserve -d -r D:/svnroot"æ¥å¯å¨serveräºï¼å ¶ä¸-d表示daemonæ¹å¼è¿è¡ï¼-r表示以d:\svnrootä½ä¸ºæ ¹ç®å½
1) 妿æ³è¦ä½ä¸ºç³»ç»æå¡ï¼å¯ä»¥ç¨ç¬¬ä¸æ¹è½¯ä»¶ï¼æç¨çæ¯FireDaemon Lite 1.6ï¼ç°å¨å®æ¹å·²ç»ä¸æä¾å è´¹çLiteçæ¬äºï¼[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe è¿éå¯ä»¥ä¸è½½]]
è¿ééè¦æ³¨æçæ¯ï¼
- passwdé颿¯ç¨ææåå¯ç ï¼èä¸è²ä¼¼åªæç¨apacheæè½åhashï¼è¿ç¹æå¾å¤äººéªï¼èä¸svnä¹ä¸æä¾ç±»ä¼¼äºCVS for NTæä¾ç"cvs passwd"å½ä»¤
- svn up -rVersion filename å¯ä»¥åéå°ç¹å®ççæ¬ï¼å¨æ¤çæ¬ä¸ç»§ç»ç¼è¾ï¼ci以åçæ¬å·ä¼ä»HEADç»§ç»å¢å ã
==== SVN repoçåå°æ´æ¹ ====
SVNçrepoçåå°æä¸¤ç§æ ¼å¼ï¼bdb(Berkeley DB)åfsfs(æä»¶ç³»ç»)ï¼èbdbåæå¾å¤çæ¬ï¼è¿äºåå°å½¼æ¤é½ä¸å ¼å®¹ã
å½è¦å°å·²æçrepoä»ä¸ç§åå°è½¬æ¢æå¦ä¸ç§åå°(æ¯å¦ä»bdbå°fsfsï¼æè åçº§äºæ¬æºbdb/svnççæ¬)çæ¶åï¼å¯ä»¥ä½¿ç¨ä¸é¢çæ¹æ³ï¼
1) 忢apacheæè svnserveï¼é²æ¢æ°æ®åå ¥
1) å建临æ¶çæ°repoç®å½ï¼ä½¿ç¨æ°çåå°
1) dumpèrepoå¹¶loadå°æ°çéé¢å»ï¼ä½¿ç¨è¿ä¸ªå½ä»¤ï¼
1) 妿æ¯å级ï¼ä¸ä¸æ¥åæä¸¤æ¥(å dumpå°æä»¶ï¼å仿件load)
1) æ£æ¥ä¸ä¸èrepoçhooksç®å½ä¸ææ²¡æåæ¥å¢å çæä»¶(æ°repoé颿²¡æç)ï¼è¥æåcpè¿å»
1) ç¨æ°repoæ¿æ¢æèçï¼å¯å¨apacheæè svnserve
1) å¦æç¡®è®¤æ 误ï¼å¯ä»¥å 餿èçäº
SVNæ¯ç¨æ¥å代CVSççæ¬æ§å¶å·¥å ·
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], ç¨æ³è·TortoiseCVSå·®ä¸å¤ï¼ä¸Exploreréæï¼ç¨èµ·æ¥å¾æ¹ä¾¿ï¼è¿éå°±ä¸å¤è¯´äº:)
SVNçServeræStandaloneåä¸Apacheç»åä¸¤ç§æ¹å¼ï¼ç±äºåä¸ç§éè¦Apache2ï¼æä»¥æç¨çæ¯Standaloneæ¹å¼ã
1) é¦å ï¼ä¸è½½[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 宿¹å½ä»¤è¡å·¥å ·]]å¹¶å®è£ ï¼
1) 卿¬æºä¸å»ºç«ä¸ä¸ªç®å½ä½ä¸ºæærepoçæ ¹ç®å½ï¼æç¨çæ¯D:\svnroot
1) 卿 ¹ç®å½ä¸å»ºç«repoçåç®å½ï¼æ¯å¦D:\svnroot\project1
1) è¿å ¥D:\svnroot\project1ç®å½ï¼ä½¿ç¨TortoiseSVNç"Create Repository here..."åè½ï¼éæ©Berkeley DBï¼ä¼å¨è¿éå建repo
1) è¿å ¥å建好çconfç®å½(D:\svnroot\project1\conf)ï¼ä¿®æ¹passwdåsvnserve.confæä»¶ï¼é½æ¯ç±»ä¼¼äºiniçè¯æ³
1) é½å¥½äºåå°±å¯ä»¥å¨å½ä»¤è¡è¿è¡"svnserve -d -r D:/svnroot"æ¥å¯å¨serveräºï¼å ¶ä¸-d表示daemonæ¹å¼è¿è¡ï¼-r表示以d:\svnrootä½ä¸ºæ ¹ç®å½
1) 妿æ³è¦ä½ä¸ºç³»ç»æå¡ï¼å¯ä»¥ç¨ç¬¬ä¸æ¹è½¯ä»¶ï¼æç¨çæ¯FireDaemon Lite 1.6ï¼ç°å¨å®æ¹å·²ç»ä¸æä¾å è´¹çLiteçæ¬äºï¼[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe è¿éå¯ä»¥ä¸è½½]]
è¿ééè¦æ³¨æçæ¯ï¼
- passwdé颿¯ç¨ææåå¯ç ï¼èä¸è²ä¼¼åªæç¨apacheæè½åhashï¼è¿ç¹æå¾å¤äººéªï¼èä¸svnä¹ä¸æä¾ç±»ä¼¼äºCVS for NTæä¾ç"cvs passwd"å½ä»¤
- svn up -rVersion filename å¯ä»¥åéå°ç¹å®ççæ¬ï¼å¨æ¤çæ¬ä¸ç»§ç»ç¼è¾ï¼ci以åçæ¬å·ä¼ä»HEADç»§ç»å¢å ã
==== SVN repoçåå°æ´æ¹ ====
SVNçrepoçåå°æä¸¤ç§æ ¼å¼ï¼bdb(Berkeley DB)åfsfs(æä»¶ç³»ç»)ï¼èbdbåæå¾å¤çæ¬ï¼è¿äºåå°å½¼æ¤é½ä¸å ¼å®¹ã
å½è¦å°å·²æçrepoä»ä¸ç§åå°è½¬æ¢æå¦ä¸ç§åå°(æ¯å¦ä»bdbå°fsfsï¼æè åçº§äºæ¬æºbdb/svnççæ¬)çæ¶åï¼å¯ä»¥ä½¿ç¨ä¸é¢çæ¹æ³ï¼
1) 忢apacheæè svnserveï¼é²æ¢æ°æ®åå ¥
1) å建临æ¶çæ°repoç®å½ï¼ä½¿ç¨æ°çåå°
1) dumpèrepoå¹¶loadå°æ°çéé¢å»ï¼ä½¿ç¨è¿ä¸ªå½ä»¤ï¼
1) 妿æ¯å级ï¼ä¸ä¸æ¥åæä¸¤æ¥(å dumpå°æä»¶ï¼å仿件load)
1) æ£æ¥ä¸ä¸èrepoçhooksç®å½ä¸ææ²¡æåæ¥å¢å çæä»¶(æ°repoé颿²¡æç)ï¼è¥æåcpè¿å»
1) ç¨æ°repoæ¿æ¢æèçï¼å¯å¨apacheæè svnserve
1) å¦æç¡®è®¤æ 误ï¼å¯ä»¥å 餿èçäº
Deletions:
[[http://tortoisesvn.tigris.org/ TortoiseSVN]], 用法跟TortoiseCVS差不多,与Explorer集成,用起来很方便,这里就不多说了:)
SVN的Server有Standalone和与Apache结合两种方式,由于后一种需要Apache2,所以我用的是Standalone方式。
1) 首先,下载[[http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 官方命令行工具]]并安装;
1) 在本机上建立一个目录作为所有repo的根目录,我用的是D:\svnroot
1) 在根目录上建立repo的子目录,比如D:\svnroot\project1
1) 进入D:\svnroot\project1目录,使用TortoiseSVN的"Create Repository here..."功能,选择Berkeley DB,会在这里创建repo
1) 进入创建好的conf目录(D:\svnroot\project1\conf),修改passwd和svnserve.conf文件,都是类似于ini的语法
1) 都好了后就可以在命令行运行"svnserve -d -r D:/svnroot"来启动server了,其中-d表示daemon方式运行,-r表示以d:\svnroot作为根目录
1) 如果想要作为系统服务,可以用第三方软件,我用的是FireDaemon Lite 1.6,现在官方已经不提供免费的Lite版本了,[[http://wang.yuxuan.org/files/FireDaemon-Lite-1_6-GA.exe 这里可以下载]]
这里需要注意的是:
- passwd里面是用明文存密码,而且貌似只有用apache才能存hash,这点有很多人骂,而且svn也不提供类似于CVS for NT提供的"cvs passwd"命令
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
==== SVN repo的后台更改 ====
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
1) dump老repo并load到新的里面去,使用这个命令:
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了
Additions:
%%
svnadmin create /path/to/new/repo --fs-type fsfs(or bdb)
%%
1) dump老repo并load到新的里面去,使用这个命令:
%%
svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo
%%
svnadmin create /path/to/new/repo --fs-type fsfs(or bdb)
%%
1) dump老repo并load到新的里面去,使用这个命令:
%%
svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo
%%
Deletions:
Additions:
==== SVN repo的后台更改 ====
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
1) dump老repo并load到新的里面去,使用这个命令:%% svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo %%
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了
SVN的repo的后台有两种格式:bdb(Berkeley DB)和fsfs(文件系统),而bdb又有很多版本,这些后台彼此都不兼容。
当要将已有的repo从一种后台转换成另一种后台(比如从bdb到fsfs,或者升级了本机bdb/svn的版本)的时候,可以使用下面的方法:
1) 停止apache或者svnserve,防止数据写入
1) 创建临时的新repo目录,使用新的后台
1) dump老repo并load到新的里面去,使用这个命令:%% svnadmin dump /path/to/old/repo -q | svnadmin load /path/to/new/repo %%
1) 如果是升级,上一步分成两步(先dump到文件,再从文件load)
1) 检查一下老repo的hooks目录下有没有后来增加的文件(新repo里面没有的),若有则cp过去
1) 用新repo替换掉老的,启动apache或者svnserve
1) 如果确认无误,可以删除掉老的了
Revision [85]
Edited on 2005-11-07 21:16:35 by sina152-194.staff.sina.com.cn [+ svn change repo backend]Additions:
==== SVN on console ====
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。
- svn up -rVersion filename 可以回退到特定的版本,在此版本上继续编辑,ci以后版本号会从HEAD继续增加。