svn/git的diff、patch
前幾天,正當我突突的寫代碼,企業微信嘀嘀一聲響”在不,過來幫我看個bug”。本人一向助人為樂,高興的沖了過去,然后就開始了一段長達1分鍾的問題描述。很明顯,此同學只知道結果不對,並沒有找出程序的根本問題。
好吧,心涼了一半,果然是找我來干體力活的。坐定,抬手開始調試代碼。。。
調試開始,打開編輯器,什么,竟然用的大型IDE,好吧,忍了,卡死了。剛寫好一句代碼,准備按ctrl+B運行,沒反應,再按,依然沒反應,好吧,看來這兄弟啥也沒配置。剛想打開終端,想想算了,估計環境變量也沒有加。再有就是,畢業這么多年,不管是家用還是辦公,用到的只有mac和Linux,今天這windows系統,難道要在這陰溝里壞了一世英明。默默的打開windows終端,輸入svn info,哇,svn竟然默認加了進來,好吧,有辦法了。。。
~ cd /projectdir #進入項目根目錄
~ svn diff > test.diff #將同學的修改生成diff文件
通過企微把test.diff發到我的帳號,一共幾十KB。然后就告別了該同學,並告訴他我一會回來,不要亂動。終於回到了我的電腦,接收test.diff文件,然后打開熟悉的終端:
~ cd /projectdir # 進入項目根目錄
~ svn up # 更新到最新版本
~ svn st # 查看我本機是否有未提交的代碼。輸出是空,果然所有代碼都提交過了
~ patch -p0 < /patch/test.diff # 應用diff文件
此時,我的代碼已經跟剛才那位同學一模一樣了,好吧,突突的調試代碼,很快,問題找到、解決。
現在來總結一下,一共使用了兩條命令:
- svn diff > test.diff # 作用是生成diff文件
- patch -p0 < /patch/test.diff # 將diff文件應用到我的代碼
好吧,現在問題已經解決了,那么接下來我是應該直接提交代碼到版本庫呢,還是怎么辦。經常長達10余秒的思考,好吧,應該把代碼還給那位同學。
再次,在我的項目根目錄執行 svn diff > ok.diff,將ok.diff通過企微傳給同學。然后迅速跑到同學工位,清空他本地的代碼修改,應用ok.diff文件,提交代碼到版本庫
~ cd /projectdir # 進入項目根目錄
~ svn revert * --depth=infinity # 清空他本地的修改
~ svn up # 更新svn (習慣性操作)
~ svn st # 查看當前狀態 (習慣性操作)
~ patch -p0 < /patch/ok.diff # 應用diff文件
~ svn diff # 再次查看修改的內容 (習慣性操作)
~ svn ci -m "完成**功能"
終於,收工!
