Refference From:http://iaiai.iteye.com/blog/2267346
一、Android Studio配置SVN
Android Studio關聯配置SVN很簡單,在Settings里面,找到Version Control->Subversion;在這個頁面的控制面板中的General中將Use command line client打勾勾選上,然后瀏覽本地的SVN安裝目錄,選到"svn.exe"即可;
在Use command line client下面還有一個Use system default Subversion configuration directory,這個默認是勾選上上的,這個是svn相關配置信息的路徑,保留默認路徑就行,目前沒有發現需要修改什么東西;以上操作如下圖:
二、Android Studio項目關聯SVN資源庫及添加忽略文件
在Android Studio中新創建一個Android項目,成功后我們先來添加要忽略的文件;在Android Studio中添加忽略文件同Eclipse有所不同,在Eclipse上我們什么時候添加忽略文件都可以,但是在Android Studio中只有在未關聯SVN之前添加忽略文件才有效(試了好多次才將忽略文件忽略成功啊!)。Android Studio添加忽略文件同樣是在Settings->Version Control(跟版本控制有關的設置都在這個目錄下)下的Ignored Files里,點擊加號進行忽略文件的設置,Android Studio默認給出了三種忽略方式,供開發者進行選擇:忽略指定的文件、忽略文件夾下所有文件和忽略符合匹配規則的文件;如圖所示:
點擊右側的“+”進行添加,“-”刪除;Android Studio創建的Android項目一般需要忽略.idea文件夾、.gradle文件夾、所有的build文件夾、所有的.iml文件及local.properties文件。
忽略完文件后,我們進行項目同SVN的關聯,選擇VCS->Import into Version Control->Share Project(Subversion);這里說明一點,在Import into Version Control下有Import into Subversion和Share Project(Subversion)兩個選項【在studio 1.3已經沒有第二個選項了只有Share Project on GitHup】:第一個是直接將項目導入到SVN服務器上,但是這樣做本地的項目同SVN服務器沒有建立起關聯,在導入后項目所有的文件都會變成紅色,而 且在要提交到SVN服務器時會提示項目不是SVN下的工作副本;第二個是將Android Studio當前項目同SVN服務器關聯起來,但是並沒有將項目導入到SVN服務器上,需要在完成建立連接后再次提交項目到SVN服務器。兩種方式都可以 實現將本地代碼提交到SVN服務器的功能,但是步驟有所不同,先來完成第二種方式的項目同SVN的關聯及代碼提交,第一種貌似不正規,之后再說;下圖既是 第二種方式將本地項目同SVN進行關聯的:
之后會彈出選擇要分享的SVN地址及其他選項,如下圖:
在Define share target下選擇第二個可以再trunk下創建你當前項目的文件夾,相應的第一個選項是直接將整個文件都放到trunk文件夾下,第三個在項目文件夾下 有創建了一個trunk文件夾,因此建議使用第二中方式;選擇完成后點擊Share就可以了,會彈出讓你選擇SVN工作副本的格式化版本(jdk版本), 如下圖:
建議選擇1.8format,我之前選擇了其他的試了一下,發現項目總會報出一下錯誤,原因暫時未發現,就先這樣選擇吧;點擊OK等待一會就能創建本地項目同SVN服務器的關聯了;成功后悔自動刷新本地的項目,待項目里的內容變成綠色的即表示已經成功了,如下圖所示:
到目前為止只是將項目同SVN服務器建立了聯系,並沒有將代碼提交到SVN服務器上去;如何提交呢,其實很簡單,只需點擊SVN相關操作按鈕里的commit就行了(上圖SVN相關操作按鈕左起第二個按鈕);
點擊Commit后Android Studio會先對當前代碼進代碼分析,如果有錯誤或者警告會彈出如下的框,如果有錯誤沖突等需要解決后再提交,如果是警告可以忽略(同Eclipse相 同);第一次將整個代碼提交到SVN服務器時時間有可能很長,請耐心等待,之后再創建項目時就不會這么慢了。
成功后我們就完成了新建項目同SVN的關聯及導入項目到SVN服務器上了。
關於第一種方式,在將本地代碼導入到SVN服務器后將本地代碼刪除,然后從SVN服務器上將之前提交的代碼更新下來,這樣一來也可以同SVN建立 關聯正常進行開發;第一種方式和第二種方式的區別就在於:第一種是將代碼先提交到SVN服務器上,然后再從SVN服務器上更新下來(本地項目同SVN服務 器建立聯系);第二種是先同SVN服務器監理聯系,然后將代碼提交到SVN服務器上去。建議使用第二種方式進行新項目的SVN關聯。
在我的studio1.3版本里面沒有share project(subvision的)只能選擇直接導入項目到服務器:
\
添加服務器倉庫:導入項目到服務器一路next就可以啦!導入成功后本地項目就好和服務器關聯起來:
稍微修改下布局看看是否關聯測試下:
到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 Message 添加修改信息
修改成功:
在commit 按鈕下面還有一個是create patch這個選項試一下其作用:
應該明白是創建一個補丁文件主要的作用就是可以查看修改的地方:
三、Android Studio SVN代碼沖突的解決
關於代碼沖突解決的問題,首先要感謝一下知友ShinChven的回答建議。在使用SVN更新服務器上的代碼時,有時會彈出代碼沖突的對話框,問 你是否進行合並,並提供了三種合並方案:accept yours(使用你的)、accept theirs(使用別人的)和merge(合並);
前兩個都是進行的覆蓋操作,就不多做解釋了;當你選擇merge合並時,會彈出代碼合並對照窗口,一共有三個屏,左右兩側時你和服務器不同的代碼 並高亮顯示不同的部分,帶有箭頭和叉號,通過點擊箭頭將兩邊沖突的代碼添加到中間的合並區域中去,點擊叉號則辨識放棄那一段代碼,待所有沖突處理完成后 merge就成功了。
當然在使用過程中肯定會遇到很多的問題上面的東西也是參考其他大神的,自己也添加了幾點區別:到時候遇到問題再繼續研究下。
繼續完善:
Checkout SVN上的項目
選擇subversion
導入項目到SVN服務器,
Import into 選擇subversion
點擊添加服務地址例如
瀏覽SVN服務器上的項目文件夾
SVN倉庫會顯示文件列表
其他說明
單文件 簽入當文件,右鍵subversion Add
文件紅色:表示文件沒有添加到服務器
綠色:表示沒有更新新的修改到服務器
普通黑色:表示和服務器同步
文件夾顏色說明
黃色感嘆號(有沖突): --這是有沖突了,沖突就是說你對某個文件進行了修改,別人也對這個文件進行了修改,別人搶在你提交之前先提交了,這時你再提交就會被提示發生沖突,而不 允許你提交,防止你的提交覆蓋了別人的修改。要解決沖突,如果你確認你的修改是無效的,則用TSVN還原你的修改就行了;如果認為你的修改是正確的,別人 的提交是無效的,那么用TSVN先標記為“解決沖突”,然后就可以提交了;如果你認為你的修改和別人的修改都有一部分是有效的,那么你就把別人的修改手動 合並到你的修改中,然后使用TSVN標注為“解決沖突”,然后就可以提交了。進入文件夾,尋找有黃色感嘆號的文件,這些文件就是發生沖突的地方,根據實際 情況處理沖突 米字號(有本地修改代碼): --這是說明你有未提交的本地代碼。 問好(新加入的資源): --這說明該文件是項目中新增文件資源,新增資源可以是文件、圖片、代碼等。
紅色感嘆號(本地代碼與庫沒有保持一致): --這說明本地代碼跟庫上沒有保持一致,如果用戶想修復,可以將帶紅色感嘆號圖標文件刪除,直接update即可。 灰色向右箭頭(本地修改過) --本地代碼沒有及時上庫。 藍色向左箭頭(SVN上修改過) --記得更新代碼后修改,提交前跟svn對比習慣。 灰色向右且中間有個加號的箭頭(本地比SVN上多出的文件) --修改完記得跟svn保持一致 藍色向左且中間有個加號的箭頭(SVN上比本地多出的文件) --刪除該文件后,再次更新,將svn上文件全部更新下來。 灰色向右且中間有個減號的箭頭(本地刪除了,而SVN上未刪除的文件) --也就是說你刪除確認后,一定要記得上庫,跟svn保持一致 藍色向左且中間有個減號的箭頭(SVN上刪除了,而本地未刪除的文件) --比對svn庫上代碼,確定需要刪除后,更新svn(刪除無用代碼)。 紅色雙向箭頭(SVN上修改過,本地也修改過的文件 ) --這個表示本地和svn上都修改過,最好就是把本地修改合並到svn,修改代碼前最后先更新。
文件狀態說明:
單個文件簽入簽出操作:右鍵subversion
Add,添加到服務器
Commit:提交
Update:更新,獲取新版本
Integrate:合並
注意:SVN和VSS不同簽入前如果文件被其他人修改需要比較版本如何其他修改有效需要合並簽入
整個項目更新提交:Commit ,Update
不知道是啥原因如果剛剛開始選擇share project(subvision)的話,好像在選擇commit的時候很慢,始終上傳不了綠色的部分代碼:
所以我直接在本地:commit到服務器里面的