### 名稱
svn switch ― 把工作拷貝更新到別的URL。
### 概要
~~~
svn switch URL [PATH]
~~~
~~~
switch --relocate FROM TO [PATH...]
~~~
### 描述
這個子命令更新你的工作拷貝來反映新的URL―通常是一個與你的工作拷貝分享共同祖先的URL,盡管這不是必需的。這是Subversion移動工作拷貝到分支的方式。更深入的了解請見[“轉換工作拷貝”一節]。
### 別名
sw
### 變化
工作拷貝
### 是否訪問版本庫
是
### 選項
~~~
--revision (-r) REV
--non-recursive (-N)
--quiet (-q)
--diff3-cmd CMD
--relocate
--username USER
--password PASS
--no-auth-cache
--non-interactive
--config-dir DIR
~~~
### 例子
如果你目前所在目錄`vendors`分支到`vendors-with-fix`,你希望轉移到那個分支:
~~~
$ svn switch http://svn.red-bean.com/repos/branches/vendors-with-fix .
U myproj/foo.txt
U myproj/bar.txt
U myproj/baz.c
U myproj/qux.c
Updated to revision 31.
~~~
為了跳轉回來,只需要提供最初取出工作拷貝的版本庫URL:
~~~
$ svn switch http://svn.red-bean.com/repos/trunk/vendors .
U myproj/foo.txt
U myproj/bar.txt
U myproj/baz.c
U myproj/qux.c
Updated to revision 31.
~~~
### 提示
如果你不希望跳轉所有的工作拷貝,你可以只跳轉一部分。
有時候管理員會修改版本庫的“基本位置”―換句話說,版本庫的內容并不改變,但是訪問根的主URL變了。舉個例子,主機名變了、URL模式變了或者是URL中的任何一部分改變了。我們不選擇重新檢出一個工作拷貝,你可以使用**svn switch**來重寫版本庫所有URL的開頭。使用`--relocate`來做這種替換,沒有文件內容會改變,訪問的版本庫也不會改變。只是像在工作拷貝`.svn/`運行了一段Perl腳本**s/OldRoot/NewRoot/**。
~~~
$ svn checkout file:///tmp/repos test
A test/a
A test/b
…
$ mv repos newlocation
$ cd test/
$ svn update
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///tmp/repos'
$ svn switch --relocate file:///tmp/repos file:///tmp/newlocation .
$ svn update
At revision 3.
~~~
### 警告
小心使用`--relocate`選項,如果你輸入了錯誤的選項,你會在工作拷貝創建無意義的URL,會導致整個工作區不可用并且難于修復。理解何時應該使用`--relocate`也是非常重要的,下面是一些規則:
-
如果工作拷貝需要反映一個版本庫的新目錄,只需要使用**svn switch**。
-
如果你的工作拷貝還是反映相同的版本庫目錄,但是版本庫本身的位置改變了,使用**svn switch --relocate**。
- 第1章介紹
- Subversion的歷史
- Subversion的特性
- Subversion的架構
- 安裝Subversion
- Subversion的組件
- 快速入門
- 第2章基本概念
- 版本模型
- Subversion實戰
- 摘要
- 第3章指導教程
- 導入
- 修訂版本: 號碼、關鍵字和日期,噢,我的!
- 初始化的Checkout
- 基本的工作周期
- 檢驗歷史
- 其他有用的命令
- 摘要
- 第4章分支與合并
- 使用分支
- 在分支間拷貝修改
- 常見用例
- 轉換工作拷貝
- 標簽
- 分支維護
- 摘要
- 第5章版本庫管理
- 版本庫的創建和配置
- 版本庫維護
- 添加項目
- 摘要
- 第6章配置服務器
- 網絡模型
- svnserve,一個自定義的服務器
- httpd,Apache的HTTP服務器
- 支持多種版本庫訪問方法
- 第7章高級主題
- 屬性
- Peg和實施修訂版本
- 外部定義
- 賣主分支
- 本地化
- Subversion版本庫URL
- 第8章開發者信息
- 使用API
- 進入工作拷貝的管理區
- WebDAV
- 使用內存池編程
- 為Subversion做貢獻
- 第9章Subversion完全參考
- svn add
- svn blame
- svn cat
- svn checkout
- svn cleanup
- svn commit
- svn copy
- svn delete
- svn diff
- svn export
- svn help
- svn import
- svn info
- svn list
- svn log
- svn merge
- svn mkdir
- svn move
- svn propdel
- svn propedit
- svn propget
- svn proplist
- svn propset
- svn resolved
- svn revert
- svn status
- svn switch
- svn update
- svnadmin
- svnadmin create
- svnadmin deltify
- svnadmin dump
- svnadmin help
- svnadmin hotcopy
- svnadmin list-dblogs
- svnadmin list-unused-dblogs
- svnadmin load
- svnadmin lstxns
- svnadmin recover
- svnadmin rmtxns
- svnadmin setlog
- svnadmin verify
- svnlook
- svnlook author
- svnlook cat
- svnlook changed
- svnlook date
- svnlook diff
- svnlook dirs-changed
- svnlook help
- svnlook history
- svnlook info
- svnlook log
- svnlook propget
- svnlook proplist
- svnlook tree
- svnlook uuid
- svnlook youngest
- svnserve
- svnversion
- mod_dav_svn Configuration Directives
- 附錄A.Subversion對于CVS用戶
- 目錄的版本
- 更多離線操作
- 區分狀態和更新
- 分支和標簽
- 元數據屬性
- 沖突解決
- 二進制文件和轉化
- 版本化的模塊
- 認證
- 轉化CVS版本庫到Subversion
- 附錄C.WebDAV和自動版本化
- 自動版本化交互性
- Subversion和DeltaV
- 術語表