①首先進入自己的工作目錄,例如:d:\devworkspace\svnspace
②執行svn checkout命令,命令格式如下
格式舉例
svn checkout svn://localhost/erp myerp
執行結果
取出版本 0。
③工作副本
執行checkout命令後進入myerp目錄,看到裡面什麼都沒有。真的什麼都沒有嗎?不是的。檢出命令會在這一目錄下建立乙個隱藏目錄.svn,用來儲存與伺服器互動的重要資訊,其中包括從伺服器端取回的最新版本資訊、檔案狀態、更新時間等。svn正是以此為依據判斷當前目錄中檔案的狀態。所以這個隱藏目錄千萬不要刪除或修改其中的內容——完全無視它的存在吧。如果伺服器端儲存的檔案可以視為乙個「正本」,那麼每個開發人員檢出到本地目錄的檔案可以視為「副本」,通常稱為工作副本。
①進入d:\devworkspace\svnspace\myerp目錄
②建立乙個檔案test.txt
③執行svn commit命令,執行結果是
d:\devworkspace\svnspace\myerp>svn commit test.txt
svn: e200009: 提交失敗(細節如下):
svn: e200009: 「d:\devworkspace\svnspace\myerp\test.txt」 尚未納入版本控制
說明乙個檔案必須納入版本控制才可以提交到伺服器端。
④執行svn add命令,將test.txt納入版本控制
d:\devworkspace\svnspace\myerp>svn add test.txt
a test.txt
⑤再次執行svn commit命令
d:\devworkspace\svnspace\myerp>svn commit test.txt
svn: e205007: 提交失敗(細節如下):
svn: e205007: 無法使用外部編輯器獲得日誌資訊;考慮設定環境變數 $svn_editor,或者使用 --message (-m) 或 --file (-f) 選項
svn: e205007: 沒有設定 svn_editor,visual 或 editor 環境變數,執行時的配置引數中也沒有 「editor-cmd」 選項
此時要求附加日誌資訊
⑥使用-m引數附加日誌資訊
d:\devworkspace\svnspace\myerp>svn commit -m "my first commit" test.txt
svn: e170001: 提交失敗(細節如下):
svn: e170001: 認證失敗
原因是沒有許可權
⑦暫時先開啟匿名訪問許可權
[1] 進入對應的版本庫目錄下的conf目錄:d:\devrepository\subversion\erp\conf
[2] 開啟svnserve.conf
[3] 將第19行的# anon-access = read改為anon-access = write,也就是去掉「# 」,將read改為write。注意前面不要留空格,一定要頂格寫。
[4] 不需要重啟svn服務,甚至命令列視窗都不需要重新開啟。
⑧重新執行提交命令
d:\devworkspace\svnspace\myerp>svn commit -m "my first commit" test.txt
正在增加 test.txt
傳輸檔案資料.
提交後的版本為 1。
說明提交成功了。
⑨其實svn commit命令最後可以不指定具體檔案,此時表示提交當前工作副本中的所有修改。
①將伺服器端檔案檢出到乙個新的目錄,模擬另外乙個終端
d:\devworkspace\svnspace>svn checkout svn://localhost/erp tomerp
a tomerp\test.txt
取出版本 1。
②回到myerp目錄,對test.txt檔案修改後提交。
③進入tomerp目錄
④執行svn update命令
d:\devworkspace\svnspace\tomerp>svn update
正在公升級 '.':
u test.txt
更新到版本 2。
這樣我們就可以在tomerp目錄下看到myerp目錄下提交的修改。
⑤思考:更新和檢出的相同點和不同點分別是什麼?
檢出更新
相同點不同點1
不同點2
建立.svn目錄,使檢出目錄成為工作副本
依賴.svn目錄
不同點3
只能操作1次
可以操作多次
①沒有修改,現行版本
本檔案在工作目錄中沒有被修改,而且自當前版本之後,其他終端也沒有任何該檔案的修改被提交到伺服器,即當前工作副本的版本和伺服器端最新版本是一致的。對它執行svn commit和svn update都不會發生任何事。
②本地修改, 現行版本
這個檔案被修改過,但這個修改還沒有提交到伺服器,而且自當前版本之後,其他終端也沒有任何該檔案的修改被提交到伺服器,所以當前工作副本的版本和伺服器端最新版本仍然是一致的。由於有尚未送交回去的本地修改,所以對它的 svn commit會成功提交你的修改,而 svn update 則不會作任何事。
③沒有修改,過時版本
這個檔案沒有修改,但是版本庫中有其他終端提交的修改。此時當前工作副本的版本比伺服器端的版本落後了,我們稱之為「過時」。對當前檔案的 svn commit 不會發生任何事,而 svn update 會讓工作目錄中的檔案更新至最新版本。
④本地修改,過時版本
伺服器端存在沒有更新到本地的修改,導致當前版本過時。如果這個檔案在本地有未提交的修改,則無法提交,對它執行svn commit 會產生「out-of-date」錯誤。
此時應該先嘗試更新本地檔案。更新時svn會嘗試將伺服器端的更新與本地檔案進行合併,合併的結果有兩種可能:乙個是伺服器端和本地修改位於檔案的不同位置,合併成功;另乙個是伺服器端的修改正好和本地修改位於同乙個位置,發生衝突。
①假設當前版本為12,想要取回版本9
②執行svn update命令
格式svn update --revision 想要取回的版本號
舉例svn update --revision 1
執行結果
正在公升級 『.』:
d pp.txt
u test.txt
更新到版本 1。
③這裡需要注意的是,svn版本號並不是對某乙個檔案進行編號,而是對應整個版本庫總體狀態的乙個「快照」,取回某個版本不是取回版本號對應的某個檔案,而是整個專案的乙個快照。
①假設想要取回pp.txt在版本10時的狀態
②執行svn update命令
格式svn update 檔名 --revision 想要取回的版本號
舉例svn update pp.txt –revision 10
執行結果
正在公升級 『pp.txt』:
u pp.txt
更新到版本 10。
③綜合這兩個例子,我們可以認為版本號和檔名構成了乙個橫縱座標系,通過檔案路徑和版本號定位其在某乙個時刻的狀態。
sion 10 |
| 執行結果 | 正在公升級 『pp.txt』:
u pp.txt
更新到版本 10。 |
③綜合這兩個例子,我們可以認為版本號和檔名構成了乙個橫縱座標系,通過檔案路徑和版本號定位其在某乙個時刻的狀態。
SVN的基本使用 命令列
yotrolz 關注 建立倉庫.png 建立使用者 1 建立使用者 2 給倉庫設定使用者 1 設定使用者的訪問許可權 這裡我們建立了三個本地的資料夾 cd users sunshine documents 大神班 練習 0719 svn練習 經理svn co username mgr passwor...
Window PHP 使用命令列模式
電腦系統 win7 php環境 phpstudy 1 把php目錄放到環境變數path下面 我的電腦 屬性 高階 環境變數 系統變數 path 編輯 檢視路徑下有沒有php目錄,如果沒有加上 比如我的php路徑是d phpstudy php php 5.6.27 nts 所以要在最後面加上d php...
SVN常用命令行
1.建立儲存庫 假設d dev svnrepo為存放svn儲存庫的目錄 svnadmin create d dev svnrepo test 建立一名為test的儲存庫 2.匯入專案 svn import local path svn path m initial import 引數 m 為日誌 3...