<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # SVN服務器搭建 [TOC] >[info] svn(subversion)是今年來崛起的版本管理工具,與CVS一樣,SVN是一個跨平臺的開源的版本控制系統,Subversion管理著隨時間改變的數據,這些數據放置在一個中央資料檔案庫(repository)中。 這個檔案庫很像一個普通的文件服務器,不過**它會記住每一次文件的變動**。這樣就可以把檔案恢復舊的版本,或是瀏覽文件的變動歷史。 SVN是一個通用的軟件系統,它不但可以用來管理程序源碼,他也可以管理任何類型的文件,如文本、視頻,圖片等等。 **以下為步驟總結** 1. 安裝svn服務器 `yum -y install subversion` 2. 創建svn服務器目錄 `mkdir -p /opt/svn/svndata /opt/svn/svnpasswd` 3. 啟動svn服務器 `svnserve -d -r /opt/svn/svndata` 4. 創建一個新的svn項目 `svnadmin create /opt/svn/svndata/app` 5. 更改主配置文件并指定權限和用戶名密碼配置文件 6. 配置用戶和用戶、用戶組權限 7. 重啟svn服務器 8. 使用客戶端連接測試 相關站點: http://subversion.tigris.org/ http://subversion.apache.org/ http://tortoisesvn.net/ ## SVN服務運行模式與訪問方式 ### SVN服務端運行方式 svn服務器常見的有三種運行訪問方式: 1. 獨立服務器(例如:**svn**://svn.blogcurder.com/document) 2. 借助apache(例如:**http**://svn.blogcurder.com/document) 3. 本地直接訪問(例如:**file**:///svn.blogcurder.com/document) ### SVN數據格式 svn存儲版本數據也有2種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統)。因為BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全些。 SVN是基于關系數據庫的(BerkleyDB)或一些列二進制文件的(FSFS)。一方面這解決了許多問題(例如:并行讀寫共享文件)以及添加了許多新功能(例如運行時的事務特性),然而另一方面,數據存儲由此變得不透明。 ### 集中式版本管理系統 集中式代碼管理的核心是服務器,所有開發者在開始新一天的工作之前必須從服務器獲取代碼,然后開發,最后解決沖突,提交代碼。所以的版本信息都放在服務器上。如果脫離了服務器,開發者就無法工作。 **缺點** 1. 服務器壓力大,svn數據庫容量暴增 2. 如果不能連接到服務器上,就不能提交、還原、對比等。 3. 不適合開源開發,但是一般集中式管理的有非常明確的權限管理機制,可以實現分層管理,從而很好的解決開發人數眾多的問題。 **優點** 1. 管理方便,邏輯明確,符合一般人思維習慣。 2. 易于管理,集中式服務器更能保證安全性。 3. 代碼一致性非常高。 4. 適合開發人數不多的項目開發 5. 大部分軟件配置管理的大學教材都使用svn。 ## 安裝配置SVN ### 查看系統環境 ~~~ [root@localhost.localdomain /etc/yum.repos.d] # cat /etc/redhat-release CentOS release 6.7 (Final) [root@localhost.localdomain /etc/yum.repos.d] # uname -m x86_64 [root@localhost.localdomain /etc/yum.repos.d] # uname -r 2.6.32-573.7.1.el6.x86_64 [root@localhost.localdomain /etc/yum.repos.d] # uname -a Linux localhost.localdomain 2.6.32-573.7.1.el6.x86_64 #1 SMP Tue Sep 22 22:00:00 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux ~~~ ### 安裝SVN ~~~ # yum安裝rpm包安裝后本地不清除的方法 [root@localhost.localdomain /etc/yum.repos.d] # sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf [root@localhost.localdomain /etc/yum.repos.d] # grep keepcache /etc/yum.conf keepcache=1 # 使用yum安裝svn [root@localhost.localdomain /etc/yum.repos.d] # yum -y install subversion # 檢查是否已安裝 [root@localhost.localdomain /etc/yum.repos.d] # rpm -qa subversion subversion-1.6.11-15.el6_7.x86_64 ~~~ ### 配置并啟動SVN #### 建立svn版本庫根目錄(svndata)以及密碼權限目錄(svnpasswd) `mkdir -p /opt/svn/svndata /opt/svn/svnpasswd` #### 指定服務的svn根目錄啟動svn服務 `svnserve -d -r /opt/svn/svndata` #### 查看svn服務幫助 ~~~ [root@localhost.localdomain /opt/svn] # svnserve --help 用法: svnserve [-d | -i | -t | -X] [options] 有效選項: -d [--daemon] : 后臺模式 -i [--inetd] : inetd 模式 -t [--tunnel] : 隧道模式 -X [--listen-once] : 監聽一次方式(調試用) -r [--root] ARG : 服務的根目錄 -R [--read-only] : 強制只讀;覆蓋版本庫配置文件 --config-file ARG : 從文件 ARG 讀取配置 --listen-port ARG : 監聽端口 [方式: daemon, listen-once] --listen-host ARG : 監聽主機名稱或IP地址 [方式: daemon, listen-once] -T [--threads] : 使用線程代替進程 [方式: daemon] --foreground : 在前臺運行(調試用) [方式: daemon] --log-file ARG : svnserve 日志文件 --pid-file ARG : 寫進程 PID 到文件 ARG [方式: daemon, listen-once] --tunnel-user ARG : 隧道用戶名(默認是當前UID對應的用戶名) [方式: tunnel] -h [--help] : 顯示本幫助 --version : 顯示程序版本信息 ~~~ #### 查看進程和端口 ~~~ [root@localhost.localdomain /opt/svn] # ps -ef |grep svn|grep -v grep root 2767 1 0 15:59 ? 00:00:00 svnserve -d -r /opt/svn/svndata/ [root@localhost.localdomain /opt/svn] # netstat -tunpl|grep svnserve tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2767/svnserve # 或者 [root@localhost.localdomain /opt/svn] # lsof -i tcp:3690 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME svnserve 2767 root 3u IPv4 37535 0t0 TCP *:svn (LISTEN) ~~~ ## 建立版本庫 ### 創建一個新的Subversion項目**`app`** ~~~ [root@localhost.localdomain /opt/svn] # svnadmin create /opt/svn/svndata/app [root@localhost.localdomain /opt/svn] # ls -l /opt/svn/svndata/app/ 總用量 24 drwxr-xr-x. 2 root root 4096 10月 13 16:23 conf drwxr-sr-x. 6 root root 4096 10月 13 16:23 db -r--r--r--. 1 root root 2 10月 13 16:23 format drwxr-xr-x. 2 root root 4096 10月 13 16:23 hooks drwxr-xr-x. 2 root root 4096 10月 13 16:23 locks -rw-r--r--. 1 root root 229 10月 13 16:23 README.txt ~~~ ### 查看幫助方法 ~~~ [root@localhost.localdomain /opt/svn] # svnadmin help 一般用法: svnadmin SUBCOMMAND REPOS_PATH [ARGS & OPTIONS ...] 使用“svnadmin help <subcommand>” 得到子命令的幫助信息。 使用“svnadmin --version”查看程序的版本號和文件系統模塊。 可用的子命令: crashtest create ~~~ #### 查看具體參數幫助 ~~~ [root@localhost.localdomain /opt/svn] # svnadmin help create create: 用法: svnadmin create REPOS_PATH 在 REPOS_PATH 創建一個新的空版本庫。 有效選項: --bdb-txn-nosync : 在提交事務時禁用fsync [BDB] --bdb-log-keep : 禁用自動刪除日志文件 [BDB] --config-dir ARG : 從目錄 ARG 讀取用戶配置文件 ~~~ ### 配置用戶對app項目允許讀寫訪問 ~~~ # 修改前養成備份的好習慣 [root@localhost.localdomain ~] # cd /opt/svn/svndata/app/conf && cp svnserve.conf svnserve.conf.$(date +%F) # 修改前先查看下 [root@localhost.localdomain /opt/svn/svndata/app/conf] # egrep '\-access|\-db =' svnserve.conf # anon-access = read # auth-access = write # password-db = passwd # authz-db = authz # 使用vim命令對文件進行修改 anon-access = none # 文件12行處 auth-access = write # 文件13行處 password-db = /opt/svn/svnpasswd/passwd # 文件20行出 authz-db = /opt/svn/svnpasswd/authz # 文件27行出 # 修改完后檢查 [root@localhost.localdomain /opt/svn/svndata/app/conf] # egrep '\-access|\-db =' svnserve.conf anon-access = none auth-access = write password-db = /opt/svn/svnpasswd/passwd authz-db = /opt/svn/svnpasswd/authz ~~~ ### 修改用戶權限 #### 新增用戶名和密碼 ~~~ # 拷貝用戶權限和密碼配置文件 [root@localhost.localdomain /opt/svn/svndata/app/conf] # cp authz /opt/svn/svnpasswd/ [root@localhost.localdomain /opt/svn/svndata/app/conf] # cp passwd /opt/svn/svnpasswd/ [root@localhost.localdomain /opt/svn/svndata/app/conf] # ls /opt/svn/svnpasswd/ authz passwd # 編輯密碼文件 [root@localhost.localdomain /opt/svn/svnpasswd] # cd /opt/svn/svnpasswd && vim passwd #添加一下幾個測試用戶 rose = aaaaaa luozhiqun = aaaaaa guest = aaaaaa test = aaaaaa ~~~ >[danger] `=`前面為svn用戶帳號,`=`后面為用戶密碼,密碼是明文密碼,注意修改文件權限,例如: `chmod 600 passwd`。 更改svnserve.conf時,需要重啟SVN服務器,更改authz和passwd文件時不需要重啟。 #### 編輯權限文件 ~~~ [root@localhost.localdomain /opt/svn/svnpasswd] # vim authz 其中 [groups] 下方是定義組信息,注意:用戶帳號在passwd文件中。 配置規則為 :組名 = 用戶名 其中用戶名為passwd文件中存在的用戶 例如添加如下內容: develpeople = rose,luozhiqun testpeople = test [app:/] # 對項目app進行權限控制 @develpeople = rw # devel組對app項目的根有讀寫權限 @testpeople = r # test組對app項目有只讀權限 guest = r # guest用戶對app項目有只讀權限 ~~~ >[danger] **注意:** 權限沒有`x`,復制上述代碼時請刪除注釋!(可能導致授權失敗) ## 重啟svnserve進程 ~~~ pkill svnserve svnserve -d -r /opt/svn/svndata ~~~ # 客戶端連接SVN服務器 使用checkout指令檢出**app**項目 輸入 `svn://192.168.1.169/app`進行檢出操作,如果提示輸入用戶名和密碼 則表示連接svn服務器成功。如果不成功檢查服務器`iptables`和`selinux`是否攔截了連接請求。 復選框能讓TortoiseSVN在subversion的缺省目錄:`cmd`敲入`%APPDATA%\Subversion\auth`打開的三個子目錄內保存認證信息: * svn.simple 里面包含了基本認證方式所需要的認證信息(用戶名/密碼),保存的密碼是通過WinCrypt API加密的,不是文本形式。 * svn.ssl.server 里包含了SSL服務器證書 * svn.username 里面包含了用戶名認證的認證信息(無須提供密碼) ## 監視SVN提交的工具 ### 下載地址 `http://www.softpedia.com/get/Tweak/System-Tweak/CommitMonitor.shtml#download` 下載解壓后,打開程序窗口,新建product輸入: ~~~ Product name url to monitor check every 1 minutes username password ~~~ 等信息,然后隱藏到任務欄,這樣有更新軟件會有反饋。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看