svn使用常見問題

轉載:http://blog.csdn.net/mad1989/article/details/12975815
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就可以了。

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).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章