1. 程式人生 > >AndroidStudio配置SVN以及使用程式碼管理

AndroidStudio配置SVN以及使用程式碼管理

一、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

檔案紅色:表示檔案沒有新增到伺服器

綠色:表示沒有更新新的修改到伺服器

普通黑色:表示和伺服器同步

資料夾顏色說明

參考 :http://blog.csdn.net/niu_hao/article/details/6774471

黃色感嘆號(有衝突): --這是有衝突了,衝突就是說你對某個檔案進行了修改,別人也對這個檔案進行了修改,別人搶在你提交之前先提交了,這時你再提交就會被提示發生衝突,而不 允許你提交,防止你的提交覆蓋了別人的修改。要解決衝突,如果你確認你的修改是無效的,則用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到伺服器裡面的