看到網上很多關於svn環境配置和關聯Android-Studio的很多博文,發現很零散,想集大家所長整理一下:
在AndroidStudio中開發版本控制中,除了Git就是SVN,和Eclipse不同Android Studio沒有提供單獨的插件,只能和SVN客戶端關聯使用,和Eclipse安裝有很大區別,下面介紹在AndroidStudio中SVN的配置和基本使用。
如果已經搭建好了服務端,只是在日常工作中import和checkout代碼,只需下載TortoiseSVN客戶端 就行,完全可以跳過以下步驟: 建立SVN版本庫 (Repository)、 配置用戶和權限 。
一、SVN的安裝
到TortoiseSVN官網下載最新的軟件,也可以在Subversion中文站 找到相應的軟件。
我的64位系統,安裝 TortoiseSVN-1.8.3.24901-x64-svn-1.8.4 版本
安裝過程需要特別注意的是安裝SVN時必須安裝command line 功能,只有安裝帶有 command line 功能的 SVN 客戶端,AndroidStudio才能使用。安裝SVN時需要用戶自定義選擇 command line ,默認是不會自動安裝的,如下圖:
需要選擇安裝 command line 功能
如果采用默認安裝,安裝完成,啟動命令行,輸入: svn
則會提示:'svn'不是內部或外部命令,也不是可運行的程序或批處理文件。
安裝好之后在系統環境變量中找到“path”,然后檢查變量值里是否加上了";默認目錄\TortoiseSVN\bin"(引號里面的是要增加的內容,當然你的路徑不一定肯定跟這里的一樣,記得那個英文分號,那是跟其他值隔開的,一定要有)。有的會自動配環境變量,沒有就手動加上。
注:默認安裝在C:\Program Files\下
直到啟動cmd,輸入: svn
提示:type 'svn help' for usage。配置完成。
注:如果在Terminal中執行 svn 命令,提示:'svn'不是內部或外部命令,也不是可運行的程序或批處理文件。雖然安裝了 command line 功能,也配好了環境變量,只要重啟電腦就不會報錯了。
二、AndroidStudio中關聯SVN
SVN安裝完成后,checkout、commit代碼都需要關聯svn后才可以,首先打開 AndroidStudio 中的 settingS 配置面板,找到Version Control-->SubVersion如下圖:
General選項卡下配置SVN的路徑,Use Command Line Client 輸入框最右側有個瀏覽的按鈕,選擇瀏覽到你本地安裝 TortoiseSVN 的 svn.exe 文件路徑,如下圖:
注:svn.exe 文件圖標不是小烏龜奧,不要看錯了···
三、 添加忽略文件
commit代碼時,需要添加忽略文件,checkout代碼可以暫時跳過此步驟。
在Android Studio中只有在未與SVN建立通道之前(路徑未變成綠色)添加忽略文件才有效,否則changlist中設置的忽略文件也會被勾選,即使手動去除勾選,設置的忽略文件仍是綠色。正常設置的忽略文件應該是暗黃色。
Android Studio添加忽略文件同樣是在Settings->Version Control(跟版本控制有關的設置都在這個目錄下)下的Ignored Files里,點擊"+"進行忽略文件的設置,Android Studio默認給出了三種忽略方式,供開發者進行選擇:忽略指定的文件、忽略文件夾下所有文件和忽略符合匹配規則的文件;如圖
點擊“-”刪除之前添加過的;Android Studio創建的Android項目一般需要忽略:
1).idea文件夾
2).gradle文件夾
3)所有的build文件夾(挨個查找)
4)所有的.iml文件(挨個查找) 使用第三個ignore all files matching(匹配)不好使
5)local.properties文件
四.SubVersion的簡單使用
1、導入上傳
分上傳project和上傳module兩種
(1)上傳project兩種方法:
一種:在AndroidStudio 中頂部菜單中 CVS項中有個 Import into Version Control
選擇VCS->Import into Version Control->Share Project(Subversion);
這里說明一點,在Import into Version Control下有Import into Subversion和Share Project(Subversion)兩個選項
【在studio 有些版本已經沒有第二個選項了只有Share Project on GitHup】:第一個是直接將項目導入到SVN服務器上,但是這樣做本地的項目同SVN服務器沒有建立起關聯,在導入后項目所有的文件都會變成紅色,而且在要提交到SVN服務器時會提示項目不是SVN下的工作副本;
第二個是將Android Studio當前項目同SVN服務器關聯起來,但是並沒有將項目導入到SVN服務器上,需要在完成建立連接后再次提交項目到SVN服務器。
處理方法:關於第一種方式,在將本地代碼導入到SVN服務器后將本地代碼刪除,然后從SVN服務器上將之前提交的代碼更新下來,這樣一來也可以同SVN建立關聯正常進行開發;第一種方式和第二種方式的區別就在於:第一種是將代碼先提交到SVN服務器上,然后再從SVN服務器上更新下來(本地項目同SVN服務器建立聯系);第二種是先同SVN服務器建立聯系,然后將代碼提交到SVN服務器上去。建議使用第二種方式進行新項目的SVN關聯。
兩種方式都可以實現將本地代碼提交到SVN服務器的功能,但是步驟有所不同,先來完成第二種方式的項目同SVN的關聯及代碼提交,第一種貌似不正規
下圖既是第二種方式將本地項目同SVN進行關聯的:
之后會彈出選擇要分享的SVN地址及其他選項,如下圖:
在Define share target下選擇第二個,可根據情況在原有位置設定文件夾;選擇完成后點擊Share就可以了,會彈出讓你選擇SVN工作副本的格式化版本(jdk版本),如下圖:
建議選擇1.8format,我之前選擇了其他的試了一下,發現項目總會報出一下錯誤,原因暫時未發現,就先這樣選擇吧;點擊OK等待一會就能創建本地項目同SVN服務器的關聯了;成功后會自動刷新本地的項目,可能需要等一會項目里的內容變成綠色,即表示已經成功了。到目前為止只是將項目同SVN服務器建立了聯系,並沒有將代碼提交到SVN服務器上去。此時會有提示:
第二種:在項目所在文件夾,單擊鼠標右鍵,選擇“TortoiseSVN”->“Import“->確定即可。可以添加更新log內容···
(2)上傳module(或項目)
在Settings->Version Control選項,在右邊窗口中,點擊加號設置關聯SVN的項目或module,此處是不是看到上傳project的第三種方法呢,如圖
點擊減號刪除關聯,在右側···按鈕選擇module路徑,VCS:中選擇版本控制名稱。
設置完后,我們右擊module/項目,會發現菜單里面多了一個“Subversion”菜單,右鍵subversion-->Share Directory...或Add to VCS(ps:也可以上傳單個類文件)
前者會彈出選擇要分享的SVN地址及其他選項,同上面設置。Add to VCS會關聯到默認url,如果路徑不是指定的路徑,可以通過
右鍵subversion-->Relocate...修改定位到的路徑。
2.提交module/項目
右擊module/項目-->Subversion--->Commit Directory,這時候會彈出Commit Change對話框,這里顯示的是你項目改變的文件,我們點擊提交
或者點擊SVN相關操作按鈕里的commit就行了
Commit Changes 這里有幾個選項需要了解的:
Auto-update after commit :自動升級后提交
keep files locked :把文件鎖上,我想這應該就只能你修改其他開發人不能修改不了的功能
在你提交之前:before commit
Reformat code:重新格式化代碼
Rearrange code:重新整理代碼
Optimize imports:優化導入
Perform code analysis:執行代碼分析[ 默認選擇]
Check TODO(show all):檢測需要修改的代碼[顯示所有默認選擇]
clean up: 清除所有
Update copyright:更新版權
具體看情況選擇功能點:比如不想其他人修改這些代碼可以選擇keep files locked
在commit 按鈕下面還有一個是create patch這個選項試一下其作用:
是創建一個補丁文件主要的作用就是可以查看修改的地方:
點擊Commit后Android Studio會先對當前代碼進代碼分析,如果有錯誤或者警告會彈出如下的框,如果有警告、錯誤、沖突等可以忽略繼續提交(同Eclipse相同);第一次將整個代碼提交到SVN服務器時時間有可能很長,請耐心等待,之后再創建項目時就不會這么慢了。
這時候默默等待提交完成,最后我們的項目顏色就變成了黑色,被忽略的文件是灰色,然后我們打開SVN,會看到我們的項目已經存在里面了呢
3、檢出版本庫里面的項目
第一種:
選擇一個空白的地方或者新建一個空文件夾,單擊鼠標右鍵,選擇”SVN Checkout“,然后點擊確認即可。
如果沒配置權限,就提示
第二種:
在AndroidStudio 中頂部菜單中 CVS項中有個checkout from version control-Subversion,點擊彈出checkout from Subversion對話框
點+號添加repos的url路徑,checkout按鈕可以根據選擇的路徑下載,彈出認證選accept:
彈出權限認證輸入的對話框,然后ok.選擇目標路徑。
注:帳號、密碼由服務器端給你分配權限
彈出讓你選擇SVN工作副本的格式化版本(jdk版本)建議選1.8,也有人說選1.6編譯更快,如下圖:
到此,就拉到你設定的目錄中了。
4.update文件夾
寫代碼之前一般我們需先更新svn代碼到本地,流程如下
不需要任何改動,直接ok。
如果存在本地和服務器上文件沖突,三個選項:yours,theirs,merge(合並),根據實際處理。
Q:SVN 出現Cannot checkout from svn: Server SSL certificate rejected無法導出文件 或 錯誤碼svn: E170001,svn: E175002
A:該問題是由於svn的賬戶名和密碼沒有權限造成,既然已經配置權限出現這個問題,是因為配置svn證書緩存引起的。
解決方法一:AndroidStudio 中setting->Version Control->Subversion->General選項卡中點擊下面的Clear Auth Cache按鈕即可清除證書緩存,此后再次關聯項目時只需輸入svn用戶名密碼即可。
方法二:在項目所在目錄,右鍵【TortoiseSvn】—–》【setings】—-》【saved Data】——-》點擊Authentication的【Clean all】按鈕

清除緩存后,仍出現上面提示,檢查respository url是否正確。或是否需要連接vpn。
Q:module/項目提交SVN服務器后,出現很多問題需要刪除,重新上傳。我們會發現當我們第一次share到subversion/Directory的時候,下次就無法重新share了,也無法斷開連接,就算我們將工程目錄下的.svn目錄刪除它還是會無法重新share到SVN。
A:可以分兩步解決:
第一步:修改VCS值
工程目錄下定位到.idea目錄,打開找到vcs.xml文件,用記事本打開文件:
將VCS=“svn”改為VCS=“”即可 。此時,android studio工具欄中得VCS工具即可重新share了
第二步:刪除項目中的 .svn 文件
雖然使項目斷開了SVN連接,但是項目中的 .svn文件並未清理掉,可能會造成再次上傳到SVN失敗
可以通過查找直接刪除.svn目錄,這里我們提供一個更方便的方法:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""




在底部SVN Respositories選項中選中上傳的需要刪除的項目,右鍵delete···,刪除SVV上傳的項目
到此才算完全解除了關聯。然后可以重新上傳了·····
Q:當我們引入別的項目的module時,會將其svn路徑同時導入,無法上傳到另一個SVN服務器。
A:首先按上面方法去除所有.svn文件,module因失去svn通道,字體變成紅色。在該module上右鍵subversion-->Share Directory...或Add to VCS將module上傳指定的SVN服務器。方法參考上面的(2)上傳module。
本文為博主原創文章,請尊重版權,未經博主允許不得轉載,轉載請注明出處:http://www.cnblogs.com/details-666/p/SVN.html
第一天寫博客,發現寫點東西真的不是很容易。
參考http://www.cnblogs.com/songmeng/p/4389446.html
后期補充Android Studio SVN代碼沖突的解決,可參考http://blog.csdn.net/gf771115/article/details/53174250