5. svn linux 客戶端的使用


在 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上面看 ,也可以看到目錄結構。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM