當前位置:首頁 » 雲伺服器 » liunxsvn伺服器搭建

liunxsvn伺服器搭建

發布時間: 2025-02-11 00:15:31

『壹』 如何配置自己的linux svnserver伺服器

通常,很多Linux發行版已經自帶了svn軟體,安裝系統時候選擇即可。因此,本文並不講解如何安裝svn相關軟體,而是重點總結一下如果使用svnserve伺服器來構建自己的代碼倉庫,並且允許別人遠程訪問。本文的整個內容參考了svn手冊。

一、新建並初始化版本庫
1.新建代碼倉庫
# svnadmin create /home/myrepos
這樣,我們就在/home目錄下新建了版本庫myrepos。

2.初始化代碼倉庫
#mkdir -p code/{branches,tags,trunk}
按照svn手冊上的建議,我們版本庫的布局採用branches/tags/trunk這樣的三個目錄。然後可以將代碼直接拷貝的trunk目錄,也可以隨後採用svn add的方式添加。

#svn import code file: ///home/myrepos
將我們構造好的版本庫布局(以及代碼,如果已經拷貝到trunk下的話)提交到版本庫。由於這里我們是在本地操作,因此可以直接使用file協議方式提交。格式為:file:// + 版本庫絕對的路徑

OK,到這里我們已經構建了一個本地版本庫,可以再本地使用svn ci的方法得到版本庫的副本了。如果前面只是提交了版本庫布局,而沒有提交代碼的話,則可以通過如下命令,提交版本代碼:
#svn co file: ///home/myrepos/trunk repos
通常只從主線目錄trunk下取出源碼,放在了新建的repos目錄。然後可以將源碼拷貝到repos目錄。
執行以下兩條命令將代碼添加的版本庫。
#svn add *
#svn ci * -m "Committed codes"
首先需要將拷貝的代碼加入到當前的副本中,然後將代碼提交到版本庫。

二、配置並啟動svnserve
1. 配置svnserve
這一步主要完成遠程用戶訪問版本的許可權。
在版本庫目錄下有個conf目錄:home/myrepos/conf,該目錄包含三個文件:authz,passwd,svnserve.conf。
(1)svnserve.conf

此文件重點的設置內容如下:
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
其中,anon-acces s和auth-access分別代表設置匿名用戶和授權用戶的訪問許可權。read代表只讀,write代表可讀可寫,還有一個none,代表禁止訪問。如果不想讓匿名用戶訪問的話,可以設置anon-access = none。
password-db為保存版本庫的用戶名和密碼,通常為conf目錄下的passwd文件。
authz-db指向的文件,主要用於將用戶進行分組,並賦予不同的組不同的許可權。譬如有多個目錄時,設置某個組的用戶只可以訪問其中的那些目錄。
(2)passwd
如前面介紹,這個文件的主要內容如下
[users]
harry = harrysecret
sally = sallyssecret
以上兩行就是可以訪問版本庫的用戶名和密碼。格式為:user = passwd。
(3)authz
[groups]
# harry_and_sally = harry,sally

# [/foo/bar]
# harry = rw
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
以上就是authz文件的格式。先給用戶分組,然後分別設置每個組的工作目錄以及許可權等。
本文的講解並未用到authz的配置。

2. 啟動svnserve
#svnserve -d -r /home/
svnserve將以守護進程的方式運行。同時,通過-r選項指定了版本庫的目錄。這個目錄可以是版本庫的上級目錄(/home),也可以是版本庫的目錄(/home/myrepos)。具體的區別會在後面講到。當然,也可以不用-r指定。

三、遠程訪問svnserve。
假設版本伺服器的地址為10.1.1.1,那麼用戶可以在遠程linux端輸入命令:
#svn checkout svn://10.1.1.1/myrepos myrepos
這樣版本庫的所有內容都被check出來,存放在當前目錄myrepos下。這里相當於使用svn協議,不用搭建http伺服器。

如果啟動svnserve的時候,-r選項指定的是版本庫的目錄,譬如/home/myrepos,那麼檢出版本的時候,執行的命令為:
#svn checkout svn://10.1.1.1/ myrepos

如果啟動svnserve是沒有指定-r選項,則要輸入版本庫的絕對路徑:
#svn checkout svn://10.1.1.1/home/myrepos myrepos

四、容易出現的問題
在訪問svnserve時,遇到了不少的問題,大致總結一下:
1. 這一步最容易避免,一定要記得啟動svnserve。
2. 記得要正確的修改配置文件svnserve.conf和passwd。
3. 保證版本庫伺服器沒有配置限制遠程訪問svnserve的規則。有時在訪問svn伺服器的時候,會提示伺服器積極拒絕鏈接。簡單起見,可以看看iptables -L INPUT和iptables -L OUTPUT有沒有限制訪問的規則。
4. 要保證輸入版本庫的URL正確。

後記:

1. 版本庫的初次導入可以採用多種方式:
(1)直接構建好版本庫目錄,並將源碼拷貝的對應的位置,然後svn import即可;
(2)先用svn checkout取出版本,然後構建目錄和源碼,執行svn add 並且svn commit即可。
2. 導入或者提交文件類型的控制
svn客戶端是可以配置忽略哪些些文件,比如說我們不想提交*.o之類的文件。那麼可以通過設置svn:ignore或者global-ignore來進行過濾相關的文件。通常默認的情況就會過濾掉*.o, *.so,*.a等被svn認為是中間生成的文件。我本人使用的客服端不管是WIN的還是Linux的都是這種默認情況。
但是,如果有時基於某種需要,或者是導入一個別人之前維護的工程,裡面有些*.so,*.a文件必須保留,那麼如果在第一次import的時候全部導入呢?曾經問過有些朋友說,svn add或者svn import是可以直接把這種文件導入到版本庫的。但是我個人進行測試的時候,確實導入不進去,除非你直接svn add這個文件,然後提交應該就可以了。
如果這樣的文件比較多,而且比較分散,那麼如何解決呢?看一下svn import和svn add這兩個命令的幫助,都有--no-ignore選項。這個選項的功能就是執行相應動作的時候,不忽略任何文件。那麼執行以下兩條命令:
svn import [source] [repository] --no-ignore

svn add [source] --no-ignore
會自動將source目錄下所有的內容全部import或者add。

因此,通過--no-ignore選項,可以滿足提交一些特殊文件的需求。

3. 用一個舊版本的svnadmin創建的版本庫,直接拷貝到另外一台svn版本比較高的PC上使用時,發現提示資料庫版本不匹配。解決的方法:
(1)導出舊的版本庫內容,包含版本信息
具體使用的命令為svnadmin mp, 詳細使用方法參考手冊。該命令的格式為:
svnadmin mp REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
如果我將版本庫完整的信息都倒出來的話,執行如下命令:
# svnadmin mp old_repos > repos.mp

默認版本庫mp的時候是輸出在終端的,通過重定下輸出到repos.mp文件裡面。該文件實際是文本文件。
(2)導入舊版本庫的內容
在需要導入的位置,新建一個版本庫
# svnadmin create new_repos
然後將repos.mp文件導入到新的版本庫:
# svnadmin load new_repos < repos.mp
該命令成功執行完畢之後,新的版本庫中已經包含了old_repos版本庫中的所有版本內容。
svnadmin mp和svnadmin load命令都支持導入/導出某個指定revsion或者某個指定范圍的所有revision。該部分後記參考了如下連接,在此表示感謝:
http://hi..com/primechen/blog/item/71a7a1dc2b981fe877c63841.html

『貳』 linux下搭建的SVN,用戶組無法檢出新添加的目錄,提示出錯還有許可權錯誤

錯誤提示的意思是無法連接到URL,那說明你的svn路徑就是錯的。
根據你的描述「版本庫是home/svn/或者是home/svn/project」,那你的url就應該包含以上路徑。
嘗試在IP地址和/owner中間加上home/svn/或者是home/svn/project試下。
有問題再追問

『叄』 虛擬機中centos下搭建了SVN伺服器客戶端沒有登陸窗口怎麼解決

在訪問的電腦上使用 telnet 192.168.2.98 3690
如果不行,查詢一下防火牆,關閉,Selinux關閉。

訪問的許可權是在auhtz,passwd,svnserve.conf
決定的

有問題再貼出來。

『肆』 linuxsvn配置文件linuxsvn配置

如何在客戶端修改svn配置文件?

1.首先,假設你的電腦是win764位的,你要准備的東西:visualsvn-server-3.0.1-x64.msi和tortoisesvn-1.8.8.25755-x64-svn-1.8.10.msi2.安裝完之後3.打開visualsvnservermanager,直接右鍵repositories,createnewrepository,輸入repositoryname,假設輸入的是testsvn,ok4.那麼現在在repositories下就會有一個資源名稱叫testsvn5.那麼我們現在右鍵users,createuser,輸入名稱密碼都是testsvn,ok,我們這就創建了一個叫testsvn的用戶了,以後可以用它檢入檢出數據了6.現在我們要檢出這個資源的東西,右鍵repositories下的testsvn,urltoclipboard,這樣就選中了它的url了7.我們在c盤右鍵,選擇svncheckout,在urlofrepository粘貼,ok8.經過以上步驟之後,你可以檢出你的項目了,請嘗試在裡面新建修改文件提交就行了9.如果你要在eclipse裡面使用也可以,因為你已經有了url和用戶名密碼10.如果我重裝系統之後,資源是不是消失了?沒關系,在菜單欄的操作(a)-properties裡面設置你的repositoriesroot,這樣,無論你怎麼重裝,都沒有關系了,自己的svn,區域網的svn就這么配置好了。

nginx下如何配置svn才可以在外部訪問?

允許外部訪問不是由nginx來配置如果伺服器處於公網,或DMZ區設置伺服器上的防火牆即可使外網訪問內網服務

svn伺服器配置文件位置?

SVN伺服器版本庫有兩種格式,一種為FSFS,一種為BDB

把文件上傳到SVN版本庫後,上傳的文件不再以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中。

如果是FSFS格式,這些數據存放在版本庫的db目錄中,裡面的revs和revprops分別存放著每次提交的差異數據和日誌等信息

『伍』 linuxsvn客戶端使用方法介紹

本文將詳細介紹linux下的svn客戶端使用方法,需要的朋友可以參考下svnaddvalues/strings.xml//--添加
svnst//--查看狀態
svnci//--提交svnci-m"svnci,permission"
1、將文件checkout到本地目錄
svncheckoutpath(path是伺服器上的目錄)
例如:svncheckoutsvn://192.168.1.1/pro/domain
簡寫:svnco
2、往版本庫中添加新的文件
svnaddfile
例如:svnaddtest.php(添加test.php)
svnadd*.php(添加當前目錄下所有的php文件)
3、將改動的文件提交到版本庫
svncommit-m"LogMessage"[-N][--no-unlock]PATH(如果選擇了保持鎖,就使用--no-unlock開關)
例如:svncommit-m"addtestfileformytest"test.php
簡寫:svnci
4、加鎖/解鎖
svnlock-m"LockMessage"[--force]PATH
例如:svnlock-m"locktestfile"test.php
svnunlockPATH
5、更新到某個版本
svnupdate-rmpath
例如:
svnupdate如果後面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。
svnupdate-r200test.php(將版本庫中的文件test.php還原到版本200)
svnupdatetest.php(更新,於版本庫同步。如果在提交的時候提示過期的話,是因為沖突,需要先update,修改文件,然後清除svnresolved,最後再提交commit)
簡寫:svnup
6、查看文件或者目錄狀態
1)svnstatuspath(目錄下的文件和子目錄的狀態,正常狀態不顯示)
【?:不在svn的控制中;M:內容被修改;C:發生沖突;A:預定加入到版本庫;K:被鎖定】
2)svnstatus-vpath(顯示文件和子目錄狀態)
第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最後一次修改的版本號和修改人。
註:svnstatus、svndiff和svnrevert這三條命令在沒有網路的情況下也可以執行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。
簡寫:svnst
7、刪除文件
svndeletepath-m"deletetestfle"
例如:svndeletesvn://192.168.1.1/pro/domain/test.php-m"deletetestfile"
或者直接svndeletetest.php然後再svnci-m'deletetestfile『,推薦使用這種
簡寫:svn(del,remove,rm)
8、查看日誌
svnlogpath
例如:svnlogtest.php顯示這個文件的所有修改記錄,及其版本號的變化
9、查看文件詳細信息
svninfopath
例如:svninfotest.php
10、比較差異
svndiffpath(將修改的文件與基礎版本比較)
例如:svndifftest.php
svndiff-rm:npath(對版本m和版本n比較差異)
例如:svndiff-r200:201test.php
簡寫:svndi
11、將兩個版本之間的差異合並到當前文件
svnmerge-rm:npath
例如:svnmerge-r200:205test.php(將版本200與205之間的差異合並到當前文件,但是一般都會產生沖突,需要處理一下)
12、SVN幫助
svnhelp
svnhelpci
------------------------------------------------------------------------------
以上是常用命令,下面寫幾個不經常用的
------------------------------------------------------------------------------
13、版本庫下的文件和目錄列表
svnlistpath
顯示path目錄下的所有屬於版本庫的文件和目錄
簡寫:svnls
14、創建納入版本控制下的新目錄
svnmkdir:創建納入版本控制下的新目錄。
用法:1、mkdirPATH...
2、mkdirURL...
創建版本控制的目錄。
1、每一個以工作副本PATH指定的目錄,都會創建在本地端,並且加入新增
調度,以待下一次的提交。
2、每個以URL指定的目錄,都會透過立即提交於倉庫中創建。
在這兩個情況下,所有的中間目錄都必須事先存在。
15、恢復本地修改
svnrevert:恢復原始未改變的工作副本文件(恢復大部份的本地修改)。revert:
用法:revertPATH...
注意:本子命令不會存取網路,並且會解除沖突的狀況。但是它不會恢復
被刪除的目錄
16、代碼庫URL變更
svnswitch(sw):更新工作副本至不同的URL。
用法:1、switchURL[PATH]
2、switch--relocateFROMTO[PATH...]
1、更新你的工作副本,映射到一個新的URL,其行為跟「svnupdate」很像,也會將
伺服器上文件與本地文件合並。這是將工作副本對應到同一倉庫中某個分支或者標記的
方法。
2、改寫工作副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變動
(比如方案名或是主機名稱變動),但是工作副本仍舊對映到同一倉庫的同一目錄時使用
這個命令更新工作副本與倉庫的對應關系。
17、解決沖突
svnresolved:移除工作副本的目錄或文件的「沖突」狀態。
用法:resolvedPATH...
注意:本子命令不會依語法來解決沖突或是移除沖突標記;它只是移除沖突的
相關文件,然後讓PATH可以再次提交。

『陸』 linux svn服務搭建問題 Could not read status line: connection was closed by server

沒遇到過這個問題,特意網上查了一下,發現及提到關閉絕漏防火牆、重啟後正常,有稀里糊塗就正常的,有https錯輸成http導致此問題,五花八門,都試試吧。

其實我建議用Collabnet SVN Edge安裝包,本身就內置螞宏握了Apache,安裝相對比較省心,按照安裝包中附帶的安裝步驟,很順利就裝好了,而且最大的好處悶慶是將來管理SVN伺服器方便,有自帶的Web版控制台。

熱點內容
web和伺服器怎麼寫通訊 發布:2025-02-11 10:08:06 瀏覽:978
安卓升級後手機變卡怎麼辦 發布:2025-02-11 09:58:01 瀏覽:112
土工資料庫 發布:2025-02-11 09:48:55 瀏覽:962
libxml2編譯 發布:2025-02-11 09:48:45 瀏覽:744
java類的復制 發布:2025-02-11 09:48:45 瀏覽:600
127小時ftp 發布:2025-02-11 09:47:10 瀏覽:851
安卓怎麼看蘋果手機的行駛軌跡 發布:2025-02-11 09:26:19 瀏覽:884
h板電影種子ftp 發布:2025-02-11 09:06:10 瀏覽:739
c語言數據類型定義 發布:2025-02-11 09:00:38 瀏覽:237
一個小時如何選擇伺服器 發布:2025-02-11 08:58:14 瀏覽:442