在Windows環境中,咱們通常使用TortoiseSVN來搭建svn環境。在Mac環境下,因爲Mac自帶了svn的服務器端和客戶端功能,因此咱們能夠在不裝任何第三方軟件的前提下使用svn功能,不過還需作一下簡單的配置。
咱們首先來看下,如何在Mac環境下搭建svn服務器端環境。php
1、建立代碼倉庫,用來存儲客戶端所上傳的代碼
我先在/User/apple目錄下新建一個svn目錄,之後能夠在svn目錄下建立多個倉庫目錄
打開終端,建立一個mycode倉庫,輸入指令:svnadmin create /Users/apple/svn/mycode
指令執行成功後,會發現硬盤上多了個/Users/apple/svn/mycode目錄,目錄結構以下:html
注:這地方出現路徑的錯誤能夠經過xcode
輸入sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer命令瀏覽器
password是你的登陸密碼。緩存
2、配置svn的用戶權限
主要是修改/svn/mycode/conf目錄下的三個文件
1.打開svnserve.conf,將下列配置項前面的#和空格都去掉服務器
C# code網絡
|
anon-access = read表明匿名訪問的時候是隻讀的,若改成anon-access = none表明禁止匿名訪問,須要賬號密碼才能訪問
2.打開passwd,在[users]下面添加賬號和密碼
[users]
mj=123
jj=456
賬號是mj,密碼是123
3.打開authz,配置用戶組和權限
咱們能夠將在passwd裏添加的用戶分配到不一樣的用戶組裏,之後的話,就能夠對不一樣用戶組設置不一樣的權限,沒有必要對每一個用戶進行單獨設置權限。
在[groups]下面添加組名和用戶名,多個用戶之間用逗號(,)隔開
[groups]
topgroup=mj,jj
說明mj和jj都是屬於topgroup這個組的,接下來再進行權限配置。
使用[/]表明svn服務器中的全部資源庫
[/]
@topgroup=rw上面的配置說明topgroup這個組中的全部用戶對全部資源庫都有讀寫(rw)權限,組名前面要用@
若是是用戶名,不用加@,好比mj這個用戶有讀寫權限
[/]
mj=rw
至於其餘精細的權限控制,能夠參考authz文件中的其餘內容
4.啓動svn服務器
前面配置了這麼多,最關鍵仍是看可否正常啓動服務器,若啓動不來,前面作再多工做也是徒勞。
在終端輸入下列指令:svnserve -d -r /Users/apple/svn
或者輸入:svnserve -d -r /Users/apple/svn/mycode
沒有任何提示就說明啓動成功了
5.關閉svn服務器
若是你想要關閉svn服務器,最有效的辦法是打開實用工具裏面的「活動監視器」
這裏列出一大堆svn指令,後面括號中的內容的通常表明着指令的簡稱,好比咱們能夠用svn ci代替svn commit,用svn co代替svn checkout
注:首次配置完先關閉svn服務器再進行數據的上傳和下載操做。
綜合上述,咱們就能夠輕鬆搭建svn服務器環境了
3、使用svn客戶端功能
1.從本地導入代碼到服務器(第一次初始化導入)
在終端中輸入
svn import /Users/apple/Documents/eclipse_workspace/weibo svn://localhost/mycode/weibo --username=mj --password=123 -m "初始化導入"
我解釋下指令的意思:將/Users/apple/Documents/eclipse_workspace/weibo中的全部內容,上傳到服務器mycode倉庫的weibo目錄下,後面雙引號中的"初始化導入"是註釋
注:apple是用戶名
2.從服務器端下載代碼到客戶端本地
在終端中輸入svn checkout svn://localhost/mycode --username=mj --password=123 /Users/apple/Documents/code
我解釋下指令的意思:將服務器中mycode倉庫的內容下載到/Users/apple/Documents/code目錄中
注:localhost(本地服務器IP地址)能夠替換成你本地服務器的IP地址。當你和別人同用一個svn時,你能夠輸入你要進行數據請求的服務器的IP地址。
3.提交更改過的代碼到服務器
在步驟2中已經將服務器端的代碼都下載到/Users/apple/Documents/code目錄中,如今修改下里面的一些代碼,而後提交這些修改到服務器
1> 打開終端,先定位到/Users/apple/Documents/code目錄,輸入:cd /Users/apple/Documents/code
2> 輸入提交指令:svn commit -m "修改了main.m文件"
這個指令會將/Users/apple/Documents/code下的全部修改都同步到服務器端,假如此次我只修改了main.文件
能夠看到終端的打印信息:
Sending weibo/weibo/main.m
Transmitting file data .
Committed revision 2.
4.更新服務器端的代碼到客戶端
這個應該是最簡單的指令了,在終端中定位到客戶端代碼目錄後,好比上面的/Users/apple/Documents/code目錄,而後再輸入指令:svn update
5.至於svn的其餘用法,能夠在終端輸入:svn help
注:一、系統自帶的svn沒法支持本地刪除文件的更新,即當本地刪除文件後去更新服務器的文件時,刪除的文件又從服務器上的文件夾中下載到你的本地文件夾中。可是它是支持文件修改後的更新操做的。
二、記得寫註釋,不然系統不會識別命令的。
打開終端,進到所在的目錄,而後出入一下代碼
find . -name ".svn" | xargs rm -Rf
一、將文件checkout到本地目錄
svn checkout path(path是服務器上的目錄)
例如:svn checkout svn://192.168.1.1/pro/domain
簡寫:svn co
二、往版本庫中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加當前目錄下全部的php文件)
svn add xxx@2x.png 文件時, 正常命令 svn add xxx@2x.png 會報 xxx not found
需用 svn add xxx@2x.png@ 來添加,也就是圖片名字後面再添加一個@ 符號,
這是由於 svn 命令最後須要用@符號來指定一個版本致使的
遇到 xxx@2x.png文件時,若是用svn命令行添加到 版本庫的話,只能手動一個一個添加,不能批量添加
三、將改動的文件提交到版本庫
svn commit -m 「LogMessage「 [-N] [--no-unlock] PATH(若是選擇了保持鎖,就使用–no-unlock開關)
例如:svn commit -m 「add test file for my test「 test.php
簡寫:svn ci
四、加鎖/解鎖
svn lock -m 「LockMessage「 [--force] PATH
例如:svn lock -m 「lock test file「 test.php
svn unlock PATH
五、更新到某個版本
svn update -r m path
例如:
svn update若是後面沒有目錄,默認將當前目錄以及子目錄下的全部文件都更新到最新版本。
svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)
svn update test.php(更新,於版本庫同步。若是在提交的時候提示過時的話,是由於衝突,須要先update,修改文件,而後清除svn resolved,最後再提交commit)
簡寫:svn up
六、查看文件或者目錄狀態
1)svn status path(目錄下的文件和子目錄的狀態,正常狀態不顯示)
【?:不在svn的控制中;M:內容被修改;C:發生衝突;A:預約加入到版本庫;K:被鎖定】
2)svn status -v path(顯示文件和子目錄狀態)
第一列保持相同,第二列顯示工做版本號,第三和第四列顯示最後一次修改的版本號和修改人。
注:svn status、svn diff和 svn revert這三條命令在沒有網絡的狀況下也能夠執行的,緣由是svn在本地的.svn中保留了本地版本的原始拷貝。
簡寫:svn st
七、刪除文件
svn delete path -m 「delete test fle「
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m 「delete test file」
或者直接svn delete test.php 而後再svn ci -m ‘delete test file‘,推薦使用這種
簡寫:svn (del, remove, rm)
八、查看日誌
svn log path
例如:svn log test.php 顯示這個文件的全部修改記錄,及其版本號的變化
九、查看文件詳細信息
svn info path
例如:svn info test.php
十、比較差別
svn diff path(將修改的文件與基礎版本比較)
例如:svn diff test.php
svn diff -r m:n path(對版本m和版本n比較差別)
例如:svn diff -r 200:201 test.php
簡寫:svn di
十一、將兩個版本之間的差別合併到當前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(將版本200與205之間的差別合併到當前文件,可是通常都會產生衝突,須要處理一下)
十二、SVN 幫助
svn help
svn help ci
1三、版本庫下的文件和目錄列表
svn list path
顯示path目錄下的全部屬於版本庫的文件和目錄
簡寫:svn ls
1四、建立歸入版本控制下的新目錄
svn mkdir: 建立歸入版本控制下的新目錄。
用法: 一、mkdir PATH…
二、mkdir URL…
建立版本控制的目錄。
一、每個以工做副本 PATH 指定的目錄,都會建立在本地端,而且加入新增
調度,以待下一次的提交。
二、每一個以URL指定的目錄,都會透過當即提交於倉庫中建立。
在這兩個狀況下,全部的中間目錄都必須事先存在。
1五、恢復本地修改
svn revert: 恢復原始未改變的工做副本文件 (恢復大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不會存取網絡,而且會解除衝突的情況。可是它不會恢復
被刪除的目錄
1六、代碼庫URL變動
svn switch (sw): 更新工做副本至不一樣的URL。
用法: 一、switch URL [PATH]
二、switch –relocate FROM TO [PATH...]
一、更新你的工做副本,映射到一個新的URL,其行爲跟「svn update」很像,也會將
服務器上文件與本地文件合併。這是將工做副本對應到同一倉庫中某個分支或者標記的
方法。
二、改寫工做副本的URL元數據,以反映單純的URL上的改變。當倉庫的根URL變更
(好比方案名或是主機名稱變更),可是工做副本仍舊對映到同一倉庫的同一目錄時使用
這個命令更新工做副本與倉庫的對應關係。
1七、解決衝突
svn resolved: 移除工做副本的目錄或文件的「衝突」狀態。
用法: resolved PATH…
注意: 本子命令不會依語法來解決衝突或是移除衝突標記;它只是移除衝突的
相關文件,而後讓 PATH 能夠再次提交。
1八、輸出指定文件或URL的內容。
svn cat 目標[@版本]…若是指定了版本,將從指定的版本開始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也能夠寫具體版本號,這樣輸出結果是能夠提交的)
1九、配置忽略文件 vi ~/.subversion/config
找到 global-ignores 一行,去掉註釋,編輯成
global-ignores = build *~.nib *.so *.pbxuser *.mode *.perspective*
找到 enable-auto-props = yes 把註釋去掉,在[auto-props] Section聲明如下文本文件
*.mode* = svn:mime-type=text/X-xcode
*.pbxuser = svn:mime-type=text/X-xcode
*.perspective* = svn:mime-type=text/X-xcode
*.pbxproj = svn:mime-type=text/X-xcode
=========================================
svn 命令共同的選項
--targets list 讀取list並將其解釋爲一個將要操做的參數列表
--non-recurisive, –N 只操做單個目錄,不處理子目錄
--verbose, –v 打印額外的信息
--quiet, –q 打印的信息儘量少
--username, name 指定在鏈接受權時使用的用戶名
--password, pawd 指定要使用的密碼
--no-auth-cache 不要緩存身份令牌
--non-interactive 不要提示輸入額外的信息
--config-dir dir 從dir讀取用戶配置
--editor-cm cmd 使用cmd做爲日誌消息的編輯器
svn add
把文件及目錄的名稱添加給版本控制系統。他們會在下次提交時被添加到項目倉庫
svn add path
--auto-props 在添加他們的時候自動設置文件的屬性
--no-auto-props 禁用自動屬性設置
svn blame
顯示文件每行的版本及做者信息
--revision, –r rev 若是指定的rev是單個版本,顯示該版本做者信息。若是是範圍rev1:rev2, 顯示rev2版本做者的信息,但只檢查版本到rev1.
svn cat
輸出指定文件或者URL的內容
svn cat target…
--revision, –r rev
svn checkout
從項目倉庫牽出一個工做拷貝
svn checkout url…path
若是沒有指定path,簽出的本地目錄名使用URL的base name.
svn cleanup
清理工做拷貝,移除鎖,完成未完成的操做,等等。
svn cleanup path…
svn commit path
把改動從你的工做拷貝發送到項目倉庫
--message, –m msg 使用msg做爲提交日誌消息。
--file, –F file 使用file的內容做爲提交日誌消息。
--no-unlock 不要在提交的時候釋放鎖。
svn copy
在工做拷貝或者項目倉庫中製造包括歷史在內的複本
svn copy src dest
src和dest能夠是工做拷貝(WC)的路徑或者URL.
src dest 效果……
WC WC 拷貝並添加
WC URL 當即提交WC的拷貝到URL
URL WC 簽出URL到WC, 添加
URL URL 徹底服務器端拷貝;用於製做分支和打標籤
--revision, –r rev要拷貝的src的版本。只在src是項目倉庫的URL時纔有意義。
svn delete target
從項目倉庫刪除文件或者目錄。若是target是工做拷貝中的文件或者目錄,它被從工做拷貝中移除而且預計在下次提交時刪除掉。若是target是項目倉庫URL,經過一次當即的提交從項目倉庫中刪除。
--message, –m msg
--file, –F file
svn diff
顯示兩個路徑之間的差別
svn diff –r rev1:rev2 target…
svn diff oldurl newurl
svn export
建立一個無版本記錄的拷貝.
svn export –r rev URL path
從項目倉庫的指定URL導出一個乾淨的目錄樹到path中,若是指定了rev參數,導出rev版本的,不然處處最新版本。
svn import
提交一個無版本的文件或者樹到項目倉庫
svn import path URL
svn info
顯示文件或者目錄的信息。
svn list
列出項目倉庫中的目錄條數。
svn lock
鎖住文件讓其它用戶不能提交改動。
svn lock target
--message, –m msg 使用msg做爲鎖信息消息
--force 強制加鎖成功,經過從其餘用戶或者工做拷貝把鎖給偷過來。
svn log
顯示一些版本或者文件的日誌消息.
--stop-on-copy 在遍歷歷史的時候不要穿越拷貝(對於查找分支的起點頗有用)
svn merge
把兩個來源的差別應用給工做拷貝路徑。
svn merge –r rev1:rev2 source wcpath
svn mkdir
建立版本控制下的新目錄
svn mkdir target
svn move src dest
移動或者重命名工做拷貝或者項目倉庫中文件或者目錄。
--revision, –r rev使用版本rev做爲源來執行此次移動。
svn propdel
刪除文件或者目錄的屬性
svn propdel propname path…
svn propedit
編輯文件或者目錄的屬性
svn propedit propname path…
svn propget
打印文件或者目錄的屬性值
svn propget propname path…
--strict 禁用額外的換行和其它的美化措施(在把二進制屬性重定向到文件時會有用處)
svn proplist
列出文件或者目錄的全部屬性
--verbose
--recursive
--revision, –r rev 列出path在版本rev定義的屬性
svn propset(pset, ps)
svn propset propname propval path…
--file, –F file 讀取file的內容,使用它做爲屬性值.
--recursive
--encoding enc 把值做爲用enc編碼的字符集
svn resolved
移除工做拷貝文件或者目錄的衝突狀態
--recursive
svn revert
恢復工做拷貝的文件(撤銷最新的本地修改)
svn revert path 這個命令不須要網絡鏈接
--recursive
svn status
打印工做拷貝中文件或者目錄的狀態
svn status path…
--show-updates, –u 聯繫服務器顯示更新信息
--no-ignore 忽視默認設置和svn:ignore屬性設置的忽略項
--non-recursive, –N
--verbose, –v
svn switch
把工做拷貝轉向到其餘的URL
svn switch URL path
更新工做拷貝讓其使用項目倉庫的新URL.這個行爲相似svn update 並且是一種把工做拷貝轉向到同一項目倉庫中的分支或者標籤的辦法。
--revision, –r rev 轉向到版本rev
--non-recursive, –N
--diff3-cm 使用cmd做爲合併命令
svn unlock
解開工做拷貝文件或者項目倉庫URL的鎖。
svn unlock target…
--force 砸壞現有對target的鎖,甚至它不是被當前工做拷貝所擁有的。
svn update
把改動從項目倉庫帶到工做拷貝來。
svn update path…
--revision, –r rev 更新到版本rev
--non-recrusive, –N
--diff3-cmd
=========================================
-svn 出錯信息總彙 . Subversion 錯誤信息一覽表 注意: 不一樣的客戶端(命令行,TortoiseSVN, AnkhSVN, Subclipse等)的出錯信息可能稍有不一樣。 下面表格中的出錯信息以 http://svn.moon.ossxp.com/svn/test 版本庫作示例,僅供參考。 編號 出錯信息 問題剖析 解決方案 1. svn: Server sent unexpected return value (500 I-
svn 出錯信息總彙 . Subversion 錯誤信息一覽表
注意:
不一樣的客戶端(命令行,TortoiseSVN, AnkhSVN, Subclipse等)的出錯信息可能稍有不一樣。
下面表格中的出錯信息以 http://svn.moon.ossxp.com/svn/test 版本庫作示例,僅供參考。
編號
出錯信息
問題剖析
解決方案
1.
svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://svn.moon.ossxp.com/svn/test'
錯誤的用戶名
檢查登陸的用戶名是否輸入錯誤
svn: 服務器發送了意外的返回值(500 Internal Server Error),在響應 「OPTIONS」 的請求 「http://svn.moon.ossxp.com/svn/test」 中
2.
svn: OPTIONS of 'http://svn.moon.ossxp.com/svn/test': authorization failed: Could not authenticate to server: rejected Basic challenge (http://svn.moon.ossxp.com)
錯誤的口令
用正確的用戶名/口令登陸
svn: 方法 OPTIONS 失敗於 「http://svn.moon.ossxp.com/svn/test」: 認證失敗: Could not authenticate to server: rejected Basic challenge (http://svn.moon.ossxp.com)
3.
svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for 'http://svn.moon.ossxp.com/svn/test'
用戶無權限
聯繫管理員,爲用戶分配權限
svn: 服務器發送了意外的返回值(403 Forbidden),在響應 「OPTIONS」 的請求 「http://svn.moon.ossxp.com/svn/test」 中
4.
svn: OPTIONS of 'http://www.moon.ossxp.com/svn/test': 200 OK (http://www.moon.ossxp.com)
服務器地址錯誤,是普通Web頁面,不支持SVN的 WebDAV 協議
確認輸入正確的 SVN 服務地址。能夠在瀏覽器中輸入該地址進行確認
svn: 方法 OPTIONS 失敗於 「http://www.moon.ossxp.com/svn/test」: 200 OK (http://www.moon.ossxp.com)
5.
The version of your subversion (client) is below 1.5.0, upgrade to 1.5.0 or above. SVN below 1.5.0 can not handle mergeinfo properly. It can mess up our automated merge tracking!
是因爲客戶端的軟件版本低於1.5.0形成的。服務器端對客戶端軟件版本進行了限制,以避免對合並跟蹤破壞。
升級本地的Subversion客戶端軟件到1.5.0或以上版本。
6.
svn: This client is too old to work with working copy '.'. You need to get a newer Subversion client, or to downgrade this working copy. See http://subversion.tigris.org/faq.html#working-copy-format-change for details.
安裝了多個版本的SVN客戶端(TSVN,Subclipse,...),且各個客戶端的版本不一致。高版本的SVN客戶端會自動更新本地工做目錄中的 .svn 目錄下的文件格式,致使舊版本的SVN客戶端不能繼續訪問該本地工做目錄
將本機安裝的全部的SVN客戶端都更新到同一個大版本,以免本地工做目錄的格式不一致
-svn: 此客戶端對於工做副本 . 太舊。你須要取得更新的 Subversion 客戶端,或者降級工做副本。 參見 http://subversion.tigris.org/faq.html#working-copy-format-change 以得到更詳細的信息。 7. svn: Working cop-
svn: 此客戶端對於工做副本 「.」 太舊。你須要取得更新的 Subversion 客戶端,或者降級工做副本。 參見 http://subversion.tigris.org/faq.html#working-copy-format-change 以得到更詳細的信息。
7.
svn: Working copy 'trunk/src' locked svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
異常操做致使目錄沒有解鎖。
一個簡單的重現方法:在 .svn 目錄下建立空的名爲 lock 的文件
使用命令行 "svn cleanup" 或者相似的「清理」動做刪除鎖定
svn: 工做副本「trunk/src」已經鎖定 svn: 運行「svn cleanup」刪除鎖定 (輸入「svn help cleanup」獲得用法)
8.
日誌中沒有做者信息: ------------------------------------ r9 | (沒有做者信息) | … ossxp.com anonymous commit test
匿名提交致使沒有做者信息
檢查版本庫權限控制,禁止匿名提交
9.
正在發送 ... 傳輸文件數據.svn: 提交失敗(細節以下): svn: Commit blocked by pre-commit hook (exit code 1) with output: 提交說明至少應包含 4 個字符, 或者太簡單了。
這是因爲用戶提交的提交說明(commit log),太過簡單了。在提交時須要輸入有意義的 commit log。
寫有意義的提交說明,或者請求管理員更改版本庫插件
10.
增長 Logger.c 傳輸文件數據.svn: 提交失敗(細節以下): svn: Commit blocked by pre-commit hook (exit code 1) with output: Wide character in print at /opt/svn/svnroot/myrepos/hooks/scripts/check-case-insensitive.pl line 259. 發現文件名大小寫衝突: trunk/src/Logger.c 已經存在於 logger.c
管理員設置了對新增文件是否重名(只有大小寫不一樣)的文件進行檢查。文件名只有大小寫不一樣,在Windows上進行檢出會形成麻煩
不要添加劇名(僅大小寫不一樣)文件
增長 src/文件aBc.txt 傳輸文件數據.svn: 提交失敗(細節以下): svn: Commit blocked by pre-commit hook (exit code 1) with output: Clash: '/trunk/src/文件aBc.txt' '/trunk/src/文件abc.txt'
11.
svn: While preparing '/home/jiangxin/tmp/svn.test/trunk/src/README.txt' for commit svn: Inconsistent line ending style
提交的文件已經設置了 svn:eol-style 屬性,可是該文本內的換行符有DOS的換行符CRLF,也有Unix換行符LF,不一致!
統一該文本文件內的換行符。Linux 下能夠用dos2unix, unix2dos, sed等命令。Windows下可用 UltraEdit 進行轉換。
svn: 當爲提交操做準備「/home/jiangxin/tmp/svn.test/trunk/src/README.txt」時 svn: 不一致的行結束樣式
12.
svn: Failed to add file 'Makefile': an unversioned file of the same name already exists
執行更新(svn up)時報錯。由於其餘人新增一個文件到服務器,而本地卻存在一個同名文件(未版本控制)
先將本地重名文件更名,再執行 "svn up",以後再比較、合併文件。或者執行 "svn up --force"
-svn: 增長文件 'Makefile' 失敗: 同名未版本控制的文件已存在 13. Adding src/Makefile svn: Commit failed (details follow): svn: File '/svn/test/trunk/src/Makefile' already exists 添加新文件,提交時報錯。-
svn: 增長文件 'Makefile' 失敗: 同名未版本控制的文件已存在
13.
Adding src/Makefile svn: Commit failed (details follow): svn: File '/svn/test/trunk/src/Makefile' already exists
添加新文件,提交時報錯。由於其餘人已經先於我增長了該文件。
先執行更新操做("svn up"),再根據提示進行操做:合併/提交...
增長 src/Makefile svn: 提交失敗(細節以下): svn: 文件「/svn/test/trunk/src/Makefile」已存在
14.
$ svn up Conflict discovered in 'Makefile'. Select: (p) postpone, (df) diff-full, (e) edit, (mc) mine-conflict, (tc) theirs-conflict, (s) show all options: p C Makefile Updated to revision 5. Summary of conflicts: Text conflicts: 1
多人同時編輯同一個文件時,可能會遇到衝突。別人先於我提交,則當我提交時要先更新。更新可能遇到不能自動解決的衝突
使用工具進行衝突解決
$ svn up 在 「Makefile」 中發現衝突。 選擇: (p) 推遲,(df) 顯示所有差別,(e) 編輯, (mc) 個人版本, (tc) 他人的版本, (s) 顯示所有選項: p C Makefile 更新到版本 5。 衝突概要: 正文衝突:1
15.
svn: Commit failed (details follow): svn: File 'Makefile' is out of date svn: File not found: transaction '6-d', path '/trunk/src/Makefile'
提交的文件已被他人刪除
先執行更新操做("svn up"),再根據提示解決該樹衝突:刪除文件或繼續添加...
svn: 提交失敗(細節以下): svn: 文件 「Makefile」 已通過時 svn: File not found: transaction '6-c', path '/trunk/src/Makefile'
16.
svn: Commit failed (details follow): svn: File or directory '/trunk/XXX' is out of date; try updating svn: resource out of date; try updating
基於舊版本修改是不容許的
先更新("svn update"),再提交
svn: 提交失敗(細節以下): svn: 文件或目錄 「/trunk/XXX」 已通過時;請先更新 svn: resource out of date; try updating
17.
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent svn: At least one property change failed; repository is unchanged svn: Error setting property 'log': Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
修改提交說明等操做屬於高風險操做,由於該操做沒有被版本控制,屬於不可恢復的操做。缺省禁止。
請聯繫管理員,啓用該版本的相關鉤子,容許修改「版本屬性」。參見 管理員鉤子設置
svn: DAV 請求失敗;多是版本庫的 pre-revprop-change 鉤子執行失敗或者不存在 svn: 至少有一個屬性變動失敗;版本庫未改變 svn: 設置屬性 「log」 出錯: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook