svn/git的diff、patch


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 "完成**功能"

終於,收工!


免責聲明!

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



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