Windowsä¸Linuxä¸SVNææ ·ä½¿ç¨?
æ¬æå2个é¨å(å
æ¬Windowsä¸Linuxæä½ç³»ç»å¹³å°),第1é¨å:ææ ·å®è£
第2é¨å:ææ ·ä½¿ç¨
-----------------------------------------第1é¨å:ææ ·å®è£
-----------------------------------------
ææ ·å®è£
å2ç§æ
åµ,第1ç§:å¨å
¬å¸ä¸ç 第2ç§:å¨å®¿èçµè
--------------------第1ç§:å¨å
¬å¸ä¸ç--------------------
说æ:é常SVNæå¡å¨æ¯å®è£
å¨windowsä¸ç,å®è£
好å,客æ·ç«¯2ç§å¹³å°é½è½ä½¿ç¨
Windowså¹³å°ä¸
æå¡ç«¯ä¸å®¢æ·ç«¯:
é常è¿ç§æ
åµ,ä½ æ³å®è£
,å
¬å¸é½ä¸ä¼è®©ä½ å®è£
,ä¸è¬æ¯ç±å
¬å¸å
ç½ç®¡ä¸ä¸äººå£«ç»ä¸å®è£
好,并ç»ä½ åé
好账æ·ä¸å¯ç ,以åæ¯ä¸ªSVNä¸ä½¿ç¨æé,æ以è¿ç§æ
åµä½ å¯ä»¥ä¸ç¨å»ç®¡ææ ·å®è£
äº,åªç®¡ææ ·ä½¿ç¨å³å¯
linuxå¹³å°ä¸
æå¡ç«¯:å³windowsä¸çæå¡ç«¯
客æ·ç«¯:å¦æä½ å¨æ¬æºå®è£
çLinuxèææº,é常æ¯èªå·±å®è£
ç,ä¸æ¯å
¬å¸ç½ç®¡å®è£
ç,å®è£
åæ³å¦ä¸:
1æ¥å³è½å®è£
:å¨linuxä¸è¾å
¥å½ä»¤ sudo apt-get install subversion
å³SVN,å®è£
ååwindowsä¸SVNä¸æ ·,åªä¸è¿è¿éæ¯è¾å
¥å½ä»¤èå·²
--------------------第2ç§:å¨å®¿èçµè--------------------
Windowsä¸Linuxå¹³å°ä¸
说å®å¨ç,宿èå°±1å°çµè.æ¬æ¥çµèå°±åå¾.èä¸è¿å¼çèææº,å¨å¼2个VS2010,就已ç»å¡çè¦æ».å¨æ¥ä¸ªSVN,估计ä¼æ
¢å¦èç,å
¶å®å¤§é¨åç¨åºåä¹æ¯åªæä¸å°çµè,å®è£
SVNçç没å¿
è¦.é¤éæå¤å°çµè.SVNæ¬è´¨æ¯ä¸ºæ¹ä¾¿å¢éå¼å
-----------------------------------------第2é¨å:ææ ·ä½¿ç¨-----------------------------------------
ææ ·ä½¿ç¨è¦å2ç§æ
åµ,第1ç§:æ¯Windowså¹³å° ç¬¬2ç§:æ¯Linuxå¹³å°
--------------------第1ç§:æ¯Windowså¹³å°--------------------
1.æ´æ°
å³é®->SVNæ´æ°
2.æ交(ä¹å¯è¯´ææ¯ä¸ä¼ )
第1æ¥:è¿å
¥è¦æ交çSVNæ件ç®å½éé¢,导å
¥æ件
第2æ¥:导å
¥å,è¿åä¸ä¸å±ç®å½,å³è¿åå°è¦æ交çSVNæ件ç®å½,å³é®ç¹å»æ¤SVNç®å½,å¼¹åº,æ交,è¿å
¥
第3æ¥:è¿å
¥æ交对è¯æ¡å,ä¼æ¾ç¤º2个ç¼è¾æ¡,ä¸é¢çç¼è¾æ¡æ¯ç¡®è®¤è¦æ交çå
容,ä¸é¢çç¼è¾æ¡æ¯ä½ å导å
¥çæ件å
容,
ä½ ç°å¨è¥æ¯æ³æ交åæ导å
¥çå
容,å°±æä¸é¢ç¼è¾æ¡çå
容ç¨é¼ æ æå¨å°ä¸é¢çç¼è¾æ¡,并æç¡®å®
è¥ä¸æ³æ交åæ导å
¥çå
容,ç´æ¥æåæ¶éåºå³å¯
3.导åº
å³ææ ·å»æSVNçä¸ç¨æ å¿,æçæ¯å¯¹å¾,æçæ¯?å·çç?
æ¹æ³ 1:å¨æ件å±æ§--->éæ©æ¾ç¤ºæææ件,è¿æ¶æ件éä¼åºç°1个.svnçæ件ç®å½,æå®å æå³å¯.(æ件ç®å½å¤æ¶,ä¸æ¨è)
æ¹æ³ 2:å¨SVNå³é®--->导åº,è¿æ¶å¯¼åºçæ件ä¸ä¼å¸¦SVNæ å¿äº
4.å é¤
å¨SVNå³é®ä¸,å é¤ä¹å.è¦è¿åä¸ä¸å±ç®å½,ç¹æ交.
å é¤ä¿¡æ¯å¨åæ´å表,è¦æå¨å°ä¿¡æ¯æ ä¸,ç¶åç¹ç¡®å®
5.ä¿å认è¯
æ¯å½çµèå¯ç æ´æ¹æ¶,SVN以åä¿åçå¯ç ä¹ä¼è¦æ´æ°,æ¤æ¶ä¼å¼¹åºä¸ä¸ªè®¤è¯æ¡,éæ°è¾å
¥è´¦å·ä¸æ°å¯ç ,å¨ä¿å认è¯å¤æå¾å³å¯
--------------------第2ç§:æ¯Linuxå¹³å°--------------------
1.æ´æ°
å½ä»¤:svn update
2.æ交(ä¹å¯è¯´ææ¯ä¸ä¼ )
第1æ¥:è¿å
¥è¦æ交çSVNæ件ç®å½éé¢,
第2æ¥:æ·»å è¦æ交çç®å½ç¨svn add *----------->注:(*代表添å æ件ãç®å½æ符å·é¾)
第3æ¥:æ交
(1)æ交å
¨é¨
svn ci -m"*"----------->m表示å注é,*代表注éå
容
注:å¨LINUXä¸åä¸ç®å½åå¨å
¶å®æ件,svn ciæ交æ¶,åªä¼æ交SVNæå¡å¨å·²æçæ件.å¦ææ³è®©åä¸ç®å½ä¸çå
¶å®æ件ä¹æ交å°SVNæå¡å¨,å¯ä»¥å
éè¿svn addå
æ·»å æ¤æ件ææ件夹ç
(2)æ交å个
svn ci -m"add select_area packet" Gateway_Handler.cpp
åé¢ä¸ä¸ªå ä¸è¦æ交çæ件(è®°çæåç¼ååä¸å»).
æ交æååä¼æ示
Sending Gateway_Handler.cpp
Transmitting file data .
Committed revision 242.
3.ä¿å认è¯
æ¯å½çµèå¯ç æ´æ¹æ¶,SVN以åä¿åçå¯ç ä¹ä¼è¦æ´æ°,æ¤æ¶ä¼æ¾ç¤ºè¦è¾å
¥å¯ç ,éæ°è¾å
¥è´¦å·ä¸æ°å¯ç ,æåä¼æ示æ¯å¦è¦ä¿åå¯ç (yes/no),éyeså³å¯
4.ä¸è½½
å½ä»¤ svn co * (*代表ä¸è½½å°å,ä¾å¦
http://192.168.1.101/project/servers/command)
ä¹åä¼å¨å½åç®å½ä¸,导åºä¸ä¸ªcommandæ件夹,éé¢æ¯SVNæå¡å¨ä¸çæ件
5.å é¤
svn del *(*为æ件å,ææ件)
6.æ¥çä¿®æ¹åçæä½æ¯åªäº
svn diff
---------------------------------------------------以ä¸æ¯ææç---------------------------------------------------
1ãå°æ件checkoutå°æ¬å°ç®å½
svn checkout pathï¼pathæ¯æå¡å¨ä¸çç®å½ï¼
ä¾å¦ï¼svn checkout svn://192.168.1.1/pro/domain
ç®åï¼svn co
1ãå°æ件checkoutå°æ¬å°ç®å½
svn checkout pathï¼pathæ¯æå¡å¨ä¸çç®å½ï¼
ä¾å¦ï¼svn checkout svn://192.168.1.1/pro/domain
ç®åï¼svn co
2ãå¾çæ¬åºä¸æ·»å æ°çæ件
svn add file
ä¾å¦ï¼svn add test.PHP(æ·»å test.php)
svn add *.php(æ·»å å½åç®å½ä¸ææçphpæ件)
3ãå°æ¹å¨çæ件æ交å°çæ¬åº
svn commit -m âLogMessageâ [-N] [--no-unlock] PATH(å¦æéæ©äºä¿æéï¼å°±ä½¿ç¨âno-unlockå¼å
³)
ä¾å¦ï¼svn commit -m âadd test file for my testâ test.php
ç®åï¼svn ci
4ãå é/解é
svn lock -m âLockMessageâ [--force] PATH
ä¾å¦ï¼svn lock -m âlock test fileâ test.php
svn unlock PATH
5ãæ´æ°å°æ个çæ¬
svn update -r m path
ä¾å¦ï¼
svn updateå¦æåé¢æ²¡æç®å½ï¼é»è®¤å°å½åç®å½ä»¥ååç®å½ä¸çæææ件é½æ´æ°å°ææ°çæ¬ã
svn update -r 200 test.php(å°çæ¬åºä¸çæ件test.phpè¿åå°çæ¬200)
svn update test.php(æ´æ°ï¼äºçæ¬åºåæ¥ãå¦æå¨æ交çæ¶åæ示è¿æçè¯ï¼æ¯å 为å²çªï¼éè¦å
updateï¼ä¿®æ¹æ件ï¼ç¶åæ¸
é¤svn resolvedï¼æååæ交commit)
ç®åï¼svn up
6ãæ¥çæ件æè
ç®å½ç¶æ
1ï¼svn status pathï¼ç®å½ä¸çæ件ååç®å½çç¶æï¼æ£å¸¸ç¶æä¸æ¾ç¤ºï¼
ã?ï¼ä¸å¨svnçæ§å¶ä¸ï¼Mï¼å
容被修æ¹ï¼Cï¼åçå²çªï¼Aï¼é¢å®å å
¥å°çæ¬åºï¼Kï¼è¢«éå®ã
2ï¼svn status -v path(æ¾ç¤ºæ件ååç®å½ç¶æ)
第ä¸åä¿æç¸åï¼ç¬¬äºåæ¾ç¤ºå·¥ä½çæ¬å·ï¼ç¬¬ä¸å第ååæ¾ç¤ºæåä¸æ¬¡ä¿®æ¹ççæ¬å·åä¿®æ¹äººã
注ï¼svn statusãsvn diffå svn revertè¿ä¸æ¡å½ä»¤å¨æ²¡æç½ç»çæ
åµä¸ä¹å¯ä»¥æ§è¡çï¼åå æ¯svnå¨æ¬å°ç.svnä¸ä¿çäºæ¬å°çæ¬çåå§æ·è´ã
ç®åï¼svn st
7ãå é¤æ件
svn delete path -m âdelete test fleâ
ä¾å¦ï¼svn delete svn://192.168.1.1/pro/domain/test.php -m âdelete test fileâ
æè
ç´æ¥svn delete test.php ç¶ååsvn ci -m âdelete test fileâï¼æ¨è使ç¨è¿ç§
ç®åï¼svn (del, remove, rm)
8ãæ¥çæ¥å¿
svn log path
ä¾å¦ï¼svn log test.php æ¾ç¤ºè¿ä¸ªæ件çææä¿®æ¹è®°å½ï¼åå
¶çæ¬å·çåå
9ãæ¥çæ件详ç»ä¿¡æ¯
svn info path
ä¾å¦ï¼svn info test.php
10ãæ¯è¾å·®å¼
svn diff path(å°ä¿®æ¹çæ件ä¸åºç¡çæ¬æ¯è¾)
ä¾å¦ï¼svn diff test.php
svn diff -r m:n path(对çæ¬måçæ¬næ¯è¾å·®å¼)
ä¾å¦ï¼svn diff -r 200:201 test.php
ç®åï¼svn di
11ãå°ä¸¤ä¸ªçæ¬ä¹é´çå·®å¼å并å°å½åæ件
svn merge -r m:n path
ä¾å¦ï¼svn merge -r 200:205 test.phpï¼å°çæ¬200ä¸205ä¹é´çå·®å¼å并å°å½åæ件ï¼ä½æ¯ä¸è¬é½ä¼äº§çå²çªï¼éè¦å¤çä¸ä¸ï¼
12ãSVN 帮å©
svn help
svn help ci
ââââââââââââââââââââââââââ
以ä¸æ¯å¸¸ç¨å½ä»¤ï¼ä¸é¢åå 个ä¸ç»å¸¸ç¨ç
ââââââââââââââââââââââââââ
13ãçæ¬åºä¸çæ件åç®å½å表
svn list path
æ¾ç¤ºpathç®å½ä¸çææå±äºçæ¬åºçæ件åç®å½
ç®åï¼svn ls
14ãå建纳å
¥çæ¬æ§å¶ä¸çæ°ç®å½
svn mkdir: å建纳å
¥çæ¬æ§å¶ä¸çæ°ç®å½ã
ç¨æ³: 1ãmkdir PATHâ¦
2ãmkdir URLâ¦
å建çæ¬æ§å¶çç®å½ã
1ãæ¯ä¸ä¸ªä»¥å·¥ä½å¯æ¬ PATH æå®çç®å½ï¼é½ä¼å建å¨æ¬å°ç«¯ï¼å¹¶ä¸å å
¥æ°å¢
è°åº¦ï¼ä»¥å¾
ä¸ä¸æ¬¡çæ交ã
2ãæ¯ä¸ªä»¥URLæå®çç®å½ï¼é½ä¼éè¿ç«å³æ交äºä»åºä¸å建ã
å¨è¿ä¸¤ä¸ªæ
åµä¸ï¼ææçä¸é´ç®å½é½å¿
é¡»äºå
åå¨ã
15ãæ¢å¤æ¬å°ä¿®æ¹
svn revert: æ¢å¤åå§æªæ¹åçå·¥ä½å¯æ¬æ件 (æ¢å¤å¤§é¨ä»½çæ¬å°ä¿®æ¹)ãrevert:
ç¨æ³: revert PATHâ¦
注æ: æ¬åå½ä»¤ä¸ä¼ååç½ç»ï¼å¹¶ä¸ä¼è§£é¤å²çªçç¶åµãä½æ¯å®ä¸ä¼æ¢å¤
被å é¤çç®å½
16ã代ç åºURLåæ´
svn switch (sw): æ´æ°å·¥ä½å¯æ¬è³ä¸åçURLã
ç¨æ³: 1ãswitch URL [PATH]
2ãswitch ârelocate FROM TO [PATH...]
1ãæ´æ°ä½ çå·¥ä½å¯æ¬ï¼æ å°å°ä¸ä¸ªæ°çURLï¼å
¶è¡ä¸ºè·âsvn updateâå¾åï¼ä¹ä¼å°
æå¡å¨ä¸æ件ä¸æ¬å°æ件å并ãè¿æ¯å°å·¥ä½å¯æ¬å¯¹åºå°åä¸ä»åºä¸æ个åæ¯æè
æ è®°ç
æ¹æ³ã
2ãæ¹åå·¥ä½å¯æ¬çURLå
æ°æ®ï¼ä»¥åæ å纯çURLä¸çæ¹åãå½ä»åºçæ ¹URLåå¨
(æ¯å¦æ¹æ¡åææ¯ä¸»æºå称åå¨)ï¼ä½æ¯å·¥ä½å¯æ¬ä»æ§å¯¹æ å°åä¸ä»åºçåä¸ç®å½æ¶ä½¿ç¨
è¿ä¸ªå½ä»¤æ´æ°å·¥ä½å¯æ¬ä¸ä»åºç对åºå
³ç³»ã
17ã解å³å²çª
svn resolved: 移é¤å·¥ä½å¯æ¬çç®å½ææ件çâå²çªâç¶æã
ç¨æ³: resolved PATHâ¦
注æ: æ¬åå½ä»¤ä¸ä¼ä¾è¯æ³æ¥è§£å³å²çªææ¯ç§»é¤å²çªæ è®°ï¼å®åªæ¯ç§»é¤å²çªç
ç¸å
³æ件ï¼ç¶å让 PATH å¯ä»¥å次æ交ã
18ãè¾åºæå®æ件æURLçå
容ã
svn cat ç®æ [@çæ¬]â¦å¦ææå®äºçæ¬ï¼å°ä»æå®ççæ¬å¼å§æ¥æ¾ã
svn cat -r PREV filename > filename (PREV æ¯ä¸ä¸çæ¬,ä¹å¯ä»¥åå
·ä½çæ¬å·,è¿æ ·è¾åºç»ææ¯å¯ä»¥æ交ç)
19ãæ¥æ¾å·¥ä½æ·è´ä¸çææéççæ¥å¿æ件ï¼å é¤è¿ç¨ä¸çéã
å½Subversionæ¹åä½ çå·¥ä½æ·è´ï¼ææ¯.svnä¸çä»»ä½ä¿¡æ¯ï¼ï¼å®ä¼å°½å¯è½çå°å¿ï¼å¨ä¿®æ¹ä»»ä½äºæ
ä¹åï¼å®ææå¾åå°æ¥å¿æ件ä¸å»ï¼ç¶åæ§è¡logæ件ä¸çå½ä»¤ï¼ç¶åå ææ¥å¿æ件ï¼è¿ä¸åç±»å¸çæ件系ç»æ¶æ类似ãå¦æSubversionçæä½ä¸æäºï¼ä¸¾ä¸ªä¾åï¼è¿ç¨è¢«ææ»äºï¼æºå¨æ»æäºï¼ï¼æ¥å¿æ件ä¼ä¿åå¨ç¡¬çä¸ï¼éè¿éæ°æ§è¡æ¥å¿æ件ï¼Subversionå¯ä»¥å®æä¸ä¸æ¬¡å¼å§çæä½ï¼ä½ çå·¥ä½æ·è´å¯ä»¥åå°ä¸è´çç¶æã
è¿å°±æ¯svn cleanupæä½çï¼å®æ¥æ¾å·¥ä½æ·è´ä¸çææéççæ¥å¿æ件ï¼å é¤è¿ç¨ä¸çéãå¦æSubversionåè¯ä½ å·¥ä½æ·è´ä¸çä¸é¨åå·²ç»âéå®âäºï¼ä½ å°±éè¦è¿è¡è¿ä¸ªå½ä»¤äºãåæ ·ï¼svn statuså°ä¼ä½¿ç¨L æ¾ç¤ºéå®ç项ç®ï¼
$ svn status L somedirM somedir/foo.c $ svn cleanup$ svn statusM somedir/foo.c20ãæ·è´ç¨æ·çä¸ä¸ªæªè¢«çæ¬åçç®å½æ å°çæ¬åºãsvn importå½ä»¤æ¯æ·è´ç¨æ·çä¸ä¸ªæªè¢«çæ¬åçç®å½æ å°çæ¬åºæå¿«çæ¹æ³ï¼å¦æéè¦ï¼å®ä¹è¦å»ºç«ä¸äºä¸ä»æ件ã
$ svnadmin create /usr/local/svn/newrepos $ svn import mytree file:///usr/local/svn/newrepos/some/project Adding mytree/foo.c Adding mytree/bar.c Adding mytree/subdir Adding mytree/subdir/quux.h Committed revision 1.
å¨ä¸ä¸ä¸ªä¾åéï¼å°ä¼æ·è´ç®å½mytreeå°çæ¬åºçsome/projectä¸ï¼
$ svn list file:///usr/local/svn/newrepos/some/project bar.c foo.c subdir/
注æï¼å¨å¯¼å
¥ä¹åï¼åæ¥çç®å½æ 并没æ转åæå·¥ä½æ·è´ï¼ä¸ºäºå¼å§å·¥ä½ï¼ä½ è¿æ¯éè¦è¿è¡svn checkout导åºä¸ä¸ªå·¥ä½æ·è´ã
å¦éï¼ä¸ºSVNå å
¥Emailéç¥
å¯ä»¥éè¿SubversionçHookèæ¬çæ¹å¼ä¸ºSVNå å
¥é®ä»¶å表åè½
ç¼è¯å®è£
äºSubversionå å¨æºç çtools ä¸æä¸ä¸ªcomm-email.plçPerlèæ¬ï¼å¨ä½ çæ¡£æ¡ç®å½ä¸æä¸ä¸ªhooksç®å½ï¼è¿å
¥å°hooksç®å½æpost-commit.tmpl æ¹å为post-commit并ç»å®å¯æ§è¡çæéã
æ´æ¹post-commitèæ¬ æcomm-email.plèæ¬çå³å¯¹è·¯å¾å ä¸ï¼å¦å SVNæ¾ä¸å°comm-email.pl
REPOS="$1"
REV="$2"
/usr/local/svn/resp/commit-email.pl "$REPOS" "$REV"
[email protected] [email protected]#log-commit.py --repository "$REPOS" --revision "$REV"
æåä¸è¡æ¯ç¨æ¥è®°æ¥å¿ç æä¸ç¨è¿ä¸ªåè½ æ以注éæäº.
-------------------------------------------------------------------------------------------------------
注æ:为ä¿è¯ä»£ç å®å
¨.æ好è¦å¤ä»½.æ¯ä¸ªæä½é½è¦è°¨æ