SVN操作

這裏記錄一下一些平時用到的svn指令操作

1. svn log

展示修正的log信息或者路徑

eg:
svn log ProjectName/Info.plist
就可以看到info.plist文件的修改歷史

2. svn diff

查看兩個文件之間的不同

  • 如果直接使用svn diff,則展示當前工作區和服務器端的不同。
  • 如果想要顯示特定兩個版本的不同,可以用如下寫法:
//以下就是展示7504版本和7487版本之間 info.plist文件的變化
svn diff -r 7504:7487 ProjectName/Info.plist

3. svn add

Put files and directories under version control, scheduling
them for addition to repository. They will be added in next commit.
usage: add PATH…

添加文件或者文件夾到SVN

4. svn checkout

Check out a working copy from a repository.
usage: checkout URL[@REV]… [PATH]

5. svn commit

Send changes from your working copy to the repository.
usage: commit [PATH…]


6. svn revert

Restore pristine working copy state (undo local changes).
usage: revert PATH…

回滾到以前的版本

7. svn update

Bring changes from the repository into the working copy.
usage: update [PATH…]

8. svn merge

Merge changes into a working copy.
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH]
(the ‘complete’ merge)
2. merge [-c M[,N…] | -r N:M …] SOURCE[@REV] [TARGET_WCPATH]
(the ‘cherry-pick’ merge)
3. merge SOURCE1[@REV1] SOURCE2[@REV2] [TARGET_WCPATH]
(the ‘2-URL’ merge)

notes:

revert命令顧名思義就是對修改過的東西進行回滾操作。一般有2種情況發生時需要用到回滾的操作:

1,修改過的東西沒有提交(commit)

這種情況下revert會取消之前的修改

用法:#svn revert [-R] xxx_file_dir

如果需要回滾的是一個目錄則加上-R(遞歸)可選參數

2,改動的東西並且提交了

這種情況下,用svn merge命令來進行回滾。

步驟如下:

1)執行#svn update命令保證工作區文件是最新的,比如最新版本號是20

2)然後找出要回滾的確切版本號:

執行svn log xxx_file_dir

假設根據svn log日誌查出要回滾的版本號是10,如果想要更詳細的瞭解情況,可以使用svn diff -r 20:10 [xxx_file_dir]
3)回滾到版本號10:
執行svn merge -r 20:10 xxx_file_dir
 
4)提交回滾:
svn commit -m "註釋..." 
提交後版本變成了29
完畢

9. svn export

Create an unversioned copy of a tree.
usage: 1. export [-r REV] URL[@PEGREV] [PATH]
2. export [-r REV] PATH1[@PEGREV] [PATH2]

導出一個不包含版本控制的文件

9. svn upgrade

Upgrade the metadata storage format for a working copy.
usage: upgrade [WCPATH…]
在我們把服務器上的svn 版本號升級以後,在之前的文件下再執行svn命令時,會提示需要執行svn upgrade命令把當前的代碼由低版本的svn 上遷移到高版本的svn 上去。
直接執行svn upgrade命令就會把所有的代碼按照最新的svn 版本重新更新一遍。之後你操作所有的svn 命令都會正常運行。

10. svn ls

svn列出所有branches下的分支

$ svn ls svn://192.168.0.178/yewu/branches

或者顯示詳細內容:

svn ls svn://192.168.0.178/yewu/branches --verbose

11. UserInterfaceState.xcuserstate文件衝突

這裏要首先介紹一下xcode中一些文件的含義:

首先看下Stack Overflow上關於Xcode project和workspace之間區別的解釋

xcshareddata:裏邊配置一些項目相關的配置,比如scheme,target等等
xcuserdata:用來存放一些xcode相關的配置,裏邊包含了一個文件UserInterfaceState.xcuserstate,此文件是專門用來記錄用戶Xcode的一些操作,比如點擊了某個類進行編輯,或者在哪打了一個斷點什麼的。

因此,UserInterfaceState.xcuserstate這個文件變化相當的大,而且,此文件沒必要添加到版本控制中
解決辦法:
在提交SVN的時候,忽略掉此文件,如果此文件已經添加到SVN上,那麼先在刪除服務器上刪除此文件,然後在Cornerstone的配置中忽略掉它,那麼以後再提交的時候,就不會有這個問題了。

參考

https://blog.csdn.net/u014100559/article/details/50539232
https://blog.csdn.net/cbbbc/article/details/52585570
https://www.jianshu.com/p/69b750594d6a
https://stackoverflow.com/questions/21631313/xcode-project-vs-xcode-workspace-differences

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