Android studio如何使用SVN進行版本控制?
如題,有哪位大神在實際工作中使用了Android studio和SVN的,能說明一下具體的操作嗎?下圖是我測試SVN時初始化導入到SVN後,本地項目就變成一片紅了,然後點擊更新也沒用;修改了內容後提交時,提示我沒有任何修改,無法提交,真真的是鬱悶啊!
通過這兩天對Android Studio的研究,終於搞通了Android Studio的基本操作及與SVN的相關關聯操作(這樣才能在公司的開發工作中使用);Google年底將會停止ADT插件的更新和支持,全面轉向Android Studio(果然是自己的孩子啊),因此使用Android Studio進行安卓項目的開發也是大勢所趨,項目得閑之時研究一下Android Studio的使用;Android Studio的基本編輯操作現在網上已經很多了,需要的可以找著看看,下面是這幾天摸索出來的Android Studio關聯SVN的相關操作,時間較短,如果有疏漏或錯誤的地方還望指正。
一、Android Studio配置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中新創建一個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)兩個選項:第一個是直接將項目導入到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伺服器時時間有可能很長,請耐心等待,之後再創建項目時就不會這麼慢了。
三、Android Studio SVN代碼衝突的解決成功後我們就完成了新建項目同SVN的關聯及導入項目到SVN伺服器上了。
關於第一種方式,在將本地代碼導入到SVN伺服器後將本地代碼刪除,然後從SVN伺服器上將之前提交的代碼更新下來,這樣一來也可以同SVN建立關聯正常進行開發;第一種方式和第二種方式的區別就在於:第一種是將代碼先提交到SVN伺服器上,然後再從SVN伺服器上更新下來(本地項目同SVN伺服器建立聯繫);第二種是先同SVN伺服器監理聯繫,然後將代碼提交到SVN伺服器上去。建議使用第二種方式進行新項目的SVN關聯。
關於代碼衝突解決的問題,首先要感謝一下知友ShinChven的回答建議。在使用SVN更新伺服器上的代碼時,有時會彈出代碼衝突的對話框,問你是否進行合併,並提供了三種合併方案:accept yours(使用你的)、accept theirs(使用別人的)和merge(合併);
前兩個都是進行的覆蓋操作,就不多做解釋了;當你選擇merge合併時,會彈出代碼合併對照窗口,一共有三個屏,左右兩側時你和伺服器不同的代碼並高亮顯示不同的部分,帶有箭頭和叉號,通過點擊箭頭將兩邊衝突的代碼添加到中間的合併區域中去,點擊叉號則辨識放棄那一段代碼,待所有衝突處理完成後merge就成功了。
從伺服器檢出
1、checkout from subversion2、項目檢出以後open build.gradle 打開工程3、工程打開以後在頂部VCS 裡面enable version control 選subversion
提交到伺服器
VCS - import into subversion 下班之前 寫的 趕著回家,晚上再補補充下:紅色代表未添加到svn里的文件,右鍵選擇subversion-add to svn,等他變綠綠色代表文件修改了還沒上傳,可以直接全部上傳,也可以右鍵subversion-commit file藍色代表兩個人都修改了,需要先下載融合再上傳,也可以改之前先鎖上,subversion-lock,修改完畢點commit直接可以解鎖,也可以unlock解鎖
我在嘗試的過程中發現,使用Share Project(Subversion) 方式,報的是Error:svn: E155007: "D:workingAndroidStudioProjects" is not a working copy也報不是 svn下工作副本,跟樓主的區別是 他 工程目前前面就有svn 這一級目錄了,什麼情況啊
為什麼我點擊提交了.有進度條,之後就沒有反應了.也沒有提示提交成功的提示
一看就是認真學習的好孩子,很受用,謝謝
你們好,我想打個分支這塊應該填什麼啊
感謝分享
大神我想問一下 我上傳到svn的文件夾怎麼修改
用Mac或Ubuntu,直接在as的shell里操作。
盡量少用IDE捆綁的東西,速度慢卡死關不了想必大家都遇到過。gradle編譯也盡量在shell里,能節約相當一部分時間。變紅是因為未加入同步,如果整個項目添加到目錄的話就要看你的ignore文件了,有一些是不能添加到同步中的svn沒有網的話能做的事就少了,為什麼不用git
補充一下:關於提交之後一直讀條的問題,或許是AS的原因,在第一次往SVN的伺服器中提交代碼的時候會很慢,就是所謂的一直讀條的問題,好的配置的計算機大概幾分鐘,一般的計算機大概要十幾分鐘(有一次我的筆記本提交了一個多小時!我懷疑是硬碟問題,SSD固態硬碟要比普通機械式硬碟快多了)
題主是從直接從svn倉庫裡面checkout到本地的嗎, 這樣做應該不會出什麼問題,注意項目目錄就好了
我前段時間也出現這個問題,以為是哪配置錯了,來來回回搗鼓好幾次,參照@夏海亮 的,始終不行。後來客戶端我換了1.8.7的版本Ok了。如果有人遇到這個問題換下版本試試。服務端和客戶端軟體鏈接: http://pan.baidu.com/s/1eRAgDGY 密碼: 6pf5。
非常不錯!感謝
創建分支跟合併呢?
為什麼我的沒有share svn這個選項啊
一直在讀條是個什麼情況
換git吧
google一下,一大片全是
非常感謝 ,寫的好詳細,點贊
我從SVN上新下載的工程 但是新建東西是紅色的 提交不上去怎麼辦?
難道現在不是Github的時代么?
推薦閱讀:
※Android Studio 比 Eclipse 好用在哪裡?
※okhttp,retrofit,android-async-http,volley應該選擇哪一個?
TAG:SVNSubversion | 版本控制 | AndroidStudio |