SVN 建立版本庫 與 啟動 SVN 服務

蚩尤後裔發表於2018-09-21

版本庫

版本庫簡介

  • ① 為什麼要配置版本庫?

Subversion 是將檔案資料資訊儲存到版本庫中進行管理的,為了滿足使用者的不同需求,Subversion 允許使用者對版本庫目錄進行定製。

  • ② 在一個非中文無空格目錄下建立一個資料夾,作為版本庫的根目錄

例如:D:\DevRepository\Subversion

  • 在版本庫根目錄下建立與具體專案對應的子目錄作為版本庫——這樣做的目的是使一個 SVN 伺服器能夠同時管理多個專案,而不是為每一個專案搭建一個 SVN 伺服器,例如:

D:\DevRepository\Subversion\CRM

D:\DevRepository\Subversion\ERP

D:\DevRepository\Subversion\OA

  • ④ 建立版本庫命令格式:svnadmin create 倉庫路徑,如 svnadmin create D:\DevRepository\Subversion\StuSys
  • ⑤ 版本庫建立之後,自動生成目錄結構如下:

版本庫操作

C:\Users\Administrator.SC-201707281232>svn --version
svn, version 1.9.5 (r1770682)
   compiled Nov 26 2016, 14:22:31 on x86-microsoft-windows

Copyright (C) 2016 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - using serf 1.3.9 (compiled with 1.3.9)
  - handles 'http' scheme
  - handles 'https' scheme

The following authentication credential caches are available:

* Wincrypt cache in C:\Users\Administrator.SC-201707281232\AppData\Roaming\Subversion
C:\Users\Administrator.SC-201707281232>
  • 1)準備版本庫根目錄,如下所示用 E:/SvnRepository 做為版本庫根目錄,裡面的子目錄以後就是一個一個實際的開發專案

 

  • 2)dog 與 tiger 目錄作為真正的版本庫,現在使用命令來建立 SVN 版本庫:svnadmin create 倉庫路徑

C:\Users\Administrator.SC-201707281232>svnadmin create E:\SvnRepository\dog

C:\Users\Administrator.SC-201707281232>

啟動 SVN 服務

  • 建立好 SVN 版本庫之後,就可以啟動 SVN 服務了,Windows 系統上啟動時,可以分為 cmd 視窗中使用命令列啟動,也可以將 SVN 註冊為 Windows 服務,讓它跟隨系統啟動。

CMD 命令列啟動

  • 命令:svnserve -d -r 版本庫根目錄注意所有的命令都可以通過 svnserve --help 進行檢視!

-d :表示後臺執行

-r 後面接版本庫根目錄,如 E:\SvnRepository

  • SVN 正常啟動後會佔用 3690 埠,可以通過埠檢視判斷 SVN 是否執行成功!

  • 如上所示,在其中一個 cmd 視窗中使用命令 svnserve -d -r E:\SvnRepository 啟動 SVN,因為是後臺啟動,所以它的游標會一直在那裡閃爍,如果視窗關閉,則 SVN 服務也會一併關閉
  • 在另外一個 cmd 視窗中可以使用 netstat -ano|findstr 3690 命令檢視 svn 的 3690 埠,同時也可以使用 tasklist |findstr 5488 檢視 PID 為 5488 的是哪個程式,由上可見就是  svnserve.exe 程式

註冊服務啟動

  •  命令列方式優點是直觀,缺陷是隻要執行伺服器端程式的命令列視窗一關閉,服務就會停止,每次開機都需要手動啟動。
  • 將程式註冊為 Windows 服務是一個較好的解決辦法,將 SVN 服務端程式註冊為 Windows 服務,就可以讓 SVN 服務隨系統一起啟動。
  • 註冊 Windows 服務需要利用 Windows 系統自帶的工具  sc.exe,可以在 C:/Windows/System32 目錄下找到

  • 可以直接在 cmd 中輸入 " sc " 命令,可以檢視 sc.exe 所有的命令與引數
C:\Users\Administrator.SC-201707281232>sc
描述:
        SC 是用來與服務控制管理器和服務進行通訊
        的命令列程式。
用法:
        sc <server> [command] [service name] <option1> <option2>...


        <server> 選項的格式為 "\\ServerName"
        可通過鍵入以下命令獲取有關命令的更多幫助: "sc [command]"
        命令:
          query-----------查詢服務的狀態,
                          或列舉服務型別的狀態。
          queryex---------查詢服務的擴充套件狀態,
                          或列舉服務型別的狀態。
          start-----------啟動服務。
          pause-----------向服務傳送 PAUSE 控制請求。
          interrogate-----向服務傳送 INTERROGATE 控制請求。
          continue--------向服務傳送 CONTINUE 控制請求。
          stop------------向服務傳送 STOP 請求。
          config----------更改服務的配置(永久)。
          description-----更改服務的描述。
          failure---------更改失敗時服務執行的操作。
          failureflag-----更改服務的失敗操作標誌。
          sidtype---------更改服務的服務 SID 型別。
          privs-----------更改服務的所需特權。
          managedaccount--更改服務以將服務帳戶密碼
                          標記為由 LSA 管理。
          qc--------------查詢服務的配置資訊。
          qdescription----查詢服務的描述。
          qfailure--------查詢失敗時服務執行的操作。
          qfailureflag----查詢服務的失敗操作標誌。
          qsidtype--------查詢服務的服務 SID 型別。
          qprivs----------查詢服務的所需特權。
          qtriggerinfo----查詢服務的觸發器引數。
          qpreferrednode--查詢服務的首選 NUMA 節點。
          qmanagedaccount-查詢服務是否將帳戶
                          與 LSA 管理的密碼結合使用。
          qprotection-----查詢服務的程式保護級別。
          quserservice----查詢使用者服務模板的本地例項。
          delete ----------(從登錄檔中)刪除服務。
          create----------建立服務(並將其新增到登錄檔中)。
          control---------向服務傳送控制。
          sdshow----------顯示服務的安全描述符。
          sdset-----------設定服務的安全描述符。
          showsid---------顯示與任意名稱對應的服務 SID 字串。
          triggerinfo-----配置服務的觸發器引數。
          preferrednode---設定服務的首選 NUMA 節點。
          GetDisplayName--獲取服務的 DisplayName。
          GetKeyName------獲取服務的 ServiceKeyName。
          EnumDepend------列舉服務依賴關係。

        以下命令不需要服務名稱:
        sc <server> <command> <option>
          boot------------(ok | bad)指示是否應將上一次啟動另存為
                          最近一次已知的正確啟動配置
          Lock------------鎖定服務資料庫
          QueryLock-------查詢 SCManager 資料庫的 LockStatus
示例:
        sc start MyService


QUERY 和 QUERYEX 選項:
        如果查詢命令帶服務名稱,將返回
        該服務的狀態。其他選項不適合這種
        情況。如果查詢命令不帶引數或
        帶下列選項之一,將列舉此服務。
    type=    要列舉的服務的型別(driver, service, userservice, all)
             (預設 = service)
    state=   要列舉的服務的狀態 (inactive, all)
             (預設 = active)
    bufsize= 列舉緩衝區的大小(以位元組計)
             (預設 = 4096)
    ri=      開始列舉的恢復索引號
             (預設 = 0)
    group=   要列舉的服務組
             (預設 = all groups)

語法示例
sc query                - 列舉活動服務和驅動程式的狀態
sc query eventlog       - 顯示 eventlog 服務的狀態
sc queryex eventlog     - 顯示 eventlog 服務的擴充套件狀態
sc query type= driver   - 僅列舉活動驅動程式
sc query type= service  - 僅列舉 Win32 服務
sc query state= all     - 列舉所有服務和驅動程式
sc query bufsize= 50    - 列舉緩衝區為 50 位元組
sc query ri= 14         - 列舉時恢復索引 = 14
sc queryex group= ""    - 列舉不在組內的活動服務
sc query type= interact - 列舉所有不活動服務
sc query type= driver group= NDIS     - 列舉所有 NDIS 驅動程式

C:\Users\Administrator.SC-201707281232>
  • 現在要做的是建立服務,所以要使用其中的 " create ----------建立服務(並將其新增到登錄檔中) " 命令,想要檢視哪個字命令的具體用法,可以在 cmd 中直接使用 " sc 字命令" 就能一目瞭然,如下所示用法以及注意事項都很清楚了。
C:\Users\Administrator.SC-201707281232>sc create
描述:
        在登錄檔和服務資料庫中建立服務項。
用法:
        sc <server> create [service name] [binPath= ] <option1> <option2>...

選項:
注意: 選項名稱包括等號。
      等號和值之間需要一個空格。
 type= <own|share|interact|kernel|filesys|rec|userown|usershare>
       (預設 = own)
 start= <boot|system|auto|demand|disabled|delayed-auto>
       (預設 = demand)
 error= <normal|severe|critical|ignore>
       (預設 = normal)
 binPath= <.exe 檔案的 BinaryPathName>
 group= <LoadOrderGroup>
 tag= <yes|no>
 depend= <依存關係(以 / (斜槓)分隔)>
 obj= <AccountName|ObjectName>
       (預設= LocalSystem)
 DisplayName= <顯示名稱>
 password= <密碼>

C:\Users\Administrator.SC-201707281232>
  • 因為註冊 Windows 服務是比較底層的操作,需要修改登錄檔,所以啟動的 cmd 視窗需要以管理員身份執行。
  • 現在使用命令為 svn 註冊 Windows 服務:

sc create SvnService binpath= "D:\Subversion\bin\svnserve.exe --service -r E:\SvnRepository" start= auto depend= Tcpip

1)create:建立服務(並將其新增到登錄檔中)

2)SvnService:服務名稱,自己取

3)binpath:執行程式的二進位制檔案路徑,就是需要註冊服務的程式,等於號右邊帶空格

4)--service:這不是 sc 命令的引數,而是 svnserve.exe 程式的引數,表示建立服務

5)-r:同理 -r 也是為 svnserve.exe 指定版本庫根目錄

6)start:啟動型別,auto 表示跟隨系統自動啟動,等於號右邊帶空格

7)depend:依賴關係,說明 widnows 服務與 svnserve.exe 之間底層需要使用 Tcpip 協議,等於號右邊帶空格

  • 如上所示,服務註冊成功,也可以通過檢視埠和程式判斷是否 svn 啟動成功
  • 《特別提醒:後面使用命令列進行 檢出操作的時候報錯說連不上 SVN 伺服器,說明註冊服務有問題》
C:\Users\Administrator.SC-201707281232>netstat -ano|findstr 3690
  TCP    0.0.0.0:3690           0.0.0.0:0              LISTENING       13728

C:\Users\Administrator.SC-201707281232>tasklist |findstr 13728
svnserve.exe                 13728 Services                   0      8,736 K

C:\Users\Administrator.SC-201707281232>
  • 同理 sc 還有許多關於服務的命令,同理它們都需要 管理員 許可權,如:

sc start 服務名:啟動服務

sc stop 服務名:停止服務,刪除服務之前,都建議先停止服務

sc delete 服務名:刪除服務,電腦重啟後,服務皮膚中就不會再有值了

 

 

 

相關文章