導航:首頁 > 程序命令 > svn切換用戶命令

svn切換用戶命令

發布時間:2022-10-02 05:30:55

⑴ svn怎麼切換用戶

在使用svn更新或提交數據時需要輸入用戶名和密碼,在輸入框中可以選擇是否記錄,以便下次操作無需再次輸入用戶名和密碼;

要切換其他用戶名時,需要刪除已記錄用戶的數據,在電腦桌面上右擊,依次點擊菜單項TortoiseSVN--設置;

在設置界面中,左側有很多菜單,找到【已保存數據】項;

進入已保存數據的操作界面,點擊清除按鈕;

在刪除選擇框中選擇svn.simple項目,然後確定;再次更新或提交數據時就需要重新驗證用戶名和密碼了;

在已保存數據界面也可以直接點擊清除全部按鈕,清楚所有已記錄的數據;

清除全部已記錄數據後,在更新或提交數據時,會有證書失敗失敗,不用擔心,選擇永久接受憑證即可,以後再次操作就不會有提示了。

linux下apache+SVN搭建完美版

Linux下源碼方式安裝apache 2.2.14 & svn 1.6.6 Created by okala at 2009-12-25環境:Red Hat Enterprise Linux Server release 5.3 (Tikanga)httpd-2.2.14.tar.gzsubversion-1.6.6.tar.gz 到官網 http://subversion.tigris.org/ 下載當前最新的穩定版本subversion-1.6.6.tar.gz到官網 http://httpd.apache.org/ 下載當前最新的穩定版本httpd-2.2.14.tar.gz 1. 安裝Apache2.2.14用root賬號執行以下命令:tar zxf httpd-2.2.14.tar.gz #解壓到當前目錄cd httpd-2.2.14 #進入解壓後的目錄./configure --prefix=/local/svnroot/apache2 --enable-so --enable-mods-shared=all --enable-dav=share --enable-dav-fs --with-ldap --enable-ldap --enable-authnz-ldap --enable-authn-alias#定義安裝的目標路徑(可據自己需要修改),使能LDAPmake #編譯make install #安裝/local/svnroot/apache2/bin/apachectl start #啟動Apache用IE訪問以下網址,http://hostIP/,如果提示It works!,則Apache安裝成功。然後就可以先停止Apache了:/local/svnroot/apache2/bin/apachectl stop #停止Apache 2. 安裝Subversion 1.6.6用root賬號執行以下命令:tar zxf subversion-1.6.6.tar.gz #解壓到當前目錄cd subversion-1.6.6 #進入解壓後的目錄./configure --with-apxs=/local/svnroot/apache2/bin/apxs --prefix=/local/svnroot/subversion --with-apr=/local/svnroot/apache2 --with-apr-util=/local/svnroot/apache2 --with-ssl --enable-maintainer-mode#定義安裝的目標路徑(可據自己需要修改),指明Apache的安裝路徑,使能SSLmake #編譯make install #安裝 3. 安裝後的系統設置用root賬號執行以下命令:useradd svnroot #創建Linux系統里的賬號svnrootpasswd svnroot #設置svnroot賬號的密碼chown –R svnroot.svnroot /local/svnroot #把svn目錄下所有文件改為屬於svnrootchmod 750 /local/svnroot #把svn目錄設為其他Linux用戶不可讀 4. Apache設置su svnroot #由root賬號切換到svnroot賬號來執行以下的命令vi /local/svnroot/apache2/conf/httpd.conf #編輯Apache伺服器的配置文件下述參數根據自己的安裝情況進行相應修改:ServerRoot "/local/svnroot/apache2"Listen 80 #可修改為其他的埠,則訪問時也要在URL里加上對應的埠號 User svnrootGroup svnroot#前面把svn安裝目錄的所有文件改為屬於svnroot,這里這樣設置,那麼Apache運行時就會切換到使用該Linux里的賬號svnroot與組svnroot ServerAdmin [email protected] #定義一個郵箱地址ServerName 192.18.1.1 #該主機的地址 #ErrorLog "logs/error_log"ErrorLog "|/local/svnroot/apache2/bin/rotatelogs /local/svnroot/apache2/logs/error_log.%Y%m%d.log 86400 480"#修改Errorlog記錄的方式為按天記錄,避免一個log文件過大 # CustomLog "logs/access_log" commonCustomLog "|/local/svnroot/apache2/bin/rotatelogs /local/svnroot/apache2/logs/access_log.%Y%m%d.log 86400 480" common#修改accesslog記錄的方式為按天記錄,避免一個log文件過大 #在末尾開始加入這部分集成LDAP方面使用的參數LDAPSharedCacheSize 200000LDAPCacheEntries 1024LDAPCacheTTL 600LDAPOpCacheEntries 1024LDAPOpCacheTTL 600 <AuthnProviderAlias ldap abc>AuthLDAPURL "ldap://192.168.1.1:3268/DC=lala,DC=lala,DC=lala,DC=com?sAMAccountName?sub?(objectClass=*)" NONEAuthLDAPBindDN "CN=la\, lala,OU=users,OU=lala,ou=lala ,DC=lala,DC=lala,DC=la,dc=com"AuthLDAPBindPassword "password"</AuthnProviderAlias>#這部分指定訪問LDAP伺服器的URL、用戶名、密碼 RewriteEngine onRewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)RewriteRule .* - [F] include /local/svnroot/apache2/conf/httpd.project#我把各個庫的配置信息用一個獨立的文件來管理 5. svn庫的配置su svnroot #切換到svnroot賬號,如果用root賬號創建svn庫,會有導致無法提交文件到該庫的錯誤/local/svnroot/subversion/bin/svnadmin create --fs-type fsfs /local/svnroot/repository/sw1#該命令用svnadmin創建fsfs存儲格式的svn庫「sw1」 vi /local/svnroot/apache2/conf/httpd.project #創建httpd.project文件,輸入以下內容:<Location /sw1> #到時訪問的路徑就是http://hostip/sw1DAV svn #使用dav傳輸SVNPath /local/svnroot/repository/sw1 #sw1庫在Linux系統中的真實物理路徑AuthzSVNAccessFile /local/svnroot/permission/sw1.perm #配置各個用戶訪問許可權的文件AuthType BasicAuthName "sw1 SVN repository." #客戶端訪問該庫時顯示的登陸提示信息AuthBasicProvider file abc #先看文件中是否有該用戶名,再看LDAP中有無該用戶名AuthzLDAPAuthoritative offAuthUserFile /local/svnroot/user/sw1.user #記錄各個用戶名與其密碼的文件Satisfy Any #允許匿名訪問,若不允許,可注釋掉此行Require valid-user #要求用戶名與密碼驗證</Location>Shift+分號,輸入wq保存後退出編輯模式:wq vi /local/svnroot/permission/sw1.perm #創建sw1.perm許可權控制文件,輸入:[/]test = rw #賬號test擁有讀寫許可權* = #其他賬號沒有讀寫許可權Shift+分號,輸入wq保存後退出編輯模式:wq /local/svnroot/apache2/bin/htpasswd -cm /local/svnroot/user/sw1.user test#-c參數表明創建文件sw1.user,若此文件已存在,則不要-c參數#-m表示用MD5加密協議#此命令往sw1.user里添加用戶test,隨後設置其密碼 至此,安裝好了Apache、SVN,配置好了svn安裝目錄的許可權,配置好了Apache建立好了庫設立了庫里目錄的訪問許可權創建了該庫的賬戶於是,可以運行啦 6. 運行SVN伺服器用root賬號執行:/local/svnroot/apache2/bin/apachectl start然後用IE或TortoiseSVN訪問建立好的svn庫:http://hostip/sw1輸入賬號test及其密碼,應該就能訪問了,裡面什麼內容也沒有呢 如果是LDAP賬戶,則只需要在sw1.perm文件里分配許可權給相應的賬號就可以了,不需要再創建到sw1.user文件里。

⑶ svn怎麼切換賬號 linux

1.臨時更換,在命令下強制加上--username和--password選項,例如:svnup--usernamezhangsan--password1234562.永久更換刪除目錄~/.subversion/auth/下的所有文件。下一次操作svn時會提示你重新輸入用戶名和密碼的。換成你想用的就可

⑷ 如何進行svn relocate 操作

1。進入工作復本
#> cd ~/test

2。查看倉庫地址(URL)
#> svn info
路徑:.
地址(URL):http://192.168.28.1/repos/test
檔案庫 UUID:a81f9bed-3506-0410-b369-e50476f75162
修訂版:44
節點種類:目錄
調度:正常
最後修改的作者:yanghong
最後修改的修訂版:44
最後修改的時間: 2005-11-24 16:05:30 +0800 (四, 24 11月 2005)

可以看到地址為:"http://192.168.28.1/repos/test"
3。更改倉庫地址(URL)
#> svn switch --relocate http://192.168.28.1/repos/test https://192.168.28.1/repos/test
驗證「https://192.168.28.1:443」的伺服器憑證時發生錯誤:
- 本憑證並不是由受信任的權威機權所核發。請手動利用指紋以驗證
憑證的有效性!
- 本憑證的主機名稱不符。
憑證信息:
- 主機名稱:(www|svn|ftp|developers).cocreate.com.cn
- 有效期間:自 Dec 22 02:52:50 2005 GMT 至 Jan 21 02:52:50 2006 GMT
- 發行者:Co-Create Open Source Software Co.,Ltd., BeiJing, BeiJing, CN
- 指紋:63:62:b9:9e:61:c2:10:d2:ae:49:81:87:a3:57:a8:e4:76:42:6f:c8
(R)拒絕,(t)暫時接受 或 (p)永遠接受?p
Q:我的SVN伺服器換地址了,我在客戶端要做什麼變化?

A:
1,將當前的用戶在SVN客戶端當前路徑切換到當初更新SVN的位置上.
2,執行命令:svn switch --relocate (Old Repository Root) (New Repository Root)
Old Repository Root可以通過:svn info來查看.
3,svn update就可以正常的更新你的系統了.

附SVN INFO的內容範例:
$ svn info
Path: .
URL: http://svn.svn.com/ProjectName/Trunk/Project
Repository Root: http://svn.svn.com/ProjectName
Repository UUID: 149e7728-2900-0410-bded-c30b68e36566
Revision: Numbver
Node Kind: directory
Schele: normal
Last Changed Author: Programmer Nme
Last Changed Rev: Number
Last Changed Date: 2009-02-14 12:39:08 +0800 (Sat, 14 Feb 2009)

⑸ 如何在windows系統修改svn用戶許可權

1、 本文適用於對Subvesion的自帶服務svnserve進行許可權配置,全部在authz文件中完成。
2、 如果要對含有中文的目錄或文件進行管理或分配時,需要將該文件保存為UTF-8格式,微軟的記事本保存為UTF-8格式無效,所以不要用。可用如UltraEdit或EditPlus等軟體完成,保存時,格式應選擇UTF-8 NO BOM。

3、 許可權分配時,應遵守從根目錄到子目錄、從設置最廣泛許可權到最精細許可權、從只讀許可權到讀寫許可權設置原則,即從根目錄開始設置最廣泛的訪問許可權,然後逐步設置下屬子目錄的訪問許可權。提示:目錄的訪問許可權既可以分配給組,也可以分配指定用戶。
現舉例進行說明:
啟動服務:服務應指向所有版本庫的根目錄,本例中為D:\SVN,命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
項目情況:D盤根目錄下有一個文件夾SVN,在該文件夾中有jsyxv3、svntest兩個版本庫(可以有更多個),這些版本庫共享使用同一個許可權配置文件,目錄結構如下:
D:\SVN
|---jsyxv3 (項目一,子目錄略)
|---svntest (項目二,子目錄略)
|---authz (共享的許可權配置文件)
|---passwd (共享的密碼文件)

#=====配置開始=====
#分組:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss

#設置對根(即SVN)目錄下,所有版本庫的訪問許可權
[/]
* = r #所有登錄用戶默認許可權為只讀
@group_admin = rw #可以分配給組,該組有讀寫許可權
wws = rw #也可以像這樣分配給指定用戶

#以下將對各版本庫的及其目錄進行許可權分配
[jsyxv3:/] #設置對jsyxv3版本庫中,所有項目的訪問許可權
* = #未授權用戶沒有任何許可權
@group_user1 = rw

[jsyxv3:/程序管理] #設置對jsyxv3版本庫中程序管理目錄的訪問許可權
* = #未授權用戶沒有任何許可權
@group_user2 = rw

[jsyxv3:/項目管理] #設置對jsyxv3版本庫中項目管理目錄的訪問許可權
* = #未授權用戶沒有任何許可權
@group_user3 = rw

[svntest:/] #設置對svntest版本庫中,所有項目的訪問許可權
* = #未授權用戶沒有任何許可權
@group_user1 = rw

[svntest:/程序管理] #設置對svntest版本庫中程序管理目錄的訪問許可權
* = #未授權用戶沒有任何許可權
@group_user2 = rw
@group_user3 = rw

[svntest:/項目管理] #設置對svntest版本庫中項目管理目錄的訪問許可權
* = #未授權用戶沒有任何許可權
@group_user4 = rw
#=====配置結束=====

4、 最後重要提示:
4.1啟動的服務與客戶端檢出的關系:
4.1.1 如果啟動的服務指向一個具體的版本庫,如紅字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip start= auto
則客戶端檢出的地址應為:svn://192.168.0.1/
4.1.2 如果啟動的服務指向的是多個版本庫的父目錄,如紅字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
則客戶端檢出的地址應為:svn://192.168.0.1/svntest
4.2如果許可權管理完成時,對各版本庫還未完成導入工作,請記得使用對SVN目錄有讀寫許可權的用戶身份進行操作,否則有可能會提示操作失敗(因為許可權不夠)。

⑹ tortoisesvn切換什麼意思


TortoiseSVN是一個SVN的客戶端,下面是我以前不知道從哪復制的大致使用,希望對你有用:
五.客戶端的使用
1.Checkout Repository
首先要Checkout伺服器端的Repository,
所謂的Checkout就是指獲得伺服器端指定的Repository存儲的所有文件。
這個Checkout和Visual Source Safe的Checkout意義完全不一樣,
VSS的Checkout指的是鎖定某個文件,如果你以前使用過VSS,
在學習Subversion時這個問題一定要注意。
Checkout的具體方式是:
在客戶端新建一個空目錄,比如:F:\Project1
在該目錄上單擊右鍵,在彈出式菜單中選中SVN Checkout...,
之後在「URL of Repository」文本框中填入你想要連接的Repository的地址,
這個URL地址可以用瀏覽方式加入。
對於在本教程第二節建立的Repository,
URL應該是「svn://xxx/project1」
(xxx可以是伺服器端主機名,也可以是伺服器端的ip地址)。
然後點OK,會彈出一個認證對話框,
輸入在教程第三節設置的用戶名和密碼。
點OK後就完成了對Repository的Checkout。
比如:在伺服器端Repository中有一個a.txt文件,
那麼Checkout之後F:\Project1目錄下也會出現一個a.txt文件。
在本例中由於伺服器端的Repository還未添加任何文件,
所以在客戶端的F:\Project1下沒有文件被Checkout。
執行Checkout除了會在F:\Project1產生Repository存儲的文件及目錄外,
還會產生了一個「.svn」的隱含目錄,該目錄是由subversion管理的,
不要刪除或者手工改動其中的文件和目錄。
現在F:\Project1中的文件和目錄就叫做Repository的「Working Copy」簡寫「WC」
(這個簡寫...汗)。
以後對Repository中文件和目錄的修改,添加,刪除的操作,
都是通過對這個「Working Copy」的操作實現的。
Checkout執行完後,
會發現F:\Project1目錄的圖標的左下角附著了一個小的狀態圖標
(當F:\Project1目錄中的文件改變時,這個狀態圖標也會隨之變化),
它表示F:\Project1是一個Repository的「Working Copy」,
F:\Project1內的所有文件和目錄也會有類似的狀態圖標。

2.添加文件
將要添加的文件或者目錄拷貝到F:\Project1下,
然後在該文件或目錄上單擊右鍵,TortoiseSVN->Add,點OK。
如果添加了不止一個文件或目錄,
則滑鼠不要在F:\Project1中點中任何文件,
然後單擊右鍵,TortoiseSVN->Add,
就可以添加多個文件或目錄。
這時文件的狀態圖標會發生變化。
Add命令只是告訴本地的「Working Copy」將該文件納入版本管理,
並沒有將這個改變提交到伺服器端,
如果想要別人也看見你對Repository的修改,你需要
在F:\Project1下單擊右鍵,SVN Commit...,
將你所做的修改提交到Repository。
文件的狀態圖標也會更新。
不管你在「Working Copy」內添加、修改、刪除文件後,
要想其他人也看見你的修改,
都必須用Commit命令將所做修改遞交到伺服器端的Repository。

3.修改文件
用文本編輯器或IDE對文件修改後,
文件的狀態圖標會變化,
然後單擊右鍵,SVN Commit...
提交修改,只有當執行Commit提交修改後,
你所作的修改才會反映到伺服器端的Repository中。

4.刪除文件
刪除文件時,選中要刪除的文件或目錄,
單擊右鍵,TortoiseSVN->Delete,提交修改。
注意千萬不要用「Delete」鍵來刪除文件,否則將無法提交你的修改。
這一點對目錄的刪除來說尤為重要。

5.放棄修改
當你添加、修改、刪除文件後,決定放棄修改,
你可以單擊右鍵,TortoiseSVN->Revert,
本地的「Working Copy」中的文件和目錄會恢復到你修改前的狀態。

6.獲取Repository的最新版本
當一個團隊合作開發項目時,
每一個人都在不斷的對Repository進行更新,
你需要不斷的更新自己的「Working Copy」,
以獲取項目最新的文件。
當第一次獲得最新Repository的文件時,
我們用Checkout命令,前面已經介紹了,
以後再獲取最新文件時就不用Checkout了。
而改用Update命令。
接著前面的例子,這時F:\Project1已經成為一個「Working Copy」了
(通過執行Checkout命令),現在其他人已經對Repository進行了修改,
我想將別人的修改反映到我的「Working Copy」中,
具體的方法是:在F:\Project1目錄上單擊右鍵,
SVN Update。這時F:\Project1中的文件就是最新的版本了。
注意,如果當你的「Working Copy」中有被修改的文件,
或者有被刪除的文件,並且還未提交這些修改時,
這些文件在執行Update過程中是不會被更新的。
比如你修改了F:\Project1下a.txt文件,
還未提交修改,那麼,
當你對F:\Project1進行Update時,
a.txt文件是不會更新為Repository上的a.txt文件的。
所以如果想放棄當前的所有修改,
並將F:\Project1下所有文件及目錄更新到最新版本,
應該先對F:\Project1執行Revert命令再執行Update命令。

7.subversion的版本控制模型
當你用subversion進行版本控制時,
Subversion會記錄你對Repository進行的每一次修改(包括添加,修改,刪除等等),
每修改一次Repository都會產生一個新的Revision(修訂版本號),
不同的Revision代表了不同時刻Repository的狀態,
因此我們可以用這個Revision回朔任意時刻Repository的狀態,
就像時間機器一樣,也就是說某一Revision
就是Repository在某一時刻的一個「快照」。
注意:Revision不是針對某一個文件或者目錄,
而是針對整個Repository而言的。
每修改一次Repository,Revision 都會增加1。
Subversion的版本控制模型是一種叫做Copy-Modify-Merge
(拷貝-修改-合並)的模型。
考慮這種情況:
張三和李四是公司同一個部門的同事,
他們共同維護一個文本文件a.txt,
並且對該文件進行版本控制,
因此他們把這個文件放到一個Repository上共同維護該文件。
周一上午9點,張三和李四同時想對a.txt文件進行修改,
於是他們同時從Repository上取得該文件的最新版本(Revision 10),
然後進行修改。過了三分鍾,張三首先完成了修改,
他在該文件的第五行修改了一個單詞的拼寫(將Typo改為Type),
於是張三對修改後的文件執行Commit命令,
將修改提交到伺服器端的Repository中。
這時Repository的Revision變為11。
六分鍾過後,李四也完成了他的修改,
他修改了該文件第十行上的一個單詞拼寫(將He改為She),
於是他也對修改後的文件執行Commit命令,
這時Subversion 在提交修改時會發現,
李四修改的文件是Revision10的a.txt文件,
而不是最新的Revision 11的a.txt文件。
於是,Subversion 提示李四在提交修改前,
應該先將Working Copy更新到最新版本,
李四執行Update命令將Working Copy更新到Revision 11,
這時Subversion會提示已經完成合並,
李四的a.txt文件的第五行的「Typo」已經變為了「Type」,
第十行還是「She」,就是說Subversion已經將張三的修改「合並」到李四的a.txt文件中了。
之後,李四再執行Commit命令,就能將他對第十行的修改(將He改為She)
提交到伺服器端的Repository中了(生成Revision 12)。
但是這種合並在某些情況下會變得復雜一些,
比如:李四對a.txt文件的修改並不是第十行,
而是與張三同樣修改第五行的單詞,
李四將「Typo」改為「Typr」,並且提交修改,
這時Subversion會提示李四在提交修改前,
應該先將Working Copy更新到最新版本,
李四執行Update命令將Working Copy更新到Revision 11,
這時Subversion將Revision11的a.txt文件與
李四修改的a.txt文件進行合並時發現李四修改的同樣是第五行,
於是Subversion就無法判斷是李四的修改(「Tpyr」)
正確還是張三的修改(「Type」)正確,
因為他們都是在Revision10的a.txt基礎上作的修改。
這種情況叫做Conflict(沖突),
a.txt文件的圖標會變成一個黃色三角。
這時,只能依靠李四自己去判斷到底第三行應該修改為「Typr」還是「Type」。
當李四確定修改之後,在a.txt文件上單擊右鍵,TortoiseSVN->Resolved
告訴Subversion已經解決了Conflict。
這時再執行Commit命令就能提交修改(生成Revision 12)。
Subversion 這種控制方式保證了你對文件所作的修改都是基於文件的最新版本。

8.「.svn」目錄
在客戶端Working Copy的每一層目錄中都會有一個「.svn」目錄,
該目錄是Subversion進行管理用的目錄。
不要手動修改其中的文件。
該目錄存儲了Working Copy的一個副本
(實際存儲副本的地方是F:\project1\.svn\text-base目錄),
比如:F:\Project1是一個Working Copy,
該目錄下有兩個文件a.txt和b.txt還有一個子目錄ccc,
子目錄ccc中還有一個d.txt文件。
「.svn」目錄中存儲的是你最近一次執行完Update或者Commit命令之後當前目錄中文件的副本,
比如:F:\project1\.svn\text-base中存儲的a.txt和b.txt
是最近一次執行完Update或者Commit命令之後F:\project1下的a.txt和b.txt的拷貝。
也就是說你所作的修改都是基於「.svn」目錄存儲的那些文件。
這種機制可以讓我們在不連接網路的情況下,
將Working Copy中的文件恢復到修改之前的狀態。
Subversion的Revert命令就是利用了這種機制來實現的。
比如你修改了F:\project1\a.txt文件,
這時你又改變了主意想放棄對該文件的修改,
你可以單擊右鍵,TortoiseSVN->Revert,
修改過的F:\project1\a.txt文件
就會被F:\project1\.svn\text-base中a.txt文件的副本所替代,
使得a.txt恢復到修改前的狀態。
Working Copy中每一個子目錄下都會有一個「.svn」目錄,
並不是只有最上層目錄才有「.svn」目錄。
所以,F:\project1\ccc下也有一個「.svn」目錄,
該目錄存儲的是F:\project1\ccc\d.txt的副本
(d.txt的副本位於F:\project1\ccc\.svn\text-base)。
也就是說每個「.svn」目錄只存儲同級目錄中的「文件」副本,
而不存儲「目錄」副本。「.svn」目錄存有許多重要的內容,
所以前面說在刪除文件或目錄時,
必須用TortoiseSVN->Delete,
而不能用「Delete」鍵來刪除文件或目錄,尤其是對於目錄的刪除。

9.混合版本
Subversion的Working Copy被設計成一種能夠包含不同版本的文件共存的形式。
比如F:\Project1是一個Working Copy,
該目錄下有兩個文件a.txt和b.txt。
執行Update命令,將Working Copy更新到最新版本(Revision 24)。
這時,a.txt和b.txt的Revision都是24
(其實對於單個文件來說並不存在Revision,
Revision是對於整個Repository而言的,
這里所指的是Repository的Revision24所存儲的a.txt和b.txt,
但為了方便而採用這種描述方式,請注意,下同)。
之後,你的同事修改了a.txt,並且提交了修改,
這時Repository的Revision就變成25了。
注意,這時你沒有再次執行Update,
因此你的Working Copy的Revision還是24。
這時你修改了b.txt文件,並提交修改。
因為Revision25並沒有對b.txt文件進行修改,
因此你對b.txt文件的修改是基於b.txt文件最新的版本,
所以不會出現Conflict。
當你提交b.txt的修改後,產生Revision26。
這時你會發現你的Working Copy中的a.txt文件並不是Revision25中的a.txt文件,
它還是Revision24的a.txt文件,而你的b.txt文件是Revision26的b.txt文件。
也就是說當你Commit時,你的Working Copy中只有你提交的那些文件是最新版本,
而其他沒有修改的文件並不會更新為最新版本。
這樣就造成了你的Working Copy由不同的Revision文件所組成
(Revision24的a.txt文件和Revision26的b.txt文件)。
前面說過在提交修改前必須保證你是在文件的最新版本基礎上修改,
如果在這種混合版本的情況下,
怎樣才能知道當前Working Copy中的文件是否為最新版本?
在前面所說的「.svn」目錄中有一個文件名為「entries」的文件,
該文件記錄了當前Working Copy中的每一個文件的Revision,
因此當你Commit時,Subversion會從該文件中取得你提交文件的Revision,
再與Repository的最新Revision一比較就可以知道你修改的文件是否基於該文件的最新版本。

10.文件的鎖定
前面說過Subversion的版本控制模型是一種叫做Copy-Modify-Merge
(拷貝-修改-合並)的模型。
該模型在對文本文件進行版本控制時工作的很好,
但是有些需要進行版本控制的文件並不是文本文件,
比如說圖像文件,這種模型在這種情況下就不能正常工作了,
因為文本文件可以合並,而二進制文件則無法合並。
所以Subversion從1.2開始支持一種叫Lock-Modify-Unlock
(鎖定-修改-解鎖)的版本控制模型。
在Windows下最常用的版本控制軟體Visual Source Safe(VSS)就是採用這種模型。
這種模型要求在對一個文件修改前首先要鎖定這個文件,
然後才能修改,這時,別人將無法對該文件進行修改,
當修改完後再釋放鎖,使其他人可以對該文件進行鎖定,然後修改。
鎖定文件的方法是:TortoiseSVN->Get Lock...再點OK按鈕,
這時就完成了對文件的鎖定。
這時,如果其他人想對文件進行鎖定時,
Subversion會對他提示該文件已經被別人鎖定。
當你修改完文件後,然後單擊右鍵,SVN Commit...,
將修改提交,默認情況下,提交的時候就會對該文件解鎖,
如果你想仍然鎖定該文件,請在commit時彈出的對話框中選中keep lock復選框。

11.文件的附加屬性
在Subversion中,每個文件可以擁有一種叫做附加屬性的東西。
附加屬性描述了該文件所擁有的一些特性。
Subversion已經預定義了一些附加屬性
(這里只是指Subversion已經定義了一些附加屬性的「名稱」,
並不是指已經將這些屬性附加在文件上了,
比如默認情況下文本文件一開始不含任何屬性,
直到人為的對該文件添加附加屬性),
並且你可以對文件添加自定義的屬性。
Subversion對待附加屬性就像對待文件內容一樣,
當修改了一個文件的附加屬性(添加,改變,刪除附加屬性),
即使沒有對文件的內容進行修改,
同樣可以Commit該文件,就像更改了文件內容那樣,
Repository也會生成新的Revision,
所以從某種意義上來說,
Subversion不區別對待文件的附加屬性的修改和文件的內容的修改,
文件的附加屬性可以看成是一種特殊的文件內容。
Subversion預定義了若干個附加屬性,
這里只討論「svn:needs-lock」屬性,
因為它與我們上面的文件鎖定會產生的一個問題有關。
其他的屬性可以參考Subversion自帶的幫助文檔。
考慮這種情況,
張三和李四同時想對一個圖片文件a.jpg作修改,
張三在修改時先將該文件鎖定,然後進行修改,
同時李四也開始對該文件進行修改,
但李四忘記了對非文本文件進行修改時應該先鎖定該文件。
張三首先對該文件修改完畢,於是張三向伺服器提交了他的修改。
之後,李四也完成了修改,當他提交修改時,
Subversion提示李四的文件版本不是最新的,
在Commit之前應先更新a.jpg到最新版本,
由於圖片文件無法合並,
這就意味著張三和李四之間必定有一個人的修改會作廢。
應用「svn:needs-lock」屬性可以避免這個問題。
當一個文件擁有「svn:needs-lock」屬性時,
該文件在沒有鎖定時,文件的圖標是灰色的,
表示該文件是一個只讀文件(該文件的Windows只讀屬性的復選框為選中),
這個灰色的圖標就會提醒想對該文件進行修改的人,
在修改該文件之前應該首先鎖定該文件。
鎖定該文件之後,文件的只讀屬性就會去掉了,
一旦釋放掉鎖,文件的圖標又會變成灰色,
文件也會變成只讀的了。
李四在這種情況下就會避免在沒有鎖定文件時對文件進行修改。
對非文本文件添加「svn:needs-lock」
屬性應該在將該文件第一次添加到Repository時就設置,
當然,一個文件可以在任意時刻添加附加屬性,
這樣做是為了減少李四所遇到的那個問題發生的幾率。
具體的方法是:
首先將a.jpg文件拷貝到Working Copy中,
然後在該文件上單擊右鍵,
TortoiseSVN->Add,告訴Subversion要將該文件納入版本控制,
接著在該文件上單擊右鍵並選中屬性,
在彈出的屬性對話框中選中Subversion頁。
在下拉框中選中「svn:needs-lock」,
並在下面的文本框中填入「*」
(其實這里填什麼都無所謂,只要文件有「svn:needs-lock」附加屬性就行),
之後點Set按鈕,「svn:needs-lock」附加屬性就設置好了。
然後執行Commit命令提交修改。
這時當其他人執行Update時,
a.jpg就會添加到他們的Working Copy中,
並且文件的附加屬性也會隨文件一起被得到。
可以看到a.jpg此時的圖標就是灰色的,
文件的Windows屬性也是只讀的。

12.回到以前的版本
由於Subversion會記錄你對Repository的每一次修改,
因此能夠很容易的獲得Repository以前某一時刻的狀態。
比如:現在Repository的最新Revision是56,
這時我想看看Repository在Revision24時的狀態,
可以在本地的Working Copy中單擊右鍵,
TortoiseSVN->Update to Revision...,
然後輸入你想要回復到的Revision號,點OK按鈕。
回到以前的版本還有一種情況是我想將Repository的
最新Revision的狀態與以前某一個Revision的狀態一模一樣,
上面那種方法就不適合,
上面的那種方法只是將本地的Working Copy回復到以前的狀態,
而伺服器端的Repository並沒有回到以前的狀態。
將Repository的最新Revison的狀態回復到以前某個Revision的狀態具體的方法是:

先執行Update命令將Working Copy更新到最新的Revision,
然後在Working Copy中單擊右鍵,
TortoiseSVN->Show Log,
彈出的Log Messages窗口中會顯示該Repository的所有Revision,
選中最新的Revision,之後按住Shift鍵,
再單擊你想回復到的Revision+1的那個Revision
(比如Repository的最新Revision是30,
你想將Repository的狀態回復到Revision16,
那麼就選中Revision30,再按住Shift鍵,
選中Revision17,
就是說選中Revision17到Revision30之間的所有Revision)。
然後在選中的Revision上單擊右鍵,
選中「Revert changes from these revision」。
再點Yes按鈕,就可以將Working Copy的狀態回復到目標Revision。
注意,此時只是Working Copy回復到目標Revision,
之後應該用Commit提交修改,
這樣Repository最新狀態就與目標Revision的狀態一樣了。
這兩種回復到以前版本的方式截然不同,
第一種方式是將整個Working Copy回復到某個Revision,
也就是說這種方式Working Copy中的「.svn」目錄所存的文件副本也與目標Revision的一模一樣,
如果這時你沒有修改文件,你將不能執行Commit命令。
而第二種方式客戶端Working Copy中的
「.svn」目錄所存的副本始終是最新的Revision的文件副本
(這里我們基於一個假設:在Update之後沒有其他人對Repository做修改)。
這種方式就像是我們自己手工將Working Copy的文件狀態修改為目標Revision,
在修改之後提交修改一樣。

13.查看修改
有時我們對Working Copy的許多文件進行了修改,
這些文件位於不同的子目錄,我們就可以在Working Copy的最上層目錄單擊右鍵,
TortoiseSVN->Check For Modifications,
彈出的對話框就會顯示你所做的所有修改明細。
還有一種情況是我們的Working Copy已經很久沒有執行Update命令,
我們想看看Working Copy中有哪些文件已經發生修改了,
這時就可以在Working Copy的最上層目錄單擊右鍵,
TortoiseSVN->Check For Modifications,
在彈出的對話框點擊Check Repository按鈕後,
就會顯示伺服器端已經修改了的文件。
該方法還有一個用途就是查看文件的鎖定,
當你想鎖定一個文件時,你想先看看這個文件有沒有被別人鎖定,
點擊Check Repository按鈕會顯示伺服器端Repository所有被鎖定的文件,
如果你想鎖定的文件不在這裡面,那就說明該文件目前沒有人鎖定。

⑺ svn怎麼切換用戶

tortoiseSVN的右鍵-setting
-data-用戶清除,然後關閉從新使用會提示輸入用戶名、密碼。

⑻ mac os 下如何清除/切換svn eclipse插件的用戶

以mac os x為例(Unix/Linux類似), 1、打開命令行窗口,即用戶的根目錄(用戶的home目錄) $ ls -al...drwxr-xr-x 6 linxyz staff 204 2 15 15:55 .subversion...$cd . subversion/auth/$rm -r -f -d *2、重啟eclipse/myeclipse,提交或者更新svn文件,就會提示輸入用戶名和密碼了。

閱讀全文

與svn切換用戶命令相關的資料

熱點內容
python拼音轉換文字 瀏覽:558
動畫遺傳演算法 瀏覽:59
php如何解析xml文件 瀏覽:702
如何改變appstore的語言 瀏覽:462
javahtmlxml 瀏覽:34
單片機啟動文件 瀏覽:811
橙app如何開啟聊天 瀏覽:899
訪問伺服器公網地址 瀏覽:666
pdf列印底色去掉 瀏覽:463
java快遞介面 瀏覽:397
哪個app可以教新爸爸 瀏覽:210
如何查看伺服器系統版本信息 瀏覽:524
成都市土地出讓金演算法 瀏覽:703
鋼筋加密標記 瀏覽:578
ps中擴展功能在文件夾的什麼位置 瀏覽:905
雙極壓縮機為什麼要先高壓 瀏覽:528
蘋果手機伺服器填什麼 瀏覽:833
android移動動畫效果 瀏覽:693
電子和伺服器是什麼意思 瀏覽:694
phpurl中文亂碼問題 瀏覽:894