在 linux環境中使用svn 客戶端。
客戶端指令 就是svn
[root@localhost ~]# svn --help usage: svn <subcommand> [options] [args] add blame (praise, annotate, ann) cat changelist (cl) checkout (co) # 拉取版本,簡寫co cleanup commit (ci) # 提交,簡寫ci copy (cp) delete (del, remove, rm) diff (di) export help (?, h) import info list (ls) lock log merge mergeinfo mkdir move (mv, rename, ren) patch propdel (pdel, pd) propedit (pedit, pe) propget (pget, pg) proplist (plist, pl) propset (pset, ps) relocate resolve resolved revert status (stat, st) switch (sw) unlock update (up) #從服務端同步文件 upgrade Subversion is a tool for version control. For additional information, see http://subversion.apache.org/
拉取代碼
svn checkout svn://192.168.134.174:/sadoc /svndata/ --username=test02 --password=123456
svn代碼庫地址 本地地址,目錄提前創建 用戶名 密碼
svn co svn://192.168.134.174:/sadoc /svndata/ --username=test02 --password=123456
指令簡寫
查看回顯,以下就完成了。
[root@localhost svndata]# svn checkout svn://192.168.134.174:/sadoc /svndata/ --username=test02 --password=123456 ----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: <svn://192.168.134.174:3690> 934c0447-3ff6-4c11-a195-53e3e8f43666 can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, if possible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in '/root/.subversion/servers'. ----------------------------------------------------------------------- Store password unencrypted (yes/no)? yes A test02.txt Checked out revision 5. [root@localhost svndata]# ls test02.txt
如果svn的 服務端和 客戶端在一台機器上面 。 可以使用以下url訪問 (基本不用)。
[root@localhost datatest]# ps -ef | grep svn # svn 服務端和客戶端 在一台機器上面 root 1204 1 0 11:08 ? 00:00:00 /usr/bin/svnserve -d -r /application/svndata/ root 1234 1161 0 11:26 pts/0 00:00:00 grep --color=auto svn [root@localhost datatest]# svn co file:///application/svndata/sadoc/ /datatest/ # 使用指令 密碼都不用 A test02.txt A test03.txt Checked out revision 6. [root@localhost datatest]# ls test02.txt test03.txt
報錯處理:
如果同步數據的數據出現報錯
svn: Can't convert string from 'UTF-8' to native encoding
是字符集的問題, windows是支持中文的。 linux裝系統的時候默認不支持中文。
可以參考:
https://www.cnblogs.com/zhaobolu/archive/2014/04/02/3641309.html
修改~/.bashrc,加入 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 然后 source ~/.bashrc
然后檢查下語言環境
[root@localhost svndata]# locale LC_CTYPE="en_US.UTF-8" #用戶所使用的語言符號及其分類 LC_NUMERIC="en_US.UTF-8" #數字 LC_TIME="en_US.UTF-8" #時間顯示格式 LC_COLLATE="en_US.UTF-8" #比較和排序習慣 LC_MONETARY="en_US.UTF-8" #貨幣單位 LC_MESSAGES="en_US.UTF-8" #信息主要是提示信息,錯誤信息, 狀態信息, 標題, 標簽, 按鈕和菜單等 LC_PAPER="en_US.UTF-8" #默認紙張尺寸大小 LC_NAME="en_US.UTF-8" #姓名書寫方式 LC_ADDRESS="en_US.UTF-8" #地址書寫方式 LC_TELEPHONE="en_US.UTF-8" #電話號碼書寫方式 LC_MEASUREMENT="en_US.UTF-8" #度量衡表達方式 LC_IDENTIFICATION="en_US.UTF-8" #對自身包含信息的概述
其中兩個比較特殊的
LANG #系統語言 LC_ALL #如果設置,值將覆蓋所有其他的locale設定
同步更新
svn update /svndata/
本地路徑
看回顯
[root@localhost svndata]# svn update /svndata/ Updating '.': A test03.txt # A 就是增加 Updated to revision 6. [root@localhost svndata]# ls test02.txt test03.txt
查看數據
可以使會用 svn list
[root@localhost svndata]# svn list /svndata/
本地路徑
[root@localhost svndata]# svn list svn://192.168.134.174:/sadoc
遠程庫
[root@localhost svndata]# svn list svn://192.168.134.174:/sadoc --verbose (顯示詳細信息)
提交數據
使用指令的話。svn的提交也是需要 先add 然后在 commit的
單個文件提交
[root@localhost svndata]# touch {a..d} # 先創建了幾個文件 [root@localhost svndata]# ls a b c d test02.txt test03.txt
[root@localhost svndata]# svn add a # 單個文件提交
A a
[root@localhost svndata]# svn ci # ci 就是 commit的縮寫。 一定要加 -m 參數,寫提交信息。 不加會報錯
svn: E205007: Commit failed (details follow):
svn: E205007: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the --message (-m) or --file (-F) options
svn: E205007: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found
[root@localhost svndata]# svn ci -m "add a" # 加上 -m參數就ok了
Adding a
Transmitting file data .
Committed revision 9.
[root@localhost svndata]# svn list svn://192.168.134.174:/sadoc #再次查看 ,文件已經提交了。
a
test02.txt
test03.txt
批量提交
[root@localhost svndata]# svn add * # 文件多的話,可以使用* , 但是已經提交過文件,會告警 svn: warning: W150002: '/svndata/a' is already under version control A b A c A d svn: warning: W150002: '/svndata/test02.txt' is already under version control svn: warning: W150002: '/svndata/test03.txt' is already under version control svn: E200009: Could not add all targets because some targets are already versioned svn: E200009: Illegal target for the requested operation [root@localhost svndata]# [root@localhost svndata]# [root@localhost svndata]# [root@localhost svndata]# svn commit -m "add files" # 再次提交 Adding b Adding c Adding d Transmitting file data ... Committed revision 10. [root@localhost svndata]# svn list svn://192.168.134.174:/sadoc # 查看版本庫,已經生效了。
a b c d test02.txt test03.txt
然后我們去windows上去查看,遠程的庫信息。 也可以看到文件已經提交了。
導入本地目錄到svn庫
這里的導入,不是在庫里面創建文件提交。 而是,使用其他路徑下的目錄或文件導入進去。
[root@localhost svndata]# mkdir -p /tmp/svn/trunk /tmp/svn/brunch /tmp/svn/logs # 創建了三個文件 類似於git的 master 、 brunch、log的目錄
[root@localhost svndata]# tree /tmp/svn/
/tmp/svn/
├── brunch
├── logs
└── trunk
[root@localhost svndata]# svn import /tmp/svn/ svn://192.168.134.174:/sadoc -m "add new dirs" # 使用import進行導入 , 也是必須要加上 -m 參數的 。
Adding /tmp/svn/brunch
Adding /tmp/svn/trunk
Adding /tmp/svn/logs
Committed revision 11.
[root@localhost svndata]# svn list svn://192.168.134.174:/sadoc # 查看一下就有了
a
b
brunch/
c
d
logs/
test02.txt
test03.txt
trunk/
復制目錄
就是將svn庫中的目錄,復制一下。用的不多
[root@localhost svndata]# svn list svn://192.168.134.174:/sadoc # 查看當前的目錄結構 a b brunch/ c d logs/ test02.txt test03.txt trunk/
[root@localhost svndata]# svn copy svn://192.168.134.174:/sadoc/trunk svn://192.168.134.174:/sadoc/brunch/new_brunch_2019 -m "copy dir " # 使用copy指令,就是從哪復制到哪 ,也是必須要加上 -m 參數的 。
Committed revision 12.
[root@localhost svndata]# svn list svn://192.168.134.174:/sadoc/brunch/ # 再次查看,可以看到生效了
new_brunch_2019
然后我們去windows上面看 ,也可以看到目錄結構。