smartsvn學習(二)如何在Xcode下使用SVN


1、Xcode4中蘋果有自帶的SVN軟件------>Organizer------>Repositories

 
2、SVN checkout到本地后,刪除本地file,對服務器有影響嗎? 
不會影響服務器,當你執行“svn update”時會zai再次被自動下載;當刪除后再執行“svn commit”就會在服務器上也對應刪除。 
 
3、連接服務器
點擊file-》repositories-》點擊坐下邊的“+”-》然后名字及svn服務器的地址,還有type選中subversion然后next等等了。
 
4、Xcode4下,SVN中常用命令 
Commit   提交 
checkout   將服務器上下載到本地(我個正在使用的電腦) 
update  更新文件 
File------->SourceController------->update
 
 
圖片中第3個按鈕,是視圖對比按鈕.
 
 
5、SVN中用法詳解和注意事項 
①提交自己的代碼 
SVN更新的原則是要及時更新,及時提交。當完成了一個小功能,能夠通過編譯並且並且自己測試之后,盡量早的提交,這樣也保存了歷史版本,必要時候可以回滾;在開始一天的工作之前,最后update一下項目。 
②保持原子提交(不要不經意間修改並提交了別人的文件) 
僅提交你修改的部分,最好不要一下子將整個項目提交; 
當完成一個功能或文件后,最好提交。我就遇到完成某個功能后,沒有提交,后來又做了更改,結果代碼出現bug,無法恢復到正常時的代碼。 
③不要提交自動生成的文件 
VisualStudio等開發工具在生成過程中會產生很多自動文件,如.suo等配置文件,Debug,Release,Obj等編譯文件,以及其他的一些自動生成,同編譯代碼無關的文件,這些文件在提交的時候不應該簽入,如果不小心簽入了,需要從倉庫中刪除。 
④不要提交不能通過編譯的代碼 
代碼在提交之前,首先要確認自己能夠在本地編譯。進行SVN提交更新時最好是代碼在提交前已經通過自己的測試。 
SVN中常用命令詳解 
1、將文件checkout到本地目錄 
svn checkout path(path是服務器上的目錄) 
例如:svn checkout svn://192.168.1.1/pro/domain 
2、往版本庫中添加新的文件 
svn add file 
例如:svn add test.php(添加test.php) 
3、刪除文件 
svn delete path -m “delete test fle“ 
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete testfile” 
4、查看日志 
svn log path 
5、比較差異 
svn diff path(將修改的文件與基礎版本比較) 
6、將兩個版本之間的差異合並到當前文件 
svn merge -r m:n path
 
SVN使用方法 
更新(update)經常地update沒有壞處,特別是多人項目中。如果每次提交(commit)前不進行更新(update)的到最新的版本的話,svn會提示當前的拷貝過期,需要更新。  
提交(commit),一定要寫上這次提交的內容的摘要,便於以后查閱。 
將文件checkout到本地目錄  
svn checkout path(path是服務器上的目錄) 
svn update命令自動用服務器上的版本替換本地版本控制的文件 
 
6、Xcode中使用SVN問題以及提交解決沖突問題 
Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比較起來功能還差很多。 
我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其實也挺好,不過,為了使用SVN功能要單獨開一個耗費資源的Eclipse。 
 
但是,不論使用什么SVN工具,都會遇到Xcode固有的問題,即project.pbxproj文件的提交沖突問題。 
 
project.pbxproj 文件里面包含了構建過程所需的所有文件,如果你在項目目錄下增加了新文件,比如沒有通過Xcode,該文件就不在project.pbxproj文件中, 就不會生成到app中。同理,如果你從SVN中更新到其他項目成員增加的文件,而沒有更新project.pbxproj文件(或者該成員根本就沒有提交 這個文件),則也會出現相同的現象。 
 如果項目成員提交了新的project.pbxproj文件,你這邊沒有在項目中增加新的文件,直接svn update就可以了。 
這邊自己也遇到了同樣的問題,明明添加了新的文件,本地工程和文件夾中都可以顯示,然后右鍵commit單個add后的文件,從svn上checkout下來的卻只有在工程文件夾中有這個新文件,在項目中無法顯示這個新添加的文件,應該就是這個問題。后來orgnizer選載commit,看到有commit列表中有這個xproj文件和新加的文件,選擇提交再次checkout查看就可以看到了。


7、Xcode中更新代碼后項目文件打不開 
 
若選擇更新整個項目經常會出現沖突問題,尤其是project.pbxproj文件。此文件包含了構建過程所需的所有文件,如果在項目目錄下增加了新文件,但沒有通過Xcode, 
該文件就不在project.pbxproj文件中,就不會生成到app中。同理,如果從SVN中更新到其他項目成員增加的文件, 
而沒有更新project.pbxproj文件(或者該成員根本就沒有提交這個文件),則也會出現相同的現象。這一文件沖突將直接導致項目文件打不開。
 
 
解決更新代碼后打不開項目文件方法: 
當項目文件如tobacco.xcodeproj打不開時可以右鍵選擇'顯示包內容',會看到有三個文件,project.pbxproj/user.modelv3/user.pbxuser。 
其中project.pbxproj有三個版本,和解決普通svn文件沖突一樣解決沖突即可。

 
8、SVN 更新 提交 合並 區別 
 
當本地文件沒有改動,服務器文件改動的時候,更新會從服務器取文件覆蓋當前文件 
當本地文件有改動,服務器文件沒改動的話,不會更新此文件 
當本地文件有改動,服務器文件有改動的話,如果改動的部分不沖突,就會合並文件到本地,如果有沖突的話,會提示文件沖突,需要自己手動修改以后上傳到服務器。
 
最后一個講解合並: 
服務器和本地的同一個文件(所謂同一個文件應該就是SVN相對路徑相同,文件名相同的文件,這個由SVN留在本地的信息決定)已經修改,且修改的部分不重合,不重疊 
當滿足上面的條件的時候再更新,SVN就會自動合並
 
SVN的奧妙之處就在於別人提交了修改后的文件,你再提交你的話,他是不允許你提交滴。。。 
>>>> 
<<< 
里面標記的是沖突的區域,把沖突區域刪除掉為什么還不能提交  
 
解決辦法1:
 
刪掉的話還是沒有解決沖突,文件后面還會有幾個文件名相同,但是后綴不同的文件 
如果你不知道用SVN解決沖突的話,最簡單的辦法是這樣的 
把這個文件改名字,然后在文件所在目錄更新,這樣就會把服務器文件下下來,然后把自己修改的部分添加到更新的文件里面,這樣就可以提交了
 
解決辦法2: 
在文件上面點擊右鍵,到SVN的菜單,應該有編輯沖突的按鈕,選擇就會出現一個窗口,一邊是服務器版本,一邊是自己修改的版本  
 

9、xcode自帶svn的使用 
1、代碼中 某文件后面有 “M” 標記,表示該文件已被修改,需要 commit. 
      (右鍵該文件 -> source control -> commit selected file...) 
2、代碼中 某文件后面有 “A” 標記,表示該文件是新添加的,已受SVN管理,需要 commit. 
      (右鍵該文件 -> source control -> commit selected file...) 
3、代碼中 某文件后面有 “?” 標記,表示該文件是新添加的,並且脫離了SVN的管理,首先需要add,然后 commit. 
      (右鍵該文件 -> source control -> Add,這樣該文件的標記就變為 “A”,然后在 commit).

轉:http://www.cnblogs.com/lisa090818/p/3205458.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM