SVN配置與使用教程.ppt_第1頁
SVN配置與使用教程.ppt_第2頁
SVN配置與使用教程.ppt_第3頁
SVN配置與使用教程.ppt_第4頁
SVN配置與使用教程.ppt_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

SVN配置與使用教程,SVN安裝配置,1、軟件下載下載SVN1.6服務(wù)器程序。/servlets/ProjectDocumentList?folderID=91【注意】如果之前已經(jīng)安裝了TortoiseSVN客戶端,必須選擇與之配套的SVN服務(wù)端版本,否則會出現(xiàn)各種問題,可以從TortoiseSVN的About菜單中看到與之對應(yīng)的Subversion版本!下載Subversion的Windows客戶端TortoiseSVN及簡體中文語言安裝包【根據(jù)個人愛好而定】,2、服務(wù)器和客戶端安裝。服務(wù)器安裝,直接運行安裝程序,根據(jù)提示安裝即可,這樣我們就有了一套服務(wù)器可以運行的環(huán)境。安裝TortoiseSVN,同樣直接運行安裝程序,按照提示安裝即可,不過最后完成后會提示是否重啟,其實重啟只是使svn工作拷貝在windows中的特殊樣式生效,與所有的實際功能無關(guān)。重啟完畢后安裝簡體中文語言包,然后在隨便一個目錄右擊,就會發(fā)現(xiàn)多出了一些SVN相關(guān)菜單,選擇其中的TortoiseSVN,再選擇子菜單Settings,設(shè)置Language為中文(簡體)。,3、建立SVN1.6版本庫(Repository)運行Subversion服務(wù)器需要首先要建立一個版本庫(Repository),版本庫可以看作是服務(wù)器上集中存放和管理數(shù)據(jù)的地方。在安裝客戶端時默認已經(jīng)創(chuàng)建了一個版本庫,可以直接用這個庫,或是根據(jù)需要重新建立一個庫。新建一個版本庫具體操作步驟如下首先建立d:svn空文件夾作為所有版本庫的根目錄。然后,進入命令行并切換到subversion的bin目錄。輸入如下命令:svnadmincreateD:svnrepository1此命令在D:svn下建立一個版本庫repository1。repository1下面會自動生成一些文件夾和文件。就會在目錄D:svnrepository下創(chuàng)建一個版本庫。如果在命令行中不識別svnserver命令,可以查看系統(tǒng)環(huán)境變量path中有無subversion/bin的條目,沒有就手動加上。我們也可以使用TortoiseSVN圖形化的完成這一步:先建立空目錄E:svnrepository1,注意一定是要空的。然后在repository1文件夾上“右鍵-TortoiseSVN-CreateRepositoryhere”,然后可以選擇版本庫模式,這里使用默認的FSFS即可,然后就創(chuàng)建了一系列文件夾和文件,同命令行建立的一樣。(可能有的版本不能直接選擇版本庫模式),4、配置SVN1.6用戶和權(quán)限用文本編輯器打開E:svnrepository1conf目錄,修改svnserve.conf:將:#password-db=passwd改為:password-db=passwd即去掉前面的#注釋符,注意前面不能有空格。然后修改同目錄的passwd文件,增加一個帳號:將:users#harry=harryssecret#sally=sallyssecret增加帳號:users#harry=harryssecret#sally=sallyssecrettest=test,在svnserve.conf文件,這里行前凡是有#的都等于是被注釋忽略了,你可以把#去掉讓那一行生效,或者自己新添加行.里面的英文注釋已經(jīng)詳細說明了各種設(shè)置的含義,最后你設(shè)置general小節(jié)中行前沒有#號的內(nèi)容為anon-access=noneauth-access=writepassword-db=passwd含義是:未驗證用戶無任何權(quán)限(如果把none修改為read就是給予讀權(quán)限)已驗證用戶給予寫權(quán)限(當然也能讀)密碼數(shù)據(jù)存放到passwd文件中【注意】anon-access=none這條必須顯示寫出來,否則會有一個默認權(quán)限,別人可能不用登陸就能看到你的項目!然后打開同目錄的passwd文件來設(shè)置帳戶:同樣,設(shè)置users小節(jié)中行前沒有#號的內(nèi)容,例如:admin=zhang含義是:用戶admin的密碼為zhang該目錄下還有一個authz的文件,用來針對不同的目錄給用戶分配不同的權(quán)限。,5、運行獨立服務(wù)器安裝SVN1.6的bin目錄有svnservice.exe。在dos控制臺狀態(tài)下直接輸入svnservice-d-rD:svnrepository,(最后一個參數(shù)是剛才設(shè)置的版本庫的位置),此時console處于阻塞狀態(tài),讓它一直開著就行,關(guān)閉它就意味著關(guān)閉了svnservice的服務(wù)了。建議你到控制面板-管理工具-服務(wù)中找到SVNService,右擊選擇屬性,再將其啟動類型設(shè)置為自動,這樣每次開機自動啟動服務(wù),不用手動啟動了。如果沒有這項服務(wù)的話,在命令行輸入sccreatesvnserverbinPath=“D:ProgramFilesSubversionbin”-service-rD:svnrepository“DisplayName=subversion“depend=Tcpipstart=auto【注意】“=”前沒有空格,之后必須有一個空格!,5、運行獨立服務(wù)器此時subversion服務(wù)還沒有開始,只是通過它的命令建立了版本庫。繼續(xù)在剛才的命令窗口輸入:svnserve.exe-d(等效于輸入svnserve.exe-daemon)svnserve將會在端口3690等待請求,-daemon(兩個短橫線)選項告訴svnserve以守護進程方式運行,這樣在手動終止之前不會退出。注意不要關(guān)閉命令行窗口,關(guān)閉窗口會把svnserve停止。為了驗證svnserve正常工作,使用TortoiseSVN-Repo-browser來查看版本庫。在彈出的URL對話框中輸入:svn:/localhost/svn/repository1點OK按鈕后就可以看見repo1版本庫的目錄樹結(jié)構(gòu)了,只不過這時repository1是個空庫。你也可以使用-root選項設(shè)置根位置來限制服務(wù)器的訪問目錄,從而增加安全性和節(jié)約輸入svnserveURL的時間:svnserve.exe-daemon-rootdrive:pathtorepository以前面的測試作為例,svnserve將會運行為:svnserve.exe-daemon-roote:svn然后TortoiseSVN中的版本庫瀏覽器URL縮減為:svn:/localhost/repository1,6、初始化導(dǎo)入打開我的電腦,在你需要進行版本控制的目錄上右擊,選擇TortoiseSVN,再選擇子菜單Import.,設(shè)置文件庫url為svn:/localhost點確定后就會提示文件正在導(dǎo)入.需要注意的是,這里是svn文件庫與svn服務(wù)是同一臺計算機的情況,所以可用localhost,其它機器如果要訪問svn服務(wù),應(yīng)該用svn:/svn服務(wù)器的IP地址,例如svn:/25,下面就是將我們的數(shù)據(jù)(項目)導(dǎo)入到這個版本庫,以后就由版本庫管理我們的數(shù)據(jù)。我們的任何改動都回被版本庫記錄下來,甚至我們自己丟失、改錯數(shù)據(jù)時版本庫也能幫我們找回數(shù)據(jù)。比如,在d:wwwroot下有個guestbook文件夾,里面存放的是編寫的留言簿程序。在此文件夾上“右鍵-TortoiseSVN-Import.”,在彈出對話框的“URLofrepository”輸入“svn:/localhost/repository1/guestbook”。在“Importmessage”輸入“導(dǎo)入整個留言簿”作為注釋。點OK后要求輸入帳號。我們在用戶名和密碼處都輸入test。完成后guestbook中的內(nèi)容全部導(dǎo)入到了svn:/localhost/repository1/guestbook。我們看到在e:svnrepository1沒有任何變化,連個guestbook文件夾都沒有建立,唯一的變化就是e:svnrepository1容量變大了。實際上我們源guestbook中的內(nèi)容已經(jīng)導(dǎo)入repository1版本庫了,源guestbook文件夾可以刪除了。需要注意的是,這一步操作可以完全在另一臺安裝了TortoiseSVN的客戶機上進行。例如運行svnserve的主機的IP是2,則URL部分輸入的內(nèi)容就是“svn:/2”。,7、SVN1.6基本客戶端操作,1、取出(checkout)取出版本庫到一個工作拷貝:來到任意空目錄下,比如在f分區(qū)建立一個空文件夾f:work。“右鍵-SVNCheckout”。在“URLofrepository”中輸入“svn:/localhost/svn/repository1/guestbook”,這樣我們就得到了一份guestbook中內(nèi)容的工作拷貝。2、存入(checkin)/提交(commit)在工作拷貝中作出修改并提交:在guestbook工作拷貝中隨便打開一個文件,作出修改,然后“右鍵-SVNCommit.”。這樣我們就把修改提交到了版本庫,版本庫根據(jù)情況存儲我們提交的數(shù)據(jù)。在修改過的文件上“右鍵-TortoiseSVN-ShowLog”,可以看到對這個文件所有的提交。在不同的revision條目上“右鍵-Comparewithworkingcopy”,我們可以比較工作拷貝的文件和所選revision版本的區(qū)別。,沒安裝TortoiseSVN的計算機先安裝它。創(chuàng)建一個準備用來存放版本控制工程的目錄,例如d:project,然后在我的電腦中右擊這個目錄,選擇SVN取出.,設(shè)置文件庫url為svn:/svn服務(wù)器的IP地址,接下來會問你用戶名和帳號,你就填寫前面搭建服務(wù)器端所設(shè)置的用戶admin密碼zhang點確定后就會提示文件正在取出到d:project,至此,SVN客戶端配置完成,你會看到d:project及其下面的文件都被標記了綠色對勾,簡單日常使用:要取得工程的當前的最新版本,右擊d:project,選擇SVNupdate,你更改工程后,要將你的修改更新到SVN,右擊d:project,選擇SVNcommit,謹慎的話請先更新到SVN最新版本后再提交。創(chuàng)建服務(wù)sccreatesvnserverbinPath=C:ProgramFilesSubversionbinsvnserve.exe-service-rD:svnenergyDisplayName=energy_subversiondepend=Tcpipstart=autosccreatesvnserverbinPath=服務(wù)全名-service-r資源庫位置DisplayName=服務(wù)名depend=協(xié)議start=自動。,SVN權(quán)限配置,在Subversion的使用當中,存在“認證”、“授權(quán)”兩個概念。認證,即authentication,是指用戶名與密碼的認證。授權(quán),即authorization,是指某用戶對某個目錄是否具備讀、寫權(quán)限的一種審核。這兩者配合作用,就組成了Subversion的整個帳戶管理體系。Subversion提供了面向目錄的帳戶權(quán)限管理功能,通過它,我們就可以很精確地實現(xiàn)項目目錄的訪問控制。,背景假設(shè),一家電子元器件設(shè)備供應(yīng)商,其中有個ARM部門,專門負責(zé)ARM芯片的方案設(shè)計、銷售,并在北京、上海各設(shè)立了一個辦事處。對于工作日志,原先采用郵件方式發(fā)給經(jīng)理,但是這種方式有個缺點,那就是不具備連續(xù)性,要看以前的日志必須一封一封郵件去查看,很麻煩。于是就想到利用Subversion,讓員工在自己電腦上編輯日志,然后利用svn傳送回來,既方便員工自己編寫日志,又方便對日志的歸檔處理,而且提交日志的時候只需要執(zhí)行一下svncommit即可,比發(fā)送郵件還要簡單的多。,svn服務(wù)器相關(guān)信息服務(wù)器地址:服務(wù)器OS:MSWindows2000ServerEdition中文版用于存放日志的代碼庫本地目錄:D:svnarmarm部門文檔的目錄結(jié)構(gòu)如下:arm部門名稱diary工作日志目錄headquarters總部工作日志目錄beijing北京辦日志目錄shanghai上海辦日志目錄ref公司公共文件參考目錄temp臨時文件目錄,人員情況morson,公司總經(jīng)理,不習(xí)慣使用電腦,更喜歡傳統(tǒng)的紙與筆,以及面對面的交流michael,arm事業(yè)部的部門經(jīng)理scofield,北京辦人員lincon,上海辦人員linda,總部協(xié)調(diào)員、秘書rory,單片機技術(shù)員,技術(shù)支持訪問權(quán)限需求分析允許總經(jīng)理、部門經(jīng)理讀取所有文件。順便給他們開放寫權(quán)限,以便體現(xiàn)對他們職位的尊重,雖然對于某些文件來說,他們?nèi)魮碛小皩憽睓?quán)限其實也沒什么用處除部門經(jīng)理外,所有其他人員,均只能看到本辦事處人員工作日志不允許匿名訪問ref目錄只允許經(jīng)理和秘書讀寫,對其他人只讀temp目錄人人都可以隨意讀寫,1.啟動Subversion服務(wù),在服務(wù)器端,打開一個命令行窗口,用CD命令進入Subversion安裝目錄下的bin目錄,運行如下指令:svnserve-d-rE:svn其中的-d參數(shù)表示svnserve.exe將會作為一個服務(wù)程序運行在后臺,而-r參數(shù)表示將E:svn目錄指定為代碼庫的根目錄。這樣,當客戶端使用類似svn://foo這樣內(nèi)容的URL來訪問服務(wù)器時候,其所訪問到的真實代碼庫,其實就是E:svnfoo,2.建立代碼庫,在服務(wù)器端的E:svn目錄下,建立一個名為arm的代碼庫,命令如下:E:svnsvnadmincreatearm使用上述命令之后,如果不出問題的話,在E:svn目錄下就會多出一個叫做arm的目錄,其下具備conf、dav、hooks、locks、db等子目錄或文件,此即一個名為arm的代碼庫。從此,通過svn://arm這樣的URL,我們就可以對這個代碼庫進行訪問了。接下來就要進入本文的正題了,也就是權(quán)限配置部分了。其實進入armconf目錄你就會發(fā)現(xiàn),它下面已經(jīng)存在三個寫了一些幫助信息和示例的配置文件,以幫助用戶盡早掌握其配置方法。這三個默認的配置文件分別是svnserve.conf、passwd、authz。其中后兩者沒有后綴,對于windows系統(tǒng)的用戶來說,看起來總是有些怪異,所以在接下來的章節(jié)里面,我將它們兩個都給添加了個conf后綴,以便管理。,3.編輯代碼庫基礎(chǔ)配置文件,在服務(wù)器端,編輯代碼庫的armconfsvnserve.conf文件,如下:generalpassword-db=passwd.confanon-access=noneauth-access=writeauthz-db=authz.conf,4.管理用戶帳號,在服務(wù)器端,新建armconfpasswd.conf文件,如下:usersmorson=ShowMeTheMoneymichael=mysecretpasswordscofield=hellolittilekillerlincon=asyouknows111rory=8809117linda=IlikeWorldCup2006,建立目錄訪問權(quán)限控制文件,在服務(wù)器端,新建armconfauthz.conf文件,內(nèi)容如下:groupsg_vip=morsong_manager=michaelg_beijing=scofieldg_shanghai=lincong_headquarters=rory,lindag_docs=lindaarm:/g_manager=rw*=rarm:/diary/headquartersg_manager=rwg_headquarters=rwg_vip=r*=arm:/diary/beijingg_manager=rwg_beijing=rwg_vip=r*=arm:/diary/shanghaig_manager=rwg_shanghai=rwg_vip=r*=arm:/refg_manager=rwg_docs=rw*=rarm:/temp*=rw,6.導(dǎo)入代碼,在客戶機F:temp目錄下,建立好前述“背景假設(shè)”一節(jié)中描述的目錄結(jié)構(gòu),然后用命令F:tempsvnimportarmsvn://arm-usernamemichael-passwordmysecretpassword導(dǎo)入整個目錄結(jié)構(gòu)。這條指令的精確意思是,將arm目錄下面的所有東西,導(dǎo)入到那個名叫arm的代碼庫中去。如果你不指定源目錄,則svn會默認將當前目錄作為源目錄。比如說,你處于F:temp目錄下的時候,直接執(zhí)行svnimportsvn://arm,那么當你取出你的代碼的時候,你會發(fā)現(xiàn),居然多了一層名為arm的目錄。結(jié)果,你就必須使用類似svn://arm/arm這樣怪異的URL,才能夠正確訪問到你的代碼們。這一點粗看好像不是特別重要,不過聯(lián)想到前述的目錄授權(quán)規(guī)則,可都是按照標準的項目目錄結(jié)構(gòu)來設(shè)計的。突然之間,你項目的根目錄之上,多出了一個名為arm的目錄,那么我們的所有目錄授權(quán)規(guī)則,基本上都要全部改過了,否則除了根目錄,你永遠會得到一個莫名其妙的“accessdenied”。由于Subversion在這一步驟上的界面不夠人性化,因此這是初學(xué)者很容易弄混的地方之一。,7.測試,在服務(wù)器上,打開一個DOSPrompt窗口,輸入如下指令:svncosvn://arm-no-auth-cache-usernamerory-password8809117我們應(yīng)該得到如下目錄結(jié)構(gòu):Armdiaryheadquartersreftemp然后修改ref目錄下任意文件并提交,服務(wù)器將會報錯“Accessdenied”,Bingo!,詳細說明,下面將詳細兩個配置文件:svnserve.conf和authz.conf,通過對配置逐行的描述,來闡明其中的一些細節(jié)含義。這里首先要注意一點,任何配置文件的有效配置行,都不允許存在前置空格,否則程序可能會出錯,給你一個Optionexpected的提示。,svnserve.conf,首先,我們告訴svnserve.exe,用戶名與密碼放在passwd.conf文件下。當然,你可以改成任意的有效文件名,比如默認的就是passwd:password-db=passwd.conf接下來這兩行的意思,是說只允許經(jīng)過驗證的用戶,方可訪問代碼庫。目前只允許readwritenone三種值anon-access=noneauth-access=write接下來就是最關(guān)鍵的一句呢,它告訴svnserve.exe,項目目錄訪問權(quán)限的相關(guān)配置是放在authz.conf文件里:authz-db=authz.conf,authz.conf之用戶分組,armconfauthz.conf文件的配置段,可以分為兩類,group是一類,里面放置著所有用戶分組信息。其余以arm:/開頭的是另外一類,每一段就是對應(yīng)著項目的一個目錄,其目錄相關(guān)權(quán)限,就在此段內(nèi)設(shè)置。首先,我們將人員分組管理,以便以后由于人員變動而需要重新設(shè)置權(quán)限時候,盡量少改動?xùn)|西。我們一共設(shè)置了5個用戶分組,分組名稱統(tǒng)一采用g_前綴,以方便識別。當然了,分組成員之間采用逗號隔開:,groups#任何想要查看所有文檔的非本部門人士g_vip=morson#經(jīng)理g_manager=michael#北京辦人員g_beijing=scofield#上海辦人員g_shanghai=lincon#總部一般員工g_headquarters=rory,linda#小秘,撰寫文檔g_docs=linda注意到?jīng)]有,linda這個帳號同時存在“總部”和“文檔員”兩個分組里面,這可不是寫錯了,是因為Subversion允許這樣設(shè)置。它意味著,這個人所擁有的權(quán)限,將會比他的同事rory要多一些,這樣的確很方便。,authz.conf之項目根目錄,接著,對項目根目錄做了限制,該目錄只允許arm事業(yè)部的經(jīng)理才能修改,其他人都只能查看:arm:/g_manager=rw*=rarm:/表示這個目錄結(jié)構(gòu)的相對根節(jié)點,或者說是arm項目的根目錄。其中的arm字樣,其實就是代碼庫的名稱,即前面用svnadmincreate命令創(chuàng)建出來的那個arm。這里的表示接下來的是一個組名,不是用戶名。因為目前g_manager組里面只有一個michael,你當然也可以將g_manager=rw這一行替換成michael=rw,而表達的意義完全一樣。*表示“除了上面提到的那些人之外的其余所有人”,也就是“除了部門經(jīng)理外的其他所有人”,當然也包括總經(jīng)理那個怪老頭*=r則表示“那些人只能讀,不能寫”,authz.conf之項目子目錄,然后,我們要給總部人員開放日志目錄的讀寫權(quán)限:arm:/diary/headquartersg_manager=rwg_headquarters=rwg_vip=r*=這個子目錄的設(shè)置有些特色,因為從需求分析中我們知道,這個子目錄的權(quán)限范圍要比其父目錄小,它不允許除指定了的之外其他任何人訪問。在這段設(shè)置中,我們需要注意以下幾點:為了表示diaryheadquarters這個目錄,我們必須使用arm:/diary/headquarters這樣的格式。這里最后一行的*=表示,除了經(jīng)理、總部人員、特別人士之外,任何人都被禁止訪問本目錄。這一行是否可以省略呢?不行,因為權(quán)限具備繼承性,子目錄會自動擁有父目錄的權(quán)限。若沒有這一行,則所有帳號都可以讀取/diary/headquarters目錄下的文件。*=這一句的目的,就是割斷權(quán)限繼承性,使得管理員可以定制某個目錄及其子目錄的權(quán)限,從而完全避開其父目錄權(quán)限設(shè)置的影響。之所以這兒需要將g_vip=r一句加上,就是因為存在上述這個解釋。如果說你沒有明確地給總經(jīng)理授予讀的權(quán)力,則他會和其他人一樣,被*=給排除在外。各個配置行之間,沒有先后順序一說。也就是說,如果我將本段配置的*=這一行挪到最前面,完全不影響整個配置的最終效果。,接下來我們看看這一段:arm:/refg_manager=rwg_docs=rw*=r這里的主要看點,就是g_docs組里面包含了一個linda帳號,她也同時在g_headquarters組里面出現(xiàn),這就意味著,linda將具備對/ref和diaryheadquarters兩個目錄的讀寫權(quán)限,authz.conf之目錄表示法,在前面的描述中,我們都采用repos:/some/dir這樣的格式來表示項目的某個目錄,比如上一小節(jié)中的arm:/diary/headquarters。而實際上,Subversion允許你采用/some/dir這樣的格式,即不指定代碼庫的方式來表示目錄,此時的目錄就匹配所有項目。對于使用svnserve的用戶來說,只有當svnserve運行的時候使用了-r參數(shù),并且讓多個代碼庫共享同一個目錄權(quán)限文件(即authz.conf或authz)時,不指明代碼庫名稱才有可能惹麻煩。一般情況下,我們對每個代碼庫都會獨立使用配置文件,畢竟每個項目的目錄結(jié)構(gòu),都有很大不同,混在一起意義不大。因此一般來說,為簡潔起見,都可以不指明代碼庫名稱。本文全都指明了代碼庫名稱,主要是為了將來擴展成同一個配置文件,以方便配合Apache服務(wù)器。對于使用Apache的用戶來說,它們二者可有著很大的不同,因為此時往往習(xí)慣于使用一個公共的目錄權(quán)限配置文件。如果你使用了SVNParentPath指令,則指定版本庫的名字是很重要的,因為假若你使用后者,那么/some/dir部分就會與所有代碼庫項目的/some/dir目錄匹配。如果你使用SVNPath指令,則這兩種表示方式就沒有什么區(qū)別了,畢竟只有一個版

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論